/* 论坛 (js/apps/forum.js): a stranger's square - misty-teal (雾青) glass over a soft wash, serif titles like 情侣空间 but
   none of its paper objects or warm yellow. Everyone is a breathing gradient orb (.fm-orb), never a face.
   All colours are the --fm-* variables on .forum-shell; dark mode only swaps those. */
.forum-shell{--fm-top:color-mix(in srgb,#d3e3e4 82%,var(--pri-pale,#d3e3e4));--fm-mid:#e6f0f1;--fm-end:#f6f9fa;
  --fm-wash1:rgba(118,163,165,.42);--fm-wash2:rgba(150,190,194,.38);
  --fm-glass:rgba(255,255,255,.56);--fm-glass-strong:rgba(255,255,255,.64);--fm-glass-soft:rgba(255,255,255,.44);
  --fm-line:rgba(255,255,255,.82);--fm-line-soft:rgba(255,255,255,.7);--fm-div:rgba(60,100,110,.1);
  --fm-shadow:0 10px 26px rgba(55,95,105,.1);--fm-ink:#24343b;--fm-ink-strong:#1f2f36;--fm-ink2:#4f6168;--fm-ink3:#5a6b72;
  --fm-acc:#5f9294;--fm-acc-ink:#2f5a5c;--fm-acc-soft:rgba(205,228,228,.88);--fm-acc-tag:rgba(118,163,165,.2);--fm-op:rgba(214,234,234,.72);
  --fm-danger:#9a4a5a;--fm-off:rgba(120,140,145,.35);
  position:absolute;inset:0;overflow:hidden;color:var(--fm-ink);font-family:var(--font-body,inherit);
  background:linear-gradient(180deg,var(--fm-top) 0%,var(--fm-mid) 42%,var(--fm-end) 100%)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .forum-shell{--fm-top:#1d2a2c;--fm-mid:#172123;--fm-end:#121819;--fm-wash1:rgba(95,146,148,.32);--fm-wash2:rgba(95,146,148,.22);
  --fm-glass:rgba(255,255,255,.07);--fm-glass-strong:rgba(255,255,255,.1);--fm-glass-soft:rgba(255,255,255,.06);--fm-line:rgba(255,255,255,.12);--fm-line-soft:rgba(255,255,255,.1);--fm-div:rgba(255,255,255,.08);
  --fm-shadow:0 10px 26px rgba(0,0,0,.3);--fm-ink:#e4eeee;--fm-ink-strong:#f1f6f6;--fm-ink2:#a9bcbe;--fm-ink3:#94a8aa;--fm-acc:#6fa3a5;--fm-acc-ink:#cfe6e6;--fm-acc-soft:rgba(111,163,165,.32);--fm-acc-tag:rgba(111,163,165,.24);--fm-op:rgba(111,163,165,.16);--fm-danger:#e3a0ad;--fm-off:rgba(255,255,255,.18)}}
:root[data-theme="dark"] .forum-shell{--fm-top:#1d2a2c;--fm-mid:#172123;--fm-end:#121819;--fm-wash1:rgba(95,146,148,.32);--fm-wash2:rgba(95,146,148,.22);
  --fm-glass:rgba(255,255,255,.07);--fm-glass-strong:rgba(255,255,255,.1);--fm-glass-soft:rgba(255,255,255,.06);--fm-line:rgba(255,255,255,.12);--fm-line-soft:rgba(255,255,255,.1);--fm-div:rgba(255,255,255,.08);
  --fm-shadow:0 10px 26px rgba(0,0,0,.3);--fm-ink:#e4eeee;--fm-ink-strong:#f1f6f6;--fm-ink2:#a9bcbe;--fm-ink3:#94a8aa;--fm-acc:#6fa3a5;--fm-acc-ink:#cfe6e6;--fm-acc-soft:rgba(111,163,165,.32);--fm-acc-tag:rgba(111,163,165,.24);--fm-op:rgba(111,163,165,.16);--fm-danger:#e3a0ad;--fm-off:rgba(255,255,255,.18)}
.forum-shell::before,.forum-shell::after{content:'';position:absolute;border-radius:50%;pointer-events:none}
.forum-shell::before{right:-90px;top:60px;width:300px;height:300px;background:radial-gradient(circle,var(--fm-wash1) 0%,transparent 70%)}
.forum-shell::after{left:-120px;top:56%;width:340px;height:340px;background:radial-gradient(circle,var(--fm-wash2) 0%,transparent 70%)}
.fm-page{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column}
.fm-page.fm-in{animation:fmIn .26s cubic-bezier(.32,.72,0,1)}
.fm-page.fm-back{animation:fmBack .22s cubic-bezier(.32,.72,0,1)}
@keyframes fmIn{from{opacity:0;transform:scale(1.03);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@keyframes fmBack{from{opacity:0;transform:scale(.97);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
.fm-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 16px calc(130px + var(--sab,0px));scrollbar-width:none}
.fm-scroll::-webkit-scrollbar{display:none}
.fm-glassy{background:var(--fm-glass);border:1px solid var(--fm-line);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);box-shadow:var(--fm-shadow)}
.fm-serif{font-family:var(--font-display)}
.fm-press{transition:transform .18s cubic-bezier(.34,1.56,.64,1)}.fm-press:active{transform:scale(.95)}
/* top bar */
.fm-top{position:relative;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(12px + env(safe-area-inset-top,0px)) 16px 0;flex-shrink:0}
.fm-top-title{font-family:var(--font-display);font-size:18px;font-weight:500;letter-spacing:.1em;color:var(--fm-ink)}
.fm-top-pill{font-size:13px;color:var(--fm-ink2);letter-spacing:.08em;padding:6px 14px;border-radius:16px;background:var(--fm-glass-soft);border:1px solid var(--fm-line-soft)}
.fm-circle{width:40px;height:40px;flex-shrink:0;border-radius:50%;border:1px solid var(--fm-line);background:var(--fm-glass);-webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%);display:grid;place-items:center;color:var(--fm-ink);box-shadow:0 8px 20px rgba(60,100,110,.12);padding:0;cursor:pointer;position:relative;font-family:inherit}
.fm-circle svg{width:19px;height:19px;stroke-width:1.8}
.fm-circle .fm-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--fm-acc);border:1.5px solid #fff}
.fm-circle-gap{width:40px;flex-shrink:0}
.fm-row-btns{display:flex;gap:8px}
.fm-text-btn{height:40px;padding:0 16px;border-radius:20px;border:1px solid var(--fm-line);background:var(--fm-glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);color:var(--fm-ink2);font-family:inherit;font-size:14px;cursor:pointer}
.fm-text-btn.primary{background:var(--fm-acc);border-color:transparent;color:#fff;font-weight:500;box-shadow:0 8px 18px rgba(63,110,112,.28)}
.fm-text-btn:disabled{opacity:.5}
/* home */
.fm-hero{padding:22px 22px 0;flex-shrink:0}
.fm-hero small{display:block;font-size:12px;color:var(--fm-ink2);letter-spacing:.1em}
.fm-hero h1{margin:6px 0 0;font-family:var(--font-display);font-size:28px;font-weight:500;line-height:1.2;color:var(--fm-ink)}
.fm-chips{display:flex;gap:8px;padding:16px 22px 12px;overflow-x:auto;flex-shrink:0;scrollbar-width:none}.fm-chips::-webkit-scrollbar{display:none}
.fm-chips.wrap{flex-wrap:wrap;padding:16px 16px 0}
.fm-chip{flex-shrink:0;height:34px;padding:0 16px;border-radius:17px;border:1px solid var(--fm-line-soft);background:var(--fm-glass-soft);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--fm-ink2);font-family:inherit;font-size:13px;cursor:pointer;transition:background .2s,color .2s,transform .15s}
.fm-chip:active{transform:scale(.94)}
.fm-chip[aria-pressed="true"]{background:var(--fm-acc-soft);border-color:var(--fm-line);color:var(--fm-acc-ink);font-weight:500;box-shadow:0 6px 14px rgba(55,95,105,.14)}
.fm-feed{display:flex;flex-direction:column;gap:22px;padding-top:8px}
.fm-stack{position:relative}
.fm-stack .fm-sheet{position:absolute;bottom:-7px;left:12px;right:12px;height:40px;border-radius:20px;background:var(--fm-glass-soft);border:1px solid var(--fm-line-soft)}
.fm-stack .fm-sheet.s2{bottom:-13px;left:24px;right:24px;border-radius:18px;opacity:.7}
.fm-card{position:relative;display:flex;flex-direction:column;gap:10px;width:100%;box-sizing:border-box;text-align:left;border-radius:22px;padding:16px 16px 14px;color:inherit;font-family:inherit;cursor:pointer;transition:transform .18s cubic-bezier(.34,1.56,.64,1)}
.fm-card:active{transform:scale(.97)}
.fm-who{display:flex;align-items:center;gap:10px;min-width:0}
.fm-who-main{flex:1;min-width:0}
.fm-who-name{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--fm-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-who-meta{font-size:11px;color:var(--fm-ink3);margin-top:1px}
.fm-card-title{font-family:var(--font-display);font-size:17px;font-weight:500;line-height:1.45;color:var(--fm-ink-strong)}
.fm-card-body{font-size:13.5px;line-height:1.65;color:var(--fm-ink2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fm-card-foot{display:flex;align-items:center;gap:16px;font-size:12px;color:var(--fm-ink2)}
.fm-card-foot span{display:flex;align-items:center;gap:5px}
.fm-card-foot svg{width:15px;height:15px;stroke-width:1.7}
.fm-tag{margin-left:auto;font-size:11px;padding:3px 9px;border-radius:10px;background:var(--fm-acc-tag);color:var(--fm-acc-ink);white-space:nowrap}
.fm-badge{font-size:10.5px;font-weight:500;padding:1px 7px;border-radius:8px;background:var(--fm-acc-tag);color:var(--fm-acc-ink);flex-shrink:0}
.fm-badge.hot{background:rgba(233,195,207,.35);color:#7a4656}
.fm-empty{margin:40px 10px;text-align:center;font-size:13.5px;line-height:1.7;color:var(--fm-ink2)}
.fm-foot-note{margin:22px 8px 0;text-align:center;font-size:11.5px;color:var(--fm-ink3)}
.fm-fade{position:absolute;z-index:2;left:0;right:0;bottom:0;height:130px;pointer-events:none;background:linear-gradient(180deg,transparent 0%,var(--fm-end) 60%)}
.fm-fab{position:absolute;z-index:3;left:50%;bottom:calc(30px + var(--sab,0px));transform:translateX(-50%);display:flex;align-items:center;gap:8px;height:50px;padding:0 22px;border-radius:25px;border:1px solid var(--fm-line);background:var(--fm-glass-strong);-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%);box-shadow:0 12px 28px rgba(55,95,105,.18);font-family:inherit;font-size:14px;color:var(--fm-ink);white-space:nowrap;cursor:pointer}
.fm-fab:active{transform:translateX(-50%) scale(.96)}
.fm-fab svg{width:17px;height:17px;color:var(--fm-acc)}
/* orbs */
.fm-orb{display:block;flex-shrink:0;border-radius:50%;width:34px;height:34px;background:radial-gradient(circle at 35% 30%,#fff 0%,var(--orb) 48%,transparent 100%);box-shadow:0 0 14px var(--orb);animation:fmBreathe 4.5s ease-in-out infinite}
.fm-orb.sm{width:26px;height:26px}.fm-orb.md{width:40px;height:40px}.fm-orb.lg{width:64px;height:64px;box-shadow:0 0 22px var(--orb)}.fm-orb.xl{width:92px;height:92px;box-shadow:0 0 30px var(--orb)}
.fm-orb.ghost{background:radial-gradient(circle,rgba(255,255,255,.9) 0%,rgba(200,212,216,.5) 55%,transparent 100%);box-shadow:none;border:1px dashed rgba(90,110,118,.35)}
button.fm-orb,a.fm-orb{border:none;padding:0;cursor:pointer}
@keyframes fmBreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}
/* detail */
.fm-post{border-radius:26px;padding:20px 18px 16px;background:var(--fm-glass-strong)}
.fm-post h2{margin:16px 0 0;font-family:var(--font-display);font-size:22px;font-weight:500;line-height:1.4;color:var(--fm-ink-strong)}
.fm-post-body{margin-top:10px;font-size:14.5px;line-height:1.8;color:var(--fm-ink);white-space:pre-line;overflow-wrap:anywhere}
.fm-post-acts{display:flex;gap:10px;margin-top:16px}
.fm-pill{display:flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:18px;border:1px solid var(--fm-line-soft);background:var(--fm-glass-soft);color:var(--fm-ink2);font-family:inherit;font-size:13px;cursor:pointer}
.fm-pill svg{width:16px;height:16px;stroke-width:1.7}
.fm-pill[aria-pressed="true"]{background:var(--fm-acc-soft);border-color:var(--fm-line);color:var(--fm-acc-ink);font-weight:500}
.fm-sec{display:flex;align-items:baseline;justify-content:space-between;margin:26px 6px 12px}
.fm-sec h3{margin:0;font-family:var(--font-display);font-size:18px;font-weight:500;color:var(--fm-ink)}
.fm-sec small{font-size:12px;color:var(--fm-ink3)}
.fm-seg{display:flex;gap:4px;padding:3px;border-radius:14px;background:var(--fm-glass-soft);border:1px solid var(--fm-line-soft)}
.fm-seg button{height:28px;padding:0 12px;border-radius:11px;border:none;background:transparent;color:var(--fm-ink2);font-family:inherit;font-size:12px;cursor:pointer}
.fm-seg button[aria-pressed="true"]{background:var(--fm-glass-strong);color:var(--fm-acc-ink);font-weight:500;box-shadow:0 2px 6px rgba(55,95,105,.12)}
.fm-seg.full{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;padding:4px;border-radius:14px}
.fm-seg.full button{height:36px;font-size:13px}
.fm-floors{display:flex;flex-direction:column;gap:10px}
.fm-floor{border-radius:22px;padding:16px 16px 14px}
.fm-floor.op{background:var(--fm-op)}
.fm-floor-head{display:flex;align-items:center;gap:8px}
.fm-floor-head b{font-size:12.5px;font-weight:500;color:var(--fm-ink)}
.fm-floor-no{margin-left:auto;font-family:var(--font-display);font-size:15px;color:var(--fm-ink3)}
.fm-floor.op .fm-floor-no{color:var(--fm-acc-ink)}
.fm-floor p{margin:8px 0 0;padding-left:34px;font-size:14px;line-height:1.7;color:var(--fm-ink);overflow-wrap:anywhere}
.fm-floor-foot{display:flex;gap:14px;margin-top:8px;padding-left:34px;font-size:11.5px;color:var(--fm-ink2)}
.fm-floor-foot button{border:none;background:none;padding:0;font-family:inherit;font-size:11.5px;color:inherit;cursor:pointer}
.fm-floor-foot button[aria-pressed="true"]{color:var(--fm-acc-ink);font-weight:500}
.fm-waiting{text-align:center;padding:14px 0;font-size:12.5px;color:var(--fm-ink3)}
.fm-composer{position:absolute;z-index:3;left:16px;right:16px;bottom:calc(26px + var(--sab,0px));display:flex;align-items:center;gap:8px;min-height:52px;padding:0 6px 0 18px;border-radius:26px;border:1px solid var(--fm-line);background:var(--fm-glass-strong);-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%);box-shadow:0 12px 28px rgba(55,95,105,.18);box-sizing:border-box}
.fm-composer input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-family:inherit;font-size:14px;color:var(--fm-ink)}
.fm-composer input::placeholder,.fm-input::placeholder{color:var(--fm-ink3)}
.fm-send{width:40px;height:40px;flex-shrink:0;border-radius:50%;border:none;background:var(--fm-acc);color:#fff;display:grid;place-items:center;padding:0;cursor:pointer}
.fm-send svg{width:18px;height:18px;stroke-width:2}
.fm-send:disabled{opacity:.45}
/* alias profile */
.fm-profile-head{display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:8px}
.fm-profile-head h2{margin:18px 0 0;font-family:var(--font-display);font-size:24px;font-weight:500;color:var(--fm-ink)}
.fm-profile-head p{margin:6px 0 0;font-size:13px;color:var(--fm-ink2)}
.fm-stats{display:flex;margin-top:18px;padding:12px 6px;border-radius:20px;background:var(--fm-glass-soft);border:1px solid var(--fm-line)}
.fm-stats div{width:96px;text-align:center}.fm-stats div+div{border-left:1px solid var(--fm-div)}
.fm-stats b{display:block;font-family:var(--font-display);font-size:20px;font-weight:500}
.fm-stats span{display:block;margin-top:2px;font-size:11.5px;color:var(--fm-ink2)}
.fm-menu{position:absolute;z-index:6;right:16px;top:calc(62px + env(safe-area-inset-top,0px));width:200px;border-radius:20px;padding:6px;background:var(--fm-glass-strong);border:1px solid var(--fm-line);-webkit-backdrop-filter:blur(20px) saturate(150%);backdrop-filter:blur(20px) saturate(150%);box-shadow:0 16px 36px rgba(55,95,105,.2)}
.fm-menu button{display:block;width:100%;text-align:left;height:44px;padding:0 14px;border:none;border-radius:14px;background:transparent;font-family:inherit;font-size:14px;color:var(--fm-ink);cursor:pointer}
.fm-menu hr{height:1px;margin:4px 10px;border:none;background:var(--fm-div)}
.fm-menu .reveal{background:rgba(169,198,238,.22);font-family:var(--font-display);color:#34508a}
.fm-reveal{margin-top:18px;border-radius:22px;padding:16px 18px;background:rgba(214,226,246,.7);border:1px solid var(--fm-line)}
.fm-reveal small{display:block;font-size:12px;color:#34508a}
.fm-reveal b{display:block;margin-top:6px;font-family:var(--font-display);font-size:16px;font-weight:500;line-height:1.6;color:#1f2f46}
.fm-reveal span{display:block;margin-top:8px;font-size:12px;color:#4a5f86}
.fm-list{display:flex;flex-direction:column;gap:10px}
.fm-mini{display:block;width:100%;text-align:left;border-radius:20px;padding:14px 16px;color:inherit;font-family:inherit;cursor:pointer}
.fm-mini-meta{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;color:var(--fm-ink3)}
.fm-mini-title{margin-top:6px;font-family:var(--font-display);font-size:16px;line-height:1.45;color:var(--fm-ink-strong)}
.fm-mini-sub{margin-top:6px;font-size:12px;color:var(--fm-ink2)}
/* compose */
.fm-mask{display:flex;align-items:center;gap:12px;margin:22px 16px 0;padding:12px 14px;border-radius:20px;background:var(--fm-glass-soft);border:1px solid var(--fm-line)}
.fm-mask-main{flex:1;min-width:0}.fm-mask-main small{display:block;font-size:11.5px;color:var(--fm-ink2)}.fm-mask-main b{display:block;margin-top:1px;font-size:14.5px;font-weight:500}
.fm-mask button{height:34px;padding:0 12px;border-radius:17px;border:1px solid var(--fm-line);background:var(--fm-glass);font-family:inherit;font-size:12.5px;color:var(--fm-acc-ink);display:flex;align-items:center;gap:5px;cursor:pointer}
.fm-mask button svg{width:14px;height:14px;stroke-width:1.9}
.fm-editor{margin:16px 16px 0;border-radius:26px;padding:20px 18px;min-height:300px;box-sizing:border-box;display:flex;flex-direction:column;background:var(--fm-glass-strong)}
.fm-input{border:none;outline:none;background:transparent;padding:0;font-family:inherit;color:var(--fm-ink)}
.fm-editor .fm-input.title{font-family:var(--font-display);font-size:21px;font-weight:500;color:var(--fm-ink-strong)}
.fm-editor hr{height:1px;margin:14px 0;border:none;background:var(--fm-div)}
.fm-editor textarea.fm-input{flex:1;min-height:180px;resize:none;font-size:15px;line-height:1.8}
.fm-editor-count{align-self:flex-end;font-size:11.5px;color:var(--fm-ink3)}
.fm-place{align-self:flex-start;margin-top:8px;height:34px;padding:0 12px;border-radius:17px;border:1px solid var(--fm-line);background:var(--fm-glass-soft);font-family:inherit;font-size:12.5px;color:var(--fm-ink2);display:flex;align-items:center;gap:5px;cursor:pointer}
.fm-place svg{width:14px;height:14px}
.fm-group{border-radius:22px;padding:4px 16px}
.fm-group.pad{padding:14px 16px}
.fm-group-title{margin:24px 6px 10px;font-size:13px;font-weight:500;color:var(--fm-ink2)}
.fm-group-note{margin:8px 8px 0;font-size:11.5px;line-height:1.5;color:var(--fm-ink3)}
.fm-set{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:8px 0;box-sizing:border-box;border:none;background:transparent;font-family:inherit;text-align:left;color:inherit}
.fm-set+.fm-set{border-top:1px solid var(--fm-div)}
button.fm-set{cursor:pointer}
.fm-set-main{flex:1;min-width:0}.fm-set-main b{display:block;font-size:14.5px;font-weight:400}.fm-set-main small{display:block;margin-top:2px;font-size:12px;color:var(--fm-ink2)}
.fm-set-val{font-size:13.5px;color:var(--fm-ink2);white-space:nowrap}
.fm-set svg.chev{width:15px;height:15px;color:var(--fm-ink3);flex-shrink:0}
.fm-avatar{width:36px;height:36px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:linear-gradient(150deg,#e3eef0,#b9d3d6);font-family:var(--font-display);font-size:15px;color:var(--fm-acc-ink)}
.fm-avatar img{width:100%;height:100%;object-fit:cover}
.fm-switch{position:relative;width:50px;height:30px;flex-shrink:0;border-radius:15px;border:none;padding:0;background:var(--fm-off);cursor:pointer;transition:background .2s}
.fm-switch::after{content:'';position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.15);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}
.fm-switch[aria-checked="true"]{background:var(--fm-acc)}.fm-switch[aria-checked="true"]::after{transform:translateX(20px)}
.fm-sample{margin-top:12px;padding:10px 12px;border-radius:14px;background:var(--fm-glass);font-size:13px;line-height:1.6;color:var(--fm-ink)}
.fm-danger{width:100%;margin-top:24px;height:50px;border-radius:22px;border:1px solid var(--fm-line);background:var(--fm-glass-soft);font-family:inherit;font-size:14.5px;color:var(--fm-danger);cursor:pointer}
/* search */
.fm-search{flex:1;height:44px;display:flex;align-items:center;gap:8px;padding:0 14px;border-radius:22px;border:1px solid var(--fm-line);background:var(--fm-glass-strong);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 8px 20px rgba(60,100,110,.12)}
.fm-search svg{width:17px;height:17px;color:var(--fm-ink2);flex-shrink:0}
.fm-search input{flex:1;min-width:0;font-size:14.5px}
.fm-link{border:none;background:none;padding:10px 2px;font-family:inherit;font-size:14.5px;color:var(--fm-acc-ink);cursor:pointer;white-space:nowrap}
.fm-hot{margin-top:28px;border-radius:26px;padding:18px 18px 8px;background:var(--fm-glass-strong)}
.fm-hot-row{display:flex;align-items:center;gap:14px;width:100%;padding:12px 2px;border:none;border-bottom:1px solid var(--fm-div);background:none;font-family:inherit;text-align:left;color:inherit;cursor:pointer}
.fm-hot-row:last-child{border-bottom:none}
.fm-hot-row i{width:22px;text-align:center;font-style:normal;font-family:var(--font-display);font-size:17px;color:var(--fm-acc-ink)}
.fm-hot-row span{flex:1;min-width:0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-recent{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
/* me / visitors */
.fm-me-head{display:flex;align-items:center;gap:16px;padding:8px 6px 0}
.fm-me-head small{display:block;font-size:12px;color:var(--fm-ink2)}
.fm-me-head b{display:block;margin-top:2px;font-family:var(--font-display);font-size:22px;font-weight:500}
.fm-me-head span{display:block;margin-top:4px;font-size:12px;color:var(--fm-ink2)}
.fm-visit-bar{display:flex;align-items:center;gap:12px;width:100%;margin-top:18px;padding:12px 14px 12px 16px;border-radius:20px;border:1px solid var(--fm-line);background:var(--fm-glass-soft);font-family:inherit;color:inherit;text-align:left;cursor:pointer}
.fm-visit-bar .orbs{display:flex;flex-shrink:0}.fm-visit-bar .fm-orb{width:24px;height:24px;border:2px solid rgba(255,255,255,.9);box-sizing:border-box}.fm-visit-bar .fm-orb+.fm-orb{margin-left:-8px}
.fm-visit-bar .vb-text{flex:1;min-width:0;font-size:13.5px}.fm-visit-bar>svg{width:15px;height:15px;flex-shrink:0;color:var(--fm-ink3)}.fm-visit-bar em{font-style:normal;font-size:12px;color:var(--fm-acc-ink)}
.fm-tabs{margin-top:22px}
.fm-item{display:flex;gap:12px;width:100%;text-align:left;border-radius:20px;padding:14px 16px;font-family:inherit;color:inherit;cursor:pointer}
.fm-item-main{flex:1;min-width:0}
.fm-item-head{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--fm-ink2)}.fm-item-head span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-item-text{margin-top:5px;font-size:14px;line-height:1.6;color:var(--fm-ink);overflow-wrap:anywhere}
.fm-item-quote{margin-top:8px;padding:8px 10px;border-radius:12px;background:var(--fm-op);font-size:12px;line-height:1.5;color:var(--fm-ink2)}
.fm-visit-card{border-radius:26px;padding:18px 18px 16px;background:var(--fm-glass-strong)}
.fm-visit-top{display:flex;align-items:flex-end;justify-content:space-between}
.fm-visit-top small{display:block;font-size:12px;color:var(--fm-ink2)}
.fm-visit-top b{display:block;margin-top:2px;font-family:var(--font-display);font-size:40px;font-weight:500;line-height:1.1}
.fm-visit-top b span{font-family:var(--font-body,inherit);font-size:14px;color:var(--fm-ink2);margin-left:6px}
.fm-visit-top p{margin:0;text-align:right;font-size:12px;line-height:1.7;color:var(--fm-ink2)}
.fm-bars{display:flex;align-items:flex-end;gap:8px;height:76px;margin-top:16px}
.fm-bars i{flex:1;min-height:4px;border-radius:8px 8px 4px 4px;background:var(--fm-glass-strong);border:1px solid var(--fm-line)}
.fm-bars i.today{background:rgba(127,170,172,.55)}
.fm-bar-labels{display:flex;gap:8px;margin-top:6px;font-size:10.5px;color:var(--fm-ink3);text-align:center}.fm-bar-labels span{flex:1}.fm-bar-labels span.today{color:var(--fm-acc-ink);font-weight:500}
.fm-visit-note{margin-top:12px;padding-top:12px;border-top:1px solid var(--fm-div);font-size:12.5px;line-height:1.6;color:var(--fm-ink2)}
.fm-visitor{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:10px 0;box-sizing:border-box;border:none;border-bottom:1px solid var(--fm-div);background:none;font-family:inherit;text-align:left;color:inherit;cursor:pointer}
.fm-visitor:last-child{border-bottom:none}
.fm-visitor-main{flex:1;min-width:0}.fm-visitor-main b{display:block;font-size:14px;font-weight:500}.fm-visitor-main small{display:block;margin-top:2px;font-size:12px;color:var(--fm-ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fm-visitor-side{text-align:right;flex-shrink:0;font-size:12px;color:var(--fm-ink2)}.fm-visitor-side .fm-badge{display:inline-block;margin-top:3px}
@media(prefers-reduced-motion:reduce){.fm-orb{animation:none}.fm-page.fm-in,.fm-page.fm-back{animation:none}}
.forum-shell .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.forum-shell svg{stroke-linecap:round;stroke-linejoin:round}
.fm-circle svg[viewBox]{stroke-width:2}
/* the app-wide focus glow (index.html §8A) belongs on the glass field, not on the borderless input inside it */
.forum-shell .fm-input:focus,.forum-shell .fm-composer input:focus{outline:none!important;box-shadow:none!important}
.fm-editor:focus-within,.fm-composer:focus-within,.fm-search:focus-within,.fm-sample:focus-within{box-shadow:0 0 0 3px var(--focus-glow),var(--fm-shadow)}
