/* ============================================================
   pansearch 本地样式框架（替代 Tailwind CDN）
   赛博朋克主题 · 前台 + 后台通用
   ============================================================ */

/* ---------- Reset ---------- */
*,*::before,*::after{ box-sizing:border-box; -webkit-font-smoothing:antialiased; }
html,body{ height:100%; margin:0; }
body{
    font-family:'PingFang SC','Microsoft YaHei','Hiragino Sans GB','Source Han Sans SC','Noto Sans SC',sans-serif;
    background:var(--bg); color:var(--fg); overflow-x:hidden;
    line-height:1.5;
}
body::before{
    content:''; position:fixed; inset:0; z-index:0; pointer-events:none;
    background:
        radial-gradient(ellipse 90% 70% at 12% 15%, rgba(0,245,255,.15), transparent 55%),
        radial-gradient(ellipse 80% 60% at 88% 85%, rgba(176,38,255,.15), transparent 55%);
}
[data-theme="light"] body::before{
    background:
        radial-gradient(ellipse 90% 70% at 12% 15%, rgba(0,152,184,.1), transparent 55%),
        radial-gradient(ellipse 80% 60% at 88% 85%, rgba(124,28,184,.08), transparent 55%);
}
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; }
img,svg{ display:block; max-width:100%; }
input,select,textarea{ font-family:inherit; font-size:inherit; }
table{ border-collapse:collapse; width:100%; }
::-webkit-scrollbar{ width:8px;height:8px }
::-webkit-scrollbar-track{ background:transparent }
::-webkit-scrollbar-thumb{ background:linear-gradient(180deg,var(--c1),var(--c2)); border-radius:4px; opacity:.6; }

/* ---------- CSS 变量 ---------- */
/* 深色主题（默认） */
:root, [data-theme="dark"]{
    --c1:#00f5ff; --c2:#b026ff; --c3:#ff2d95; --c4:#00ff9d; --c5:#ffb800;
    --bg:#070b16; --bg2:#0d1424; --bg3:#131c33;
    --fg:#e8f1f6; --fg-muted:#8b9fb5;
    --surface:rgba(15,23,42,.55); --surface-2:rgba(10,16,30,.7);
    --surface-3:rgba(20,30,52,.6);
    --border:rgba(0,245,255,.1);
    --border-strong:rgba(0,245,255,.22);
    --shadow-glow:rgba(0,245,255,.3);
    --shadow-card:0 8px 32px rgba(0,0,0,.4);
    --input-bg:rgba(0,0,0,.25);
    --radius:14px;
    --radius-sm:10px;
}
/* 浅色主题 */
[data-theme="light"]{
    --c1:#0098b8; --c2:#7c1cb8; --c3:#c02472; --c4:#0a9d6f; --c5:#b8800a;
    --bg:#f4f7fb; --bg2:#e8edf4; --bg3:#dde4ee;
    --fg:#1a202c; --fg-muted:#5a6c84;
    --surface:rgba(255,255,255,.8); --surface-2:rgba(255,255,255,.92);
    --surface-3:rgba(245,248,252,.9);
    --border:rgba(0,0,0,.08);
    --border-strong:rgba(0,152,184,.2);
    --shadow-glow:rgba(0,152,184,.2);
    --shadow-card:0 4px 24px rgba(0,0,0,.06);
    --input-bg:rgba(255,255,255,.85);
    --radius:14px;
    --radius-sm:10px;
}

/* ============================================================
   工具类（精简版 Tailwind）
   ============================================================ */

/* display */
.block{ display:block; }
.inline-block{ display:inline-block; }
.inline{ display:inline; }
.flex{ display:flex; }
.inline-flex{ display:inline-flex; }
.grid{ display:grid; }
.hidden{ display:none; }
.table{ display:table; width:100%; }

/* flex 方向 */
.flex-row{ flex-direction:row; }
.flex-col{ flex-direction:column; }
.flex-wrap{ flex-wrap:wrap; }
.flex-nowrap{ flex-wrap:nowrap; }
.flex-1{ flex:1 1 0%; }
.flex-auto{ flex:1 1 auto; }
.flex-shrink-0{ flex-shrink:0; }
.flex-shrink{ flex-shrink:1; }
.flex-grow{ flex-grow:1; }

/* items / justify */
.items-start{ align-items:flex-start; }
.items-center{ align-items:center; }
.items-end{ align-items:flex-end; }
.items-stretch{ align-items:stretch; }
.items-baseline{ align-items:baseline; }
.justify-start{ justify-content:flex-start; }
.justify-center{ justify-content:center; }
.justify-end{ justify-content:flex-end; }
.justify-between{ justify-content:space-between; }
.justify-around{ justify-content:space-around; }

/* grid cols */
.grid-cols-1{ grid-template-columns:repeat(1,minmax(0,1fr)); }
.grid-cols-2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.grid-cols-3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.grid-cols-4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
.col-span-2{ grid-column:span 2 / span 2; }
.col-span-3{ grid-column:span 3 / span 3; }

/* spacing - padding */
.p-0{ padding:0; } .p-1{ padding:4px; } .p-2{ padding:8px; } .p-3{ padding:12px; }
.p-4{ padding:16px; } .p-5{ padding:20px; } .p-6{ padding:24px; } .p-8{ padding:32px; } .p-10{ padding:40px; }
.px-1{ padding-left:4px; padding-right:4px; } .px-2{ padding-left:8px; padding-right:8px; }
.px-3{ padding-left:12px; padding-right:12px; } .px-4{ padding-left:16px; padding-right:16px; }
.py-1{ padding-top:4px; padding-bottom:4px; } .py-2{ padding-top:8px; padding-bottom:8px; }
.py-3{ padding-top:12px; padding-bottom:12px; } .py-4{ padding-top:16px; padding-bottom:16px; }
.py-6{ padding-top:24px; padding-bottom:24px; } .py-8{ padding-top:32px; padding-bottom:32px; }
.pt-2{ padding-top:8px; } .pt-4{ padding-top:16px; } .pt-6{ padding-top:24px; }
.pb-3{ padding-bottom:12px; } .pb-4{ padding-bottom:16px; }

/* spacing - margin */
.m-0{ margin:0; } .m-auto{ margin:auto; }
.mb-1{ margin-bottom:4px; } .mb-2{ margin-bottom:8px; } .mb-3{ margin-bottom:12px; }
.mb-4{ margin-bottom:16px; } .mb-5{ margin-bottom:20px; } .mb-6{ margin-bottom:24px; }
.mb-8{ margin-bottom:32px; } .mb-10{ margin-bottom:40px; } .mb-12{ margin-bottom:48px; }
.mt-1{ margin-top:4px; } .mt-2{ margin-top:8px; } .mt-4{ margin-top:16px; }
.mt-6{ margin-top:24px; } .mt-8{ margin-top:32px; } .mt-10{ margin-top:40px; }
.ml-2{ margin-left:8px; } .ml-auto{ margin-left:auto; } .ml-56{ margin-left:14rem; }
.mr-2{ margin-right:8px; } .mr-auto{ margin-right:auto; }
.mx-auto{ margin-left:auto; margin-right:auto; }

/* gap */
.gap-1{ gap:4px; } .gap-2{ gap:8px; } .gap-3{ gap:12px; } .gap-4{ gap:16px; }
.gap-6{ gap:24px; } .gap-8{ gap:32px; } .gap-10{ gap:40px; }

/* space-y (子元素上边距) */
.space-y-1 > * + *{ margin-top:4px; }
.space-y-2 > * + *{ margin-top:8px; }
.space-y-3 > * + *{ margin-top:12px; }
.space-y-4 > * + *{ margin-top:16px; }
.space-y-6 > * + *{ margin-top:24px; }

/* width */
.w-full{ width:100%; } .w-auto{ width:auto; }
.w-56{ width:14rem; }
.max-w-md{ max-width:28rem; }
.max-w-lg{ max-width:32rem; }
.max-w-2xl{ max-width:42rem; }
.max-w-3xl{ max-width:48rem; }
.max-w-5xl{ max-width:64rem; }
.min-w-0{ min-width:0; }

/* height */
.h-full{ height:100%; } .h-screen{ height:100vh; }
.min-h-screen{ min-height:100vh; }

/* text */
.text-left{ text-align:left; } .text-center{ text-align:center; } .text-right{ text-align:right; }
.text-xs{ font-size:12px; } .text-sm{ font-size:14px; } .text-base{ font-size:16px; }
.text-lg{ font-size:18px; } .text-xl{ font-size:20px; } .text-2xl{ font-size:24px; }
.text-3xl{ font-size:30px; } .text-4xl{ font-size:36px; }
.text-5xl{ font-size:48px; } .text-6xl{ font-size:60px; }
.font-thin{ font-weight:100; } .font-light{ font-weight:300; }
.font-normal{ font-weight:400; } .font-medium{ font-weight:500; }
.font-semibold{ font-weight:600; } .font-bold{ font-weight:700; }
.font-black{ font-weight:900; }
.font-display{ font-family:'Orbitron',sans-serif; }
.font-mono{ font-family:'JetBrains Mono','Consolas',monospace; }
.italic{ font-style:italic; }
.uppercase{ text-transform:uppercase; } .lowercase{ text-transform:lowercase; }
.no-underline{ text-decoration:none; }
.truncate{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.break-all{ word-break:break-all; }

/* position */
.relative{ position:relative; } .absolute{ position:absolute; }
.fixed{ position:fixed; } .sticky{ position:sticky; }
.top-0{ top:0; } .left-0{ left:0; } .right-0{ right:0; } .bottom-0{ bottom:0; }
.inset-0{ top:0; right:0; bottom:0; left:0; }
.z-0{ z-index:0; } .z-10{ z-index:10; } .z-20{ z-index:20; } .z-50{ z-index:50; }

/* overflow */
.overflow-hidden{ overflow:hidden; }
.overflow-x-auto{ overflow-x:auto; }
.overflow-y-auto{ overflow-y:auto; }
.overflow-visible{ overflow:visible; }

/* border */
.border{ border-width:1px; border-style:solid; }
.border-t{ border-top-width:1px; border-style:solid; }
.border-r{ border-right-width:1px; border-style:solid; }
.border-b{ border-bottom-width:1px; border-style:solid; }
.border-l{ border-left-width:1px; border-style:solid; }
.rounded{ border-radius:4px; } .rounded-md{ border-radius:6px; }
.rounded-lg{ border-radius:8px; } .rounded-xl{ border-radius:12px; }
.rounded-2xl{ border-radius:14px; } .rounded-full{ border-radius:9999px; }

/* cursor */
.cursor-pointer{ cursor:pointer; }
.cursor-default{ cursor:default; }
.cursor-not-allowed{ cursor:not-allowed; }
.pointer-events-none{ pointer-events:none; }

/* transition */
.transition{ transition-property:all; transition-duration:.2s; }
.transition-all{ transition-property:all; transition-duration:.2s; }

/* transform */
.transform{ transform:translate(var(--tw-translate-x,0),var(--tw-translate-y,0)) rotate(var(--tw-rotate,0)) skewX(var(--tw-skew-x,0)) skewY(var(--tw-skew-y,0)) scaleX(var(--tw-scale-x,1)) scaleY(var(--tw-scale-y,1)); }

/* opacity */
.opacity-50{ opacity:.5; } .opacity-60{ opacity:.6; } .opacity-70{ opacity:.7; } .opacity-100{ opacity:1; }

/* responsive: sm (640px) */
@media (min-width:640px){
    .sm\:flex-row{ flex-direction:row; }
    .sm\:grid-cols-2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
    .sm\:grid-cols-3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
    .sm\:text-base{ font-size:16px; }
    .sm\:text-lg{ font-size:18px; }
    .sm\:px-6{ padding-left:24px; padding-right:24px; }
}

/* responsive: md (768px) */
@media (min-width:768px){
    .md\:flex{ display:flex; }
    .md\:block{ display:block; }
    .md\:grid-cols-3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
    .md\:grid-cols-4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
    .md\:text-base{ font-size:16px; }
    .md\:text-6xl{ font-size:60px; }
    .md\:flex-row{ flex-direction:row; }
}
/* responsive: lg (1024px) */
@media (min-width:1024px){
    .lg\:grid-cols-3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
    .lg\:col-span-2{ grid-column:span 2 / span 2; }
}

/* ============================================================
   移动端优化（< 768px）
   ============================================================ */
@media (max-width:767px){
    /* 基础 */
    html{ -webkit-text-size-adjust:100%; }
    body{ font-size:14px; word-wrap:break-word; overflow-wrap:break-word; }

    /* 隐藏桌面端专用元素 */
    .desktop-only{ display:none !important; }

    /* 顶部搜索栏：纵向堆叠，减少 padding */
    .top-header .max-w-5xl{ padding-left:12px; padding-right:12px; }
    .top-header > div:first-child{
        flex-wrap:wrap; gap:8px; padding:10px 12px;
    }
    .top-header .neon-text{ font-size:18px; }
    .top-header form{ width:100%; flex:1 1 100%; }
    .top-header .input{ padding:10px 12px; font-size:14px; }
    .top-header .btn-primary{ padding:10px 14px; font-size:14px; }
    /* 网盘标签栏：横向滚动 */
    .top-header > div:last-child{
        overflow-x:auto; flex-wrap:nowrap !important;
        padding-bottom:8px; -webkit-overflow-scrolling:touch;
    }
    .top-header > div:last-child .chip{ flex-shrink:0; }

    /* 搜索结果卡片（移动端） */
    .result-card{ padding:12px 14px; gap:8px; }
    .result-card .result-title{ font-size:14px; padding-right:24px; }
    .result-card .result-meta{ gap:6px 10px; font-size:11px; }
    .complaint-btn{ top:8px; right:8px; width:24px; height:24px; font-size:12px; }
    .result-cta{ font-size:11px; }

    /* 首页 hero */
    .hero-section{ padding:16px !important; }
    .hero-title{ font-size:clamp(36px, 11vw, 48px) !important; }
    .hero-subtitle{ font-size:13px !important; margin-bottom:24px !important; }
    .search-form{
        flex-direction:column !important; gap:8px !important;
    }
    .search-form .input{ padding:14px 16px; font-size:15px; }
    .search-form .btn-primary{ padding:14px; width:100%; }
    .brand-tagline{ margin-bottom:24px; }
    .brand-tagline::before, .brand-tagline::after{ max-width:40px; }
    .hero-chips{ gap:6px !important; margin-bottom:24px !important; }
    .hot-section{ padding:14px 16px; }

    /* 详情页 */
    .info-row{ gap:8px; padding:10px 0; }
    .info-label{ width:72px; font-size:11px; }
    .info-value{ font-size:13px; }
    .detail-card{ padding:14px !important; }
    .detail-section{ margin-bottom:18px; }
    .file-tree{ font-size:12px; max-height:320px; }
    .file-node{ padding:4px 0; }

    /* 分页 */
    .page-link{ min-width:34px; height:34px; padding:0 6px; font-size:13px; }

    /* 统计卡片 */
    .stat-card{ padding:14px; }
    .stat-value{ font-size:22px; }

    /* 表格 */
    .table{ font-size:12px; }
    .table th, .table td{ padding:6px 8px; }

    /* modal */
    .modal-content{ width:95% !important; padding:16px !important; }

    /* 空状态 */
    .empty-state{ padding:40px 16px; }
    .empty-state .icon{ font-size:48px; }

    /* glass 容器减少 padding */
    .glass.p-6{ padding:14px; }

    /* flex 容器在移动端默认允许换行 */
    .flex-wrap{ flex-wrap:wrap; }

    /* 任何 fixed 宽度的元素都不超过视口 */
    .max-w-5xl, .max-w-2xl{ max-width:100% !important; padding-left:12px; padding-right:12px; }

    /* 内嵌样式修正 */
    [style*="width:"][style*="px"]{ max-width:100% !important; }

    /* btn-ghost 在移动端 */
    .btn-ghost{ padding:6px 10px; font-size:13px; }

    /* 徽章在移动端 */
    .badge{ font-size:10px; padding:2px 7px; }

    /* 字体大小 */
    .text-2xl{ font-size:18px; }
    .text-xl{ font-size:17px; }
    .text-lg{ font-size:16px; }
}

/* 超小屏（< 380px） */
@media (max-width:379px){
    .hero-title{ font-size:32px !important; }
    .top-header .neon-text{ font-size:16px; }
    .result-card{ padding:10px 12px; gap:6px; }
    .result-card .result-title{ font-size:13px; -webkit-line-clamp:2; padding-right:20px; }
    .result-card .result-meta{ font-size:10px; gap:4px 8px; }
    .complaint-btn{ top:6px; right:6px; width:22px; height:22px; font-size:11px; }
    .result-cta{ font-size:10px; }
}

/* ============================================================
   组件类（赛博朋克主题）
   ============================================================ */

.glass{
    background:var(--surface);
    backdrop-filter:blur(20px) saturate(150%);
    -webkit-backdrop-filter:blur(20px) saturate(150%);
    border:1px solid var(--border);
    border-radius:var(--radius);
    box-shadow:var(--shadow-card);
}
.glass-strong{
    background:var(--surface-2);
    backdrop-filter:blur(24px) saturate(160%);
    -webkit-backdrop-filter:blur(24px) saturate(160%);
    border:1px solid var(--border-strong);
    border-radius:var(--radius);
    box-shadow:var(--shadow-card);
}

.neon-text{
    font-family:'Orbitron',sans-serif; font-weight:900; letter-spacing:.08em;
    background:linear-gradient(90deg,var(--c1),var(--c2),var(--c3));
    background-size:200% auto;
    -webkit-background-clip:text; background-clip:text; color:transparent;
    animation:shimmer 4s linear infinite;
}
@keyframes shimmer{ 0%{background-position:0 0} 100%{background-position:200% 0} }

/* ---------- 按钮 ---------- */
.btn-primary{
    position:relative; overflow:hidden;
    background:linear-gradient(90deg,var(--c1),var(--c2));
    color:#000; font-weight:700; border:none; border-radius:var(--radius-sm);
    padding:12px 22px; cursor:pointer; transition:all .2s cubic-bezier(.4,0,.2,1);
    box-shadow:0 4px 16px rgba(0,245,255,.3); white-space:nowrap; font-size:15px;
    -webkit-tap-highlight-color:transparent;
}
.btn-primary:hover{
    transform:translateY(-2px);
    box-shadow:0 8px 24px rgba(0,245,255,.45);
    filter:brightness(1.08);
}
.btn-primary:active{
    transform:translateY(0) scale(.97);
    box-shadow:0 2px 8px rgba(0,245,255,.35);
    filter:brightness(.95);
}
.btn-primary:disabled{ opacity:.5; cursor:not-allowed; transform:none; box-shadow:0 0 20px rgba(0,245,255,.2); }

/* 按下闪光（纯 CSS，无需 JS） */
.btn-primary::after{
    content:''; position:absolute; inset:0; border-radius:inherit;
    background:radial-gradient(circle at center, rgba(255,255,255,.5), transparent 60%);
    opacity:0; transition:opacity .3s ease-out; pointer-events:none;
}
.btn-primary:active::after{ opacity:1; transition:opacity 0s; }

/* 涟漪效果（需 JS 动态注入 .ripple 元素） */
.btn-primary .ripple{
    position:absolute; border-radius:50%; transform:scale(0);
    background:rgba(255,255,255,.5);
    animation:ripple-anim .6s ease-out;
    pointer-events:none;
}
@keyframes ripple-anim{
    to{ transform:scale(4); opacity:0; }
}

.btn-ghost{
    background:transparent; color:var(--fg-muted);
    border:1px solid var(--border); border-radius:8px;
    padding:8px 14px; cursor:pointer; transition:all .15s;
    -webkit-tap-highlight-color:transparent;
}
.btn-ghost:hover{ color:var(--c1); border-color:var(--c1); background:rgba(0,245,255,.06); }
.btn-ghost:active{ transform:scale(.96); }
.btn-ghost:disabled{ opacity:.4; cursor:not-allowed; }
.btn-ghost.danger{ color:var(--c3); }
.btn-ghost.danger:hover{ color:#fff; border-color:var(--c3); background:rgba(255,71,87,.12); }

/* 危险按钮（物理删除等不可恢复操作） */
.btn-danger{
    background:rgba(255,71,87,.12); color:var(--c3);
    border:1px solid var(--c3); border-radius:8px;
    padding:8px 14px; cursor:pointer; transition:all .15s;
    font-weight:500;
    -webkit-tap-highlight-color:transparent;
}
.btn-danger:hover{ color:#fff; background:var(--c3); box-shadow:0 0 20px rgba(255,71,87,.35); }
.btn-danger:active{ transform:scale(.96); }
.btn-danger:disabled{ opacity:.4; cursor:not-allowed; transform:none; box-shadow:none; background:rgba(255,71,87,.06); }

/* ---------- 输入框 ---------- */
.input{
    background:var(--input-bg); border:1px solid var(--border); border-radius:var(--radius-sm);
    padding:12px 16px; color:var(--fg); width:100%; transition:all .2s;
    font-family:inherit; font-size:15px;
}
.input:focus{ outline:none; border-color:var(--c1); box-shadow:0 0 0 3px rgba(0,245,255,.12); }
.input::placeholder{ color:var(--fg-muted); }

/* ---------- chip / 标签 ---------- */
.chip{
    display:inline-flex; align-items:center; gap:4px;
    padding:7px 16px; border-radius:999px; cursor:pointer;
    border:1px solid var(--border); color:var(--fg-muted);
    font-size:13px; transition:all .2s; text-decoration:none;
    background:var(--surface-3);
    -webkit-tap-highlight-color:transparent;
}
.chip:hover{ color:var(--c1); border-color:var(--c1); transform:translateY(-1px); background:rgba(0,245,255,.06); }
.chip:active{ transform:translateY(0) scale(.97); }
.chip.active{
    color:#000; background:linear-gradient(90deg,var(--c1),var(--c2));
    border-color:transparent; font-weight:600;
    box-shadow:0 4px 16px rgba(0,245,255,.4);
}

/* ---------- 徽章 ---------- */
.badge{
    display:inline-flex; align-items:center; gap:4px; font-size:11px; font-weight:600;
    padding:3px 10px; border-radius:6px; white-space:nowrap; letter-spacing:.02em;
}
.badge-quark{ background:rgba(0,245,255,.15); color:var(--c1); }
.badge-uc{ background:rgba(255,184,0,.15); color:var(--c5); }
.badge-baidu{ background:rgba(0,255,157,.15); color:var(--c4); }
.badge-xunlei{ background:rgba(176,38,255,.15); color:var(--c2); }
.badge-guangya{ background:rgba(255,104,0,.15); color:#FF6800; }
.badge-local{ background:rgba(0,255,157,.12); color:var(--c4); border:1px solid rgba(0,255,157,.3); }
.badge-error{ background:rgba(255,45,149,.12); color:var(--c3); }

/* ---------- 结果卡片 ---------- */
.result-card{
    display:flex; flex-direction:column; gap:10px;
    padding:14px 16px; border-radius:var(--radius);
    background:var(--surface); border:1px solid var(--border); transition:all .2s;
    text-decoration:none; color:inherit; position:relative;
}
.result-card:hover{
    border-color:var(--border-strong); background:var(--surface-2);
    transform:translateY(-2px);
    box-shadow:0 8px 24px rgba(0,0,0,.3), 0 0 0 1px rgba(0,245,255,.15);
}
.result-card:active{ transform:translateY(0); }
.result-card:active .result-cta{ transform:translateX(2px); }
.result-title{
    font-weight:600; font-size:15px; color:var(--fg); margin:0;
    line-height:1.5; padding-right:28px; /* 给右上角投诉按钮留位置 */
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
    overflow:hidden; text-overflow:ellipsis;
}
/* 搜索关键词高亮：深色主题金色，浅色主题红色，均加粗+下划线 */
mark.hl, .result-title mark.hl{
    background:none !important; color:#a58427 !important; font-weight:700 !important;
    border-bottom:2px solid #a58427 !important; padding-bottom:1px !important;
}
[data-theme="light"] mark.hl, [data-theme="light"] .result-title mark.hl{
    color:#f10505 !important; border-bottom-color:#f10505 !important;
}
.result-meta{ display:flex; flex-wrap:wrap; gap:8px 14px; font-size:12px; color:var(--fg-muted); margin:0; }
.result-cta{ font-size:12px; color:var(--c1); opacity:.85; align-self:flex-start; transition:transform .15s; }

/* 投诉按钮：右上角悬浮 */
.complaint-btn{
    position:absolute; top:10px; right:12px; z-index:2;
    width:26px; height:26px; display:inline-flex; align-items:center; justify-content:center;
    border-radius:50%; font-size:13px; cursor:pointer;
    color:var(--fg-muted); background:transparent; border:none;
    transition:all .15s; user-select:none;
}
.complaint-btn:hover{ color:var(--c3); background:rgba(255,71,87,.12); }

/* ---------- 热门标签 ---------- */
.hot-tag{
    display:inline-block; padding:7px 13px; border-radius:8px;
    background:var(--surface-3); border:1px solid var(--border);
    color:var(--fg-muted); font-size:13px; text-decoration:none; transition:all .2s;
}
.hot-tag:hover{ color:var(--c1); border-color:var(--c1); transform:translateY(-1px); background:rgba(0,245,255,.08); }
.hot-tag:active{ transform:scale(.96); }
.hot-tag .num{ color:var(--c1); font-weight:700; margin-right:6px; font-family:'Orbitron',sans-serif; }

/* ---------- 分页 ---------- */
.page-link{
    display:inline-flex; align-items:center; justify-content:center;
    min-width:38px; height:38px; padding:0 10px; border-radius:8px;
    border:1px solid var(--border); color:var(--fg-muted); font-size:14px; text-decoration:none; transition:all .2s;
}
.page-link:hover{ color:var(--c1); border-color:var(--c1); transform:translateY(-1px); }
.page-link:active{ transform:scale(.96); }
.page-link.active{
    color:#000; background:linear-gradient(90deg,var(--c1),var(--c2));
    border-color:transparent; font-weight:700;
    box-shadow:0 0 16px rgba(0,245,255,.35);
}

/* ---------- 统计卡片 ---------- */
.stat-card{
    padding:20px; border-radius:var(--radius);
    background:var(--surface); border:1px solid var(--border);
    transition:all .2s; box-shadow:var(--shadow-card);
}
.stat-card:hover{ border-color:var(--border-strong); transform:translateY(-2px); box-shadow:0 8px 24px rgba(0,0,0,.3); }
.stat-value{ font-family:'Orbitron',sans-serif; font-size:28px; font-weight:700; }

/* ---------- 导航项 ---------- */
.nav-item{
    display:flex; align-items:center; gap:10px;
    padding:10px 16px; cursor:pointer; border-radius:10px;
    color:var(--fg-muted); transition:all .2s; font-size:14px;
    -webkit-tap-highlight-color:transparent;
}
.nav-item:hover{ color:var(--fg); background:rgba(0,245,255,.05); }
.nav-item:active{ transform:scale(.98); }
.nav-item.active{
    color:var(--c1); background:rgba(0,245,255,.08);
    border-left:3px solid var(--c1); padding-left:13px;
}

/* ---------- 表格 ---------- */
.table th{ text-align:left; padding:10px 12px; font-size:12px; color:var(--fg-muted); border-bottom:1px solid var(--border); font-weight:500; text-transform:uppercase; letter-spacing:.05em; }
.table td{ padding:12px; border-bottom:1px solid rgba(0,245,255,.04); font-size:13px; }
.table tr:hover td{ background:rgba(0,245,255,.03); }

/* ---------- 统计行 ---------- */
.stat-line{ font-size:12px; color:var(--fg-muted); }
.stat-line .ok{ color:var(--c4); }
.stat-line .err{ color:var(--c3); }

/* ---------- 动画 ---------- */
@keyframes fadeInUp{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:translateY(0); } }
.fade-in-up{ animation:fadeInUp .4s ease-out; }
@keyframes fadeIn{ from{ opacity:0; } to{ opacity:1; } }
.fade-in{ animation:fadeIn .4s ease-out; }

@keyframes pulse-glow{
    0%,100%{ box-shadow:0 0 20px rgba(0,245,255,.3); }
    50%{ box-shadow:0 0 30px rgba(0,245,255,.5); }
}
.pulse-glow{ animation:pulse-glow 2s ease-in-out infinite; }

/* ---------- 空状态 ---------- */
.empty-state{
    padding:60px 20px; text-align:center;
}
.empty-state .icon{
    font-size:64px; opacity:.35; margin-bottom:16px; line-height:1;
    filter:grayscale(.5);
}
.empty-state h3{
    font-size:18px; font-weight:600; color:var(--fg); margin:0 0 8px;
}
.empty-state p{
    font-size:14px; color:var(--fg-muted); margin:0;
}

/* ---------- 卡片标题分隔线 ---------- */
.section-title{
    display:flex; align-items:center; gap:10px;
    font-size:16px; font-weight:700; color:var(--fg);
    margin-bottom:16px;
}
.section-title::before{
    content:''; display:inline-block; width:4px; height:18px; border-radius:2px;
    background:linear-gradient(180deg,var(--c1),var(--c2));
    box-shadow:0 0 8px rgba(0,245,255,.5);
}

/* ---------- 顶部搜索栏（搜索/详情页） ---------- */
.top-header{
    position:sticky; top:0; z-index:20;
    background:var(--surface-2);
    backdrop-filter:blur(24px) saturate(160%);
    -webkit-backdrop-filter:blur(24px) saturate(160%);
    border-bottom:1px solid var(--border);
}

/* ---------- x-cloak (Alpine.js) ---------- */
[x-cloak]{ display:none !important; }

/* ---------- 加载占位 ---------- */
.skeleton{
    background:linear-gradient(90deg, rgba(0,245,255,.03) 25%, rgba(0,245,255,.08) 50%, rgba(0,245,255,.03) 75%);
    background-size:200% 100%;
    animation:skeleton-loading 1.5s infinite;
    border-radius:8px;
}
@keyframes skeleton-loading{ 0%{ background-position:200% 0; } 100%{ background-position:-200% 0; } }

/* ---------- 主题切换按钮 ---------- */
.theme-toggle{
    display:inline-flex; align-items:center; justify-content:center;
    width:36px; height:36px; border-radius:50%;
    background:var(--surface); border:1px solid var(--border);
    cursor:pointer; transition:all .2s; color:var(--fg-muted);
    -webkit-tap-highlight-color:transparent;
}
.theme-toggle:hover{ color:var(--c1); border-color:var(--c1); transform:rotate(15deg); }
.theme-toggle:active{ transform:scale(.9); }
.theme-toggle svg{ width:18px; height:18px; }

/* ---------- 浅色主题适配 ---------- */
[data-theme="light"] .btn-primary{ color:#fff; }
[data-theme="light"] .btn-primary:hover{ box-shadow:0 4px 30px var(--shadow-glow); }
[data-theme="light"] .chip.active{ color:#fff; }
[data-theme="light"] .page-link.active{ color:#fff; }
[data-theme="light"] .result-card:hover{ background:rgba(255,255,255,.95); }
[data-theme="light"] .badge-local{ border-color:rgba(10,157,111,.3); }
[data-theme="light"] .skeleton{
    background:linear-gradient(90deg, rgba(0,152,184,.04) 25%, rgba(0,152,184,.1) 50%, rgba(0,152,184,.04) 75%);
    background-size:200% 100%;
}

/* ---------- 主题切换过渡 ---------- */
body, .glass, .input, .btn-primary, .btn-ghost, .chip, .result-card, .stat-card, .nav-item, .hot-tag, .page-link, .badge{
    transition:background-color .3s ease, color .3s ease, border-color .3s ease;
}

/* ============================================================
   后台侧边栏（桌面固定 + 移动抽屉）
   ============================================================ */
.admin-sidebar{
    width:15rem; flex-shrink:0; padding:0;
    position:fixed; top:0; left:0; bottom:0;
    height:100vh; overflow-y:auto;
    border-radius:0 !important;
    border-right:1px solid var(--border) !important;
    border-top:0 !important; border-bottom:0 !important; border-left:0 !important;
    z-index:50;
    display:flex; flex-direction:column;
    background:var(--surface-2);
}
.admin-sidebar::-webkit-scrollbar{ width:4px; }
.admin-brand{
    padding:20px 18px 16px;
    border-bottom:1px solid var(--border);
    position:relative;
}
.admin-brand::after{
    content:''; position:absolute; left:18px; right:18px; bottom:-1px; height:1px;
    background:linear-gradient(90deg, transparent, var(--c1), transparent);
    opacity:.4;
}
.admin-brand h1{ font-size:20px; margin:0; letter-spacing:.1em; }
.admin-brand .brand-badge{
    display:inline-block; padding:2px 8px; margin-top:6px;
    font-size:10px; font-family:'JetBrains Mono',monospace;
    color:var(--c1); background:rgba(0,245,255,.08);
    border:1px solid var(--border-strong); border-radius:4px;
    letter-spacing:.05em;
}
.admin-nav{ padding:12px 10px; flex:1; }
.admin-nav .nav-item{
    margin-bottom:2px; padding:11px 14px; border-radius:10px;
    position:relative; font-size:14px;
}
.admin-nav .nav-item .ic{
    width:24px; height:24px; display:inline-flex;
    align-items:center; justify-content:center;
    border-radius:6px; background:rgba(0,245,255,.06);
    font-size:14px; margin-right:10px; flex-shrink:0;
    transition:all .2s;
}
.admin-nav .nav-item.active{
    background:linear-gradient(90deg, rgba(0,245,255,.14), rgba(176,38,255,.08));
    border-left:0; padding-left:14px;
    box-shadow:inset 3px 0 0 var(--c1);
}
.admin-nav .nav-item.active .ic{
    background:linear-gradient(135deg, var(--c1), var(--c2));
    color:#000;
}
.admin-sidebar-footer{
    padding:14px 16px; margin-top:auto;
    border-top:1px solid var(--border);
    background:var(--surface-3);
}
.admin-user-card{
    display:flex; align-items:center; gap:10px;
    padding:8px 10px; border-radius:10px;
    background:rgba(0,245,255,.04); margin-bottom:8px;
}
.admin-user-card .avatar{
    width:32px; height:32px; border-radius:8px; flex-shrink:0;
    background:linear-gradient(135deg, var(--c1), var(--c2));
    color:#000; font-weight:700; font-size:14px;
    display:flex; align-items:center; justify-content:center;
}
.admin-user-card .meta{ flex:1; min-width:0; }
.admin-user-card .meta .name{
    font-size:13px; font-weight:600; color:var(--fg);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.admin-user-card .meta .role{
    font-size:10px; color:var(--fg-muted);
    font-family:'JetBrains Mono',monospace;
}

/* ---------- 后台主内容 ---------- */
.admin-main{
    margin-left:15rem;
    padding:24px 28px !important;
    background:
        radial-gradient(ellipse 60% 50% at 0% 0%, rgba(0,245,255,.04), transparent 60%),
        radial-gradient(ellipse 50% 40% at 100% 100%, rgba(176,38,255,.04), transparent 60%);
    min-height:100vh;
}

/* ---------- 后台页头 ---------- */
.admin-page-header{
    display:flex; align-items:flex-start; justify-content:space-between;
    gap:16px; flex-wrap:wrap;
    padding:18px 22px; margin-bottom:20px;
    background:var(--surface);
    backdrop-filter:blur(20px) saturate(150%);
    -webkit-backdrop-filter:blur(20px) saturate(150%);
    border:1px solid var(--border);
    border-radius:var(--radius);
    box-shadow:var(--shadow-card);
    position:relative; overflow:hidden;
}
.admin-page-header::before{
    content:''; position:absolute; left:0; top:0; bottom:0; width:3px;
    background:linear-gradient(180deg, var(--c1), var(--c2));
    box-shadow:0 0 12px rgba(0,245,255,.5);
}
.admin-page-header .ttl{
    display:flex; align-items:center; gap:12px; min-width:0;
}
.admin-page-header .ttl .ic{
    width:36px; height:36px; flex-shrink:0;
    border-radius:10px;
    background:linear-gradient(135deg, rgba(0,245,255,.12), rgba(176,38,255,.08));
    border:1px solid var(--border-strong);
    display:flex; align-items:center; justify-content:center;
    font-size:18px;
}
.admin-page-header h2{
    margin:0; font-size:18px; font-weight:700;
    color:var(--fg); letter-spacing:.02em;
}
.admin-page-header .sub{
    font-size:12px; color:var(--fg-muted); margin-top:2px;
}
.admin-page-header .actions{
    display:flex; gap:8px; flex-wrap:wrap; align-items:center;
}

/* ---------- 后台玻璃面板 ---------- */
.admin-panel{
    padding:18px 20px !important;
    position:relative;
}
.admin-panel-title{
    display:flex; align-items:center; justify-content:space-between;
    gap:10px; margin-bottom:14px;
    padding-bottom:10px; border-bottom:1px solid var(--border);
}
.admin-panel-title h3{
    margin:0; font-size:13px; font-weight:600; color:var(--fg);
    letter-spacing:.04em; text-transform:uppercase;
    display:flex; align-items:center; gap:8px;
}
.admin-panel-title h3::before{
    content:''; width:3px; height:14px; border-radius:2px;
    background:linear-gradient(180deg, var(--c1), var(--c2));
    box-shadow:0 0 6px rgba(0,245,255,.4);
}

/* ---------- 后台统计卡片（升级版） ---------- */
.stat-card{
    position:relative; overflow:hidden;
    padding:18px 20px !important;
}
.stat-card::before{
    content:''; position:absolute; left:0; top:0; right:0; height:2px;
    background:linear-gradient(90deg, var(--c1), transparent 70%);
    opacity:.6;
}
.stat-card .stat-label{
    font-size:11px; color:var(--fg-muted);
    text-transform:uppercase; letter-spacing:.06em;
    margin-bottom:8px; font-weight:500;
}
.stat-card .stat-value{
    font-size:26px; line-height:1.1; margin-bottom:4px;
    font-family:'Orbitron',sans-serif;
}
.stat-card .stat-trend{
    font-size:11px; color:var(--fg-muted);
    display:flex; align-items:center; gap:6px;
}
.stat-card .stat-trend .num{ font-family:'JetBrains Mono',monospace; }

/* ---------- 后台表格优化 ---------- */
.admin-table-wrap{
    padding:4px !important;
    border-radius:var(--radius) !important;
    overflow:hidden;
}
.admin-table-wrap .table thead th{
    position:sticky; top:0;
    background:var(--surface-3);
    backdrop-filter:blur(8px);
    z-index:1;
    padding:11px 14px !important;
    font-size:11px !important;
    color:var(--fg-muted);
    border-bottom:1px solid var(--border-strong) !important;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.06em;
    white-space:nowrap;
}
.admin-table-wrap .table tbody td{
    padding:11px 14px !important;
    font-size:13px !important;
    border-bottom:1px solid rgba(0,245,255,.04);
    vertical-align:middle;
}
.admin-table-wrap .table tbody tr{
    transition:background-color .15s;
}
.admin-table-wrap .table tbody tr:hover td{
    background:rgba(0,245,255,.04);
}
.admin-table-wrap .table tbody tr:last-child td{
    border-bottom:0;
}
.admin-table-wrap .empty-row td{
    padding:48px 20px !important; text-align:center;
    color:var(--fg-muted); font-size:13px;
}
.admin-table-wrap .empty-row td::before{
    content:'⊘'; display:block; font-size:36px;
    opacity:.35; margin-bottom:8px; color:var(--fg-muted);
}

/* ---------- 操作按钮组 ---------- */
.action-group{
    display:inline-flex; gap:4px; align-items:center;
    flex-wrap:wrap;
}
.action-group .btn-ghost{
    padding:5px 10px !important;
    font-size:12px !important;
    border-radius:6px;
    line-height:1.3;
}
.action-group .btn-ghost:hover{
    transform:translateY(-1px);
}
.action-group .btn-ghost.danger{ color:var(--c3); }
.action-group .btn-ghost.danger:hover{
    border-color:var(--c3); background:rgba(255,45,149,.08);
}

/* ---------- 表单标签 ---------- */
.form-label{
    display:block; font-size:12px; font-weight:500;
    color:var(--fg); margin-bottom:6px;
    letter-spacing:.02em;
}
.form-label .req{ color:var(--c3); margin-left:2px; }
.form-hint{
    display:block; font-size:11px; color:var(--fg-muted);
    margin-top:4px; line-height:1.4;
}

/* ---------- 后台 Modal ---------- */
.modal{
    position:fixed; inset:0; z-index:50;
    display:flex; align-items:center; justify-content:center;
    padding:20px;
    background:rgba(0,0,0,.65);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
}
.admin-modal-card{
    width:100%; max-width:560px; margin:auto;
    padding:0 !important; overflow:hidden;
    border-radius:var(--radius);
    background:var(--surface-2);
    backdrop-filter:blur(24px) saturate(160%);
    -webkit-backdrop-filter:blur(24px) saturate(160%);
    border:1px solid var(--border-strong);
    box-shadow:0 24px 64px rgba(0,0,0,.5);
    display:flex; flex-direction:column;
    max-height:calc(100vh - 40px);
}
.admin-modal-card .modal-header{
    padding:16px 20px;
    border-bottom:1px solid var(--border);
    display:flex; align-items:center; justify-content:space-between;
    gap:12px; flex-shrink:0;
    background:rgba(0,245,255,.04);
}
.admin-modal-card .modal-header h3{
    margin:0; font-size:16px; font-weight:700; color:var(--fg);
    display:flex; align-items:center; gap:10px;
}
.admin-modal-card .modal-header h3::before{
    content:''; width:4px; height:18px; border-radius:2px;
    background:linear-gradient(180deg, var(--c1), var(--c2));
}
.admin-modal-card .modal-close{
    width:28px; height:28px; border-radius:8px;
    background:transparent; border:1px solid var(--border);
    color:var(--fg-muted); cursor:pointer; font-size:16px;
    display:flex; align-items:center; justify-content:center;
    transition:all .15s; line-height:1;
}
.admin-modal-card .modal-close:hover{
    color:var(--c3); border-color:var(--c3);
    transform:rotate(90deg);
}
.admin-modal-card .modal-body{
    padding:20px; overflow-y:auto; flex:1;
}
.admin-modal-card .modal-footer{
    padding:14px 20px;
    border-top:1px solid var(--border);
    display:flex; gap:8px; justify-content:flex-end;
    background:var(--surface-3); flex-shrink:0;
}

/* ---------- 数据 Tab ---------- */
.admin-tabs{
    display:flex; gap:6px; flex-wrap:wrap;
    padding:6px; background:var(--surface);
    border:1px solid var(--border); border-radius:var(--radius);
}
.admin-tabs .chip{
    border-radius:8px; padding:8px 14px;
    border:1px solid transparent;
}

/* ---------- 信息提示框 ---------- */
.admin-info{
    padding:14px 16px; border-radius:var(--radius-sm);
    background:rgba(0,255,157,.04);
    border:1px solid var(--border);
    border-left:3px solid var(--c4);
    font-size:12px; color:var(--fg-muted); line-height:1.7;
}
.admin-info strong{ color:var(--fg); }
.admin-info code{
    padding:2px 6px; border-radius:4px;
    background:rgba(0,245,255,.08); color:var(--c1);
    font-family:'JetBrains Mono',monospace; font-size:11px;
}
.admin-info pre{
    margin:8px 0 0; padding:10px 12px;
    background:rgba(0,0,0,.25); border-radius:6px;
    color:var(--c4); font-size:11px;
    font-family:'JetBrains Mono',monospace;
    white-space:pre-wrap; word-break:break-all;
}

/* ---------- 移动端顶栏 ---------- */
.admin-mobile-topbar{ display:none; }
@media (max-width:767px){
    .admin-sidebar{
        width:14rem;
        transform:translateX(-100%);
        transition:transform .25s cubic-bezier(.4,0,.2,1);
        box-shadow:0 0 40px rgba(0,0,0,.5);
    }
    .admin-sidebar-open{
        transform:translateX(0) !important;
    }
    .admin-main{
        margin-left:0 !important;
        padding:14px !important;
    }
    .admin-mobile-topbar{
        display:flex; align-items:center; gap:10px;
        margin-bottom:14px; padding:10px 12px;
        background:var(--surface);
        border:1px solid var(--border);
        border-radius:var(--radius);
        position:sticky; top:0; z-index:30;
    }
    .admin-mobile-topbar .menu-btn{
        width:34px; height:34px; padding:0;
        display:flex; align-items:center; justify-content:center;
        border-radius:8px;
    }
    .admin-mobile-topbar .current-title{
        font-size:15px; font-weight:600; color:var(--fg);
        flex:1; min-width:0;
        overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
    }
    .admin-page-header{
        padding:14px 16px; margin-bottom:14px;
    }
    .admin-page-header h2{ font-size:16px; }
    .admin-panel{ padding:14px 16px !important; }
    /* 后台表格横向滚动 */
    .admin-main .glass{ overflow-x:auto; }
    /* 后台 grid 改为单列 */
    .admin-main .grid.grid-cols-2{ grid-template-columns:1fr; }
    .admin-main .grid.grid-cols-3{ grid-template-columns:1fr; }
    .admin-main .grid.grid-cols-4{ grid-template-columns:repeat(2,1fr); }
    /* Modal 全屏 */
    .modal{ padding:0 !important; }
    .admin-modal-card{
        max-width:100% !important;
        max-height:100vh !important;
        border-radius:0 !important;
        margin:0 !important;
        min-height:100vh;
    }
    .stat-card .stat-value{ font-size:22px; }
}
@media (max-width:379px){
    .admin-main .grid.grid-cols-4,
    .admin-main .grid.grid-cols-2{ grid-template-columns:1fr; }
}
