/* =================================================================
   Liquid Glass 设计基座（复刻 1.php，全站统一）
   运营商配色通过 body 类切换：默认移动(蓝)，.carrier-unicom(红)
   ================================================================= */
:root{
    --acc:#0070C0;
    --acc-deep:#004b82;
    --acc-soft:rgba(0,112,192,.13);
    --acc-glow:rgba(0,112,192,.45);
    --blob-a:rgba(100,175,240,.32);
    --blob-b:rgba(0,120,210,.22);
    --blob-c:rgba(0,70,130,.20);
    --blob-before:rgba(90,180,245,.55);
    --blob-after:rgba(30,140,220,.45);
    --shadow:0 24px 60px -24px rgba(0,50,90,.38);

    --ink:#0e1c15; --sub:#5c6f64;
    --glass: rgba(255,255,255,.60);
    --glass-strong: rgba(255,255,255,.80);
    --hairline: rgba(255,255,255,.70);
    --ok:#16a34a; --warn:#d97706; --danger:#b91c1c;

    --font-body:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
    --font-disp:"Outfit",-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
    --font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
body.carrier-unicom{
    --acc:#e60012;
    --acc-deep:#a3000c;
    --acc-soft:rgba(230,0,18,.10);
    --acc-glow:rgba(230,0,18,.40);
    --blob-a:rgba(255,120,130,.28);
    --blob-b:rgba(230,0,18,.18);
    --blob-c:rgba(120,0,10,.18);
    --blob-before:rgba(255,90,105,.50);
    --blob-after:rgba(255,160,120,.40);
    --shadow:0 24px 60px -24px rgba(70,10,15,.35);
}
body.carrier-qq{
    --acc:#D99E2B;
    --acc-deep:#A87313;
    --acc-soft:rgba(217,158,43,.14);
    --acc-glow:rgba(217,158,43,.48);
    --blob-a:rgba(255,214,120,.32);
    --blob-b:rgba(217,158,43,.22);
    --blob-c:rgba(150,105,15,.18);
    --blob-before:rgba(255,196,90,.50);
    --blob-after:rgba(240,170,40,.45);
    --shadow:0 24px 60px -24px rgba(120,85,10,.38);
}

*{ box-sizing:border-box; margin:0; padding:0; -webkit-tap-highlight-color:transparent; }
html{ -webkit-text-size-adjust:100%; }
body{
    font-family:var(--font-body); color:var(--ink);
    min-height:100vh; padding:20px 16px 48px;
    display:flex; flex-direction:column;
    background:
        radial-gradient(120% 90% at 10% 6%,  var(--blob-a) 0%, transparent 55%),
        radial-gradient(110% 85% at 92% 10%, var(--blob-b) 0%, transparent 50%),
        radial-gradient(140% 100% at 50% 110%, var(--blob-c) 0%, transparent 58%),
        linear-gradient(180deg, #f8f5ec 0%, #efe7d4 100%);
    background-attachment:fixed;
}
body::before, body::after{
    content:""; position:fixed; z-index:-1; border-radius:50%;
    filter:blur(70px); opacity:.55; pointer-events:none;
}
body::before{
    width:46vw; height:46vw; left:-12vw; top:-14vw;
    background:radial-gradient(circle, var(--blob-before), transparent 65%);
    animation:drift 26s ease-in-out infinite alternate;
}
body::after{
    width:40vw; height:40vw; right:-10vw; bottom:-12vw;
    background:radial-gradient(circle, var(--blob-after), transparent 65%);
    animation:drift 32s ease-in-out infinite alternate-reverse;
}
@keyframes drift{ from{ transform:translate(0,0) scale(1);} to{ transform:translate(6vw,4vw) scale(1.12);} }

.container{ max-width:620px; margin:0 auto; width:100%; }
.container.wide{ max-width:1280px; }

a{ color:var(--acc-deep); }

/* ---------- 玻璃面板 ---------- */
.glass{
    position:relative;
    background:linear-gradient(160deg, var(--glass-strong) 0%, var(--glass) 55%, rgba(255,255,255,.42) 100%);
    -webkit-backdrop-filter:blur(24px) saturate(180%);
    backdrop-filter:blur(24px) saturate(180%);
    border:1px solid var(--hairline);
    border-radius:24px;
    box-shadow:var(--shadow), inset 0 1px 0 rgba(255,255,255,.9), inset 0 -1px 0 rgba(255,255,255,.25);
}
.glass::before{
    content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
    background:linear-gradient(115deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,0) 38%);
    mix-blend-mode:screen; opacity:.7;
}

/* ---------- 顶部状态条 ---------- */
.topbar{
    display:flex; align-items:stretch; gap:8px;
    padding:10px; margin-bottom:14px;
    border-radius:22px; font-size:13px; color:var(--sub);
    background:linear-gradient(160deg, rgba(255,255,255,.72), rgba(255,255,255,.45));
    -webkit-backdrop-filter:blur(20px) saturate(180%); backdrop-filter:blur(20px) saturate(180%);
    border:1px solid var(--hairline);
    box-shadow:0 10px 30px -14px rgba(20,40,30,.30), inset 0 1px 0 rgba(255,255,255,.9);
    animation:rise .5s cubic-bezier(.22,1,.36,1) both;
}
.topbar .who{
    flex:1 1 0; min-width:0; display:flex; align-items:center; gap:8px;
    padding:6px 12px; border-radius:15px;
}
.topbar .who .meta{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.topbar .who .uname{
    font-size:13px; color:var(--sub); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.topbar .who .uname b{ color:var(--ink); font-weight:700; }
.topbar .ip{ font-size:11px; opacity:.78; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dot{ width:8px; height:8px; border-radius:50%; background:var(--acc); box-shadow:0 0 0 3px var(--acc-soft); flex:none; animation:pulse 2.2s infinite; }
@keyframes pulse{ 0%,100%{ box-shadow:0 0 0 3px var(--acc-soft);} 50%{ box-shadow:0 0 0 6px rgba(0,0,0,0);} }

.switch-pill{
    flex:0 1 auto; min-width:0; display:inline-flex; align-items:center; justify-content:center; gap:4px;
    padding:8px 13px; border-radius:15px; text-decoration:none;
    font-size:13px; font-weight:700; color:var(--acc-deep);
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    background:var(--acc-soft); border:1px solid var(--acc-soft);
    transition:transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s;
}
.switch-pill:hover{ transform:translateY(-2px); box-shadow:0 8px 20px -8px var(--acc-glow); }
.switch-pill:active{ transform:scale(.96); }

.notice-entry{
    flex:0 1 auto; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px;
    padding:6px 13px; border-radius:15px; cursor:pointer;
    font-size:13px; font-weight:700; color:var(--ink);
    white-space:nowrap; overflow:hidden;
    background:linear-gradient(160deg, rgba(255,255,255,.8), rgba(255,255,255,.5));
    border:1px solid var(--hairline);
    -webkit-backdrop-filter:blur(16px) saturate(180%); backdrop-filter:blur(16px) saturate(180%);
    box-shadow:0 8px 20px -12px rgba(20,40,30,.28), inset 0 1px 0 rgba(255,255,255,.9);
    transition:transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s;
}
.notice-entry:hover{ transform:translateY(-2px); box-shadow:0 14px 28px -14px rgba(20,40,30,.35); }
.notice-entry:active{ transform:scale(.96); }
.notice-entry .nt-title{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
.notice-time{ font-size:10px; font-weight:500; color:var(--sub); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }

/* ---------- 主卡片 ---------- */
.card{ padding:26px 24px 28px; margin-bottom:18px; animation:rise .55s .06s cubic-bezier(.22,1,.36,1) both; }
@keyframes rise{ from{ opacity:0; transform:translateY(18px);} to{ opacity:1; transform:translateY(0);} }

.card-head{ display:flex; align-items:flex-start; gap:16px; margin-bottom:24px; }
.logo-tile{
    flex:none; width:58px; height:58px; border-radius:18px; overflow:hidden;
    display:flex; align-items:center; justify-content:center;
    font-family:var(--font-disp); font-weight:800; font-size:14px; letter-spacing:.5px; color:#fff;
    background:linear-gradient(150deg, #ffffff 0%, #eef3f0 100%);
    border:1px solid rgba(255,255,255,.9);
    box-shadow:0 12px 26px -10px var(--acc-glow), inset 0 1px 0 rgba(255,255,255,.8);
    transform:rotate(-3deg);
    transition:transform .45s cubic-bezier(.34,1.56,.64,1), box-shadow .3s;
}
.logo-tile img{ width:100%; height:100%; object-fit:contain; padding:6px; display:block; }
.card-head:hover .logo-tile{ transform:rotate(8deg) scale(1.08); box-shadow:0 18px 34px -12px var(--acc-glow); }
.card-head .txt{ min-width:0; }
.card-head h1{ font-family:var(--font-disp); font-size:24px; font-weight:800; line-height:1.15; letter-spacing:-.3px; }
.card-head h1 .num{ color:var(--acc); }
.badges{ display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.badge{
    display:inline-block; white-space:nowrap;
    font-size:11px; font-weight:700; padding:3px 11px; border-radius:999px;
    letter-spacing:.3px; animation:badgeGlow 2.6s ease-in-out infinite;
}
.badge.acc{ color:var(--acc-deep); background:var(--acc-soft); border:1px solid var(--acc); }
.badge.red{ color:#b91c1c; background:rgba(239,68,68,.12); border:1px solid rgba(239,68,68,.55); animation-delay:.4s; }
.badge.purple{ color:#6d28d9; background:rgba(139,92,246,.12); border:1px solid rgba(139,92,246,.55); animation-delay:.8s; }
.badge.green{ color:#15803d; background:rgba(34,197,94,.14); border:1px solid rgba(34,197,94,.5); animation-delay:.6s; }
.badge.gray{ color:#475569; background:rgba(148,163,184,.14); border:1px solid rgba(148,163,184,.45); }
.status-badge{ cursor:pointer; user-select:none; }
@keyframes badgeGlow{ 0%,100%{ box-shadow:0 0 0 0 currentColor; } 50%{ box-shadow:0 0 10px 1px currentColor; } }

/* ---------- 表单 ---------- */
.form-group{ margin-bottom:18px; }
label{ display:flex; align-items:center; gap:7px; margin-bottom:8px; font-size:14px; font-weight:600; color:var(--ink); }
label::before{ content:""; flex:none; width:4px; height:14px; border-radius:2px; background:linear-gradient(180deg,var(--acc),var(--acc-deep)); }
.label-line{ display:flex; align-items:center; gap:7px; min-width:0; flex:1 1 auto; }
.label-line .lt{ flex:none; white-space:nowrap; }
.label-line .tag{ flex:none; font-size:11px; font-weight:500; color:var(--sub); white-space:nowrap; }
.copy-chip{
    flex:0 1 auto; min-width:0; display:inline-flex; align-items:center; gap:3px;
    cursor:pointer; user-select:none;
    font-family:var(--font-mono); font-size:9px; font-weight:600;
    padding:1px 6px; border-radius:999px; color:var(--acc-deep);
    background:var(--acc-soft); border:1px dashed var(--acc);
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    transition:transform .2s cubic-bezier(.34,1.56,.64,1), background .2s, box-shadow .2s;
}
.copy-chip .ct{ overflow:hidden; text-overflow:ellipsis; }
.copy-chip:hover{ transform:translateY(-1px) scale(1.04); box-shadow:0 6px 14px -6px var(--acc-glow); background:rgba(255,255,255,.85); }
.copy-chip:active{ transform:scale(.94); }
.copy-chip.copied{ background:rgba(34,197,94,.16); border-color:#22c55e; color:#15803d; border-style:solid; }

input[type="text"], input[type="number"], input[type="tel"], input[type="password"], input[type="datetime-local"], input[type="date"], input[type="time"], textarea, select{
    width:100%; padding:13px 15px; font-size:16px; color:var(--ink);
    background:rgba(255,255,255,.65);
    border:1px solid rgba(15,40,28,.12); border-radius:16px;
    -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
    box-shadow:inset 0 1px 2px rgba(15,30,22,.05), inset 0 1px 0 rgba(255,255,255,.8);
    transition:border-color .2s, box-shadow .25s, background .2s, transform .2s;
    font-family:var(--font-body);
}
textarea{ min-height:150px; font-family:var(--font-mono); font-size:13px; line-height:1.55; resize:vertical; }
select{ appearance:none; -webkit-appearance:none; }
input::placeholder, textarea::placeholder{ color:#9aa8a0; }
input:focus, textarea:focus, select:focus{
    outline:none; border-color:var(--acc); background:rgba(255,255,255,.9);
    box-shadow:0 0 0 4px var(--acc-soft), inset 0 1px 0 rgba(255,255,255,.9);
}
input[readonly]{ background:rgba(240,240,240,.6); color:#666; cursor:default; }

/* ---------- 按钮 ---------- */
button, .btn{
    display:inline-flex; align-items:center; justify-content:center;
    width:100%; padding:15px; margin-top:8px; border:none; border-radius:18px;
    font-size:16px; font-weight:700; font-family:var(--font-body); cursor:pointer; text-decoration:none;
    color:#fff; background:linear-gradient(150deg, var(--acc) 0%, var(--acc-deep) 100%);
    box-shadow:0 14px 30px -12px var(--acc-glow), inset 0 1px 0 rgba(255,255,255,.4);
    position:relative; overflow:hidden;
    transition:transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s, filter .2s;
}
button:hover, .btn:hover{ transform:translateY(-2px); box-shadow:0 20px 38px -14px var(--acc-glow), inset 0 1px 0 rgba(255,255,255,.5); }
button:active, .btn:active{ transform:scale(.97); }
button::after, .btn::after{
    content:""; position:absolute; top:0; left:-80%; width:50%; height:100%;
    background:linear-gradient(105deg, transparent, rgba(255,255,255,.45), transparent);
    transform:skewX(-20deg); transition:left .6s ease;
}
button:hover::after, .btn:hover::after{ left:130%; }
button.secondary, .btn.secondary{
    background:rgba(255,255,255,.7); color:var(--ink);
    border:1px solid rgba(15,40,28,.12);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 8px 20px -12px rgba(20,40,30,.25);
    font-weight:600;
}
button.secondary:hover, .btn.secondary:hover{ background:rgba(255,255,255,.92); box-shadow:0 12px 26px -12px rgba(20,40,30,.3); }
button.danger, .btn.danger{ background:linear-gradient(150deg,#e60012,#a3000c); box-shadow:0 14px 30px -12px rgba(230,0,18,.4), inset 0 1px 0 rgba(255,255,255,.4); }
.btn.sm{ width:auto; padding:8px 16px; font-size:13px; border-radius:12px; margin-top:0; }
.btn.ghost{ background:rgba(255,255,255,.7); color:var(--ink); border:1px solid rgba(15,40,28,.12); }
.btn-row{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.btn-row .btn, .btn-row button{ width:auto; margin-top:0; }

/* ---------- 消息提示 ---------- */
.message{ margin-top:18px; padding:13px 16px; border-radius:16px; display:none; font-size:14px; line-height:1.5; word-break:break-all;
    -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); animation:rise .35s ease both; }
.message.success{ display:block; background:rgba(34,197,94,.14); color:#14532d; border:1px solid rgba(34,197,94,.35); box-shadow:inset 0 1px 0 rgba(255,255,255,.6); }
.message.error{ display:block; background:rgba(239,68,68,.12); color:#7f1d1d; border:1px solid rgba(239,68,68,.35); box-shadow:inset 0 1px 0 rgba(255,255,255,.6); }
.message.info{ display:block; background:rgba(59,130,246,.12); color:#1e40af; border:1px solid rgba(59,130,246,.35); }

/* ---------- 账单列表（移动） ---------- */
.bill-list{
    margin-top:4px; padding:12px; border-radius:18px; max-height:500px; overflow-y:auto;
    background:rgba(255,255,255,.45); border:1px solid rgba(255,255,255,.6);
    box-shadow:inset 0 2px 6px rgba(15,30,22,.05);
}
.bill-list::-webkit-scrollbar{ width:6px; } .bill-list::-webkit-scrollbar-thumb{ background:var(--acc-soft); border-radius:3px; }
.bill-item{
    background:rgba(255,255,255,.85); border-radius:16px; padding:14px 15px; margin-bottom:10px;
    border:1px solid rgba(15,40,28,.08); display:flex; align-items:flex-start; gap:12px;
    box-shadow:0 6px 16px -10px rgba(20,40,30,.25), inset 0 1px 0 rgba(255,255,255,.9);
    transition:transform .2s, box-shadow .2s, border-color .2s;
}
.bill-item:hover{ transform:translateY(-2px); box-shadow:0 12px 24px -12px rgba(20,40,30,.3); border-color:var(--acc-soft); }
.bill-item:last-child{ margin-bottom:0; }
.bill-checkbox{ margin-top:3px; }
.bill-content{ flex:1; min-width:0; }
.bill-row{ display:flex; justify-content:space-between; align-items:center; margin-bottom:7px; gap:8px; }
.bill-row:last-child{ margin-bottom:0; }
.bill-amount{ font-family:var(--font-disp); font-size:19px; font-weight:800; color:var(--ink); }
.bill-channel{ font-size:12px; font-weight:600; color:var(--acc-deep); background:var(--acc-soft); padding:3px 10px; border-radius:999px; white-space:nowrap; }
.bill-time{ color:var(--sub); font-size:13px; }

/* ---------- 账单列表（联通·按月分组） ---------- */
.bill-month-card{
    border:1px solid rgba(15,40,28,.08); border-radius:18px; overflow:hidden; margin-bottom:12px;
    background:rgba(255,255,255,.8); box-shadow:0 8px 20px -12px rgba(20,40,30,.25), inset 0 1px 0 rgba(255,255,255,.9);
}
.bill-month-card:last-child{ margin-bottom:0; }
.bill-month-header{
    padding:12px 16px; display:flex; justify-content:space-between; align-items:center; gap:8px;
    background:linear-gradient(150deg, var(--acc-soft), rgba(255,255,255,.3));
    border-bottom:1px solid rgba(15,40,28,.07);
}
.bill-month-title{ font-family:var(--font-disp); font-weight:700; font-size:15px; color:var(--ink); }
.bill-month-total{ background:linear-gradient(150deg,var(--acc),var(--acc-deep)); color:#fff; padding:4px 11px; border-radius:999px; font-size:12px; font-weight:700; box-shadow:0 6px 14px -6px var(--acc-glow); }
.bill-orders-container{ padding:12px; display:flex; flex-direction:column; gap:9px; }
.bill-order-item{ border:1px solid rgba(15,40,28,.07); border-radius:14px; padding:13px 14px; background:rgba(255,255,255,.9); transition:background .2s, transform .2s, box-shadow .2s; }
.bill-order-item:hover{ background:#fff; transform:translateY(-1px); box-shadow:0 8px 18px -12px rgba(20,40,30,.28); }
.bill-order-header{ display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:8px; gap:8px; }
.bill-order-time{ font-weight:600; color:var(--ink); font-size:14px; }
.bill-order-channel{ margin-left:8px; font-size:12px; color:var(--sub); }
.bill-order-amount{ font-family:var(--font-disp); font-size:17px; font-weight:800; color:var(--acc); white-space:nowrap; }
.bill-order-details{ font-size:12px; color:var(--sub); display:flex; flex-direction:column; gap:4px; }
.status-paid{ color:#16a34a; font-weight:600; } .status-unpaid{ color:#d97706; font-weight:600; }
.bill-delete-checkbox{ margin-top:9px; display:flex; align-items:center; font-size:12px; color:var(--sub); cursor:pointer; }
.bill-delete-checkbox input{ margin-right:7px; }
.phone-display{
    margin-top:10px; padding:11px 14px; border-radius:14px; font-size:14px; font-weight:600;
    color:var(--acc-deep); background:var(--acc-soft); border:1px solid var(--acc-soft);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.6); animation:rise .3s ease both;
}

/* ---------- 自定义复选框 ---------- */
input[type="checkbox"]{
    appearance:none; -webkit-appearance:none; width:20px; height:20px; flex:none; cursor:pointer;
    border:1.5px solid rgba(15,40,28,.25); border-radius:7px; background:rgba(255,255,255,.85);
    display:inline-grid; place-content:center; transition:all .2s cubic-bezier(.34,1.56,.64,1);
}
input[type="checkbox"]:hover{ border-color:var(--acc); transform:scale(1.08); }
input[type="checkbox"]:checked{ background:linear-gradient(150deg,var(--acc),var(--acc-deep)); border-color:var(--acc-deep); box-shadow:0 4px 10px -4px var(--acc-glow); }
input[type="checkbox"]:checked::after{ content:"✓"; color:#fff; font-size:13px; font-weight:800; line-height:1; }

/* ---------- 开关式启用按钮 ---------- */
.switch-label{ display:inline-flex; align-items:center; gap:9px; cursor:pointer; }
.switch-label::before{ display:none; }
.switch-label input{ display:none; }
.switch-ui{
    width:46px; height:26px; border-radius:999px; flex:none; position:relative;
    background:rgba(148,163,184,.42); transition:background .22s ease;
    box-shadow:inset 0 1px 3px rgba(0,0,0,.12);
}
.switch-ui::after{
    content:""; position:absolute; top:3px; left:3px;
    width:20px; height:20px; border-radius:50%; background:#fff;
    box-shadow:0 1px 3px rgba(0,0,0,.25); transition:transform .22s cubic-bezier(.34,1.56,.64,1);
}
.switch-label input:checked + .switch-ui{ background:linear-gradient(150deg,var(--acc),var(--acc-deep)); }
.switch-label input:checked + .switch-ui::after{ transform:translateX(20px); }
.switch-text{ font-size:14px; font-weight:600; color:var(--ink); }

/* ---------- 公告弹窗 ---------- */
.notice-modal{ position:fixed; inset:0; background:rgba(10,20,15,.45);
    -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
    display:none; z-index:999; animation:fade .2s ease; }
@keyframes fade{ from{opacity:0;} to{opacity:1;} }
.notice-box{
    background:linear-gradient(160deg, rgba(255,255,255,.95), rgba(255,255,255,.82));
    -webkit-backdrop-filter:blur(28px) saturate(180%); backdrop-filter:blur(28px) saturate(180%);
    width:90%; max-width:500px; margin:14% auto; border-radius:24px; overflow:hidden;
    border:1px solid var(--hairline);
    box-shadow:0 40px 90px -30px rgba(10,25,18,.5), inset 0 1px 0 rgba(255,255,255,.95);
    animation:pop .3s cubic-bezier(.22,1.4,.36,1) both;
}
@keyframes pop{ from{ opacity:0; transform:translateY(24px) scale(.96);} to{ opacity:1; transform:translateY(0) scale(1);} }
.notice-header{ padding:16px 18px; font-size:16px; font-weight:700; border-bottom:1px solid rgba(15,40,28,.08); display:flex; justify-content:space-between; align-items:center; }
.notice-body{ padding:18px; font-size:14px; color:var(--ink); line-height:1.7; max-height:300px; overflow-y:auto; }
.notice-footer{ padding:11px 18px; font-size:12px; color:var(--sub); border-top:1px solid rgba(15,40,28,.08); }
.close-btn{ cursor:pointer; font-size:20px; line-height:1; color:var(--sub); width:28px; height:28px; border-radius:50%; display:inline-grid; place-content:center; transition:all .2s; }
.close-btn:hover{ background:rgba(0,0,0,.07); color:var(--ink); transform:rotate(90deg); }

/* ---------- 水印 ---------- */
.watermark{ position:fixed; inset:0; z-index:9999; pointer-events:none; user-select:none; color:var(--sub); font-size:15px; font-weight:600; }
.watermark-item{ position:absolute; transform:rotate(-14deg); letter-spacing:1px; white-space:nowrap; opacity:.15; }

/* ---------- 页脚 / 管理 ---------- */
.footer{ text-align:center; margin-top:22px; color:var(--sub); font-size:12px; letter-spacing:.5px; }
.admin-link{ text-align:center; margin-top:14px; font-size:14px; }
.admin-link a{ color:var(--acc-deep); text-decoration:none; font-weight:700; padding:8px 18px; border-radius:999px; background:var(--acc-soft); border:1px solid var(--acc-soft); display:inline-block; transition:transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s; }
.admin-link a:hover{ transform:translateY(-2px); box-shadow:0 10px 22px -10px var(--acc-glow); }

/* ---------- 快捷操作块（扁平按钮条） ---------- */
.quick-bar{
    display:flex; flex-wrap:nowrap; gap:8px; align-items:center; justify-content:center;
    margin:-2px 0 14px; padding:10px 12px;
    border-radius:22px;
    background:linear-gradient(160deg, rgba(255,255,255,.72), rgba(255,255,255,.45));
    -webkit-backdrop-filter:blur(20px) saturate(180%); backdrop-filter:blur(20px) saturate(180%);
    border:1px solid var(--hairline);
    box-shadow:0 10px 30px -14px rgba(20,40,30,.30), inset 0 1px 0 rgba(255,255,255,.9);
    animation:rise .5s .1s cubic-bezier(.22,1,.36,1) both;
}
.quick-btn{
    flex:0 0 auto; min-width:0; width:auto; margin-top:0;
    display:inline-flex; align-items:center; justify-content:center; gap:4px;
    padding:8px 13px; border-radius:15px; border:1px solid var(--acc-soft);
    font-size:13px; font-weight:700; color:var(--acc-deep);
    text-decoration:none; background:var(--acc-soft);
    font-family:inherit; line-height:1; box-sizing:border-box; appearance:none; -webkit-appearance:none;
    cursor:pointer; white-space:nowrap;
    position:static; overflow:visible;
    transition:transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s;
}
.quick-btn::after{ display:none; content:none; }
.quick-btn:hover{ transform:translateY(-2px); box-shadow:0 8px 18px -8px var(--acc-glow); }
.quick-btn:active{ transform:scale(.96); }

/* ---------- 搜索框 ---------- */
.search-box input{
    width:100%; padding:12px 16px; border-radius:14px;
    border:1px solid var(--hairline); background:rgba(255,255,255,.75);
    font-size:14px; color:var(--ink); outline:none;
    box-shadow:inset 0 1px 2px rgba(0,0,0,.04);
    transition:border-color .2s, box-shadow .2s;
}
.search-box input:focus{ border-color:var(--acc); box-shadow:0 0 0 3px var(--acc-soft); }
.search-box input::placeholder{ color:var(--sub); }

/* ================= 登录页 ================= */
.auth-wrap{ max-width:400px; margin:8vh auto 0; }
.auth-wrap .card{ padding:30px 28px 32px; }
.auth-wrap h1{ font-family:var(--font-disp); font-size:22px; font-weight:800; text-align:center; margin-bottom:22px; }
.auth-wrap .info{ text-align:center; margin-top:16px; font-size:14px; color:var(--sub); }
.login-logo{ text-align:center; margin-bottom:12px; }
.login-logo img{ width:76px; height:76px; border-radius:20px; object-fit:contain; background:#fff; padding:8px; box-shadow:0 14px 28px -12px var(--acc-glow), inset 0 1px 0 rgba(255,255,255,.9); }

/* ================= 数据表格（我的数据/后台/设置） ================= */
.table-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; border-radius:18px; }
table.data{ width:100%; border-collapse:collapse; font-size:14px; min-width:640px; }
table.data th, table.data td{ padding:13px 12px; text-align:left; border-bottom:1px solid rgba(15,40,28,.08); }
table.data th{ background:rgba(255,255,255,.55); font-weight:600; color:var(--sub); font-size:12px; text-transform:uppercase; letter-spacing:.4px; white-space:nowrap; }
table.data tr:hover td{ background:rgba(255,255,255,.5); }
table.data tr.clear-row td{ background:linear-gradient(90deg, var(--acc-soft), rgba(255,255,255,.35)); }
table.data tr.clear-row:hover td{ background:linear-gradient(90deg, var(--acc-soft), rgba(255,255,255,.5)); }
table.data pre{ margin:0; font-size:12px; font-family:var(--font-mono); white-space:pre-wrap; word-break:break-all; color:var(--sub); }
table.data .actions{ white-space:nowrap; }
table.data .actions a, table.data .actions button{ margin-right:8px; color:var(--acc-deep); text-decoration:none; background:none; border:none; cursor:pointer; font-size:13px; font-weight:500; padding:4px 0; }
table.data .actions a:hover{ text-decoration:underline; }
table.data .actions a.danger-link{ color:var(--danger); }

.stat-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(150px,1fr)); gap:12px; margin-bottom:18px; }
.stat-card{ padding:18px; border-radius:18px; background:rgba(255,255,255,.6); border:1px solid var(--hairline); box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 8px 20px -14px rgba(20,40,30,.25); }
.stat-card .k{ font-size:12px; color:var(--sub); margin-bottom:6px; }
.stat-card .v{ font-family:var(--font-disp); font-size:26px; font-weight:800; color:var(--acc-deep); }

.tabs{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.tab{ padding:8px 18px; border-radius:999px; font-size:14px; font-weight:600; cursor:pointer; color:var(--sub); background:rgba(255,255,255,.55); border:1px solid rgba(15,40,28,.1); text-decoration:none; }
.tab.active{ color:#fff; background:linear-gradient(150deg,var(--acc),var(--acc-deep)); border-color:transparent; }

.page-head{ display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:18px; }
.page-head h2{ font-family:var(--font-disp); font-size:20px; font-weight:800; }

/* 警告页（block） */
.block-hero{ text-align:center; padding:10px 0 4px; }
.block-hero .icon{ font-size:52px; line-height:1; margin-bottom:10px; }
.block-hero h1{ font-family:var(--font-disp); font-size:26px; font-weight:800; color:var(--acc-deep); }
.ip-chip{
    display:inline-flex; align-items:center; gap:8px; margin:16px auto 0; cursor:pointer;
    font-family:var(--font-mono); font-size:13px; font-weight:600; padding:10px 18px; border-radius:999px;
    color:var(--acc-deep); background:var(--acc-soft); border:1px dashed var(--acc); user-select:none;
}
.ip-chip.copied{ background:rgba(34,197,94,.16); border-color:#22c55e; color:#15803d; border-style:solid; }
.block-body{ font-size:14px; line-height:1.7; color:var(--ink); }
.block-body b{ color:var(--acc-deep); }

/* ---------- 极窄屏微调 ---------- */
@media (max-width:380px){
    body{ padding:14px 10px 40px; }
    .card{ padding:22px 16px 24px; }
    .card-head h1{ font-size:20px; }
    .topbar{ gap:6px; padding:8px; }
    .topbar .who{ padding:4px 8px; gap:6px; }
    .switch-pill, .notice-entry{ padding:6px 8px; font-size:12px; }
    .label-line .tag{ display:none; }
    .stat-grid{ grid-template-columns:repeat(2,1fr); }
}
