
:root{
  --bg:#f2f3f5; --panel:#ffffff; --soft:#eef0f3; --line:#e3e6ea; --chat:#f4f5f7;
  --ink:#15181d; --muted:#646c76; --faint:#868d97;
  --accent:#2a62d9; --accent-ink:#ffffff; --accent-soft:#e6eefc;
  --out:#dbe7fd; --out-ink:#15181d; --out-meta:#44679f;
  --in:#ffffff; --in-ink:#15181d;
  --danger:#c93636; --online:#2e9a6b; --warn:#a86a00;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#131519; --panel:#1b1e23; --soft:#252930; --line:#2c3038; --chat:#16181c;
    --ink:#e8eaee; --muted:#9aa1ab; --faint:#7a818c;
    --accent:#5b8def; --accent-ink:#ffffff; --accent-soft:#1f2c46;
    --out:#23375e; --out-ink:#eef3ff; --out-meta:#9db8ee;
    --in:#252930; --in-ink:#e8eaee;
    --danger:#ef6b6b; --online:#4cc28e; --warn:#e0a640;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#131519; --panel:#1b1e23; --soft:#252930; --line:#2c3038; --chat:#16181c;
  --ink:#e8eaee; --muted:#9aa1ab; --faint:#7a818c;
  --accent:#5b8def; --accent-ink:#ffffff; --accent-soft:#1f2c46;
  --out:#23375e; --out-ink:#eef3ff; --out-meta:#9db8ee;
  --in:#252930; --in-ink:#e8eaee;
  --danger:#ef6b6b; --online:#4cc28e; --warn:#e0a640;
  color-scheme:dark;
}
*{box-sizing:border-box;}
[hidden]{display:none!important;}
html,body{height:100%;}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.4 'Onest',system-ui,-apple-system,'Segoe UI',sans-serif;overflow:hidden;}
button,input,textarea,select{font:inherit;color:inherit;}
button{cursor:pointer;}
a{color:var(--accent);}
svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto;}
svg.i.sm{width:16px;height:16px;}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.spin{width:18px;height:18px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;display:inline-block;animation:sp .7s linear infinite;vertical-align:-3px;}
@keyframes sp{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){.spin{animation-duration:2s;}}

/* buttons & fields */
.btn{border:none;border-radius:10px;padding:11px 16px;font-size:15px;font-weight:600;background:var(--accent);color:var(--accent-ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;}
.btn:disabled{opacity:.55;cursor:default;}
.btn.ghost{background:var(--soft);color:var(--ink);font-weight:500;}
.btn.line{background:transparent;color:var(--ink);border:1px solid var(--line);font-weight:500;}
.btn.danger{background:transparent;color:var(--danger);border:1px solid var(--line);font-weight:500;}
.btn.sm{padding:7px 12px;font-size:13.5px;}
.ibtn{width:40px;height:40px;border:none;border-radius:10px;background:none;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;}
.ibtn:hover{background:var(--soft);color:var(--ink);}
.ibtn.on{color:var(--accent);}
.ibtn.primary{background:var(--accent);color:var(--accent-ink);}
.link{background:none;border:none;color:var(--accent);font-size:14px;padding:4px 0;}
.field{display:flex;flex-direction:column;gap:6px;}
.field label{font-size:13px;color:var(--muted);font-weight:500;}
.field input,.field select,.field textarea{background:var(--soft);border:1px solid transparent;border-radius:10px;padding:11px 13px;font-size:15px;outline:none;width:100%;}
.field textarea{resize:vertical;min-height:80px;}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);}
.field .hint{font-size:12.5px;color:var(--faint);}
.check{display:flex;align-items:center;gap:10px;font-size:14.5px;cursor:pointer;}
.check input{width:18px;height:18px;accent-color:var(--accent);margin:0;}
.err{display:none;background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger);border-radius:10px;padding:10px 12px;font-size:14px;}
.err.show{display:block;}
.empty{padding:28px 20px;text-align:center;color:var(--faint);font-size:14px;}
.chip{flex:0 0 auto;border:none;padding:6px 12px;border-radius:8px;background:var(--soft);color:var(--muted);font-size:13.5px;font-weight:500;}
.chip.on{background:var(--accent);color:var(--accent-ink);font-weight:600;}
.tag{font-size:11.5px;font-weight:600;color:var(--accent);background:var(--accent-soft);padding:2px 7px;border-radius:6px;white-space:nowrap;}
.section{font-size:12px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;margin:8px 0 2px;}
.av{width:48px;height:48px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:18px;position:relative;overflow:hidden;}
.av img{width:100%;height:100%;object-fit:cover;}
.av.sm{width:36px;height:36px;font-size:14px;}
.av.xs{width:28px;height:28px;font-size:12px;}
.av.lg{width:72px;height:72px;font-size:26px;}
.av .pres{position:absolute;right:1px;bottom:1px;width:12px;height:12px;border-radius:50%;background:var(--online);border:2px solid var(--panel);}

/* ---------- auth ---------- */
#auth{height:100%;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);}
.auth-preview{background:var(--chat);border-right:1px solid var(--line);padding:48px;display:flex;flex-direction:column;justify-content:center;gap:10px;overflow:hidden;}
.auth-preview .pv{max-width:420px;display:flex;flex-direction:column;gap:6px;}
.pv .b{max-width:78%;}
.auth-side{background:var(--panel);display:flex;flex-direction:column;padding:40px 48px;overflow-y:auto;}
.wordmark{font-weight:700;font-size:18px;letter-spacing:-.01em;}
.auth-main{flex:1;display:flex;flex-direction:column;justify-content:center;gap:18px;max-width:380px;width:100%;padding:32px 0;}
.auth-main h1{margin:0;font-size:30px;line-height:1.15;font-weight:700;letter-spacing:-.015em;text-wrap:balance;}
.auth-main .lead{margin:0;color:var(--muted);font-size:15px;}
.steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;counter-reset:s;}
.steps li{display:flex;gap:12px;align-items:flex-start;font-size:14.5px;color:var(--muted);}
.steps li::before{counter-increment:s;content:counter(s);flex:0 0 24px;height:24px;border-radius:50%;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;color:var(--ink);}
.code-box{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-radius:10px;border:1px solid var(--line);font:700 28px/1 ui-monospace,'SF Mono',Menlo,monospace;letter-spacing:.14em;}
.auth-foot{font-size:12.5px;color:var(--faint);}

/* ---------- shell ---------- */
#shell{height:100%;display:flex;}
#rail{width:76px;flex:0 0 76px;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:4px;}
.rail-btn{width:64px;border:none;background:none;border-radius:10px;padding:7px 0 5px;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--muted);font-size:10.5px;font-weight:500;position:relative;}
.rail-btn:hover{background:var(--soft);color:var(--ink);}
.rail-btn.on{color:var(--accent);}
.rail-btn.on::before{content:"";position:absolute;left:-8px;top:10px;bottom:10px;width:3px;border-radius:2px;background:var(--accent);}
.rail-btn .dotc{position:absolute;top:4px;right:12px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--accent);color:var(--accent-ink);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;}
#rail .grow{flex:1;}
#side{width:340px;flex:0 0 340px;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;}
#main{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0;background:var(--chat);}
.side-head{padding:14px 10px 8px 18px;display:flex;align-items:center;gap:4px;}
.side-head h2{flex:1;margin:0;font-size:21px;font-weight:700;}
.netbar{display:none;align-items:center;gap:10px;margin:0 12px 8px;padding:8px 10px 8px 12px;border-radius:10px;border:1px solid color-mix(in srgb,var(--danger) 35%,var(--line));font-size:13.5px;}
.netbar.show{display:flex;}
.netbar span{flex:1;}
.search{margin:0 12px 8px;height:40px;display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--soft);border-radius:10px;color:var(--muted);}
.search input{flex:1;border:none;background:none;outline:none;font-size:15px;color:var(--ink);min-width:0;}
.chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 8px;}
.scroll{flex:1;overflow-y:auto;min-height:0;}
.row{display:flex;align-items:center;gap:12px;padding:8px 10px;margin:0 6px;border-radius:8px;cursor:pointer;border:none;background:none;text-align:left;width:calc(100% - 12px);color:inherit;}
.row:hover{background:var(--soft);}
.row.on{background:var(--accent-soft);}
.row-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.row-top,.row-bot{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.row-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:5px;min-width:0;}
.row-name span{overflow:hidden;text-overflow:ellipsis;}
.row-name svg{color:var(--faint);}
.row-time{font-size:12px;color:var(--faint);flex:0 0 auto;}
.row-time.hot{color:var(--accent);}
.row-prev{font-size:14px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.badge{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--accent);color:var(--accent-ink);font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.set-row{display:flex;align-items:center;gap:12px;padding:10px 12px;margin:0 6px;border-radius:8px;border:none;background:none;width:calc(100% - 12px);text-align:left;font-size:15px;color:var(--ink);}
.set-row:hover{background:var(--soft);}
.set-row.on{background:var(--accent-soft);}
.set-row .ic{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;flex:0 0 auto;}
.set-row .lbl{flex:1;}
.set-row .val{font-size:13px;color:var(--faint);}
.set-row.danger{color:var(--danger);}
.me-card{display:flex;align-items:center;gap:12px;padding:6px 18px 14px;border-bottom:1px solid var(--line);margin-bottom:8px;}
.me-card b{font-size:16px;display:block;}
.me-card span{font-size:13.5px;color:var(--muted);}

/* main: placeholder */
.placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--faint);text-align:center;padding:24px;}
.placeholder svg{width:36px;height:36px;color:var(--muted);stroke-width:1.5;}

/* chat */
#chat{flex:1;display:none;flex-direction:column;min-height:0;}
#chat.show{display:flex;}
.main-head{height:62px;flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:0 10px 0 14px;border-bottom:1px solid var(--line);background:var(--panel);}
.main-head .who{flex:1;min-width:0;display:flex;flex-direction:column;cursor:pointer;background:none;border:none;text-align:left;padding:0;color:inherit;}
.main-head .who b{font-size:15.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.main-head .who span{font-size:13px;color:var(--muted);}
.main-head .who span.live{color:var(--accent);}
.main-head h3{flex:1;margin:0;font-size:17px;font-weight:600;}
.back{display:none;}
#msgs{flex:1;overflow-y:auto;padding:16px max(20px,calc((100% - 760px)/2)) 10px;display:flex;flex-direction:column;gap:3px;}
.day{align-self:center;padding:4px 12px;border-radius:8px;background:var(--panel);border:1px solid var(--line);color:var(--muted);font-size:12.5px;font-weight:500;margin:10px 0 6px;}
.m{display:flex;flex-direction:column;max-width:min(560px,80%);}
.m.out{align-self:flex-end;align-items:flex-end;}
.m.in{align-self:flex-start;}
.b{padding:7px 11px 5px 12px;border-radius:14px;display:flex;flex-direction:column;min-width:64px;max-width:100%;cursor:pointer;word-wrap:break-word;overflow-wrap:anywhere;}
.m.in .b{background:var(--in);color:var(--in-ink);border:1px solid var(--line);border-bottom-left-radius:4px;}
.m.out .b{background:var(--out);color:var(--out-ink);border-bottom-right-radius:4px;}
.b .who{font-size:13px;font-weight:600;color:var(--accent);}
.b .txt{white-space:pre-wrap;font-size:15px;line-height:1.42;}
.b .note{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--muted);}
.m.out .b .note{color:var(--out-meta);}
.b .meta{align-self:flex-end;display:flex;align-items:center;gap:3px;font-size:11.5px;color:var(--faint);margin-top:1px;}
.m.out .b .meta{color:var(--out-meta);}
.b .quote{border-left:3px solid var(--accent);padding:1px 0 1px 8px;margin:2px 0 4px;font-size:13px;display:flex;flex-direction:column;}
.b .quote b{color:var(--accent);font-weight:600;}
.b .quote span{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.m.out .b .quote span{color:var(--out-meta);}
.b .media{margin:2px -5px 4px;}
.b .media img,.b .media video{display:block;max-width:100%;max-height:340px;border-radius:10px;}
.b .media audio{width:260px;max-width:100%;}
.b .file{display:flex;align-items:center;gap:10px;padding:4px 0;color:inherit;text-decoration:none;}
.b .file .fi{width:38px;height:38px;border-radius:10px;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;}
.b .file small{display:block;color:var(--faint);font-size:12px;}
.b.sticker{background:none!important;border:none!important;padding:0;}
.b.sticker img,.b.sticker video{width:150px;height:150px;object-fit:contain;}
.kb{display:flex;flex-direction:column;gap:4px;margin-top:4px;width:100%;}
.kb-row{display:flex;gap:4px;}
.kb-row > *{flex:1;border:1px solid var(--line);background:var(--panel);color:var(--accent);border-radius:8px;padding:7px 10px;font-size:13.5px;font-weight:500;text-align:center;text-decoration:none;display:flex;align-items:center;justify-content:center;gap:6px;}
.kb-row > *:hover{background:var(--soft);}
.under{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px;}
.rx{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:1px 8px;font-size:13px;display:flex;align-items:center;gap:4px;color:var(--ink);}
.rx.mine{border-color:var(--accent);background:var(--accent-soft);}
.cm-btn{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:2px 9px;font-size:12.5px;display:flex;align-items:center;gap:5px;color:var(--accent);}
.memo{height:22px;width:auto;vertical-align:-5px;}
.deleted .txt{font-style:italic;color:var(--faint);}
#bar,#upl{display:none;align-items:center;gap:10px;padding:8px 16px;background:var(--panel);border-top:1px solid var(--line);}
#bar.show,#upl.show{display:flex;}
#bar .bar-ic{color:var(--accent);}
.bar-body{flex:1;min-width:0;font-size:13.5px;display:flex;flex-direction:column;}
.bar-body b{color:var(--accent);font-weight:600;}
.bar-body span{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#upl{font-size:13px;color:var(--muted);}
#upl .track{flex:1;height:4px;border-radius:2px;background:var(--soft);overflow:hidden;}
#upl .fill{height:100%;background:var(--accent);width:0;}
#inline{display:none;max-height:260px;overflow-y:auto;background:var(--panel);border-top:1px solid var(--line);padding:6px;}
#inline.show{display:block;}
#composer{display:flex;align-items:flex-end;gap:6px;padding:10px 12px 12px;background:var(--panel);border-top:1px solid var(--line);}
#composer .box{flex:1;display:flex;align-items:flex-end;gap:2px;min-height:44px;padding:2px;background:var(--soft);border-radius:12px;}
#input{flex:1;border:none;outline:none;background:none;resize:none;font-size:15px;line-height:1.4;padding:10px 4px;max-height:160px;min-height:40px;}
#send{width:44px;height:44px;border-radius:50%;}
#send svg{width:21px;height:21px;}

/* pages (settings, feed) */
#page{flex:1;display:none;flex-direction:column;min-height:0;}
#page.show{display:flex;}
#page-body{flex:1;overflow-y:auto;}
.page-inner{max-width:640px;margin:0 auto;padding:20px 20px 40px;display:flex;flex-direction:column;gap:14px;}
.group{background:var(--panel);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;}
.group > .gi{display:flex;align-items:center;gap:12px;padding:12px 14px;border-top:1px solid var(--line);}
.group > .gi:first-child{border-top:none;}
.gi .gi-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.gi .gi-body b{font-weight:500;}
.gi .gi-body span{font-size:13px;color:var(--muted);}
.gi select{background:var(--soft);border:1px solid transparent;border-radius:8px;padding:7px 10px;font-size:14px;}
.form{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:12px;}
.meter{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-top:1px solid var(--line);}
.meter:first-child{border-top:none;}
.meter .mt{display:flex;justify-content:space-between;font-size:14.5px;}
.meter .mt span{color:var(--muted);font-variant-numeric:tabular-nums;}
.meter .track{height:6px;border-radius:3px;background:var(--soft);overflow:hidden;}
.meter .fill{height:100%;background:var(--accent);}
.meter .fill.warn{background:var(--warn);}
.banner{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:12px 14px;font-size:14px;background:var(--panel);}
.banner.warn{border-left-color:var(--warn);}
.status{font-size:12px;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--soft);color:var(--muted);}
.status.open{background:var(--accent-soft);color:var(--accent);}

/* feed */
.post{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.post-head{display:flex;align-items:center;gap:10px;padding:12px 12px 8px 14px;}
.post-head .ph-body{flex:1;min-width:0;display:flex;flex-direction:column;}
.post-head .ph-body b{font-weight:600;}
.post-head .ph-body span{font-size:12.5px;color:var(--faint);}
.post-media{display:grid;gap:2px;background:var(--line);}
.post-media.n2{grid-template-columns:1fr 1fr;}
.post-media img,.post-media video{width:100%;max-height:520px;object-fit:cover;display:block;background:var(--soft);}
.post-text{padding:10px 14px;white-space:pre-wrap;}
.post-tags{display:flex;gap:6px;flex-wrap:wrap;padding:0 14px 8px;}
.post-foot{display:flex;align-items:center;gap:4px;padding:4px 8px 8px;}
.vote{border:none;background:none;border-radius:8px;padding:6px 10px;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums;}
.vote:hover{background:var(--soft);}
.vote.on{color:var(--accent);}
.vote.on.down{color:var(--danger);}
.thumbs{display:flex;gap:6px;flex-wrap:wrap;}
.thumbs div{width:64px;height:64px;border-radius:8px;overflow:hidden;position:relative;background:var(--soft);}
.thumbs img{width:100%;height:100%;object-fit:cover;}
.thumbs button{position:absolute;top:2px;right:2px;width:22px;height:22px;border-radius:50%;border:none;background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;padding:0;}

/* sheets & menus */
.veil{position:fixed;inset:0;background:rgba(10,12,16,.45);display:none;align-items:center;justify-content:center;z-index:50;padding:16px;}
.veil.show{display:flex;}
.sheet{width:100%;max-width:440px;max-height:min(84vh,680px);background:var(--panel);border-radius:12px;border:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;}
.sheet-head{display:flex;align-items:center;gap:8px;padding:10px 10px 10px 18px;border-bottom:1px solid var(--line);}
.sheet-head h3{flex:1;margin:0;font-size:16.5px;font-weight:600;}
.sheet-body{flex:1;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:12px;}
.sheet-foot{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--line);}
.sheet-foot .btn{flex:1;}
.tabs{display:flex;gap:6px;padding:10px 14px 0;overflow-x:auto;}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(50px,1fr));gap:6px;padding:12px 14px;overflow-y:auto;flex:1;align-content:start;}
.grid.big{grid-template-columns:repeat(auto-fill,minmax(86px,1fr));}
.cell{border:none;background:var(--soft);border-radius:8px;height:50px;display:flex;align-items:center;justify-content:center;padding:4px;position:relative;}
.grid.big .cell{height:86px;}
.cell:hover{background:var(--accent-soft);}
.cell img,.cell video{max-width:100%;max-height:100%;object-fit:contain;}
img.broken,video.broken{opacity:.35;}
.cell .del{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;border:none;background:var(--danger);color:#fff;display:flex;align-items:center;justify-content:center;padding:0;}
.list-row{display:flex;align-items:center;gap:12px;padding:8px;border-radius:8px;border:none;background:none;width:100%;text-align:left;color:inherit;}
button.list-row:hover{background:var(--soft);}
.list-row .lr-body{flex:1;min-width:0;display:flex;flex-direction:column;}
.list-row .lr-body b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.list-row .lr-body span{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.radio-list{display:flex;flex-direction:column;gap:2px;}
.radio-list label{display:flex;align-items:center;gap:10px;padding:10px;border-radius:8px;cursor:pointer;font-size:15px;}
.radio-list label:hover{background:var(--soft);}
.radio-list input{width:18px;height:18px;accent-color:var(--accent);margin:0;}
.drop{border:1.5px dashed var(--line);border-radius:10px;padding:16px;text-align:center;color:var(--muted);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;}
.drop:hover{border-color:var(--accent);color:var(--accent);}
#menu{position:fixed;z-index:60;background:var(--panel);border-radius:10px;border:1px solid var(--line);box-shadow:0 6px 18px rgba(0,0,0,.12);padding:5px;min-width:210px;display:none;flex-direction:column;}
#menu.show{display:flex;}
#menu .rq{display:flex;gap:2px;padding:3px;border-bottom:1px solid var(--line);margin-bottom:4px;}
#menu .rq button{border:none;background:none;font-size:20px;width:34px;height:34px;border-radius:8px;}
#menu .rq button:hover{background:var(--soft);}
#menu .mi{display:flex;align-items:center;gap:10px;border:none;background:none;padding:9px 10px;border-radius:7px;text-align:left;font-size:14.5px;color:var(--ink);}
#menu .mi:hover{background:var(--soft);}
#menu .mi.danger{color:var(--danger);}
#menu .mi svg{width:18px;height:18px;color:var(--muted);}
#menu .mi.danger svg{color:var(--danger);}
#menu .sep{height:1px;background:var(--line);margin:4px 0;}
#menu-veil{position:fixed;inset:0;z-index:59;display:none;}
#menu-veil.show{display:block;}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,12px);background:var(--ink);color:var(--panel);padding:10px 16px;border-radius:10px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:80;max-width:calc(100vw - 32px);}
#toast.show{opacity:1;transform:translate(-50%,0);}

@media (max-width:860px){
  #auth{grid-template-columns:1fr;}
  .auth-preview{display:none;}
  .auth-side{padding:28px 20px;}
  #shell{flex-direction:column-reverse;}
  #rail{width:100%;flex:0 0 auto;height:auto;flex-direction:row;justify-content:space-around;border-right:none;border-top:1px solid var(--line);padding:4px 0 calc(4px + env(safe-area-inset-bottom,0px));}
  #rail .grow,#rail .rail-me{display:none;}
  .rail-btn.on::before{left:14px;right:14px;top:-4px;bottom:auto;width:auto;height:3px;}
  #wrap{flex:1;min-height:0;}
  #side{width:100%;flex:1 1 auto;border-right:none;}
  #main{display:none;}
  #shell.open #side,#shell.open #rail{display:none;}
  #shell.open #main{display:flex;}
  #shell.wide #side{display:none;}
  #shell.wide #main{display:flex;}
  .back{display:inline-flex;}
  #msgs{padding:12px 10px 8px;}
  .m{max-width:88%;}
  .veil{align-items:flex-end;padding:0;}
  .sheet{max-width:none;border-radius:12px 12px 0 0;max-height:88vh;}
  .page-inner{padding:14px 12px 32px;}
}
