:root{
  --bg:#f5f7fb; --bg2:#ffffff; --surface:#ffffff; --surface2:#f3f6fb; --surface3:#e8eef7; --border:#e3e9f2; --border2:#d3dcea;
  --text:#0f1b33; --muted:#5b6b85; --faint:#8593ab;
  --accent:#2563eb; --accent2:#3b82f6; --accent-ink:#ffffff; --accent-soft:#eaf1ff; --accent-line:#bfd4ff;
  --blue:#2563eb; --green:#059669; --red:#dc2626; --violet:#7c3aed; --pink:#db2777; --teal:#0d9488; --amber:#d97706;
  --radius:0; --shadow:none; --shadow-lg:none;
  --font:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --nav-h:64px; --side-w:248px;
}
/* ===== 10.20 design system: tokens (light). Square corners, 1px borders, no gradients, one blue accent, one type scale, 4px spacing.
   html:root outranks the older :root blocks further down, so these values win wherever the same name is set again. ===== */
html:root{
  --r-0:0; --r-1:2px; --radius:0; --r-sm:0; --r-md:0; --r-lg:0; --r-xl:0; --r-2xl:0;
  --fs-12:12px; --fs-13:13px; --fs-14:14px; --fs-16:16px; --fs-20:20px; --fs-24:24px; --fs-display:40px; --fs-lg:16px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-6:24px; --sp-8:32px; --sp-12:48px;
  --shadow:none; --shadow-md:none; --shadow-lg:none; --shadow-pop:0 4px 16px rgba(17,17,19,.06); --rd-sh:none; --rd-sh-h:none; --hi:none; --glow:none;
  --bg:#ffffff; --bg2:#ffffff; --surface:#ffffff; --surface2:#f7f7f8; --surface3:#efeff1; --border:#e6e6ea; --border2:#d4d4da; --border-strong:#d4d4da;
  --text:#111113; --muted:#55555e; --faint:#6b6b75;
  --accent:#2563eb; --accent2:#2563eb; --accent-hover:#1d4ed8; --accent-ink:#ffffff; --accent-soft:#eff4ff; --accent-line:#c9d8fb; --ring:#2563eb;
  --blue:#2563eb; --green:#15803d; --red:#dc2626; --amber:#b45309; --violet:#2563eb; --pink:#dc2626; --teal:#15803d;
  --ok:#15803d; --ok-soft:#ecfdf3;
  --card-bg:#ffffff; --main-bg:#ffffff; --chs-bg:#fafafa; --rail-bg:#f4f4f6; --glass:#ffffff; --glass-line:#e6e6ea;
  --spot:transparent; --lp-aur1:transparent; --lp-aur2:transparent; --lp-glow1:transparent; --lp-glow2:transparent; --lp-grid:transparent; --rd-grid:transparent;
  --rd-col:#fafafa; --rd-card:#ffffff; --rd-card-bd:#e6e6ea; --rd-rail:#e6e6ea; --rd-ring:#c9d8fb; --rd-hero1:#ffffff; --rd-hero2:#ffffff; --rd-hero-line:#e6e6ea;
  --rd-imp-bg:#f4f4f6; --rd-imp-fg:#3f3f46; --rd-imp-bd:#e0e0e6;
  --k-bg-f3e8ff:#f4f4f6; --k-bg-ede9fe:#f4f4f6; --k-bg-faf5ff:#fafafa; --k-bg-e0e7ff:#eff4ff; --k-fg-6d28d9:#1d4ed8;
  --fs-xs:12px; --fs-sm:13px; --fs-md:14px; --fs-xl:20px; --fs-2xl:24px; --fs-3xl:24px; --sp-5:24px; --r-xs:0; --pro-ink:#2563eb; --pro-soft:#eff4ff;
}

/* 10.20 design system: tokens (dark). Same names as the light block above; html[data-theme=dark]:root outranks every older :root / [data-theme=dark] block. */
html[data-theme=dark]:root{
  --r-0:0; --r-1:2px; --radius:0; --r-sm:0; --r-md:0; --r-lg:0; --r-xl:0; --r-2xl:0;
  --shadow:none; --shadow-md:none; --shadow-lg:none; --shadow-pop:0 4px 16px rgba(0,0,0,.35); --rd-sh:none; --rd-sh-h:none; --hi:none; --glow:none;
  --bg:#0c0c0e; --bg2:#0f0f11; --surface:#111114; --surface2:#18181c; --surface3:#222227; --border:#25252b; --border2:#36363e; --border-strong:#36363e;
  --text:#ededf0; --muted:#a6a6b0; --faint:#8c8c96;
  --accent:#3b82f6; --accent2:#3b82f6; --accent-hover:#60a5fa; --accent-ink:#ffffff; --accent-soft:#15203a; --accent-line:#2a4373; --ring:#3b82f6;
  --blue:#3b82f6; --green:#22c55e; --red:#ef4444; --amber:#f59e0b; --violet:#3b82f6; --pink:#ef4444; --teal:#22c55e;
  --ok:#22c55e; --ok-soft:#10261a;
  --card-bg:#111114; --main-bg:#111114; --chs-bg:#0f0f11; --rail-bg:#0c0c0e; --glass:#111114; --glass-line:#25252b;
  --spot:transparent; --lp-aur1:transparent; --lp-aur2:transparent; --lp-glow1:transparent; --lp-glow2:transparent; --lp-grid:transparent; --rd-grid:transparent;
  --rd-col:#0f0f11; --rd-card:#111114; --rd-card-bd:#25252b; --rd-rail:#25252b; --rd-ring:#2a4373; --rd-hero1:#111114; --rd-hero2:#111114; --rd-hero-line:#25252b;
  --rd-imp-bg:#1c1c21; --rd-imp-fg:#d4d4dc; --rd-imp-bd:#2e2e35;
  --k-bg-f3e8ff:#1c1c21; --k-bg-ede9fe:#1c1c21; --k-bg-faf5ff:#16161a; --k-bg-e0e7ff:#15203a; --k-fg-6d28d9:#93b4ff;
  --fs-xs:12px; --fs-sm:13px; --fs-md:14px; --fs-xl:20px; --fs-2xl:24px; --fs-3xl:24px; --sp-5:24px; --r-xs:0; --pro-ink:#93b4ff; --pro-soft:#15203a;
}

/* 10.21 Batch 1 chart, warning and star colours (light, then dark) */
html:root{--b1-c1:#2563eb;--b1-c2:#60a5fa;--b1-c3:#1e3a8a;--b1-c4:#93c5fd;--b1-c5:#71717a;--b1-c6:#a1a1aa;--b1-track:#f1f1f4;--b1-warn-bg:#fff7ed;--b1-warn-line:#fed7aa;--b1-star:#b45309;--b1-flash:#eff4ff}
html[data-theme=dark]:root{--b1-c1:#3b82f6;--b1-c2:#93c5fd;--b1-c3:#1d4ed8;--b1-c4:#60a5fa;--b1-c5:#a1a1aa;--b1-c6:#52525b;--b1-track:#1c1c21;--b1-warn-bg:#2a1a08;--b1-warn-line:#5c3a10;--b1-star:#f59e0b;--b1-flash:#15203a}
:root{--btn-bg:#fff;--k-bd-a7f3d0:#a7f3d0;--k-bd-c3cfe1:#c3cfe1;--k-bd-cdd7e6:#cdd7e6;--k-bd-cfe0ff:#cfe0ff;--k-bd-fca5a5:#fca5a5;--k-bd-fecaca:#fecaca;--k-bd-ffffff:#fff;--k-bg-bfdbfe:#bfdbfe;--k-bg-c9d5ea:#c9d5ea;--k-bg-cfe0ff:#cfe0ff;--k-bg-dbe7ff:#dbe7ff;--k-bg-dbeafe:#dbeafe;--k-bg-dcfce7:#dcfce7;--k-bg-e0e7ff:#e0e7ff;--k-bg-e0f2fe:#e0f2fe;--k-bg-e6efff:#e6efff;--k-bg-e8eef8:#e8eef8;--k-bg-eaf1ff:#eaf1ff;--k-bg-eaf1ffa85:rgba(234,241,255,.85);--k-bg-ecfdf5:#ecfdf5;--k-bg-ede9fe:#ede9fe;--k-bg-eef2f8:#eef2f8;--k-bg-eef4ff:#eef4ff;--k-bg-eff6ff:#eff6ff;--k-bg-f0f4fa:#f0f4fa;--k-bg-f0f4fb:#f0f4fb;--k-bg-f0f9ff:#f0f9ff;--k-bg-f1f5f9:#f1f5f9;--k-bg-f1f5fb:#f1f5fb;--k-bg-f3e8ff:#f3e8ff;--k-bg-f3f7ff:#f3f7ff;--k-bg-f5f7fb:#f5f7fb;--k-bg-f6f8fc:#f6f8fc;--k-bg-f7faff:#f7faff;--k-bg-f7fffb:#f7fffb;--k-bg-f8fafc:#f8fafc;--k-bg-faf5ff:#faf5ff;--k-bg-fafcff:#fafcff;--k-bg-fbfcfe:#fbfcfe;--k-bg-fcfdff:#fcfdff;--k-bg-fda4af:#fda4af;--k-bg-fee2e2:#fee2e2;--k-bg-fef2f2:#fef2f2;--k-bg-fef3c7:#fef3c7;--k-bg-fef9c3:#fef9c3;--k-bg-ffedd5:#ffedd5;--k-bg-fff0c2:#fff0c2;--k-bg-fff5f5:#fff5f5;--k-bg-fffafa:#fffafa;--k-bg-ffffff:#fff;--k-bg-ffffffa86:rgba(255,255,255,.86);--k-bg-ffffffa88:rgba(255,255,255,.88);--k-bg-ffffffa96:rgba(255,255,255,.96);--k-fg-0369a1:#0369a1;--k-fg-047857:#047857;--k-fg-059669:#059669;--k-fg-06281b:#06281b;--k-fg-0b2a6b:#0b2a6b;--k-fg-1a2540:#1a2540;--k-fg-1d4ed8:#1d4ed8;--k-fg-1e40af:#1e40af;--k-fg-2563eb:#2563eb;--k-fg-26344d:#26344d;--k-fg-334155:#334155;--k-fg-3b4a63:#3b4a63;--k-fg-41506a:#41506a;--k-fg-475569:#475569;--k-fg-6d28d9:#6d28d9;--k-fg-92400e:#92400e;--k-fg-b91c1c:#b91c1c;--k-fg-c2410c:#c2410c;--k-fg-dc2626:#dc2626;--k-fg-e11d48:#e11d48;--k-fg-f59e0b:#f59e0b;}
/* 10.19 getting started checklist variables (light, then dark) */
:root{--su-done:#059669;--su-done-ink:#ffffff;--su-dot-bg:#eaf1ff;--su-dot-fg:#2563eb;--su-next-bg:#f7faff;--su-bar-bg:#e8eef7;--su-bar-fill:#2563eb}
[data-theme=dark]{--su-done:#10b981;--su-done-ink:#06281b;--su-dot-bg:#1d2c4d;--su-dot-fg:#8ab4ff;--su-next-bg:#1d2638;--su-bar-bg:#2a3448;--su-bar-fill:#4f8cff}
/* 10.18 verified check variables (light, then dark) */
:root{--vf-owner:#1d6bf3;--vf-owner-tick:#ffffff;--vf-co:#0e9f9a;--vf-co-fill:#e3f7f5;--vf-co-tick:#0b827e;--vf-tip-bg:#0f1b33;--vf-tip-fg:#ffffff;--vf-seg-on:#ffffff}
[data-theme=dark]{--vf-owner:#4b8dff;--vf-owner-tick:#ffffff;--vf-co:#2dd4bf;--vf-co-fill:#0f2f2d;--vf-co-tick:#5eead4;--vf-tip-bg:#e8eef9;--vf-tip-fg:#0f1b33;--vf-seg-on:#232c3e}
/* 10.17 theme variables (light, then dark) */
:root{--rd-todo:#94a3b8;--rd-doing:#2563eb;--rd-testing:#d97706;--rd-done:#059669;
  --rd-new-bg:#e8f0ff;--rd-new-fg:#1d4ed8;--rd-new-bd:#c7d8fe;--rd-imp-bg:#f1ecff;--rd-imp-fg:#6d28d9;--rd-imp-bd:#ddd3fd;--rd-fix-bg:#e7f8f0;--rd-fix-fg:#047857;--rd-fix-bd:#bfe9d6;
  --rd-ver-bg:#0f1b33;--rd-ver-fg:#ffffff;--rd-rail:#dbe3ef;--rd-dot:#ffffff;--rd-dot-bd:#b6c6df;--rd-col:#f4f7fb;--rd-card:#ffffff;--rd-card-bd:#e4e9f1;
  --rd-sh:none;--rd-sh-h:none;--rd-ring:rgba(37,99,235,.14);
  --rd-hero1:#eaf1ff;--rd-hero2:#ffffff;--rd-hero-line:#d6e2fb;--rd-tile:#ffffff;--rd-crit:#dc2626;--rd-high:#ea580c;--rd-med:#d97706;--rd-low:#94a3b8;--rd-track:#e7ecf4}
[data-theme=dark]{--rd-todo:#7c89a3;--rd-doing:#60a5fa;--rd-testing:#fbbf24;--rd-done:#34d399;
  --rd-new-bg:rgba(96,165,250,.14);--rd-new-fg:#93c5fd;--rd-new-bd:rgba(96,165,250,.3);--rd-imp-bg:rgba(167,139,250,.14);--rd-imp-fg:#c4b5fd;--rd-imp-bd:rgba(167,139,250,.3);--rd-fix-bg:rgba(52,211,153,.13);--rd-fix-fg:#6ee7b7;--rd-fix-bd:rgba(52,211,153,.28);
  --rd-ver-bg:#e8edf7;--rd-ver-fg:#0f1420;--rd-rail:#2a3346;--rd-dot:#161c2a;--rd-dot-bd:#4a5875;--rd-col:#141a26;--rd-card:#1a2130;--rd-card-bd:#2a3346;
  --rd-sh:none;--rd-sh-h:none;--rd-ring:rgba(96,165,250,.22);
  --rd-hero1:#172238;--rd-hero2:#0f1420;--rd-hero-line:#26334d;--rd-tile:#1a2130;--rd-crit:#f87171;--rd-high:#fb923c;--rd-med:#fbbf24;--rd-low:#7c89a3;--rd-track:#2a3346}

:root{--rd-grid:rgba(255,255,255,.10);--rd-mask:#000}
[data-theme=dark]{--rd-grid:rgba(255,255,255,.07);--rd-mask:#000}

*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-14);line-height:1.45;-webkit-font-smoothing:antialiased}
body{min-height:100vh;overflow-x:hidden;background:var(--bg)}
a{color:var(--accent2)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-0)}
.hidden{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- buttons & inputs ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border2);background:var(--surface2);
  padding:12px 12px;border-radius:var(--r-0);cursor:pointer;font-weight:600;font-size:var(--fs-14);transition:background .15s,border-color .15s,transform .05s;white-space:nowrap;text-decoration:none;color:var(--text)}
.btn:hover{background:var(--surface3)} .btn:active{transform:translateY(1px)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent;box-shadow:none}
.btn.primary:hover{filter:brightness(1.06)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)} .btn.ghost:hover{background:var(--surface2);color:var(--text)}
.btn.danger{background:rgba(248,113,113,.12);border-color:rgba(248,113,113,.35);color:var(--k-fg-b91c1c)}
.btn.small{padding:8px 12px;font-size:var(--fs-13);border-radius:var(--r-0)}
.btn.block{width:100%}
.btn[disabled]{opacity:.55;pointer-events:none}
.icon-btn{width:38px;height:38px;padding:0;border-radius:var(--r-0)}
label.field{display:block;margin:0 0 12px} label.field>span{display:block;font-size:var(--fs-13);font-weight:600;color:var(--muted);margin-bottom:8px;letter-spacing:.02em}
.input,select.input,textarea.input{width:100%;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r-0);padding:12px 12px;outline:none;font-size:var(--fs-16);transition:border-color .15s}
.input:focus{border-color:var(--accent)}
textarea.input{min-height:84px;resize:vertical}
.row{display:flex;gap:12px;align-items:center} .row.wrap{flex-wrap:wrap} .grow{flex:1;min-width:0}
.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.two>*{min-width:0}
.two .field>span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
input[type=date].input{min-width:0;-webkit-appearance:none;appearance:none;min-height:46px}
.muted{color:var(--muted)} .faint{color:var(--faint)} .small{font-size:var(--fs-13)}
.error-msg{background:rgba(248,113,113,.1);border:1px solid rgba(248,113,113,.3);color:var(--k-fg-b91c1c);padding:8px 12px;border-radius:var(--r-0);font-size:var(--fs-14);margin-bottom:12px}

/* ---------- logo ---------- */
.logo{display:inline-flex;align-items:center;gap:12px;font-weight:600;letter-spacing:-.02em;font-size:var(--fs-20);color:var(--text);text-decoration:none}
.logo svg{flex:none}

/* ---------- auth ---------- */
.auth{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;gap:32px;align-items:center;max-width:1100px;margin:0 auto;padding:32px 24px}
.auth-hero h1{font-size:var(--fs-24);line-height:1.05;letter-spacing:-.035em;margin:24px 0 12px}
.auth-hero h1 em{font-style:normal;background:none;-webkit-background-clip:border-box;background-clip:border-box;color:currentColor}
.auth-hero p{color:var(--muted);font-size:var(--fs-16);max-width:460px;margin:0 0 24px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);padding:8px 12px;border-radius:var(--r-0);font-size:var(--fs-13);color:var(--muted)}
.auth-card{background:var(--k-bg-ffffffa88);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--r-0);padding:24px;box-shadow:none}
.seg{display:flex;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-0);padding:4px;margin-bottom:16px}
.seg button{flex:1;border:0;background:transparent;padding:8px 12px;border-radius:var(--r-0);cursor:pointer;color:var(--muted);font-weight:600;font-size:var(--fs-14)}
.seg button.on{background:var(--surface3);color:var(--text)}
.divider{display:flex;align-items:center;gap:12px;color:var(--faint);font-size:var(--fs-12);margin:16px 0}
.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}
.mini-hexes{display:flex;gap:8px;margin-top:24px}
.mini-hexes i{width:34px;height:38px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:var(--surface3);display:block}

/* ---------- app shell ---------- */
.topbar{position:sticky;top:0;z-index:20;background:var(--k-bg-ffffffa86);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.topbar-in{max-width:1180px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;gap:12px;min-height:58px}
.avatar{width:30px;height:30px;border-radius:var(--r-0);display:inline-grid;place-items:center;font-weight:600;font-size:var(--fs-13);color:#f5f7fb;flex:none;text-transform:uppercase}
.avatar.lg{width:40px;height:40px;border-radius:var(--r-0);font-size:var(--fs-16)}
.avatar.sm{width:22px;height:22px;border-radius:var(--r-0);font-size:var(--fs-12)}
.avatars{display:flex} .avatars .avatar{margin-left:-8px;box-shadow:none;outline:2px solid var(--surface);outline-offset:0} .avatars .avatar:first-child{margin-left:0}
.page{max-width:1180px;margin:0 auto;padding:24px 16px 32px}
.page-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.page-head h1{font-size:var(--fs-24);margin:0;letter-spacing:-.02em}
.menu{position:relative}
.menu-pop{position:absolute;right:0;top:44px;background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-0);box-shadow:none;padding:8px;min-width:200px;z-index:40}
.menu-pop button{display:block;width:100%;text-align:left;background:none;border:0;padding:8px 12px;border-radius:var(--r-0);cursor:pointer}
.menu-pop button:hover{background:var(--surface2)}

/* ---------- cards ---------- */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:16px}
.card h3,.card h2.h3{margin:0 0 12px;font-size:var(--fs-14);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:flex;align-items:center;gap:8px}
.card h3 .btn,.card h2.h3 .btn{margin-left:auto;text-transform:none;letter-spacing:0}
.proj-card{cursor:pointer;transition:border-color .15s,transform .15s;display:flex;flex-direction:column;gap:12px;text-align:left;color:inherit;width:100%;font:inherit}
.proj-card:hover{border-color:var(--border2);transform:translateY(-2px)}
.proj-icon{width:46px;height:46px;border-radius:var(--r-0);background:var(--surface3);display:grid;place-items:center;font-size:var(--fs-24);flex:none}
.proj-card h2{font-size:var(--fs-16);margin:0;letter-spacing:-.01em}
.clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bar{height:7px;border-radius:var(--r-0);background:var(--surface3);overflow:hidden}
.bar>i{display:block;height:100%;border-radius:var(--r-0);background:var(--accent)}
.badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;padding:4px 8px;border-radius:var(--r-0);letter-spacing:.02em;white-space:nowrap}
.badge.owner{background:rgba(37,99,235,.15);color:var(--accent2)}
.badge.editor{background:rgba(37,99,235,.14);color:var(--k-fg-1d4ed8)}
.badge.viewer{background:rgba(147,160,181,.14);color:var(--k-fg-334155)}
.badge.role{background:var(--surface3);color:var(--text);font-weight:600}
.new-card{border:1.5px dashed var(--border2);background:transparent;display:grid;place-items:center;min-height:170px;color:var(--muted);cursor:pointer;border-radius:var(--r-0);font:inherit;font-weight:600}
.new-card:hover{border-color:var(--accent);color:var(--accent2)}
.empty{text-align:center;color:var(--muted);padding:24px 12px}

/* ---------- project header + nav ---------- */
.proj-head{display:flex;align-items:center;gap:12px;min-width:0}
.proj-head .proj-icon{width:38px;height:38px;font-size:var(--fs-20);border-radius:var(--r-0)}
.proj-head h1{font-size:var(--fs-16);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tabs{display:flex;gap:4px;max-width:1180px;margin:0 auto;padding:0 16px}
.tabs a{display:flex;align-items:center;gap:8px;padding:12px 12px;color:var(--muted);text-decoration:none;font-weight:600;font-size:var(--fs-14);border-bottom:2px solid transparent}
.tabs a:hover{color:var(--text)}
.tabs a.on{color:var(--text);border-bottom-color:var(--accent)}
.tabs svg{width:18px;height:18px}
.viewonly{display:flex;align-items:center;gap:8px;background:rgba(147,160,181,.08);border:1px solid var(--border);color:var(--muted);padding:8px 12px;border-radius:var(--r-0);font-size:var(--fs-13);margin-bottom:12px}

/* ---------- overview ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:12px}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:12px;display:flex;align-items:center;gap:12px;min-width:0}
.stat b{display:block;font-size:var(--fs-20);letter-spacing:-.02em;line-height:1.1}
.stat span{font-size:var(--fs-13);color:var(--muted)}
.ring{--p:0;width:54px;height:54px;border-radius:50%;flex:none;background:conic-gradient(var(--accent) calc(var(--p)*1%), var(--surface3) 0);display:grid;place-items:center}
.ring:after{content:attr(data-label);width:42px;height:42px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-weight:600;font-size:var(--fs-13)}
.stat-ico{width:40px;height:40px;border-radius:var(--r-0);display:grid;place-items:center;flex:none;font-size:var(--fs-16);background:var(--surface3)}
.ov-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:12px}
.list{display:flex;flex-direction:column}
.li{display:flex;align-items:center;gap:12px;padding:12px 4px;border-top:1px solid var(--border);min-width:0;cursor:default}
.li:first-child{border-top:0}
.li.click{cursor:pointer;border-radius:var(--r-0)} .li.click:hover{background:var(--surface2)}
.li .t{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.li .s{font-size:var(--fs-13);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.date-chip{flex:none;width:46px;text-align:center;border-radius:var(--r-0);background:var(--surface2);padding:4px 0;line-height:1.1}
.date-chip b{display:block;font-size:var(--fs-16)} .date-chip span{font-size:var(--fs-12);text-transform:uppercase;color:var(--muted);letter-spacing:.06em}
.date-chip.late{background:rgba(248,113,113,.14)} .date-chip.late span,.date-chip.late b{color:var(--k-fg-dc2626)}
.date-chip.today{background:rgba(37,99,235,.16)} .date-chip.today span{color:var(--accent2)}
.act-text{font-size:var(--fs-14)} .act-text b{font-weight:600}

/* ---------- honeycomb ---------- */
.comb-wrap{position:relative;margin:4px auto 0}
.hex{position:absolute;cursor:pointer;transition:transform .15s,filter .15s;-webkit-tap-highlight-color:transparent;border:0;padding:0;background:none}
.hex:hover{transform:scale(1.04);z-index:2;filter:brightness(1.1)}
.hex:focus-visible{outline:none;filter:brightness(1.25)}
.hex .rim,.hex .core,.hex .fill{position:absolute;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.hex .rim{inset:0;background:var(--c, var(--border2))}
.hex .core{inset:3px;background:var(--k-bg-ffffff);overflow:hidden}
.hex .fill{left:0;right:0;bottom:0;clip-path:none;background:color-mix(in srgb,var(--c) 38%,transparent)}
.hex .lbl{position:absolute;inset:16% 10%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2px;color:var(--text)}
.hex .lbl .nm{font-weight:600;font-size:var(--fs,13px);line-height:1.12;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-shadow:none}
.hex .lbl .pc{font-family:var(--mono);font-size:calc(var(--fsb,13px) - 1px);font-weight:600;color:var(--c)}
.hex .lbl .cat{font-size:calc(var(--fsb,13px) - 3px);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;overflow:hidden;max-width:100%;text-overflow:ellipsis}
.hex.ghost .rim{background:var(--border2)} .hex.ghost .core{background:var(--bg2)}
.hex.ghost .lbl{color:var(--muted);font-weight:600;font-size:var(--fs-13)}
.hex.ghost .plus{font-size:var(--fs-24);line-height:1;color:var(--accent)}
.hex.dim{opacity:.25}
.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:var(--fs-13);color:var(--muted)}
.legend i{display:inline-block;width:12px;height:13px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);margin-right:4px;vertical-align:-2px}
.comb-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.cat-filter{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:8px;scrollbar-width:none}
.cat-filter::-webkit-scrollbar{display:none}
.cat-filter button{flex:none;border:1px solid var(--border);background:var(--surface);color:var(--muted);padding:4px 12px;border-radius:var(--r-0);font-size:var(--fs-13);cursor:pointer;font-weight:600}
.cat-filter button.on{border-color:var(--accent);color:var(--accent2);background:rgba(37,99,235,.08)}

/* ---------- planner ---------- */
.cal-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.cal-head h2{margin:0;font-size:var(--fs-20);flex:1;letter-spacing:-.01em}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal .dow{font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.08em;color:var(--faint);text-align:center;padding:4px 0;font-weight:600}
.day{min-height:96px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:4px;cursor:pointer;display:flex;flex-direction:column;gap:4px;min-width:0;text-align:left;font:inherit;color:inherit}
.day:hover{border-color:var(--border2)}
.day.out{opacity:.38}
.day.sel{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.day .n{font-size:var(--fs-13);font-weight:600;color:var(--muted)}
.day.today .n{color:var(--accent-ink);background:var(--accent);border-radius:var(--r-0);padding:0 8px;align-self:flex-start}
.ev{font-size:var(--fs-12);font-weight:600;padding:2px 8px;border-radius:var(--r-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:color-mix(in srgb,var(--k) 22%,transparent);color:color-mix(in srgb,var(--k) 70%,white);border-left:3px solid var(--k)}
.ev.task{background:transparent;border-left:0;color:var(--muted);padding:0 2px;font-weight:500}
.dots{display:none;gap:4px;flex-wrap:wrap}
.dots i{width:6px;height:6px;border-radius:var(--r-0);background:var(--k)}
.k-milestone{--k:#2563eb} .k-playtest{--k:#10b981} .k-release{--k:#f472b6} .k-meeting{--k:#2563eb} .k-sprint{--k:#a78bfa} .k-other{--k:#64748b} .k-task{--k:#64748b}
.kind-pill{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--k)}
.kind-pill:before{content:"";width:8px;height:8px;border-radius:var(--r-0);background:var(--k)}
.planner-grid{display:grid;grid-template-columns:1fr 330px;gap:12px;align-items:start}

/* ---------- tasks ---------- */
.board{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:start}
.col{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-0);padding:12px}
.col-h{display:flex;align-items:center;gap:8px;font-weight:600;font-size:var(--fs-13);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:4px 4px 12px}
.col-h .cnt{background:var(--surface3);color:var(--text);border-radius:var(--r-0);padding:1px 8px;font-size:var(--fs-12)}
.task{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:12px;margin-bottom:8px;display:flex;gap:12px;cursor:pointer;transition:border-color .15s}
.task:hover{border-color:var(--border2)}
.task .t{font-weight:600;line-height:1.3}
.task.done .t{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--faint)}
.chk{width:22px;height:22px;border-radius:var(--r-0);border:2px solid var(--border2);flex:none;display:grid;place-items:center;background:none;cursor:pointer;padding:0;margin-top:1px}
.chk.doing{border-color:var(--blue);background:conic-gradient(var(--blue) 50%, transparent 0)}
.chk.done{border-color:var(--green);background:var(--green);color:var(--k-fg-06281b)}
.chk:disabled{cursor:default}
.meta{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin-top:8px;font-size:var(--fs-13);color:var(--muted)}
.meta .late{color:var(--k-fg-dc2626);font-weight:600}
.hexchip{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);background:var(--surface3);border-radius:var(--r-0);padding:1px 8px;color:var(--text)}
.hexchip:before{content:"";width:8px;height:9px;background:var(--accent);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.status-seg{display:none}

/* ---------- team ---------- */
.member{display:flex;align-items:center;gap:12px;padding:12px 4px;border-top:1px solid var(--border)}
.member:first-child{border-top:0}
.access-table{display:grid;gap:12px}
.access-table div{display:flex;gap:12px;align-items:flex-start;font-size:var(--fs-13);color:var(--muted)}

/* ---------- modal / sheet ---------- */
.scrim{position:fixed;inset:0;background:rgba(15,27,51,.42);backdrop-filter:blur(3px);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;animation:fade .15s}
.sheet{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-0);width:100%;max-width:520px;max-height:min(88vh,860px);overflow:auto;box-shadow:none;animation:pop .18s ease-out}
.sheet-h{display:flex;align-items:center;gap:12px;padding:16px 16px 8px;position:sticky;top:0;background:var(--surface);z-index:2}
.sheet-h h2{margin:0;font-size:var(--fs-16);flex:1;letter-spacing:-.01em;min-width:0}
.sheet-b{padding:8px 16px 16px}
.sheet-f{display:flex;gap:12px;padding:12px 16px 16px;position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--border)}
.grabber{display:none}
@keyframes fade{from{opacity:0}} @keyframes pop{from{transform:translateY(10px) scale(.98);opacity:0}}
@keyframes up{from{transform:translateY(100%)}}
.emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:8px}
.emoji-grid button{aspect-ratio:1;border:1px solid var(--border);background:var(--bg2);border-radius:var(--r-0);font-size:var(--fs-20);cursor:pointer;padding:0}
.emoji-grid button.on{border-color:var(--accent);background:rgba(37,99,235,.12)}
.range{width:100%;accent-color:var(--accent)}
.pick{display:flex;flex-wrap:wrap;gap:8px}
.pick label{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border2);border-radius:var(--r-0);padding:4px 12px 4px 4px;cursor:pointer;font-size:var(--fs-13)}
.pick input{display:none}
.pick label:has(input:checked){border-color:var(--accent);background:rgba(37,99,235,.1)}
.detail-desc{white-space:pre-wrap;color:var(--k-fg-334155);margin:0 0 12px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 12px;font-size:var(--fs-14);margin-bottom:12px}
.kv dt{color:var(--muted)} .kv dd{margin:0}
.toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + 18px);transform:translateX(-50%);background:var(--surface3);border:1px solid var(--border2);padding:12px 16px;border-radius:var(--r-0);z-index:200;box-shadow:none;font-size:var(--fs-14);max-width:90vw;animation:pop .2s}
.toast.err{background:var(--k-bg-fef2f2);border-color:var(--k-bd-fecaca)}
.spinner{width:28px;height:28px;border:3px solid var(--surface3);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:64px auto}
@keyframes spin{to{transform:rotate(360deg)}}
.suggest{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r-0);margin-top:-8px;margin-bottom:12px;overflow:hidden}
.suggest button{display:flex;width:100%;align-items:center;gap:8px;background:none;border:0;padding:8px 12px;cursor:pointer;text-align:left}
.suggest button:hover{background:var(--surface2)}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .auth{grid-template-columns:1fr;gap:24px;padding:24px 16px;min-height:auto}
  .auth-hero h1{font-size:var(--fs-24);margin-top:16px}
  .auth-hero p{font-size:var(--fs-16)}
  .mini-hexes{display:none}
  .ov-grid,.planner-grid{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr}
}
@media (max-width:720px){
  body{font-size:var(--fs-14)}
  .page{padding:16px 12px calc(var(--nav-h) + 32px)}
  .topbar-in{padding:8px 12px;min-height:54px}
  .tabs{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--k-bg-ffffffa96);backdrop-filter:blur(12px);border-top:1px solid var(--border);
    padding:8px 4px calc(8px + env(safe-area-inset-bottom));justify-content:space-around;gap:0;max-width:none}
  .tabs a{flex-direction:column;gap:4px;font-size:var(--fs-12);padding:4px 2px;border-bottom:0;flex:1;border-radius:var(--r-0);letter-spacing:.01em}
  .tabs a.on{color:var(--accent2);border-bottom:0}
  .tabs svg{width:22px;height:22px}
  .stat{padding:12px;gap:12px} .stat b{font-size:var(--fs-20)}
  .ring{width:48px;height:48px} .ring:after{width:37px;height:37px;font-size:var(--fs-12)}
  .board{grid-template-columns:1fr}
  .board.mobile-one .col:not(.show){display:none}
  .status-seg{display:flex}
  .col{background:transparent;border:0;padding:0}
  .col-h{display:none}
  .day{min-height:52px;padding:4px;align-items:center;border-radius:var(--r-0)}
  .day .ev{display:none}
  .day .dots{display:flex;justify-content:center}
  .day.today .n{align-self:center}
  .cal{gap:4px}
  .scrim{align-items:flex-end;padding:0}
  .sheet{border-radius:var(--r-0);max-height:90vh;animation:up .22s ease-out;border-bottom:0}
  .grabber{display:block;width:40px;height:5px;border-radius:var(--r-0);background:var(--border2);margin:8px auto 0}
  .sheet-f{padding-bottom:calc(12px + env(safe-area-inset-bottom))}
  .emoji-grid{grid-template-columns:repeat(8,1fr)}
  .hide-m{display:none!important}
  .page-head h1{font-size:var(--fs-20)}
}
@media (min-width:721px){ .show-m{display:none!important} }

/* ---- pass 1 fixes ---- */
.auth>*,.ov-grid>*,.planner-grid>*,.stats>*{min-width:0}
.btn.block{white-space:normal;text-align:center}
.sheet{overflow-x:hidden}
.sheet-f .btn{min-width:0}
.sheet-f .btn.grow{overflow:hidden;text-overflow:ellipsis}
.task-filters{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.task-filters .seg button{white-space:nowrap}
.li .chk{width:20px;height:20px;font-size:var(--fs-12);color:var(--k-fg-06281b)}
@media (max-width:720px){
  .task-filters{flex-direction:column;gap:8px}
  .task-filters .seg{width:100%}
}

/* ---- pass 2 ---- */
#view{animation:fade .18s ease-out}
.avatar.xs{width:18px;height:18px;border-radius:var(--r-0);font-size:var(--fs-12)}
.hex .avatars .avatar{box-shadow:none;outline:1.5px solid var(--k-bg-ffffff);outline-offset:0;margin-left:-4px}
.comb-scroll{overflow-x:auto;overflow-y:visible;padding:4px 0 8px;-webkit-overflow-scrolling:touch}
.comb-wrap{touch-action:pan-x pan-y pinch-zoom}
.hex{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.hex.dragging{z-index:10;transition:none;filter:brightness(1.2);cursor:grabbing}
.hex.drop .rim{background:var(--k-bg-ffffff)}
.is-dragging .hex:not(.dragging):not(.drop){opacity:.7}
.mini-hex{width:30px;height:34px;flex:none;position:relative;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:var(--c)}
.mini-hex:before{content:"";position:absolute;inset:2.5px;background:var(--k-bg-ffffff);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.mini-hex i{position:absolute;left:2.5px;right:2.5px;bottom:2.5px;max-height:calc(100% - 5px);background:color-mix(in srgb,var(--c) 45%,transparent)}
.onboard{border-color:rgba(37,99,235,.35);background:var(--surface)}
@media (hover:none){
  .hex:hover{transform:none;filter:none}
  .proj-card:hover{transform:none}
  .tabs a:not(.on):hover{color:var(--muted)}
  .btn:not(.danger):not(.primary):not(.ghost):hover{background:var(--surface2)} .btn.primary:hover{filter:none;background:var(--accent)} .btn.ghost:hover{background:transparent}
}

.hex .lbl .nm{overflow-wrap:break-word}
.seg button{white-space:nowrap}

.onboard .li .t{white-space:normal}

/* ================= v2: invites, live, comments, notifications, planner bars, recovery, polish ================= */
.mono{font-family:var(--mono);letter-spacing:.04em}
.view-title{margin:0;font-size:var(--fs-20);letter-spacing:-.02em}
.field-l{display:block;font-size:var(--fs-13);font-weight:600;color:var(--muted);margin-bottom:8px;letter-spacing:.02em}
.field{margin:0 0 12px}

/* credit + discord */
.credit{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:24px;font-size:var(--fs-13)}
.credit>a:first-child{color:var(--muted);text-decoration:none;border-bottom:1px dashed var(--border2);padding-bottom:1px}
.credit>a:first-child:hover{color:var(--accent2);border-color:var(--accent2)}
.btn.discord{background:#5865f2;border-color:#5865f2;color:#fff;gap:8px}
.btn.discord:hover{background:#4752c4}
.btn.discord svg{width:16px;height:16px}
.auth>.credit.show-m{justify-content:center;margin:0 0 12px}
.menu-credit{border-top:1px solid var(--border);margin-top:4px;padding:8px 12px 4px}
.menu-credit .credit{margin:0;gap:8px}
.menu-pop .menu-credit .btn{display:inline-flex;width:auto;padding:8px 12px;color:#fff}
.menu-pop .menu-credit .btn:hover{background:#4752c4}

/* auth extras */
.pw-wrap{position:relative} .pw-wrap .input{padding-right:64px}
.pw-eye{position:absolute;right:4px;top:50%;transform:translateY(-50%)}
.forgot-row{text-align:right;margin:-8px 0 12px;font-size:var(--fs-13)}
.forgot-row a{color:var(--muted)}
.invite-banner{display:flex;gap:12px;align-items:center;background:var(--accent-soft);border:1px solid rgba(37,99,235,.35);border-radius:var(--r-0);padding:12px;margin-bottom:16px;animation:pop .25s ease-out}
.invite-banner b{font-size:var(--fs-16)}
.invite-banner.skel-line{height:72px}
.spin-sm{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:spin .7s linear infinite;margin-right:2px;flex:none}
.code-box{font-family:var(--mono);font-size:var(--fs-20);font-weight:600;letter-spacing:.06em;text-align:center;background:var(--bg2);border:1.5px dashed var(--accent);color:var(--accent2);border-radius:var(--r-0);padding:16px 12px;user-select:all;-webkit-user-select:all;word-break:break-all}
.link-box{font-family:var(--mono);font-size:var(--fs-14);background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r-0);padding:12px;word-break:break-all;user-select:all;-webkit-user-select:all;color:var(--accent2)}
.link-ready{animation:pop .2s ease-out}

/* skeletons */
.skel-line,.skel-block{background:var(--surface2);background-size:200% 100%;animation:shimmer 1.3s infinite linear;border-radius:var(--r-0)}
.skel-line{height:13px;margin:8px 0}
.skel-card{display:flex;flex-direction:column;gap:8px;min-height:170px}
@keyframes shimmer{from{background-position:200% 0}to{background-position:-200% 0}}

/* empty states + join page */
.page.narrow{max-width:520px}
.join-card{text-align:center;padding:24px 16px;animation:pop .25s ease-out}
.proj-icon.big{width:72px;height:72px;font-size:var(--fs-24);border-radius:var(--r-0);margin:0 auto}
.clamp3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.empty-state{text-align:center;padding:24px 12px}
.empty-state h2{margin:8px 0 8px;font-size:var(--fs-16)}
.empty-state p{margin:0 auto 16px;max-width:340px;font-size:var(--fs-14)}
.es-icon{width:64px;height:72px;margin:0 auto;display:grid;place-items:center;font-size:var(--fs-24);background:var(--accent-soft);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}

/* bell + notifications */
.bell{position:relative}
.dot-count{position:absolute;top:3px;right:2px;min-width:17px;height:17px;padding:0 4px;border-radius:50%;background:#ef4444;color:#fff;font-size:var(--fs-12);font-weight:600;display:grid;place-items:center;box-shadow:none;outline:2px solid var(--bg);outline-offset:0;line-height:1}
.dot-count.pop{animation:badge .45s cubic-bezier(.3,1.6,.5,1)}
@keyframes badge{from{transform:scale(.3)}}
.sec-h{font-size:var(--fs-13);text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:0 0 8px;display:flex;align-items:center;gap:8px}
.inv-row,.inv-card{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--border)}
.inv-card{align-items:center;padding:12px;margin-bottom:12px;border:1px solid rgba(37,99,235,.35);background:var(--surface);flex-wrap:wrap;animation:pop .25s ease-out}
.notif{width:100%;background:none;border:0;border-top:1px solid var(--border);text-align:left;color:inherit;font:inherit;align-items:flex-start}
.notif:first-child{border-top:0}
.notif.unread{background:rgba(37,99,235,.06)}
.n-ico{width:32px;height:32px;border-radius:var(--r-0);background:var(--surface3);display:grid;place-items:center;flex:none;font-size:var(--fs-14)}
.n-text{font-size:var(--fs-14);line-height:1.35;overflow-wrap:anywhere}
.unread-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);flex:none;margin-top:8px}
.toast.tap{cursor:pointer;font:inherit;color:inherit;text-align:left;font-size:var(--fs-14)}
.toast.tap:after{content:" ›";color:var(--accent2);font-weight:600}

/* settings */
.setting{display:flex;gap:12px;align-items:center;padding:8px 0 12px;cursor:default}
label.setting{cursor:pointer}
.switch{position:relative;width:46px;height:28px;flex:none}
.switch input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.switch i{position:absolute;inset:0;border-radius:var(--r-0);background:var(--surface3);border:1px solid var(--border2);transition:background .2s}
.switch i:after{content:"";position:absolute;width:22px;height:22px;left:2px;top:2px;border-radius:var(--r-0);background:var(--k-bg-ffffff);transition:transform .2s}
.switch input:checked+i{background:var(--accent)} .switch input:checked+i:after{transform:translateX(18px)}
.switch input:focus-visible+i{outline:2px solid var(--accent);outline-offset:2px}

/* presence */
.online{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;color:var(--green);white-space:nowrap}
.online i{width:7px;height:7px;border-radius:var(--r-0);background:var(--green);box-shadow:none;animation:ping 2s infinite}
@keyframes ping{70%{box-shadow:none;outline:2px solid rgba(52,211,153,0);outline-offset:0}100%{box-shadow:none}}
.av-wrap{position:relative;flex:none;display:inline-flex}
.presence{position:absolute;right:-2px;bottom:-2px;width:12px;height:12px;border-radius:50%;background:var(--faint);box-shadow:none;outline:2px solid var(--surface);outline-offset:0;display:none}
.presence.on{display:block;background:var(--green)}

/* task detail */
.status-pick{margin:0 0 12px}
.status-pick button.on.s-todo{background:var(--surface3)}
.status-pick button.on.s-doing{background:rgba(37,99,235,.22);color:var(--k-fg-1e40af)}
.status-pick button.on.s-done{background:rgba(52,211,153,.22);color:var(--k-fg-047857)}
.badge.st-todo{background:var(--surface3);color:var(--text)} .badge.st-doing{background:rgba(37,99,235,.18);color:var(--k-fg-1d4ed8)} .badge.st-done{background:rgba(52,211,153,.18);color:var(--k-fg-047857)}
.late-text{color:var(--k-fg-dc2626);font-weight:600}
.hexchip.linky{border:0;cursor:pointer;font:inherit;font-size:var(--fs-13);padding:4px 8px}
.hexchip.linky:hover{background:var(--border2)}
.ccount{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:var(--fs-12)}
.ccount svg{width:13px;height:13px}
.li>.ccount{flex:none}
.hex .lbl .hex-cc{display:inline-flex;align-items:center;gap:2px;margin-left:4px;font-size:calc(var(--fsb,13px) - 3px);color:var(--muted);font-family:var(--font)}
.hex .lbl .hex-cc svg{width:10px;height:10px}

/* comments */
.comments{border-top:1px solid var(--border);margin-top:8px;padding-top:12px}
.c-list{display:flex;flex-direction:column;gap:12px;margin-bottom:12px}
.comment{display:flex;gap:8px;align-items:flex-start}
.comment .avatar{margin-top:2px}
.c-head{display:flex;align-items:baseline;gap:8px;font-size:var(--fs-13)}
.c-head b{font-weight:600}
.c-head .faint{font-size:var(--fs-12)}
.c-del{margin-left:auto;background:none;border:0;color:var(--faint);font-size:var(--fs-12);cursor:pointer;padding:2px 4px;border-radius:var(--r-0)}
.c-del:hover,.c-del:focus-visible{color:var(--k-fg-dc2626)}
.c-body{background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:8px 12px;margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--fs-14);line-height:1.4}
.comment.mine .c-body{background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.22)}
.comment.fresh .c-body{animation:flash 1.2s ease-out}
@keyframes flash{from{background:rgba(37,99,235,.3)}}
.c-body a{color:var(--k-fg-1d4ed8);word-break:break-all}
.mention{color:var(--k-fg-1d4ed8);font-weight:600;background:rgba(37,99,235,.12);border-radius:var(--r-0);padding:0 4px}
.mention.me{color:var(--accent2);background:rgba(37,99,235,.16)}
.c-empty{padding:2px 0 4px}
.c-form{display:flex;gap:8px;align-items:flex-end;position:sticky;bottom:-18px;background:var(--surface);padding:8px 0 4px}
.c-input-wrap{position:relative;flex:1;min-width:0}
.c-form textarea{min-height:44px;height:44px;resize:none;padding:12px 12px;line-height:1.35;overflow-y:auto}
.c-form .icon-btn{width:44px;height:44px;flex:none}
.mention-pop{position:absolute;left:0;right:0;bottom:calc(100% + 6px);background:var(--surface2);border:1px solid var(--border2);border-radius:var(--r-0);box-shadow:none;overflow:hidden;z-index:5;animation:pop .14s ease-out}
.mention-pop button{display:flex;width:100%;align-items:center;gap:8px;padding:8px 12px;background:none;border:0;cursor:pointer;text-align:left;font-size:var(--fs-14)}
.mention-pop button.on,.mention-pop button:hover{background:var(--surface3)}
.mention-pop .faint{font-size:var(--fs-13);margin-left:auto}

/* team */
.invite-li{gap:8px}
.invite-li .btn{flex:none}

/* planner: week rows with bars */
.cal2{display:flex;flex-direction:column;gap:4px}
.cal-dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal-dow div{font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.08em;color:var(--faint);text-align:center;padding:4px 0;font-weight:600}
.wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));column-gap:4px;min-height:100px;position:relative}
.day2{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:4px 4px;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;min-width:0;text-align:left;font:inherit;color:inherit;z-index:0}
.day2:hover{border-color:var(--border2)}
.day2.out{opacity:.4}
.day2.sel{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.day2 .n{font-size:var(--fs-13);font-weight:600;color:var(--muted);line-height:16px;align-self:flex-start;padding:0 2px}
.day2.today .n{color:var(--accent-ink);background:var(--accent);border-radius:var(--r-0);padding:0 8px}
.day-foot{display:flex;align-items:center;gap:4px;min-height:14px;font-size:var(--fs-12);color:var(--muted);flex-wrap:wrap}
.day-foot .more{font-weight:600;color:var(--text)}
.day-foot .due{display:inline-flex;align-items:center;gap:4px}
.day-foot .due i{width:6px;height:6px;border-radius:var(--r-0);background:var(--muted)}
.pbar{z-index:1;margin:1px 4px;border:0;border-radius:var(--r-0);padding:0 8px;font:inherit;font-size:var(--fs-12);font-weight:600;line-height:16px;height:16px;text-align:left;cursor:pointer;
  background:color-mix(in srgb,var(--k) 30%,var(--surface));color:color-mix(in srgb,var(--k) 55%,white);border-left:3px solid var(--k);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;display:flex;align-items:center;gap:4px;
  animation:barin .35s ease-out both;transform-origin:left center}
.pbar .bt{overflow:hidden;text-overflow:ellipsis}
.pbar .cont{opacity:.7}
.pbar.contL{margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0}
.pbar.contR{margin-right:0;border-top-right-radius:0;border-bottom-right-radius:0}
.pbar:hover{filter:brightness(1.15)}
.pbar:focus-visible{outline:2px solid var(--k-bd-ffffff);outline-offset:1px}
@keyframes barin{from{transform:scaleX(.6);opacity:0}}

/* motion */
.scrim.swap,.scrim.swap .sheet{animation:none}
.scrim.closing{animation:fadeout .19s ease-in forwards;pointer-events:none}
.scrim.closing .sheet{animation:popout .19s ease-in forwards}
@keyframes fadeout{to{opacity:0}} @keyframes popout{to{transform:translateY(10px) scale(.98);opacity:0}}
.stagger>*{animation:rise .32s ease-out both}
.stagger>*:nth-child(2){animation-delay:.04s} .stagger>*:nth-child(3){animation-delay:.08s} .stagger>*:nth-child(4){animation-delay:.12s} .stagger>*:nth-child(n+5){animation-delay:.16s}
@keyframes rise{from{transform:translateY(8px);opacity:0}}
.bar>i,.ring{animation:growin .7s cubic-bezier(.2,.8,.2,1) both}
@keyframes growin{from{clip-path:inset(0 100% 0 0)}}
.comb-wrap.intro .hex{animation:hexin .38s cubic-bezier(.3,1.4,.5,1) both;animation-delay:calc(var(--i,0) * 22ms)}
@keyframes hexin{from{transform:scale(.4);opacity:0}}
.hex .fill{transition:height .5s ease}
.page.live,.page.live *{animation:none!important}
.btn,.li.click,.task,.notif{transition:background .15s,border-color .15s,transform .12s}
.task:active,.li.click:active,.proj-card:active{transform:scale(.985)}
@media (max-width:720px){
  .scrim.closing .sheet{animation:downout .19s ease-in forwards}
  @keyframes downout{to{transform:translateY(100%)}}
  .wk{min-height:66px;column-gap:4px}
  .cal-dow{gap:4px}
  .day2{padding:4px;border-radius:var(--r-0)}
  .day2 .n{font-size:var(--fs-12)}
  .day2.today .n{padding:0 4px}
  .day-foot .due em{display:none}
  .day-foot{justify-content:flex-end;gap:4px}
  .pbar{font-size:var(--fs-12);padding:0 4px;margin:1px 2px;border-left-width:2px;line-height:16px}
  .pbar.contL{margin-left:0} .pbar.contR{margin-right:0}
  .inv-card>.row{width:100%;justify-content:flex-end}
  .code-box{font-size:var(--fs-20)}
  .comments .c-form{bottom:-18px}
}
@media (prefers-reduced-motion: reduce){
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

.toast{width:max-content;max-width:min(92vw,420px)}
.auth.invite .auth-hero p,.auth.invite .chips,.auth.invite .auth-hero h1{display:none}
@media (max-width:900px){ .auth.invite{gap:12px} }
@media (max-width:480px){ .proj-head .proj-icon{display:none} .topbar-in{gap:8px} }
.app-foot{margin-top:24px;display:flex;justify-content:center}.app-foot .credit{margin:0;justify-content:center}
.menu-pop{min-width:236px}
@media (max-width:900px){
  .auth{display:flex;flex-direction:column;align-items:stretch;gap:0}
  .auth-hero{display:contents}
  .auth-hero .logo{order:1;align-self:flex-start}
  .auth-hero h1{order:2;margin:16px 0 16px}
  .auth-card{order:3}
  .auth-hero p{order:4;margin:24px 0 12px}
  .auth-hero .chips{order:5}
  .auth>.credit.show-m{order:6;margin:24px 0 8px}
  .auth.invite .auth-card{margin-top:16px}
}

.empty:not(.small):before{content:"";display:block;width:34px;height:38px;margin:0 auto 12px;background:none;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.callout{display:flex;align-items:center;gap:12px;margin-bottom:12px;border-color:rgba(37,99,235,.35);background:var(--surface);flex-wrap:wrap}
.callout .es-icon{width:48px;height:54px;font-size:var(--fs-20);margin:0}
@media (max-width:720px){ .callout .btn{width:100%} }
.t-btn{background:none;border:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;display:block;width:100%}
.task .t-btn{font-weight:600;line-height:1.3}
.task.done .t-btn{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--faint)}
.day2.out{opacity:1;background:transparent;border-style:dashed} .day2.out .n{color:var(--faint)}
.legend i[style*="7d89a0"]{}

/* attachments */
.c-attach{width:44px;height:44px;flex:none;cursor:pointer;position:relative}
.c-attach:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.c-pending{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.att{display:flex;align-items:center;gap:12px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:8px 8px;animation:pop .18s ease-out}
.att.err{border-color:rgba(248,113,113,.4)} .att.err .att-sub{color:var(--k-fg-dc2626)}
.att img,.att .att-ico{width:38px;height:38px;border-radius:var(--r-0);object-fit:cover;flex:none;display:grid;place-items:center;background:var(--surface3);color:var(--muted)}
.att-name{font-size:var(--fs-13);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-sub{font-size:var(--fs-12);color:var(--muted)}
.att-bar{display:block;height:5px;border-radius:var(--r-0);background:var(--surface3);overflow:hidden;margin-top:4px}
.att-bar i{display:block;height:100%;background:var(--accent);transition:width .2s}
.c-files{margin-top:8px;display:flex;flex-direction:column;gap:8px}
.c-imgs{display:grid;gap:4px;max-width:320px}
.c-imgs.n1{grid-template-columns:1fr} .c-imgs.n2{grid-template-columns:1fr 1fr} .c-imgs.n3{grid-template-columns:1fr 1fr 1fr}
.c-imgs a{display:block;border-radius:var(--r-0);overflow:hidden;border:1px solid var(--border);background:var(--surface2);aspect-ratio:4/3}
.c-imgs.n1 a{aspect-ratio:auto;max-height:260px}
.c-imgs img{width:100%;height:100%;object-fit:cover;display:block}
.c-imgs.n1 img{height:auto;max-height:260px;object-fit:contain}
.file-chip{display:flex;align-items:center;gap:8px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:8px 12px;color:var(--text);text-decoration:none;font-size:var(--fs-13);max-width:320px}
.file-chip span.grow{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file-chip:hover{border-color:var(--border2)}
.lightbox{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.92);display:grid;place-items:center;padding:16px;animation:fade .15s}
.lightbox img{max-width:100%;max-height:85vh;border-radius:var(--r-0);box-shadow:none}
.lightbox>button{position:absolute;top:calc(12px + env(safe-area-inset-top));right:12px;background:rgba(255,255,255,.12);border-color:transparent;color:#fff}
.lightbox>a{position:absolute;bottom:calc(18px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%)}
.conn{position:fixed;top:calc(10px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:250;background:var(--surface3);border:1px solid var(--border2);border-radius:var(--r-0);padding:8px 12px;font-size:var(--fs-13);font-weight:600;display:flex;align-items:center;gap:8px;box-shadow:none;animation:pop .2s}
.conn.ok{color:var(--green)}


/* =====================================================================
   PartCrew 3 — blue & white design system
   ===================================================================== */
html,body{background:var(--bg);color:var(--text)}
body{font-feature-settings:"cv11","ss01";letter-spacing:-.005em}
a{color:var(--accent)}
::selection{background:var(--k-bg-cfe0ff)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn{background:var(--btn-bg);border:1px solid var(--border2);color:var(--text);box-shadow:none;border-radius:var(--r-0);font-weight:600}
.btn:hover{background:var(--surface2)}
.btn:not(.danger):not(.primary):not(.ghost):not(.discord):hover{border-color:var(--k-bd-c3cfe1);background:var(--surface2)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:none}
.btn.primary:hover{background:#1d4ed8;filter:none}
.btn.ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--muted)}
.btn.ghost:hover{background:var(--surface3);color:var(--text)}
.btn.danger{background:var(--k-bg-fff5f5);border-color:var(--k-bd-fecaca);color:var(--k-fg-b91c1c);box-shadow:none}
.btn.danger:hover{background:var(--k-bg-fee2e2)}
.btn svg{width:18px;height:18px;flex:none}
.btn.small svg{width:15px;height:15px}
.input,select.input,textarea.input{background:var(--k-bg-ffffff);border:1px solid var(--border2);color:var(--text);box-shadow:none}
.input:focus{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.input::placeholder{color:#9aa8bf}
label.field>span,.field-l{color:var(--k-fg-41506a);font-weight:600;font-size:var(--fs-13);display:block;margin-bottom:8px}
.opt{font-style:normal;font-weight:500;color:var(--faint);font-size:var(--fs-12);margin-left:4px}
.card{background:var(--k-bg-ffffff);border:1px solid var(--border);border-radius:var(--r-0);box-shadow:none}
.card h3,.card h2.h3{color:var(--k-fg-41506a);font-size:var(--fs-13);letter-spacing:.07em;justify-content:space-between}
.card h3 .btn,.card h2.h3 .btn{text-transform:none;letter-spacing:0;font-size:var(--fs-13)}
.muted{color:var(--muted)} .faint{color:var(--faint)}
.ellip{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.clamp4{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.late-text{color:var(--red);font-style:normal;font-weight:600} .ok-text{color:var(--green)}
.avatar{color:#fff;text-shadow:none;box-shadow:none;outline:2px solid var(--k-bg-ffffff);outline-offset:0}
.badge.owner{background:var(--k-bg-eaf1ff);color:var(--k-fg-1d4ed8)} .badge.editor{background:var(--k-bg-e0f2fe);color:var(--k-fg-0369a1)} .badge.viewer{background:var(--k-bg-f1f5f9);color:var(--k-fg-475569)} .badge.role{background:var(--k-bg-f1f5f9);color:var(--k-fg-475569)}
.seg{background:var(--surface3);border:0;padding:4px}
.seg button{color:var(--muted)} .seg button.on{background:var(--k-bg-ffffff);color:var(--text);box-shadow:none}
.viewonly{background:var(--k-bg-f8fafc);border:1px solid var(--border);color:var(--muted)}
.toast{background:#0f1b33;color:#fff;border-color:#0f1b33;box-shadow:var(--shadow-pop)}
.toast.err{background:#b91c1c;border-color:#b91c1c;color:#fff}
.menu-pop{background:var(--k-bg-ffffff);border:1px solid var(--border);box-shadow:var(--shadow-pop);border-radius:var(--r-0)}
.menu-pop button{color:var(--text);border-radius:var(--r-0)} .menu-pop button:hover{background:var(--surface2)}
.scrim{background:rgba(15,27,51,.4);backdrop-filter:blur(2px)}
.sheet{background:var(--k-bg-ffffff);border:1px solid var(--border);box-shadow:none}
.sheet-h{border-bottom:1px solid var(--border)} .sheet-f{border-top:1px solid var(--border);background:var(--k-bg-fbfcfe)}
.sheet.wide,.scrim .sheet.wide{max-width:760px}
.ring{background:conic-gradient(var(--accent) calc(var(--p)*1%), var(--surface3) 0)} .ring:after{background:var(--k-bg-ffffff);color:var(--text)}
.bar{background:var(--surface3)} .bar>i{background:var(--accent)}
.hexchip{background:var(--k-bg-eaf1ff);color:var(--k-fg-1d4ed8);border-color:var(--k-bd-cfe0ff)}
.hexchip:before{background:#2563eb}
.chk.done{background:var(--green);border-color:var(--green);color:#fff}
.code-box{background:var(--k-bg-f8fafc);border:1px dashed var(--border2);color:var(--text)}
.mention{background:var(--k-bg-eaf1ff);color:var(--k-fg-1d4ed8)} .mention.me{background:#2563eb;color:#fff}
.comment.mine .c-body{background:var(--k-bg-eaf1ff);border-color:var(--k-bd-cfe0ff)}
.c-body{background:var(--surface2);border-color:var(--border)}
.notif.unread{background:var(--k-bg-f3f7ff)}
.dot-count{background:#ef4444;color:#fff;box-shadow:none;outline:2px solid var(--k-bg-ffffff);outline-offset:0}
.online{color:var(--green);background:var(--k-bg-ecfdf5);border-color:var(--k-bd-a7f3d0)}
.empty{color:var(--muted)}
.empty-state{padding:32px 16px} .empty-state h2{color:var(--text)} .empty-state p{color:var(--muted)}
.es-icon{background:var(--accent-soft);color:var(--accent);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.logo{color:var(--text);font-weight:600;letter-spacing:-.02em;text-decoration:none}
.topbar{background:var(--k-bg-ffffffa88);border-bottom:1px solid var(--border)}
.sub-h{font-size:var(--fs-13);text-transform:uppercase;letter-spacing:.07em;color:var(--k-fg-41506a);margin:16px 0 8px}
.detail-desc.pre{white-space:pre-wrap}
.ver{display:inline-flex;align-items:center;font-family:var(--mono);font-weight:600;font-size:var(--fs-13);background:#0f1b33;color:#fff;border-radius:var(--r-0);padding:4px 8px}
.ver.sm{font-size:var(--fs-12);padding:2px 8px}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;color:var(--k-fg-41506a);background:var(--surface3);border-radius:var(--r-0);padding:2px 8px;white-space:nowrap}
.tag.new{background:var(--k-bg-dcfce7);color:var(--k-fg-047857)} .tag.dev{background:var(--k-bg-eaf1ff);color:var(--k-fg-1d4ed8)} .tag.off{background:var(--k-bg-fee2e2);color:var(--k-fg-b91c1c)}
.tag.file{background:var(--k-bg-f3e8ff);color:#7c3aed} .tag.link{background:var(--k-bg-e0f2fe);color:var(--k-fg-0369a1)}

/* ---------- app shell: sidebar on desktop, bottom bar on phones ---------- */
.shell{min-height:100vh}
.side{position:fixed;inset:0 auto 0 0;width:var(--side-w);background:var(--k-bg-ffffff);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:30}
.side-top{padding:16px 16px 8px}
.side-top .logo{font-size:var(--fs-16)}
.side-sw{padding:4px 12px 8px}
.switcher{width:100%;display:flex;align-items:center;gap:12px;background:var(--k-bg-ffffff);border:1px solid var(--border2);border-radius:var(--r-0);padding:8px 12px;cursor:pointer;text-align:left;box-shadow:none;color:var(--text)}
.switcher:hover{border-color:var(--accent-line);background:var(--k-bg-fafcff)}
.sw-icon{width:34px;height:34px;border-radius:var(--r-0);background:var(--accent-soft);display:grid;place-items:center;font-size:var(--fs-16);flex:none}
.sw-icon.sm{width:26px;height:26px;font-size:var(--fs-14);border-radius:var(--r-0)}
.sw-text{min-width:0;flex:1;display:flex;flex-direction:column;line-height:1.2}
.sw-text b{font-size:var(--fs-14);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sw-text small{font-size:var(--fs-12);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sw-chev{color:var(--faint);width:18px;height:18px;flex:none} .sw-chev svg{width:18px;height:18px}
.sw-pop{left:0;right:auto;top:calc(100% + 6px);min-width:240px;width:100%;max-height:60vh;overflow:auto}
.sw-pop button{display:flex;align-items:center;gap:8px}
.sw-pop button.on{background:var(--accent-soft);color:var(--k-fg-1d4ed8);font-weight:600}
.sw-pop .tick{color:var(--accent);font-weight:600}
.sw-h{font-size:var(--fs-12);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);padding:8px 12px 4px}
.sw-sep{height:1px;background:var(--border);margin:8px 4px}
.side-scroll{flex:1;overflow-y:auto;padding:8px 12px 12px}
.nav-group{margin-top:12px}
.nav-label{font-size:var(--fs-12);font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);padding:0 12px 8px}
.nav-item{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:var(--r-0);color:var(--k-fg-3b4a63);text-decoration:none;font-weight:600;font-size:var(--fs-14);margin:1px 0;border:0;background:none;width:100%;cursor:pointer;text-align:left}
.nav-item svg{width:18px;height:18px;flex:none;color:#7b8aa5}
.nav-item:hover{background:var(--surface2);color:var(--text)}
.nav-item.on{background:var(--accent-soft);color:var(--k-fg-1d4ed8)} .nav-item.on svg{color:var(--accent)}
.nav-badge{margin-left:auto;font-size:var(--fs-12);font-weight:600;background:var(--surface3);color:var(--k-fg-41506a);border-radius:var(--r-0);padding:1px 8px}
.nav-item.on .nav-badge{background:var(--k-bg-ffffff);color:var(--k-fg-1d4ed8)}
.side-foot{border-top:1px solid var(--border);padding:12px 12px 12px}
.side-credit .credit{margin-top:8px;font-size:var(--fs-12);gap:8px}
.side-credit .btn.discord{padding:8px 12px;font-size:var(--fs-13)}
.main-col{margin-left:var(--side-w);min-width:0}
.app-top .topbar-in{max-width:none;padding:12px 24px}
.crumbs{display:flex;align-items:center;gap:8px;font-size:var(--fs-14);min-width:0}
.crumb-p{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.crumb-sep{color:#c3cede}
.shell .page{max-width:1240px;padding:24px 24px 56px}
.bottom-nav{display:none}

/* ---------- page header ---------- */
.ph,.comb-head{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.ph h1,.comb-head h1{margin:0!important;font-size:var(--fs-24)!important;letter-spacing:-.025em;line-height:1.15;font-weight:600;color:var(--text)}
.ph p{margin:4px 0 0;color:var(--muted);font-size:var(--fs-14);max-width:720px}
.ph-act{display:flex;gap:8px;flex-wrap:wrap}
.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.toolbar .chips-bar{margin:0}
.search{position:relative;display:flex;align-items:center;flex:1;min-width:180px;max-width:360px}
.search.grow{max-width:none}
.search svg{position:absolute;left:11px;color:var(--faint);pointer-events:none}
.search .input{padding:8px 12px 8px 32px;font-size:var(--fs-14)}
.chips-bar{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin-bottom:12px;padding:1px}
.chips-bar::-webkit-scrollbar{display:none}
.fchip{border:1px solid var(--border2);background:var(--k-bg-ffffff);color:var(--k-fg-41506a);border-radius:var(--r-0);padding:8px 12px;font-weight:600;font-size:var(--fs-13);cursor:pointer;white-space:nowrap;display:inline-flex;gap:8px;align-items:center}
.fchip span{font-size:var(--fs-12);color:var(--faint);font-weight:600}
.fchip:hover{border-color:var(--accent-line)}
.fchip.on{background:#0f1b33;border-color:#0f1b33;color:#fff} .fchip.on span{color:#b9c6dd}

/* ---------- dashboard ---------- */
.stats{gap:12px}
.stat{background:var(--k-bg-ffffff);border:1px solid var(--border);box-shadow:none;text-decoration:none;color:var(--text);transition:border-color .15s, transform .15s}
a.stat:hover{border-color:var(--accent-line);transform:translateY(-1px)}
.stat b{color:var(--text)} .stat b small{font-size:var(--fs-12);color:var(--muted);font-weight:600}
.stat span{color:var(--muted)}
.stat-ico{border-radius:var(--r-0)}
.stats.three{grid-template-columns:repeat(3,1fr)}
.dash{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.dash-wide{grid-column:1/-1}
.board-snap{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.bs{border-radius:var(--r-0);padding:12px;text-decoration:none;color:var(--text);background:var(--surface2);border:1px solid var(--border)}
.bs b{display:block;font-size:var(--fs-20);letter-spacing:-.02em} .bs span{font-size:var(--fs-12);color:var(--muted);font-weight:600}
.bs:hover{border-color:var(--accent-line)}
.snap-bar{display:flex;height:6px;border-radius:var(--r-0);overflow:hidden;margin:12px 0 4px;gap:2px}
.snap-bar i{display:block}
.bs-todo.bs b{color:var(--k-fg-475569)} .bs-doing.bs b{color:var(--k-fg-2563eb)} .bs-testing.bs b{color:#7c3aed} .bs-done.bs b{color:var(--k-fg-059669)}
.snap-bar .bs-todo{background:#94a3b8} .snap-bar .bs-doing{background:#2563eb} .snap-bar .bs-testing{background:#8b5cf6} .snap-bar .bs-done{background:#10b981}
.vote-mini{display:inline-flex;align-items:center;gap:4px;font-weight:600;font-size:var(--fs-13);color:var(--k-fg-1d4ed8);background:var(--accent-soft);border-radius:var(--r-0);padding:4px 8px;flex:none}
.upd-mini .s{font-size:var(--fs-13);color:var(--muted);margin:4px 0 8px}
.upd-body{font-size:var(--fs-14);color:var(--k-fg-26344d)}
.upd-body ul{margin:4px 0;padding-left:16px} .upd-body li{margin:4px 0} .upd-body p{margin:4px 0}
.act-list .li{padding:8px 4px}

/* ---------- Kanban ---------- */
.kanban{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:12px;align-items:start;overflow-x:auto;padding-bottom:8px}
.kcol{background:var(--k-bg-f0f4fa);border:1px solid var(--border);border-radius:var(--r-0);padding:8px;min-height:180px;transition:background .15s,border-color .15s}
.kcol.kover{background:var(--k-bg-e6efff);border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.kcol-h{display:flex;align-items:center;gap:8px;font-weight:600;font-size:var(--fs-13);padding:4px 8px 8px;color:var(--k-fg-26344d)}
.kcol-h i{width:9px;height:9px;border-radius:var(--r-0);background:#94a3b8}
.kc-doing .kcol-h i{background:#2563eb} .kc-testing .kcol-h i{background:#8b5cf6} .kc-done .kcol-h i{background:#10b981}
.kcol-h .cnt{font-size:var(--fs-12);color:var(--muted);background:var(--k-bg-ffffff);border-radius:var(--r-0);padding:1px 8px;border:1px solid var(--border)}
.kadd{margin-left:auto;width:28px;height:28px}
.kcol-b{display:flex;flex-direction:column;gap:8px;min-height:60px}
.kcard{background:var(--k-bg-ffffff);border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;box-shadow:none;cursor:pointer;user-select:none;-webkit-user-select:none;transition:box-shadow .15s,border-color .15s}
.kcard:hover{border-color:var(--accent-line);box-shadow:none}
.kcard.movable{cursor:grab}
.kt-row{display:flex;gap:8px;align-items:flex-start}
.kt{font-weight:600;font-size:var(--fs-14);line-height:1.35;flex:1;min-width:0;word-break:break-word}
.kcard.done .kt{color:var(--muted);text-decoration:line-through;text-decoration-color:#c3cede}
.kgrip{color:#b3bfd3;padding:2px;margin:-2px -4px 0 0;cursor:grab;touch-action:none;display:grid;place-items:center;border-radius:var(--r-0);flex:none}
.kgrip:hover{background:var(--surface3);color:var(--muted)}
.kcard .hexchip{margin-top:8px;display:inline-flex}
.kmeta{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:var(--fs-13);color:var(--muted)}
.kempty{border:1.5px dashed var(--k-bd-cdd7e6);border-radius:var(--r-0);padding:16px 8px;text-align:center;color:var(--faint);font-size:var(--fs-13)}
.kghost{position:fixed;left:0;top:0;z-index:400;pointer-events:none;box-shadow:none;opacity:.96;border-color:var(--accent)}
.kdragging{opacity:.35}
body.is-kdragging,body.is-kdragging *{cursor:grabbing!important;user-select:none}
.kanban-tabs{display:none}

/* ---------- bugs ---------- */
.list-card{padding:8px 12px}
.bug-row .s{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:4px}
.sev,.bst,.ist{display:inline-flex;align-items:center;font-size:var(--fs-12);font-weight:600;border-radius:var(--r-0);padding:4px 8px;white-space:nowrap}
.sev.xs,.bst.xs{font-size:var(--fs-12);padding:1px 8px}
.sev-low{background:var(--k-bg-f1f5f9);color:var(--k-fg-475569)} .sev-med{background:var(--k-bg-fef3c7);color:var(--k-fg-92400e)} .sev-high{background:var(--k-bg-ffedd5);color:var(--k-fg-c2410c)} .sev-crit{background:var(--k-bg-fee2e2);color:var(--k-fg-b91c1c)}
.sev-dot{width:10px;height:10px;border-radius:50%;flex:none;background:#94a3b8}
.sev-dot.sev-med{background:#f59e0b} .sev-dot.sev-high{background:#f97316} .sev-dot.sev-crit{background:#ef4444;box-shadow:none;outline:2px solid var(--k-bg-fee2e2);outline-offset:0}
.bst-open{background:var(--k-bg-eaf1ff);color:var(--k-fg-1d4ed8)} .bst-in_progress{background:var(--k-bg-ede9fe);color:var(--k-fg-6d28d9)} .bst-fixed{background:var(--k-bg-dcfce7);color:var(--k-fg-047857)} .bst-wont_fix{background:var(--k-bg-f1f5f9);color:#64748b}
.shot .ftile{display:block;border-radius:var(--r-0);overflow:hidden;border:1px solid var(--border);max-width:100%}
.shot .ftile img{display:block;width:100%;max-height:380px;object-fit:contain;background:var(--k-bg-f8fafc)}
.status-pick button.on{background:var(--k-bg-ffffff);color:var(--k-fg-1d4ed8)}

/* ---------- assets ---------- */
.asset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.asset{padding:0;overflow:hidden;text-align:left;cursor:pointer;display:flex;flex-direction:column;color:var(--text);transition:border-color .15s,transform .15s}
.asset:hover{border-color:var(--accent-line);transform:translateY(-1px)}
.asset-thumb{height:118px;display:grid;place-items:center;font-size:var(--fs-24);background:var(--k-bg-eef4ff);border-bottom:1px solid var(--border)}
.asset-thumb.k-sound{background:var(--k-bg-f3e8ff)} .asset-thumb.k-ui{background:var(--k-bg-e0f2fe)} .asset-thumb.k-script{background:var(--k-bg-ecfdf5)}
.asset-thumb img{width:100%;height:100%;object-fit:cover}
.asset-b{padding:12px 12px 12px;min-width:0}
.asset-b .tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}
.kind-tag{font-weight:600;font-size:var(--fs-13);background:var(--accent-soft);color:var(--k-fg-1d4ed8);border-radius:var(--r-0);padding:4px 12px}
.file-pick{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.file-pick .ftile{width:100%}
.file-pick .ftile img{max-height:160px;border-radius:var(--r-0);border:1px solid var(--border);display:block}

/* ---------- ideas ---------- */
.idea-list{display:flex;flex-direction:column;gap:12px}
.idea{display:flex;gap:12px;align-items:flex-start;cursor:pointer;transition:border-color .15s}
.idea:hover{border-color:var(--accent-line)}
.idea .t{font-weight:600;font-size:var(--fs-16)}
.idea .s{color:var(--muted);font-size:var(--fs-14);margin-top:2px}
.meta-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:8px;font-size:var(--fs-13);color:var(--muted)}
.vote{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:50px;padding:8px 8px;border:1px solid var(--border2);border-radius:var(--r-0);background:var(--k-bg-ffffff);color:var(--k-fg-41506a);cursor:pointer;flex:none}
.vote b{font-size:var(--fs-14)}
.vote:hover{border-color:var(--accent)}
.vote.on{background:var(--accent);border-color:var(--accent);color:#fff}
.vote.big{min-width:64px;padding:12px}
.idea-top{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.ist-new{background:var(--k-bg-eaf1ff);color:var(--k-fg-1d4ed8)} .ist-maybe{background:var(--k-bg-fef3c7);color:var(--k-fg-92400e)} .ist-planned{background:var(--k-bg-ede9fe);color:var(--k-fg-6d28d9)} .ist-promoted{background:var(--k-bg-dcfce7);color:var(--k-fg-047857)} .ist-no{background:var(--k-bg-f1f5f9);color:#64748b}

/* ---------- update log ---------- */
.timeline{position:relative;display:flex;flex-direction:column;gap:12px;padding-left:24px;max-width:820px}
.timeline:before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:2px;background:var(--border2);border-radius:var(--r-0)}
.upd{position:relative;cursor:pointer}
.upd:before{content:"";position:absolute;left:-22px;top:20px;width:12px;height:12px;border-radius:var(--r-0);background:var(--k-bg-ffffff);border:3px solid #9fb5d8}
.upd.latest:before{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.upd:hover{border-color:var(--accent-line)}
.upd-h{display:flex;align-items:center;gap:8px}
.upd h2{font-size:var(--fs-16);margin:12px 0 4px;letter-spacing:-.01em}

/* ---------- scripts ---------- */
.snip-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:12px}
.snip{cursor:pointer;min-width:0}
.snip:hover{border-color:var(--accent-line)}
.snip-h{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.lua-badge{font-family:var(--mono);font-size:var(--fs-12);font-weight:600;color:#fff;background:#00a2ff;border-radius:var(--r-0);padding:4px 8px;flex:none}
.snip-more{font-size:var(--fs-12);color:var(--faint);margin-top:8px}
pre.code{margin:0;background:#0f172a;color:#e2e8f0;border-radius:var(--r-0);padding:12px 0;overflow-x:auto;font-family:var(--mono);font-size:var(--fs-13);line-height:1.6;-webkit-text-size-adjust:100%}
pre.code code{display:block;min-width:max-content}
.cl{display:block;padding-right:16px;white-space:pre;tab-size:4}
.cl i{display:inline-block;width:38px;padding-right:12px;text-align:right;color:var(--k-fg-475569);font-style:normal;user-select:none;-webkit-user-select:none}
.lk{color:#c792ea;font-weight:600} .ls{color:#a5e075} .lc{color:#64748b;font-style:italic} .ln{color:#f78c6c} .lg{color:#82aaff} .lf{color:#ffcb6b}
textarea.code-in{font-family:var(--mono);font-size:var(--fs-13);min-height:220px;tab-size:4;white-space:pre;background:#0f172a;color:#e2e8f0;border-color:#0f172a}
textarea.tall{min-height:170px}

/* ---------- playtests ---------- */
.fb-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.fb{cursor:pointer} .fb:hover{border-color:var(--accent-line)}
.fb p{margin:8px 0;font-size:var(--fs-14);display:flex;gap:8px;color:var(--k-fg-26344d)} .fb p span{flex:none}
.stars{display:flex;gap:4px}
.stars button{font-size:var(--fs-24);line-height:1;background:none;border:0;color:#d5deeb;cursor:pointer;padding:2px}
.stars button.on{color:var(--k-fg-f59e0b)}
.stars-ro{color:var(--k-fg-f59e0b);letter-spacing:1px;font-size:var(--fs-14);white-space:nowrap} .stars-ro i{color:#d5deeb;font-style:normal}

/* ---------- resources ---------- */
.res-sec{margin-bottom:24px}
.res-h{font-size:var(--fs-16);margin:0 0 12px;display:flex;align-items:center;gap:8px;letter-spacing:-.01em}
.res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.res{padding:0;display:flex;flex-direction:column;transition:border-color .15s,transform .15s}
.res:hover{border-color:var(--accent-line);transform:translateY(-1px)}
.res-main{display:flex;gap:12px;padding:12px;text-decoration:none;color:var(--text);flex:1}
.res-main p{margin:4px 0 8px;font-size:var(--fs-13);color:var(--muted);line-height:1.4}
.res-badge{width:44px;height:44px;border-radius:var(--r-0);display:grid;place-items:center;font-weight:600;font-size:var(--fs-14);color:#fff;background:var(--rb);flex:none;box-shadow:none}
.price{font-size:var(--fs-12);font-weight:600;border-radius:var(--r-0);padding:2px 8px;flex:none}
.p-free{background:var(--k-bg-dcfce7);color:var(--k-fg-047857)} .p-paid{background:var(--k-bg-fef3c7);color:var(--k-fg-92400e)} .p-freemium{background:var(--k-bg-eaf1ff);color:var(--k-fg-1d4ed8)}
.res-own{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid var(--border);padding:8px 12px 8px 12px}

/* ---------- developer console ---------- */
.dev-gate{max-width:480px;text-align:left}
.dev-gate .es-icon{margin:0 0 12px}
.steps{padding-left:16px;margin:0 0 16px;color:var(--k-fg-26344d);font-size:var(--fs-14)} .steps li{margin:8px 0}
.spark-stat{align-items:flex-end}
.spark{display:flex;align-items:flex-end;gap:2px;height:34px;margin-top:8px}
.spark i{flex:1;background:var(--accent);border-radius:var(--r-0);min-height:2px}
.utable{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--r-0);overflow:hidden}
.ur{display:grid;grid-template-columns:minmax(180px,1.4fr) 110px 100px minmax(200px,2fr) 130px 80px 90px 86px;gap:12px;align-items:center;padding:12px 12px;border-top:1px solid var(--border);font-size:var(--fs-13)}
.ur.uh{border-top:0;background:var(--k-bg-f8fafc);font-size:var(--fs-12);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--faint)}
.ur.off{background:var(--k-bg-fffafa)} .ur.off .u-acc b{color:var(--muted)}
.u-acc{display:flex;gap:12px;align-items:center;min-width:0}
.u-acc small{display:block;color:var(--muted);font-size:var(--fs-12)}
.u-flags{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.u-proj{display:flex;flex-wrap:wrap;gap:4px}
.pchip{font-size:var(--fs-12);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:2px 8px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pchip em{font-style:normal;color:var(--muted)}
.u-act{text-align:right}
.sortsel select{padding:8px 12px;font-size:var(--fs-14)}
.adm-actions{display:flex;flex-direction:column;gap:8px}
.big-code{font-size:var(--fs-24);font-weight:600;letter-spacing:.08em;margin-top:8px;user-select:all}
.a-ico{width:28px;text-align:center;flex:none}
.more-group{margin-bottom:12px}
.more-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.more-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 8px;border:1px solid var(--border);border-radius:var(--r-0);text-decoration:none;color:var(--text);font-weight:600;font-size:var(--fs-13);position:relative;text-align:center}
.more-item.on{border-color:var(--accent);background:var(--accent-soft);color:var(--k-fg-1d4ed8)}
.more-ic{width:38px;height:38px;border-radius:var(--r-0);background:var(--surface2);display:grid;place-items:center;color:var(--accent)}
.more-ic svg{width:20px;height:20px}
.more-item .nav-badge{position:absolute;top:6px;right:6px;margin:0;background:#ef4444;color:#fff}
.more-credit{margin-top:12px;border-top:1px solid var(--border);padding-top:4px}

@media (max-width:1100px){
  .ur{grid-template-columns:minmax(160px,1.3fr) 100px 90px minmax(160px,1.6fr) 120px 70px 80px 80px;font-size:var(--fs-13)}
}
@media (max-width:900px){
  .kanban{grid-template-columns:repeat(4,minmax(230px,1fr))}
  .utable{border:0;gap:12px;overflow:visible}
  .ur.uh{display:none}
  .ur{grid-template-columns:1fr 1fr;border:1px solid var(--border);border-radius:var(--r-0);padding:12px;background:var(--k-bg-ffffff)}
  .ur>span[data-l]:before{content:attr(data-l);display:block;font-size:var(--fs-12);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-bottom:2px}
  .u-acc,.u-proj{grid-column:1/-1}
  .u-act{grid-column:1/-1;text-align:left}
  .u-act .btn{width:100%}
}
@media (max-width:980px){
  .side{display:none}
  .main-col{margin-left:0}
  .crumbs{display:none}
  .shell .mob-sw{display:block!important;min-width:0;flex:1;max-width:340px}
  .app-top .topbar-in{padding:8px 12px}
  .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--k-bg-ffffffa96);backdrop-filter:blur(12px);border-top:1px solid var(--border);padding:8px 8px calc(8px + env(safe-area-inset-bottom));justify-content:space-around}
  .bottom-nav a,.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 2px;border-radius:var(--r-0);color:#6b7a93;text-decoration:none;font-size:var(--fs-12);font-weight:600;background:none;border:0;cursor:pointer;min-width:0}
  .bottom-nav span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .bottom-nav svg{width:22px;height:22px}
  .bottom-nav .on{color:var(--accent)}
  .bottom-nav .on svg{filter:none}
  .shell .page{padding:16px 12px calc(var(--nav-h) + 32px)}
  .toast{bottom:calc(var(--nav-h) + 22px)}
}
.shell .mob-sw{display:none}
.mob-sw .switcher{padding:4px 8px;border-radius:var(--r-0);box-shadow:none}
.mob-sw .sw-icon{width:30px;height:30px;font-size:var(--fs-16)}
.mob-sw .sw-pop{width:min(320px,calc(100vw - 24px))}
@media (max-width:720px){
  .ph,.comb-head{align-items:flex-start;margin-bottom:12px}
  .ph h1,.comb-head h1{font-size:var(--fs-24)!important}
  .ph p{font-size:var(--fs-14)}
  .ph-act{width:100%}
  .ph-act .btn{flex:1}
  .stats{grid-template-columns:1fr 1fr;gap:12px}
  .stats.three{grid-template-columns:1fr 1fr 1fr}
  .stats.three .stat{flex-direction:column;align-items:flex-start;padding:12px;gap:8px}
  .stats.three .stat b{font-size:var(--fs-16)}
  .stat{padding:12px;gap:12px}
  .stat b{font-size:var(--fs-20)}
  .stat .ring{width:46px;height:46px} .stat .ring:after{width:36px;height:36px;font-size:var(--fs-12)}
  .dash{grid-template-columns:1fr}
  .kanban{display:block;overflow:visible}
  .kcol{display:none;min-height:0;background:transparent;border:0;padding:0}
  .kcol.show{display:block}
  .kcol.kover{box-shadow:none}
  .kcol-h{display:none}
  .kanban-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--surface3);border-radius:var(--r-0);padding:4px;margin-bottom:12px;position:sticky;top:60px;z-index:5}
  .kanban-tabs button{border:0;background:none;border-radius:var(--r-0);padding:8px 2px;font-weight:600;font-size:var(--fs-13);color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:1px;cursor:pointer}
  .kanban-tabs button span{font-size:var(--fs-12);font-weight:600;color:var(--faint)}
  .kanban-tabs button.on{background:var(--k-bg-ffffff);color:var(--text);box-shadow:none}
  .kanban-tabs button.kover{background:var(--accent);color:#fff} .kanban-tabs button.kover span{color:#dbeafe}
  .kanban-tabs .kt-doing.on{color:var(--k-fg-1d4ed8)} .kanban-tabs .kt-testing.on{color:var(--k-fg-6d28d9)} .kanban-tabs .kt-done.on{color:var(--k-fg-047857)}
  .kcard{padding:12px}
  .kgrip{padding:8px;margin:-8px -8px 0 0}
  .search{max-width:none}
  .snip-list,.fb-list,.res-grid{grid-template-columns:1fr}
  .asset-grid{grid-template-columns:1fr 1fr;gap:12px}
  .asset-thumb{height:92px;font-size:var(--fs-24)}
  .idea{gap:12px;padding:12px}
  .vote{min-width:44px}
  .timeline{padding-left:16px}
  .upd:before{left:-18px}
  .timeline:before{left:4px}
  .more-grid{grid-template-columns:repeat(3,1fr)}
  .board-snap{grid-template-columns:repeat(4,1fr);gap:8px}
  .bs{padding:8px 8px} .bs b{font-size:var(--fs-16)} .bs span{font-size:var(--fs-12)}
}

.dash>*,.stats>*,.kanban>*{min-width:0}
@media (max-width:720px){ .stat b{font-size:var(--fs-16)} .stat span{font-size:var(--fs-12)} }

.avatar:not([title="Unassigned"]){color:#fff!important}

/* public update log setting (PartCrew 3.1) */
.pub-log{margin-bottom:12px}
.pub-log .setting{padding-top:0}
.pub-ic{width:38px;height:38px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;flex:none}
.pub-link .link-box{display:block;text-decoration:none;font-size:var(--fs-13)}
.pub-btns{gap:8px;margin-top:12px;flex-wrap:wrap}
.pub-btns .btn{min-width:0}
.tag.draft-tag{background:var(--k-bg-fef3c7);color:var(--k-fg-92400e)}
.card.upd.draft{border-style:dashed;background:var(--k-bg-fcfdff)}
.field-check{border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px!important;margin:4px 0 2px}
@media (max-width:560px){.pub-btns .btn{flex:1 1 calc(50% - 8px)}}
.jc-code{font-size:var(--fs-24);letter-spacing:.14em;padding:12px 12px}
.jc-input{font-size:var(--fs-20);letter-spacing:.12em;text-transform:uppercase;text-align:center}
@media (max-width:560px){.page-head:has(.proj-acts){flex-wrap:wrap}.page-head .proj-acts{width:100%}.page-head .proj-acts .btn{flex:1}}

/* ---------- launch gate (countdown page) ---------- */
.launch{min-height:100vh;min-height:100dvh;position:relative;overflow:hidden;display:flex;justify-content:center;padding:24px 16px 32px;background:var(--k-bg-f5f7fb)}
.launch-bg{position:absolute;inset:0 0 auto 0;height:430px;background:var(--accent);border-radius:var(--r-0)}
.launch-bg:after{content:"";position:absolute;inset:0;background:none;border-radius:inherit}
.launch-in{position:relative;width:100%;max-width:760px;display:flex;flex-direction:column;align-items:center;text-align:center}
.launch .logo{color:#fff;font-size:var(--fs-20);display:inline-flex;align-items:center;gap:12px;pointer-events:none}
.launch .logo svg{background:var(--k-bg-ffffff);border-radius:var(--r-0);padding:4px}
#launch-live{margin-top:32px;color:#fff}
.launch-k{font-size:var(--fs-14);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#dbeafe}
.cd{display:flex;gap:12px;justify-content:center;margin:12px 0 12px}
.cd-b{width:80px;background:var(--k-bg-ffffff);border-radius:var(--r-0);padding:12px 0 8px;box-shadow:none;color:var(--text)}
.cd-b b{display:block;font-size:var(--fs-24);line-height:1;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--k-fg-1d4ed8)}
.cd-b span{font-size:var(--fs-12);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.launch-when{font-size:var(--fs-13);color:#e0ecff}
.launch-soon,.launch-open{font-size:var(--fs-24);font-weight:600;letter-spacing:-.02em;margin:12px 0 8px}
.launch-btns{display:flex;gap:12px;justify-content:center;margin-top:12px;flex-wrap:wrap}
.launch-btns .btn{min-width:150px;padding:12px 16px;font-size:var(--fs-14)}
.launch-btns .btn:not(.primary){background:var(--k-bg-ffffff)}
.launch-btns .btn.primary{background:#0f1b33;box-shadow:none}
#launch-live.pop{animation:pop .5s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{0%{transform:scale(.85);opacity:.3}100%{transform:scale(1);opacity:1}}
.launch-pitch{margin:56px auto 16px;max-width:520px;font-size:var(--fs-16);font-weight:600;color:var(--text);line-height:1.4}
.launch-feats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:100%;text-align:left}
.lf{display:flex;gap:12px;background:var(--k-bg-ffffff);border:1px solid var(--border);border-radius:var(--r-0);padding:12px;box-shadow:none}
.lf-i{width:38px;height:38px;flex:none;border-radius:var(--r-0);background:var(--accent-soft);display:grid;place-items:center;font-size:var(--fs-20)}
.lf b{font-size:var(--fs-14)}.lf p{margin:2px 0 0;font-size:var(--fs-13);color:var(--muted);line-height:1.35}
.launch-credit{margin-top:24px;justify-content:center}
.launch-dev{margin-top:12px;font-size:var(--fs-13)}.launch-dev a{color:var(--faint);text-decoration:none}.launch-dev a:hover{color:var(--accent);text-decoration:underline}
.pre-auth{text-align:center;font-size:var(--fs-13);margin-top:12px;color:var(--faint)}
.confetti{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:1000}
.prelaunch{position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:90;background:#0f1b33;color:#fff;font-size:var(--fs-12);font-weight:600;padding:4px 12px 4px;border-radius:var(--r-0);white-space:nowrap;font-variant-numeric:tabular-nums;pointer-events:none;opacity:.92}
@media (max-width:700px){.launch-feats{grid-template-columns:1fr 1fr}.cd-b{width:72px}.cd-b b{font-size:var(--fs-24)}.launch-pitch{margin-top:48px;font-size:var(--fs-16)}.launch-bg{height:400px}}
@media (max-width:420px){.launch-feats{grid-template-columns:1fr}.lf{padding:12px}.cd{gap:8px}.cd-b{width:70px}}
/* dev console: launch card */
.lc-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.ec-li .mono{font-weight:600;letter-spacing:.06em}
.lf b{color:var(--text);display:block}
.launch-pitch{margin:24px auto 32px;color:#fff;font-weight:600}
.launch-bg{height:440px}
@media (max-width:700px){.launch-pitch{margin:16px auto 24px;color:#fff}.launch-bg{height:450px}}

/* =================== PartCrew 4: Discord-style layout (blue/white) =================== */
:root{--rail-w:72px;--chs-w:244px;--mem-w:248px;--app-h:100dvh;--rail-bg:#e3eaf6;--chs-bg:#f2f5fb;--main-bg:#ffffff;--hover:#e7edf7;--sel:#d8e4fb;--mention-bg:#fff8e1;--mention-line:#f5b301}
.avatar{border-radius:50%!important;overflow:hidden}
.avatar.img{background:var(--surface3);padding:0}
.avatar.img img{width:100%;height:100%;object-fit:cover;display:block}
.avatar.xl{width:84px;height:84px;font-size:var(--fs-24)}
.pic{width:48px;height:48px;border-radius:var(--r-0);display:grid;place-items:center;color:#fff;font-weight:600;font-size:var(--fs-16);overflow:hidden;flex:none;transition:border-radius .18s,background .18s;letter-spacing:.02em}
.pic img{width:100%;height:100%;object-fit:cover;display:block}
.pic.sm{width:26px;height:26px;font-size:var(--fs-12);border-radius:var(--r-0)}
.pic.lg{width:56px;height:56px;border-radius:var(--r-0);font-size:var(--fs-20)}
.pic.card-pic{width:46px;height:46px;border-radius:var(--r-0);font-size:var(--fs-16)}
.pic.invite-pic{width:84px;height:84px;border-radius:var(--r-0);font-size:var(--fs-24);margin:0 auto}
html,body{height:100%}
body:has(.dc){overflow:hidden;overscroll-behavior:none}
.dc{display:flex;height:var(--app-h);width:100%;overflow:hidden;background:var(--main-bg);position:relative}
.dc-nav{display:flex;flex:none;height:100%;z-index:30}
/* rail */
.rail{width:var(--rail-w);background:var(--rail-bg);height:100%;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;padding:12px 0 calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:8px}
.rail::-webkit-scrollbar{display:none}
.rail-list{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}
.rail-btn{position:relative;display:flex;justify-content:center;width:100%;text-decoration:none;background:none;border:0;padding:0;cursor:pointer;color:var(--accent)}
.rail-btn .pic{border-radius:var(--r-0)}
.rail-btn:hover .pic,.rail-btn.on .pic,.rail-btn:focus-visible .pic{border-radius:var(--r-0)}
.rail-btn.home .pic{background:var(--k-bg-ffffff);box-shadow:none}
.rail-btn.home.on .pic,.rail-btn.home:hover .pic{background:var(--accent);}
.rail-btn.home.on .pic svg path,.rail-btn.home:hover .pic svg path{fill:#fff}
.rail-btn.add .pic,.rail-btn.disc .pic{background:var(--k-bg-ffffff);color:var(--green);box-shadow:none}
.rail-btn.add:hover .pic{background:var(--green);color:#fff}
.rail-btn.disc .pic{color:#5865f2}.rail-btn.disc:hover .pic{background:#5865f2;color:#fff}
.rail-btn .pill{position:absolute;left:0;top:50%;width:4px;height:0;border-radius:var(--r-0);background:var(--text);transform:translateY(-50%);transition:height .15s}
.rail-btn:hover .pill{height:20px}.rail-btn.on .pill{height:40px}
.rail-badge{position:absolute;right:10px;bottom:-2px;background:#ef4444;color:#fff;font-size:var(--fs-12);font-weight:600;border-radius:var(--r-0);padding:1px 8px;box-shadow:none;outline:2px solid var(--rail-bg);outline-offset:0}
.rail-sep{width:32px;height:2px;border-radius:var(--r-0);background:var(--k-bg-c9d5ea);flex:none}
.tip{position:fixed;z-index:300;background:#0f1b33;color:#fff;font-weight:600;font-size:var(--fs-14);padding:8px 12px;border-radius:var(--r-0);pointer-events:none;box-shadow:var(--shadow-pop);max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tip::before{content:"";position:absolute;left:-5px;top:50%;transform:translateY(-50%) rotate(45deg);width:10px;height:10px;background:#0f1b33}
/* channel sidebar */
.chs{width:var(--chs-w);background:var(--chs-bg);height:100%;display:flex;flex-direction:column;border-right:1px solid var(--border);min-width:0}
.chs-head{height:52px;flex:none;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 8px;box-shadow:none}
.chs-head.skel{padding:0 16px}
.chs-title{display:flex;align-items:center;gap:8px;width:100%;height:40px;padding:0 8px;border:0;background:none;border-radius:var(--r-0);font-weight:600;font-size:var(--fs-16);cursor:pointer;text-align:left;color:var(--text)}
.chs-title:hover{background:var(--hover)}
.ellip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.chs-scroll{flex:1;overflow-y:auto;padding:8px 8px 16px;scrollbar-width:thin}
.ch{display:flex;align-items:center;gap:8px;padding:8px 8px;margin:1px 0;border-radius:var(--r-0);color:var(--muted);text-decoration:none;font-weight:600;font-size:var(--fs-14);position:relative;cursor:pointer;border:0;background:none;width:100%;text-align:left;min-height:34px}
.ch:hover{background:var(--hover);color:var(--text)}
.ch.on{background:var(--sel);color:var(--k-fg-0b2a6b)}
.ch.unread{color:var(--text);font-weight:600}
.ch.unread::before{content:"";position:absolute;left:-8px;top:50%;width:4px;height:8px;border-radius:var(--r-0);background:var(--text);transform:translateY(-50%)}
.ch-ic{width:20px;height:20px;flex:none;display:inline-grid;place-items:center;color:var(--faint)}
.ch-ic svg{width:19px;height:19px}
.ch.on .ch-ic,.ch:hover .ch-ic{color:inherit}
.ch-ic.big{width:44px;height:44px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent)}
.ch-ic.big svg{width:24px;height:24px}
.ch-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-lock{display:inline-flex;color:var(--faint)}.ch-lock svg{width:13px;height:13px}
.ch-gear{display:none;border:0;background:none;color:var(--muted);padding:2px;border-radius:var(--r-0);cursor:pointer}
.ch-gear svg{width:15px;height:15px}
.ch:hover .ch-gear,.ch.on .ch-gear{display:inline-flex}.ch-gear:hover{color:var(--text)}
.ch.page-link{font-size:var(--fs-14)}
.ch .nav-badge{position:static;margin-left:auto}
.ch.add-ch{color:var(--faint);margin-top:12px;font-size:var(--fs-14)}
.ch.dragging{opacity:.4}
.ch.drop-before{box-shadow:none;border-top:2px solid var(--accent)}.ch.drop-after{box-shadow:none;border-bottom:2px solid var(--accent)}
.cat.drop-into{background:var(--accent-soft);border-radius:var(--r-0)}
.cat-h.drop-before{box-shadow:none;border-top:2px solid var(--accent)}
.cat{margin-top:12px}
.cat-h{display:flex;align-items:center;gap:2px;padding-right:2px}
.cat-t{flex:1;min-width:0;display:flex;align-items:center;gap:4px;border:0;background:none;padding:4px 2px;font-size:var(--fs-12);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);cursor:pointer;text-align:left}
.cat-t:hover{color:var(--text)}
.cat-caret{display:inline-flex;transition:transform .15s}.cat-caret.closed{transform:rotate(-90deg)}
.cat-act{border:0;background:none;color:var(--faint);padding:4px;border-radius:var(--r-0);cursor:pointer;display:inline-flex;opacity:0}
.cat-act svg{width:15px;height:15px}
.cat-h:hover .cat-act,.cat-act:focus-visible{opacity:1}.cat-act:hover{color:var(--text)}
.cat-empty{font-size:var(--fs-13);color:var(--faint);padding:8px 12px;border:1.5px dashed var(--border2);border-radius:var(--r-0);margin:4px 0}
.user-panel{flex:none;display:flex;align-items:center;gap:4px;padding:8px 8px calc(8px + env(safe-area-inset-bottom));background:var(--k-bg-e8eef8);border-top:1px solid var(--border)}
.up-me{flex:1;min-width:0;display:flex;align-items:center;gap:8px;border:0;background:none;padding:4px 8px;border-radius:var(--r-0);cursor:pointer;text-align:left;color:var(--text)}
.up-me:hover{background:var(--hover)}
.up-me .avatar{width:34px;height:34px;margin:0}
.up-txt{display:flex;flex-direction:column;min-width:0;line-height:1.2}.up-txt b{font-size:var(--fs-14)}.up-txt small{color:var(--muted);font-size:var(--fs-12)}
.user-panel .presence,.ml-row .presence,.mcard .presence{display:block;box-shadow:none;outline:2px solid var(--k-bg-e8eef8);outline-offset:0;width:11px;height:11px;background:#a3b0c4}
.user-panel .presence.on,.ml-row .presence.on,.mcard .presence.on{background:#16a34a}
.user-panel .menu{position:relative}
.user-panel .menu-pop{top:auto;bottom:46px;right:0;left:auto}
/* main column */
.dc-main{flex:1;min-width:0;display:flex;flex-direction:column;height:100%;background:var(--main-bg)}
.dc-main>.topbar{position:static}
.ch-head{height:52px;flex:none;display:flex;align-items:center;gap:8px;padding:0 12px 0 12px;border-bottom:1px solid var(--border);background:var(--main-bg);box-shadow:none;min-width:0}
.ch-title{display:flex;align-items:center;gap:8px;margin:0;font-size:var(--fs-16);font-weight:600;min-width:0;flex:none;max-width:45%}
.ch-title .ch-ic{color:var(--faint)}.ch-title>svg{width:20px;height:20px;color:var(--faint)}
.ch-topic{flex:1;color:var(--muted);font-size:var(--fs-14);padding-left:12px;margin-left:4px;border-left:1px solid var(--border2)}
.ch-tools{display:flex;align-items:center;gap:2px;margin-left:auto;flex:none}
.ch-tools .btn.on{color:var(--accent);background:var(--accent-soft)}
.nav-btn{display:none;position:relative}
.nav-dot{position:absolute;top:7px;right:6px;width:9px;height:9px;border-radius:50%;background:#ef4444;box-shadow:none;outline:2px solid var(--main-bg);outline-offset:0}
.dc-body{flex:1;min-height:0;display:flex}
.dc-view{flex:1;min-width:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;position:relative}
.dc-view.is-chat{overflow:hidden;display:flex;flex-direction:column}
.dc .page{max-width:1240px;padding:24px 24px 48px}
.dc .page.chat-page{max-width:none;width:100%;margin:0;padding:0;flex:1;min-height:0;display:flex;flex-direction:column}
.dc .bottom-nav,.dc .side{display:none!important}
.dc .toast,.toast{bottom:calc(84px + env(safe-area-inset-bottom))}
/* member list */
.mlist{display:none;width:var(--mem-w);flex:none;background:var(--chs-bg);border-left:1px solid var(--border);overflow:hidden}
.dc.mem-open .mlist{display:block}
.ml-scroll{height:100%;overflow-y:auto;padding:12px 8px 24px}
.ml-h{font-size:var(--fs-12);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);padding:12px 8px 8px}
.ml-h:first-child{padding-top:4px}
.ml-row{display:flex;align-items:center;gap:12px;width:100%;border:0;background:none;padding:8px 8px;border-radius:var(--r-0);cursor:pointer;text-align:left;color:var(--text)}
.ml-row:hover{background:var(--hover)}
.ml-row.off{opacity:.55}
.ml-row .avatar{width:34px;height:34px;margin:0}
.ml-row .presence{box-shadow:none;outline:2px solid var(--chs-bg);outline-offset:0}
.ml-txt{display:flex;flex-direction:column;min-width:0;line-height:1.25}.ml-txt b{font-size:var(--fs-14);font-weight:600}.ml-txt small{font-size:var(--fs-12);color:var(--muted)}
.bot-tag{font-size:var(--fs-12);font-weight:600;background:var(--accent);color:#fff;border-radius:var(--r-0);padding:1px 4px;vertical-align:2px}
.mcard{display:flex;align-items:center;gap:16px}
.mcard .presence{width:18px;height:18px;right:2px;bottom:2px;box-shadow:none;outline:2px solid var(--surface);outline-offset:0}
/* chat */
.chat{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}
.chat.drop::after{content:"Drop to upload";position:absolute;inset:12px;border:3px dashed var(--accent);border-radius:var(--r-0);background:var(--k-bg-eaf1ffa85);display:grid;place-items:center;font-weight:600;font-size:var(--fs-20);color:var(--accent);z-index:5}
.msgs{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.msgs-in{display:flex;flex-direction:column;justify-content:flex-end;min-height:100%;padding:0 0 12px}
.m-welcome{padding:24px 16px 12px}
.m-welcome h2{margin:12px 0 4px;font-size:var(--fs-24);letter-spacing:-.01em}.m-welcome p{margin:0}
.m-welcome .ch-ic.big{width:64px;height:64px}.m-welcome .ch-ic.big svg{width:34px;height:34px}
.m-more{text-align:center;padding:12px;color:var(--muted);font-size:var(--fs-13)}
.day-div,.new-div{display:flex;align-items:center;gap:8px;margin:16px 16px 8px;font-size:var(--fs-12);font-weight:600;color:var(--faint)}
.day-div::before,.day-div::after,.new-div::before,.new-div::after{content:"";flex:1;height:1px;background:var(--border2)}
.new-div{color:var(--k-fg-e11d48)}.new-div::before,.new-div::after{background:var(--k-bg-fda4af)}
.new-div span{background:#e11d48;color:#fff;border-radius:var(--r-0);padding:1px 8px;font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.04em}
.msg{position:relative;display:grid;grid-template-columns:56px 1fr;padding:2px 16px 2px 0;min-width:0}
.msg.start{margin-top:12px;padding-top:2px}
.msg:hover,.msg.show-acts{background:var(--k-bg-f6f8fc)}
.msg.mentioned{background:var(--mention-bg);box-shadow:none;border-left:3px solid var(--mention-line)}
.msg.pending{opacity:.55}.msg.failed .m-text{color:var(--k-fg-b91c1c)}
.msg.flash{animation:flash 1.4s}
@keyframes flash{0%,40%{background:var(--k-bg-dbe7ff)}100%{background:transparent}}
.m-reply{grid-column:2;display:flex;align-items:center;gap:8px;border:0;background:none;padding:0 0 4px;font-size:var(--fs-13);color:var(--muted);cursor:pointer;text-align:left;min-width:0;position:relative}
.m-reply::before{content:"";position:absolute;left:-34px;top:9px;width:28px;height:10px;border-left:2px solid var(--border2);border-top:2px solid var(--border2);border-top-left-radius:var(--r-0)}
.m-reply b{color:var(--text);font-weight:600;flex:none}.m-reply:hover span{color:var(--text)}
.m-reply .avatar{margin:0}
.m-av{grid-column:1;grid-row:span 4;justify-self:center;border:0;background:none;padding:0;cursor:pointer;align-self:start;margin-top:2px}
.m-av .avatar{width:40px;height:40px;font-size:var(--fs-14);margin:0}
.m-hover-time{grid-column:1;justify-self:center;font-size:var(--fs-12);color:var(--faint);opacity:0;padding-top:4px}
.msg:hover .m-hover-time{opacity:1}
.m-main{grid-column:2;min-width:0}
.m-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;line-height:1.3}
.m-name{border:0;background:none;padding:0;font-weight:600;font-size:var(--fs-16);cursor:pointer}
.m-name:hover{text-decoration:underline}
.m-crown{font-size:var(--fs-12)}
.m-head time{font-size:var(--fs-12);color:var(--faint);font-weight:500}
.m-text{font-size:var(--fs-16);line-height:1.45;overflow-wrap:anywhere;white-space:normal;color:var(--k-fg-1a2540)}
.m-text a{color:var(--accent);text-decoration:none}.m-text a:hover{text-decoration:underline}
.m-text code{font-family:var(--mono);font-size:var(--fs-13);background:var(--surface3);border-radius:var(--r-0);padding:1px 4px}
.m-pre{font-family:var(--mono);font-size:var(--fs-13);background:var(--k-bg-f1f5fb);border:1px solid var(--border);border-radius:var(--r-0);padding:8px 12px;margin:4px 0;white-space:pre-wrap;overflow-wrap:anywhere;max-width:680px}
.m-edited{font-size:var(--fs-12);color:var(--faint)}
.mention{background:var(--accent-soft);color:var(--accent);font-weight:600;border-radius:var(--r-0);padding:0 4px;cursor:pointer}
.mention.me{background:var(--k-bg-fff0c2);color:var(--k-fg-92400e)}
.m-files{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.m-img img{display:block;max-width:min(380px,100%);max-height:320px;border-radius:var(--r-0);border:1px solid var(--border);background:var(--surface2)}
.m-img{max-width:100%}
.m-file{display:flex;align-items:center;gap:12px;max-width:360px;width:100%;padding:12px 12px;border:1px solid var(--border2);border-radius:var(--r-0);background:var(--surface2);text-decoration:none;color:var(--text);font-weight:600;font-size:var(--fs-14)}
.m-file small{color:var(--faint);font-weight:500}
.m-fail{font-size:var(--fs-13);color:var(--k-fg-b91c1c)}
.linkish{border:0;background:none;padding:0;color:var(--accent);cursor:pointer;font:inherit;font-weight:600}
.m-rx{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.m-rx:empty{display:none}
.rx{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border2);background:var(--surface2);border-radius:var(--r-0);padding:2px 8px;font-size:var(--fs-14);cursor:pointer;line-height:1.5}
.rx b{font-size:var(--fs-13);color:var(--muted)}
.rx.mine{background:var(--accent-soft);border-color:var(--accent-line)}.rx.mine b{color:var(--accent)}
.rx.add{opacity:0;color:var(--muted);padding:2px 8px}.rx.add svg{width:16px;height:16px}
.msg:hover .rx.add,.msg.show-acts .rx.add{opacity:1}
.m-acts{position:absolute;right:16px;top:-16px;display:none;background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-0);box-shadow:none;padding:2px;z-index:3}
.msg:hover .m-acts,.msg.show-acts .m-acts,.m-acts:focus-within{display:flex}
.m-acts button{border:0;background:none;width:34px;height:32px;border-radius:var(--r-0);cursor:pointer;font-size:var(--fs-16);display:grid;place-items:center;color:var(--muted)}
.m-acts button:hover{background:var(--surface2);color:var(--text)}.m-acts button.danger:hover{color:var(--k-fg-dc2626)}
.msg.start .m-acts{top:-14px}
.m-edit textarea{min-height:44px;font-size:var(--fs-14);margin:2px 0}
.m-jump{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(var(--comp-h,74px) + 30px);z-index:4;background:var(--accent);color:#fff;border:0;border-radius:var(--r-0);padding:8px 12px;font-weight:600;font-size:var(--fs-13);display:flex;align-items:center;gap:8px;box-shadow:none;cursor:pointer}
.skel-msg{display:flex;gap:12px;padding:8px 16px}
.typing{height:22px;flex:none;padding:0 16px;font-size:var(--fs-13);color:var(--muted);display:flex;align-items:center;gap:8px;overflow:hidden;white-space:nowrap}
.typing b{color:var(--text)}
.dots{display:inline-flex;gap:4px}.dots i{width:5px;height:5px;border-radius:var(--r-0);background:var(--muted);animation:dot 1.2s infinite}
.dots i:nth-child(2){animation-delay:.2s}.dots i:nth-child(3){animation-delay:.4s}
@keyframes dot{0%,60%,100%{opacity:.3;transform:none}30%{opacity:1;transform:translateY(-3px)}}
.composer{flex:none;margin:0 12px calc(12px + env(safe-area-inset-bottom));background:var(--surface2);border:1px solid var(--border2);border-radius:var(--r-0);position:relative}
.composer:focus-within{border-color:var(--accent-line);background:var(--k-bg-ffffff);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.composer.locked{display:flex;align-items:center;gap:8px;padding:12px 16px;color:var(--muted);font-size:var(--fs-14)}
.composer.locked svg{width:16px;height:16px;flex:none}
.comp-row{display:flex;align-items:flex-end;gap:4px;padding:8px}
.comp-row textarea{flex:1;min-width:0;border:0;background:transparent;resize:none;outline:none;font-size:var(--fs-16);line-height:1.4;padding:8px 4px;max-height:180px;min-height:38px;color:var(--text)}
.c-btn{width:38px;height:38px;border:0;background:none;border-radius:var(--r-0);display:grid;place-items:center;color:var(--muted);cursor:pointer;flex:none}
.c-btn:hover{background:var(--surface3);color:var(--text)}
#c-att{background:var(--surface3)}
.c-send{width:38px;height:38px;border:0;border-radius:var(--r-0);background:var(--accent);color:#fff;display:grid;place-items:center;cursor:pointer;flex:none}
.c-send:hover{filter:brightness(1.08)}
.reply-bar{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 12px;font-size:var(--fs-13);color:var(--muted);border-bottom:1px solid var(--border);background:var(--surface3);border-radius:var(--r-0)}
.c-x{border:0;background:none;color:var(--muted);cursor:pointer;display:grid;place-items:center;padding:4px;border-radius:var(--r-0)}
.c-x svg{width:16px;height:16px}
.att-list{display:flex;gap:8px;padding:12px 12px 0;overflow-x:auto}
.att{position:relative;flex:none;width:120px;border:1px solid var(--border2);border-radius:var(--r-0);background:var(--k-bg-ffffff);padding:8px;font-size:var(--fs-12);display:flex;flex-direction:column;gap:4px}
.att img{width:100%;height:76px;object-fit:cover;border-radius:var(--r-0)}
.att-ic{height:76px;display:grid;place-items:center;color:var(--muted);background:var(--surface2);border-radius:var(--r-0)}
.att .c-x{position:absolute;top:2px;right:2px;background:var(--k-bg-ffffff);box-shadow:none}
.att.err{border-color:var(--k-bd-fca5a5)}
.att-bar{height:4px;border-radius:var(--r-0);background:var(--surface3);overflow:hidden}.att-bar i{display:block;height:100%;background:var(--accent)}
.mention-pop{position:absolute;left:8px;right:8px;bottom:calc(100% + 6px);background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-0);box-shadow:var(--shadow-pop);padding:8px;z-index:10;max-height:260px;overflow:auto}
.mp-h{font-size:var(--fs-12);font-weight:600;text-transform:uppercase;color:var(--faint);padding:4px 8px}
.mention-pop button{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;padding:8px 8px;border-radius:var(--r-0);cursor:pointer;text-align:left;color:var(--text)}
.mention-pop button.on,.mention-pop button:hover{background:var(--accent-soft)}
.mention-pop small{color:var(--faint)}
.emoji-float{position:fixed;z-index:300;display:grid;grid-template-columns:repeat(8,36px);gap:2px;padding:8px;background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-0);box-shadow:none}
.emoji-float button{width:36px;height:36px;border:0;background:none;border-radius:var(--r-0);font-size:var(--fs-20);cursor:pointer}
.emoji-float button:hover{background:var(--surface2)}
.pop-menu{position:fixed;top:0;left:0;right:auto;z-index:300}
.pop-menu button{display:flex;align-items:center;gap:12px}
.pop-menu button svg{width:17px;height:17px;flex:none;color:var(--muted)}
.pop-menu .danger-item{color:var(--k-fg-dc2626)}
.proj-pop{min-width:250px}
/* channel form */
.type-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.type-card{display:flex;align-items:flex-start;gap:12px;border:1.5px solid var(--border2);background:var(--surface);border-radius:var(--r-0);padding:12px;text-align:left;cursor:pointer;color:var(--text);min-width:0}
.type-card b{display:block;font-size:var(--fs-14)}.type-card small{display:block;color:var(--muted);font-size:var(--fs-12);line-height:1.35}
.type-card.on{border-color:var(--accent);background:var(--accent-soft)}
.type-card .ch-ic{margin-top:1px;color:var(--accent)}
.name-in{position:relative}.name-in .ch-ic{position:absolute;left:10px;top:50%;transform:translateY(-50%)}.name-in .input{padding-left:32px}
.field-l{display:block;font-size:var(--fs-13);font-weight:600;color:var(--muted);margin-bottom:8px;letter-spacing:.02em}
/* picture editor + profile */
.crop-wrap{display:flex;flex-direction:column;align-items:center}
.crop{position:relative;width:240px;height:240px;border-radius:var(--r-0);overflow:hidden;background:var(--surface2);touch-action:none;box-shadow:none;outline:1px solid var(--border2);outline-offset:0}
.crop.round{border-radius:50%}
.crop canvas{width:100%;height:100%;display:block;cursor:grab}
.crop canvas:active{cursor:grabbing}
.crop #crop-cur{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.crop .crop-empty{display:grid;place-items:center;color:var(--muted);font-weight:600;background:var(--surface2)}
#crop-zoom{width:220px;margin-top:12px;accent-color:var(--accent)}
.prof{display:flex;align-items:center;gap:16px}
.prof-av{position:relative;border:0;background:none;padding:0;cursor:pointer;border-radius:50%}
.prof-edit{position:absolute;right:0;bottom:0;width:28px;height:28px;border-radius:var(--r-0);background:var(--accent);color:#fff;display:grid;place-items:center;box-shadow:none;outline:2px solid var(--surface);outline-offset:0}
.prof-edit svg{width:15px;height:15px}
.dc-scrim{display:none}
/* home (projects) inside the rail layout */
.dc.home .dc-main{overflow:hidden}
.dc.home .topbar-in{max-width:none}
.dc.home .app-foot{margin-top:24px}
/* tablet: member list floats over the content */
@media (max-width:1179px){
  .dc.mem-open .mlist{position:absolute;right:0;top:52px;bottom:0;z-index:25;box-shadow:none}
}
/* phones: Discord mobile. The channel fills the screen; the rail + channel list slide in from the left. */
@media (max-width:820px){
  :root{--chs-w:min(280px,calc(100vw - var(--rail-w) - 36px))}
  .dc:not(.home) .dc-nav{position:absolute;left:0;top:0;bottom:0;transform:translateX(-100%);transition:transform .22s ease;box-shadow:none}
  .dc.nav-open .dc-nav{transform:none;box-shadow:none}
  .dc.nav-open .dc-scrim,.dc.mem-open .dc-scrim{display:block;position:absolute;inset:0;background:rgba(15,27,51,.38);z-index:24}
  .dc.mem-open .dc-scrim{z-index:24}
  .dc.mem-open .mlist{top:0;z-index:26;width:min(280px,82vw)}
  .nav-btn{display:inline-grid}
  .ch-head{padding:0 8px;gap:4px;height:52px;padding-top:env(safe-area-inset-top);height:calc(52px + env(safe-area-inset-top))}
  .ch-title{max-width:none;flex:1;font-size:var(--fs-16)}
  .ch-topic{display:none}
  .dc .page{padding:16px 12px 32px}
  .dc .page.chat-page{padding:0}
  .msg{grid-template-columns:52px 1fr;padding-right:12px}
  .m-acts{right:8px}
  .composer{margin:0 8px calc(8px + env(safe-area-inset-bottom))}
  .day-div,.new-div{margin-left:12px;margin-right:12px}
  .m-welcome{padding:16px 12px 8px}
  .type-grid{grid-template-columns:minmax(0,1fr)}
  .dc.home .rail{--rail-w:64px}
  .dc.home .rail-btn .pic{width:44px;height:44px}
  .tip{display:none}
  .toast,.dc .toast{bottom:calc(96px + env(safe-area-inset-bottom))}
}
@media (hover:none){
  .ch-gear{display:inline-flex;opacity:.7}
  .cat-act{opacity:.8}
  .msg:hover{background:transparent}
  .msg:hover .m-acts{display:none}
  .msg.show-acts .m-acts{display:flex;top:auto;bottom:calc(100% - 6px)}
  .msg.show-acts{background:var(--k-bg-f0f4fb)}
}
/* dark mode (toggle in your profile / settings menu) */
[data-theme=dark]{--bg:#0f1420;--bg2:#161c2a;--surface:#1a2130;--surface2:#212a3b;--surface3:#2a3448;--border:#2a3346;--border2:#36415a;--text:#e8edf7;--muted:#a3afc5;--faint:#7c89a3;
  --accent:#4f8cff;--accent2:#6aa0ff;--accent-soft:#1d2c4d;--accent-line:#2f4a80;--rail-bg:#0b1019;--chs-bg:#131a27;--main-bg:#1a2130;--hover:#232d40;--sel:#2a3a5c;--mention-bg:#3a3220;--mention-line:#f5b301;color-scheme:dark}
[data-theme=dark] body,[data-theme=dark] html{background:var(--bg);color:var(--text)}
[data-theme=dark] .topbar{background:rgba(26,33,48,.92)}
[data-theme=dark] .menu-pop,[data-theme=dark] .card,[data-theme=dark] .sheet{background:var(--surface);color:var(--text)}
[data-theme=dark] .user-panel{background:#0f1520}
[data-theme=dark] .ch.on{color:#fff}
[data-theme=dark] .m-text{color:var(--text)}
[data-theme=dark] .msg:hover,[data-theme=dark] .msg.show-acts{background:#202839}
[data-theme=dark] .composer:focus-within{background:var(--surface2)}
[data-theme=dark] .rail-btn.home .pic,[data-theme=dark] .rail-btn.add .pic,[data-theme=dark] .rail-btn.disc .pic{background:#1f2738}
[data-theme=dark] .rail-sep{background:#2a3346}
[data-theme=dark] .m-pre{background:#121826}
[data-theme=dark] .avatar{box-shadow:none;outline:2px solid var(--surface);outline-offset:0}
[data-theme=dark] .input{background:var(--bg2);color:var(--text)}
[data-theme=dark] .att,[data-theme=dark] .att .c-x{background:var(--surface)}
[data-theme=dark] .mention.me{background:#4a3b12;color:#fde68a}

/* ---- PartCrew as an app (pwa.js): install button, iPhone tip, how-to sheet, standalone safe areas ---- */
.pc-install[hidden]{display:none!important}
.pc-install-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px 12px;margin:24px 0 4px}
.pc-install-row .pc-install{padding:12px 16px;font-size:var(--fs-14)}
.pc-install-row small{color:var(--muted);font-size:var(--fs-13)}
.pc-install-row:has(.pc-install[hidden]),.auth.invite .pc-install-row{display:none}
.prof-install .pc-install{width:100%;margin-top:8px}
.pc-howto p{margin:0 0 12px;color:var(--text)}
.pc-howto .pc-note{color:var(--muted);font-size:var(--fs-13);margin:12px 0 0}
.pc-steps{margin:0;padding:0;list-style:none;counter-reset:pcs;display:grid;gap:12px}
.pc-steps li>span{flex:1;min-width:0}
.pc-steps li{counter-increment:pcs;display:flex;align-items:flex-start;gap:12px;line-height:1.45;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px}
.pc-steps li:before{content:counter(pcs);flex:none;width:24px;height:24px;border-radius:var(--r-0);background:var(--accent);color:#fff;font-weight:600;font-size:var(--fs-13);display:grid;place-items:center;margin-top:-1px}
.pc-ico{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:var(--r-0);background:var(--surface);border:1px solid var(--border2);vertical-align:middle;margin:0 2px;color:var(--text)}
.pc-ico.sm{width:22px;height:22px;border-radius:var(--r-0)}
.pc-ico.sm svg{width:15px;height:15px}
.pc-tip{position:fixed;left:10px;right:10px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:260;display:flex;align-items:center;gap:12px;background:var(--surface);color:var(--text);border:1px solid var(--border2);border-radius:var(--r-0);padding:12px 32px 12px 12px;box-shadow:none;animation:pop .22s ease-out;max-width:460px;margin:0 auto}
.pc-tip:after{content:"";position:absolute;left:50%;bottom:-8px;width:14px;height:14px;background:inherit;border-right:1px solid var(--border2);border-bottom:1px solid var(--border2);transform:translateX(-50%) rotate(45deg)}
.pc-tip.top{top:calc(12px + env(safe-area-inset-top));bottom:auto;left:auto;right:12px;width:360px}
.pc-tip.top:after{top:-8px;bottom:auto;left:auto;right:28px;transform:rotate(225deg)}
.pc-tip img{border-radius:var(--r-0);flex:none}
.pc-tip-t{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:var(--fs-14);line-height:1.4}
.pc-tip-t b{font-size:var(--fs-14)}
.pc-tip-more{align-self:flex-start;border:0;background:none;color:var(--accent);font:inherit;font-weight:600;padding:2px 0;cursor:pointer}
.pc-tip-x{position:absolute;top:6px;right:6px;width:30px;height:30px;border:0;border-radius:var(--r-0);background:var(--surface2);color:var(--muted);font-size:var(--fs-14);cursor:pointer}
/* the installed app: no Safari bars, so keep content off the notch, rounded corners and home bar */
.pc-standalone body{background:var(--main-bg)}
.dc{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-sizing:border-box}
.rail{padding-top:calc(12px + env(safe-area-inset-top))}
.chs-head{height:calc(52px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}
.mlist{padding-top:env(safe-area-inset-top)}
.auth{padding:calc(32px + env(safe-area-inset-top)) calc(24px + env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) calc(24px + env(safe-area-inset-left))}
@media (max-width:900px){.auth{padding:calc(24px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left))}}
@media (max-width:820px){
  .ch-head{padding-left:calc(8px + env(safe-area-inset-left))}
  .dc:not(.home) .dc-nav{padding-left:env(safe-area-inset-left);background:var(--rail-bg)}
  .pc-install-row{order:4;margin:16px 0 0;justify-content:center;text-align:center}
  .pc-install-row .pc-install{width:100%}
  .auth-hero p,.auth-hero .chips{order:5}
}
.pc-standalone .credit .btn.discord:after{content:" ↗";font-weight:600}

/* ---------- password reset by email ---------- */
.sent-note{background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--text);border-radius:var(--r-0);padding:12px 12px;margin:0 0 12px;font-size:var(--fs-14);line-height:1.45}
input.otp-in{font-size:var(--fs-20);letter-spacing:.3em;text-align:center;font-weight:600}
.em-addr{color:var(--text);font-weight:600;word-break:break-all}
#ac-email .field small{display:block;margin-top:8px}
#su-email small{display:block;margin-top:8px}

/* dark mode: every hardcoded light colour above goes through a --k-* variable (light value in :root at the top), dark values here.
   test/darkmode.test.mjs fails if a light background/border or dark text colour is hardcoded again. */
[data-theme=dark]{--btn-bg:#232c3e;--k-bd-a7f3d0:#367859;--k-bd-c3cfe1:#485465;--k-bd-cdd7e6:#485465;--k-bd-cfe0ff:#304b7e;--k-bd-fca5a5:#7e3030;--k-bd-fecaca:#7e3030;--k-bd-ffffff:#2d3649;--k-bg-bfdbfe:#203754;--k-bg-c9d5ea:#2f3949;--k-bg-cfe0ff:#1e2f4f;--k-bg-dbe7ff:#1c2c4b;--k-bg-dbeafe:#1c304b;--k-bg-dcfce7:#1e4a2d;--k-bg-e0e7ff:#1c2649;--k-bg-e0f2fe:#1c3749;--k-bg-e6efff:#1b2b47;--k-bg-e8eef8:#252f3f;--k-bg-eaf1ff:#1a2946;--k-bg-eaf1ffa85:rgba(26,41,70,0.85);--k-bg-ecfdf5:#1d4431;--k-bg-ede9fe:#231b46;--k-bg-eef2f8:#272f3b;--k-bg-eef4ff:#1a2944;--k-bg-eff6ff:#1a2c44;--k-bg-f0f4fa:#242d3c;--k-bg-f0f4fb:#222c3d;--k-bg-f0f9ff:#1a3344;--k-bg-f1f5f9:#263039;--k-bg-f1f5fb:#222d3d;--k-bg-f3e8ff:#301b46;--k-bg-f3f7ff:#192743;--k-bg-f5f7fb:#252b38;--k-bg-f6f8fc:#232a3a;--k-bg-f7faff:#192841;--k-bg-f7fffb:#19412d;--k-bg-f8fafc:#242e37;--k-bg-faf5ff:#2e1942;--k-bg-fafcff:#182840;--k-bg-fbfcfe:#1f283a;--k-bg-fcfdff:#182540;--k-bg-fda4af:#5d232b;--k-bg-fee2e2:#491c1c;--k-bg-fef2f2:#421b1b;--k-bg-fef3c7:#51471f;--k-bg-fef9c3:#534e1f;--k-bg-ffedd5:#4d381d;--k-bg-fff0c2:#53461f;--k-bg-fff5f5:#421919;--k-bg-fffafa:#401818;--k-bg-ffffff:var(--surface);--k-bg-ffffffa86:rgba(27,34,47,0.86);--k-bg-ffffffa88:rgba(27,34,47,0.88);--k-bg-ffffffa96:rgba(27,34,47,0.96);--k-fg-0369a1:#87d3fd;--k-fg-047857:#89fbda;--k-fg-059669:#89fbd8;--k-fg-06281b:#95efcc;--k-fg-0b2a6b:#90b0f4;--k-fg-1a2540:#a8b7dc;--k-fg-1d4ed8:#93acf1;--k-fg-1e40af:#97abed;--k-fg-2563eb:#8faff5;--k-fg-26344d:#adbcd7;--k-fg-334155:#b2bfd1;--k-fg-3b4a63:#b2bed1;--k-fg-41506a:#b3bed0;--k-fg-475569:#bac2d1;--k-fg-6d28d9:#b897ed;--k-fg-92400e:#f4b68f;--k-fg-b91c1c:#ef9595;--k-fg-c2410c:#f8ab8c;--k-fg-dc2626:#ee9696;--k-fg-e11d48:#f193a7;--k-fg-f59e0b:#fad089;}
[data-theme=dark] .hex .lbl .pc{color:color-mix(in srgb,var(--c) 62%,#fff)}
[data-theme=dark] .hex .lbl .nm{text-shadow:none}

/* =====================================================================
   Design v2 (PartCrew 8): one type scale (Inter), a 4/8px spacing rhythm, one radius scale, quiet borders and
   shadows, a single blue accent on neutral grays, and one line-icon set (Lucide SVG, see ico() in app.js).
   Every colour here is a theme variable; light values in :root, dark values in [data-theme=dark] right below.
   ===================================================================== */
@font-face{font-family:"Inter var";font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-var-latin.woff2) format("woff2")}
:root{
  --font:"Inter var","Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --bg:#f6f7f9; --bg2:#ffffff; --surface:#ffffff; --surface2:#f4f5f7; --surface3:#eceef1; --border:#e6e8eb; --border2:#d9dce1;
  --text:#111318; --muted:#5b616e; --faint:#8b909a;
  --accent:#2563eb; --accent2:#2563eb; --accent-hover:#1d4ed8; --accent-ink:#ffffff; --accent-soft:#eef3fe; --accent-line:#c9d8fb;
  --ring:rgba(37,99,235,.22); --danger:#dc2626; --danger-soft:#fef2f2; --danger-line:#f5c2c2; --danger-ink:#b91c1c;
  --rail-bg:#eceef2; --chs-bg:#f7f8fa; --main-bg:#ffffff; --hover:#eff0f3; --sel:#e4e9f7;
  --radius:0; --r-sm:0; --r-md:0; --r-lg:0;
  --shadow:none; --shadow-md:none;
  --shadow-lg:none;
  --toast-bg:#18191d; --toast-ink:#f4f5f7; --btn-bg:#ffffff; --seg-on:#ffffff; --mock-bar:#f1f2f4;
}
[data-theme=dark]{
  --bg:#0e0f12; --bg2:#141519; --surface:#16171b; --surface2:#1c1d22; --surface3:#25272d; --border:#26282e; --border2:#34373e;
  --text:#ececef; --muted:#a1a5ae; --faint:#767a84;
  --accent:#3b82f6; --accent2:#6ea8ff; --accent-hover:#5592f8; --accent-ink:#ffffff; --accent-soft:#18233b; --accent-line:#2b3f66;
  --ring:rgba(96,165,250,.32); --danger:#f87171; --danger-soft:#2a1617; --danger-line:#5c2a2c; --danger-ink:#fca5a5;
  --rail-bg:#0a0b0d; --chs-bg:#111215; --main-bg:#16171b; --hover:#1f2025; --sel:#232a3c;
  --shadow:none; --shadow-md:none; --shadow-lg:none;
  --toast-bg:#25272d; --toast-ink:#f4f5f7; --btn-bg:#1c1d22; --seg-on:#2a2c33; --mock-bar:#1c1d22;
}
html,body{font-family:var(--font);font-size:var(--fs-14);line-height:1.5;letter-spacing:-.003em;font-feature-settings:"cv11","ss01";text-rendering:optimizeLegibility}
h1,h2,h3,h4{font-weight:600;letter-spacing:-.015em}
b,strong{font-weight:600}
a{color:var(--accent2)}
.i{flex:none;display:inline-block;vertical-align:-.15em}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-0)}

/* buttons: primary / secondary / ghost / danger, two sizes */
.btn{min-height:36px;padding:8px 12px;border-radius:var(--r-0);font-size:var(--fs-13);font-weight:500;gap:8px;letter-spacing:-.005em;
  background:var(--btn-bg);border:1px solid var(--border2);color:var(--text);box-shadow:none;transition:background .12s,border-color .12s,color .12s,box-shadow .12s}
.btn:active{transform:none}
.btn:not(.danger):not(.primary):not(.ghost):not(.discord):hover{background:var(--surface2);border-color:var(--border2)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:none}
.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);filter:none}
.btn.ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--muted)}
.btn.ghost:hover{background:var(--hover);color:var(--text)}
.btn.danger{background:var(--btn-bg);border-color:var(--danger-line);color:var(--danger-ink);box-shadow:none}
.btn.danger:hover{background:var(--danger-soft)}
.btn.small{min-height:30px;padding:4px 12px;font-size:var(--fs-13);border-radius:var(--r-0)}
.btn.lg{min-height:42px;padding:8px 16px;font-size:var(--fs-14)}
.btn svg{width:16px;height:16px}
.btn.small svg{width:15px;height:15px}
.btn.discord{background:#5865f2;border-color:#5865f2;color:#fff;box-shadow:none}
.btn.discord:hover{background:#4752c4;border-color:#4752c4}
.icon-btn{width:36px;min-width:36px;height:36px;min-height:36px;padding:0;border-radius:var(--r-0)}
.launch-btns .btn.primary{background:var(--accent);box-shadow:none}

/* inputs and forms */
label.field{margin:0 0 16px}
label.field>span{font-size:var(--fs-13);font-weight:500;color:var(--text);letter-spacing:0;margin-bottom:8px}
.input,select.input,textarea.input{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r-0);padding:8px 12px;min-height:38px;font-size:var(--fs-14);transition:border-color .12s,box-shadow .12s;box-shadow:none}
.input:hover{border-color:var(--faint)}
.input:focus,.input:focus-visible{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px;}
.input::placeholder{color:var(--faint)}
@media (max-width:820px){.input,select.input,textarea.input{font-size:var(--fs-16)}}
.seg{background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:4px}
.seg button{font-weight:500;font-size:var(--fs-13);border-radius:var(--r-0);padding:8px 12px;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;gap:8px}
.seg button.on{background:var(--seg-on);color:var(--text);box-shadow:none}
.divider{font-size:var(--fs-12);color:var(--faint);letter-spacing:0;text-transform:none}

/* surfaces */
.card{border-radius:var(--r-0);border:1px solid var(--border);box-shadow:none}
.sheet{border-radius:var(--r-0);border:1px solid var(--border);box-shadow:none}
.sheet-h{padding:16px 16px 12px}
.sheet-h h2{font-size:var(--fs-16);font-weight:600;letter-spacing:-.01em}
.sheet-b{padding-left:16px;padding-right:16px}
.sheet-f{background:var(--surface);border-top:1px solid var(--border);padding:12px 16px 16px;gap:8px}
@media (max-width:720px){.sheet{border-radius:var(--r-0)}}
.menu-pop{border-radius:var(--r-0);border:1px solid var(--border);box-shadow:var(--shadow-pop);padding:4px}
.menu-pop button{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:var(--r-0);font-size:var(--fs-13);font-weight:500}
.menu-pop button svg{width:16px;height:16px;flex:none;color:var(--muted)}
.menu-pop button:hover{background:var(--hover)}
.menu-pop .danger-item,.menu-pop .danger-item svg{color:var(--danger-ink)}
.toast{background:var(--toast-bg);color:var(--toast-ink);border:1px solid var(--toast-bg);border-radius:var(--r-0);box-shadow:var(--shadow-pop);font-size:var(--fs-13);font-weight:500;padding:12px 12px}

/* headings and page heads */
.page-head h1{font-size:var(--fs-20);font-weight:600;letter-spacing:-.02em}
.page-head p,.page-head .muted{font-size:var(--fs-13)}
.h3{font-size:var(--fs-13);font-weight:600;text-transform:none;letter-spacing:-.005em;color:var(--text)}
.sec-h{font-size:var(--fs-12);font-weight:600;text-transform:none;letter-spacing:0;color:var(--muted)}
.sub-h{font-size:var(--fs-13);font-weight:600}

/* chips, tags, badges */
.fchip{border-radius:var(--r-0);font-weight:500;font-size:var(--fs-13);padding:4px 12px;background:var(--btn-bg);color:var(--muted);border-color:var(--border)}
.fchip:hover{color:var(--text)}
.fchip.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}
.tag{border-radius:var(--r-0);font-weight:500;display:inline-flex;align-items:center;gap:4px}
.badge{border-radius:var(--r-0);font-weight:500;letter-spacing:0;text-transform:none}
.kind-tag{display:inline-flex;align-items:center;gap:8px}
.mi{display:inline-flex;align-items:center;gap:4px}
.ok-text,.late-text,.late{display:inline-flex;align-items:center;gap:4px}

/* stats, empty states, onboarding */
.stat-ico{width:36px;height:36px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent);font-size:0}
.stat-ico.warn{background:var(--danger-soft);color:var(--danger-ink)}
.stat b{font-weight:600}
.empty-state{padding:32px 16px}
.empty-state h2{font-size:var(--fs-14);font-weight:600;margin:0 0 4px}
.empty-state p{font-size:var(--fs-13);color:var(--muted);max-width:360px;margin:0 auto 16px}
.es-icon,.callout .es-icon{width:44px;height:44px;margin:0 auto 12px;border-radius:var(--r-0);clip-path:none;background:var(--surface2);border:1px solid var(--border);color:var(--muted);font-size:0;display:grid;place-items:center}
.callout .es-icon{margin:0}
.chk{display:inline-grid;place-items:center}
.chk svg{width:12px;height:12px}
.nc-plus{color:var(--accent);display:grid;place-items:center;margin-bottom:8px}
.n-ico{color:var(--muted);display:grid;place-items:center}
.a-ico{color:var(--muted);display:inline-grid;place-items:center}
.lf-i{color:var(--accent);display:grid;place-items:center}
.res-h{display:flex;align-items:center;gap:8px}
.res-h svg{color:var(--muted)}
.m-crown{color:var(--k-fg-f59e0b);display:inline-grid;place-items:center}
.sw-icon,.proj-icon{font-size:var(--fs-12);font-weight:600;color:#fff}

/* Discord-style shell */
.ch{font-size:var(--fs-14);font-weight:500;border-radius:var(--r-0);min-height:32px;padding:4px 8px}
.ch-ic svg{width:17px;height:17px}
.ch:not(.on) .ch-ic{color:var(--faint)}
.ch-head{border-bottom:1px solid var(--border);box-shadow:none}
.ch-head b{font-weight:600}
.m-name{font-weight:600}
.composer{border-radius:var(--r-0);border:1px solid var(--border2);box-shadow:none}
.composer:focus-within{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.msg:hover,.msg.show-acts{background:var(--hover)}
[data-theme=dark] .msg:hover,[data-theme=dark] .msg.show-acts{background:var(--hover)}
[data-theme=dark] .user-panel{background:var(--rail-bg)}
[data-theme=dark] .topbar{background:var(--surface)}
[data-theme=dark] .rail-btn.home .pic,[data-theme=dark] .rail-btn.add .pic,[data-theme=dark] .rail-btn.disc .pic{background:var(--surface2)}

/* no gradient text anywhere but the logo */
.auth-hero h1 em{background:none;-webkit-background-clip:border-box;background-clip:border-box;color:var(--accent)}

/* ---------- landing page ---------- */
.lp{min-height:100vh;background:var(--bg)}
.lp-w{max-width:1120px;margin:0 auto;padding-left:24px;padding-right:24px}
.lp-nav{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--border);padding-top:env(safe-area-inset-top)}
.lp-nav .lp-w{display:flex;align-items:center;gap:8px;height:60px}
.lp-nav .logo{font-size:var(--fs-16);font-weight:600}
.lp-links{display:flex;gap:4px;margin-left:24px}
.lp-links a{color:var(--muted);text-decoration:none;font-size:var(--fs-13);font-weight:500;padding:8px 12px;border-radius:var(--r-0)}
.lp-links a:hover{color:var(--text);background:var(--hover)}
.lp-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,400px);gap:56px;align-items:center;padding-top:56px;padding-bottom:56px}
.lp-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-13);font-weight:500;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:4px 12px 4px 8px;box-shadow:none}
.lp-eyebrow svg{color:var(--accent)}
.lp-copy h1{font-size:var(--fs-24);line-height:1.04;letter-spacing:-.035em;font-weight:600;margin:16px 0 16px;max-width:600px}
.lp-sub{font-size:var(--fs-16);line-height:1.55;color:var(--muted);max-width:540px;margin:0}
.lp-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:24px}
.lp-ctas .pc-install-row{margin:0}
.lp-ctas .pc-install-row .pc-install{min-height:42px;padding:8px 16px;font-size:var(--fs-14)}
.lp-note{margin:16px 0 0;font-size:var(--fs-13);color:var(--faint)}
.lp .auth-card{background:var(--surface);backdrop-filter:none;border:1px solid var(--border);border-radius:var(--r-0);box-shadow:none;padding:24px}
.lp-shot{padding-bottom:72px}
.lpm{border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);box-shadow:none;overflow:hidden}
.lpm-bar{display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;background:var(--mock-bar);border-bottom:1px solid var(--border)}
.lpm-bar i{width:10px;height:10px;border-radius:var(--r-0);background:var(--border2)}
.lpm-bar span{margin:0 auto;font-size:var(--fs-12);color:var(--faint);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:2px 32px}
.lpm-body{display:grid;grid-template-columns:60px 220px minmax(0,1fr) 190px;height:440px;font-size:var(--fs-13)}
.lpm-rail{background:var(--rail-bg);display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 0}
.lpm-home{width:40px;height:40px;border-radius:var(--r-0);background:var(--surface);display:grid;place-items:center;border:1px solid var(--border)}
.lpm-home svg{width:28px;height:auto}
.lpm-sep{width:24px;height:2px;border-radius:var(--r-0);background:var(--border2)}
.lpm-p{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:600;font-size:var(--fs-13)}
.lpm-p.on{border-radius:var(--r-0)}
.lpm-p.add{background:var(--surface);color:var(--muted);border:1px solid var(--border)}
.lpm-side{background:var(--chs-bg);border-right:1px solid var(--border);padding:12px 8px;overflow:hidden}
.lpm-proj{display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:var(--fs-14);padding:4px 8px 12px;border-bottom:1px solid var(--border);margin:0 -8px 8px;padding-left:16px;padding-right:16px}
.lpm-cat{font-size:var(--fs-12);font-weight:600;color:var(--faint);padding:12px 8px 4px}
.lpm-ch{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:var(--r-0);color:var(--muted);font-weight:500}
.lpm-ch svg{color:var(--faint)}
.lpm-ch.on{background:var(--sel);color:var(--text)}
.lpm-ch.on svg{color:var(--text)}
.lpm-ch.unread{color:var(--text);font-weight:600}
.lpm-main{display:flex;flex-direction:column;min-width:0;background:var(--main-bg)}
.lpm-head{display:flex;align-items:center;gap:8px;height:46px;padding:0 16px;border-bottom:1px solid var(--border);color:var(--faint)}
.lpm-head b{color:var(--text);font-weight:600;font-size:var(--fs-14)}
.lpm-head span{border-left:1px solid var(--border);padding-left:12px;font-size:var(--fs-13)}
.lpm-msgs{flex:1;padding:12px 16px;display:flex;flex-direction:column;gap:16px;overflow:hidden;justify-content:flex-end}
.lpm-msg{display:flex;gap:12px}
.lpm-av{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;color:#fff;font-weight:600}
.lpm-meta{display:flex;align-items:baseline;gap:8px}
.lpm-meta b{font-size:var(--fs-13)}
.lpm-meta time{font-size:var(--fs-12);color:var(--faint)}
.lpm-msg p{margin:2px 0 0;color:var(--text);line-height:1.45}
.lpm-card{display:inline-flex;align-items:center;gap:8px;margin-top:8px;padding:8px 12px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--r-0);background:var(--surface2);color:var(--muted);font-size:var(--fs-13)}
.lpm-card svg{color:var(--accent)}
.lpm-card b{color:var(--text)}
.lpm-rx{display:flex;gap:8px;margin-top:8px}
.lpm-rx span{font-size:var(--fs-12);border:1px solid var(--border);background:var(--surface2);border-radius:var(--r-0);padding:1px 8px;color:var(--muted)}
.lpm-comp{margin:0 16px 16px;border:1px solid var(--border2);border-radius:var(--r-0);padding:12px 12px;color:var(--faint);background:var(--surface)}
.lpm-members{background:var(--chs-bg);border-left:1px solid var(--border);padding:8px 12px;overflow:hidden}
.lpm-m{display:flex;align-items:center;gap:8px;padding:4px 8px;color:var(--muted);font-weight:500}
.lpm-m span{width:26px;height:26px;border-radius:var(--r-0);display:grid;place-items:center;color:#fff;font-size:var(--fs-12);font-weight:600}
.lp-feats{padding-top:24px;padding-bottom:80px;text-align:center}
.lp-feats h2{font-size:var(--fs-24);line-height:1.15;letter-spacing:-.03em;font-weight:600;margin:0 0 12px}
.lp-feats .lp-sub{margin:0 auto}
.lp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin-top:32px;text-align:left;background:var(--border);border:1px solid var(--border);border-radius:var(--r-0);overflow:hidden}
.lp-f{background:var(--surface);padding:24px}
.lp-fi{width:36px;height:36px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);margin-bottom:12px}
.lp-f b{display:block;font-size:var(--fs-14);margin-bottom:4px}
.lp-f p{margin:0;color:var(--muted);font-size:var(--fs-13);line-height:1.55}
.lp-foot{border-top:1px solid var(--border);padding:24px 0 calc(24px + env(safe-area-inset-bottom))}
.lp-foot .lp-w{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.lp-foot .logo{font-size:var(--fs-14)}
.lp-foot .credit{margin:0}
@media (max-width:1000px){
  .lpm-body{grid-template-columns:56px 200px minmax(0,1fr)}
  .lpm-members{display:none}
  .lp-copy h1{font-size:var(--fs-24)}
}
@media (max-width:860px){
  .lp-hero{grid-template-columns:1fr;gap:32px;padding-top:32px;padding-bottom:32px}
  .lp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:600px){
  .lp-w{padding-left:16px;padding-right:16px}
  .lp-links{display:none}
  .lp-nav .lp-w{height:56px}
  .lp-hero{padding-top:24px;gap:24px}
  .lp-copy h1{font-size:var(--fs-24);letter-spacing:-.03em;margin:16px 0 12px}
  .lp-sub{font-size:var(--fs-14)}
  .lp-ctas{margin-top:24px}
  .lp-ctas>.btn,.lp-ctas .pc-install-row,.lp-ctas .pc-install-row .pc-install{width:100%}
  .lp .auth-card{padding:16px}
  .lpm-body{grid-template-columns:minmax(0,1fr);height:360px}
  .lpm-rail,.lpm-side{display:none}
  .lpm-bar span{padding:2px 16px}
  .lp-shot{padding-bottom:48px}
  .lp-feats{padding-bottom:56px}
  .lp-feats h2{font-size:var(--fs-24)}
  .lp-grid{grid-template-columns:1fr}
  .lp-foot .lp-w{justify-content:center;text-align:center}
  .lp-foot .grow{display:none}
}
.card .h3,.card h2.h3,.card h3.h3,.card .sec-h,.ov-h{text-transform:none;letter-spacing:-.005em}
.card .h3,.card h2.h3{font-size:var(--fs-13);color:var(--text)}
.kind-pill{text-transform:none;letter-spacing:0;font-weight:500}
.sheet-b{padding-top:16px}
.rail-btn.add .pic{color:var(--accent);box-shadow:none}
.rail-btn.add:hover .pic{background:var(--accent);color:var(--accent-ink)}

/* =====================================================================
   Design v3 (PartCrew 9): deeper neutrals, the brand gradient from the logo, squircle rail icons, glass headers,
   profile cards, the hub (home side) and a richer landing page. Every colour is a variable: light values in the
   :root block, dark values in the [data-theme=dark] block right below it.
   ===================================================================== */
:root{
  --bg:#f6f7f9; --bg2:#ffffff; --surface:#ffffff; --surface2:#f3f4f7; --surface3:#e9ebf0; --border:#e6e8ed; --border2:#d8dbe3;
  --text:#0c1018; --muted:#586070; --faint:#6b7180;
  --accent:#3b5cf5; --accent2:#3b5cf5; --accent-hover:#2e4bdb; --accent-ink:#ffffff; --accent-soft:#eef1fe; --accent-line:#cdd6fd; --ring:rgba(59,92,245,.24);
  --brand-grad:var(--accent);
  --brand-soft:var(--accent-soft);
  --rail-bg:#e8eaef; --chs-bg:#f5f6f8; --main-bg:#ffffff; --hover:#eceef2; --sel:#e3e8fb; --sel-ink:#16204a;
  --glass:rgba(255,255,255,.78); --glass-line:rgba(12,16,24,.06); --scrim-bg:rgba(10,14,24,.46);
  --shadow:none; --shadow-md:none;
  --shadow-lg:none;
  --hi:none;
  --ok:#16a34a; --ok-soft:#eafaf0; --warn:#d97706; --warn-soft:#fff6e6; --busy:#e11d48; --busy-soft:#fff0f3; --off:#9aa1ad;
  --gold:#d4a017; --card-bg:#ffffff; --card-line:#e6e8ed; --lp-bg:#f6f7f9; --lp-grid:rgba(12,16,24,.045);
  --lp-glow1:rgba(13,186,252,.20); --lp-glow2:rgba(127,61,255,.16); --lp-glow3:rgba(76,102,251,.14);
  --pc-banner-l:62%; --tip-bg:#0c1018; --tip-ink:#f4f5f7;
}
[data-theme=dark]{
  --bg:#0b0c0f; --bg2:#111216; --surface:#141519; --surface2:#1a1b20; --surface3:#23252b; --border:#24262c; --border2:#32353c;
  --text:#ededf0; --muted:#a2a6b0; --faint:#828793;
  --accent:#5b7cff; --accent2:#8ba1ff; --accent-hover:#6d8bff; --accent-ink:#ffffff; --accent-soft:#171f3a; --accent-line:#2c3c75; --ring:rgba(110,140,255,.34);
  --brand-soft:var(--accent-soft);
  --rail-bg:#08090b; --chs-bg:#0f1013; --main-bg:#141519; --hover:#1d1f24; --sel:#222a45; --sel-ink:#eef1ff;
  --glass:rgba(20,21,25,.78); --glass-line:rgba(255,255,255,.06); --scrim-bg:rgba(0,0,0,.6);
  --shadow:none; --shadow-md:none; --shadow-lg:none;
  --hi:none;
  --ok:#22c55e; --ok-soft:#10261a; --warn:#f59e0b; --warn-soft:#2a1f0b; --busy:#fb7185; --busy-soft:#2c1219; --off:#6b7280;
  --gold:#f2c94c; --card-bg:#141519; --card-line:#24262c; --lp-bg:#0b0c0f; --lp-grid:rgba(255,255,255,.04);
  --lp-glow1:rgba(13,186,252,.16); --lp-glow2:rgba(127,61,255,.18); --lp-glow3:rgba(76,102,251,.16);
  --pc-banner-l:38%; --tip-bg:#f4f5f7; --tip-ink:#0c1018;
}
::selection{background:var(--accent-line)}
*{scrollbar-color:var(--border2) transparent}
::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:var(--r-0);border:3px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:var(--faint);background-clip:content-box}::-webkit-scrollbar-track{background:transparent}
h1,h2,h3{letter-spacing:-.02em}

/* buttons: a soft top highlight on solid buttons, crisp focus rings */
.btn{transition:background .14s,border-color .14s,color .14s,box-shadow .14s,transform .08s}
.btn:active{transform:translateY(.5px)}
.btn.primary{box-shadow:none;outline:1px solid var(--accent);outline-offset:0}
.btn.primary:hover{box-shadow:none;outline:1px solid var(--accent-hover);outline-offset:0}
.btn.brand{background:var(--brand-grad);border-color:transparent;color:var(--accent-ink);box-shadow:none}
.btn.brand:hover{filter:brightness(1.06)}
.btn:focus-visible{;box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.btn.discord{box-shadow:none}

/* badges and chips */
.badge.owner{background:var(--accent-soft);color:var(--accent2)}
.role-chip{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-12);font-weight:500;color:var(--text);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:2px 8px 2px 8px;line-height:1.5}
.role-chip i{width:9px;height:9px;border-radius:var(--r-0);background:var(--rc,var(--faint));flex:none}

/* rail: squircles that morph, a calm active pill */
.rail{gap:8px}
.rail-btn .pic{width:46px;height:46px;border-radius:var(--r-0);transition:border-radius .2s cubic-bezier(.3,.7,.4,1),background .15s,box-shadow .15s,transform .15s}
.rail-btn:hover .pic,.rail-btn.on .pic,.rail-btn:focus-visible .pic{border-radius:var(--r-0)}
.rail-btn.on .pic{box-shadow:none}
.rail-btn.home .pic{background:var(--surface);box-shadow:none}
.rail-btn.home.on .pic,.rail-btn.home:hover .pic{background:var(--brand-grad)}
.rail-btn.home.on .pic svg path,.rail-btn.home:hover .pic svg path,.rail-btn.home.on .pic svg circle,.rail-btn.home:hover .pic svg circle{fill:var(--accent-ink)}
.rail-btn.home.on .pic svg ellipse,.rail-btn.home:hover .pic svg ellipse{stroke:var(--accent-ink)}
.rail-btn.add .pic,.rail-btn.disc .pic,.rail-btn.xtra .pic{background:var(--surface);box-shadow:none}
.rail-btn.xtra .pic{color:var(--ok)}
.rail-btn.xtra:hover .pic,.rail-btn.xtra.on .pic{background:var(--ok);color:var(--accent-ink)}
.rail-btn .pill{background:var(--text);width:4px}
.rail-sep{background:var(--border2);width:30px}
.rail-badge{background:var(--busy);box-shadow:none;outline:2px solid var(--rail-bg);outline-offset:0}
.tip{background:var(--tip-bg);color:var(--tip-ink);font-weight:600;font-size:var(--fs-13);border-radius:var(--r-0)}
.tip::before{background:var(--tip-bg)}

/* channel sidebar */
.chs{border-right:1px solid var(--border)}
.chs-head{height:56px;border-bottom:1px solid var(--border);box-shadow:none;position:relative}
.chs-title{font-weight:600;font-size:var(--fs-14);letter-spacing:-.01em}
.ch{font-weight:500;font-size:var(--fs-14);border-radius:var(--r-0);padding:8px 8px;transition:background .1s,color .1s}
.ch.on{background:var(--sel);color:var(--sel-ink);font-weight:600}
.ch.unread{font-weight:600}
.cat-t{font-weight:600;font-size:var(--fs-12);letter-spacing:.05em}
.user-panel{background:var(--chs-bg);border-top:1px solid var(--border)}
.user-panel .presence,.ml-row .presence,.mcard .presence{box-shadow:none;outline:2px solid var(--chs-bg);outline-offset:0;background:var(--off)}
.user-panel .presence.on,.ml-row .presence.on,.mcard .presence.on{background:var(--ok)}

/* main header: glass */
.ch-head{height:56px;background:var(--glass);backdrop-filter:saturate(1.6) blur(12px);-webkit-backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid var(--border);box-shadow:none;position:relative;z-index:5}
.ch-title{font-weight:600;font-size:var(--fs-16);letter-spacing:-.01em}
.ch-topic{font-size:var(--fs-13)}
@media (min-width:1180px){.dc.mem-open .mlist{top:0}}
@media (max-width:1179px){.dc.mem-open .mlist{top:56px}}

/* chat */
.msg{transition:background .08s}
.m-name{font-weight:600;font-size:var(--fs-14);letter-spacing:-.005em}
.m-av .avatar{width:40px;height:40px}
.composer{border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border2);transition:border-color .15s,box-shadow .15s,background .15s}
.composer:focus-within{border-color:var(--accent-line);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px;background:var(--surface)}

/* member list */
.mlist{background:var(--chs-bg)}
.ml-h{font-weight:600;font-size:var(--fs-12);letter-spacing:.05em}
.ml-row{border-radius:var(--r-0);transition:background .1s,opacity .1s}
.ml-row .avatar{width:32px;height:32px}
.ml-txt b{font-weight:600;font-size:var(--fs-14)}
.ml-row.off{opacity:.5}.ml-row.off:hover{opacity:.9}

/* modals: blurred backdrop, a gentle spring */
.scrim{background:var(--scrim-bg);backdrop-filter:blur(6px) saturate(1.2);-webkit-backdrop-filter:blur(6px) saturate(1.2)}
.sheet{border-radius:var(--r-0);border:1px solid var(--border);box-shadow:none;animation:sheetin .26s cubic-bezier(.2,.9,.3,1.15)}
@keyframes sheetin{from{transform:translateY(12px) scale(.97);opacity:0}}
.sheet-h h2{font-size:var(--fs-16);font-weight:600}
@media (max-width:720px){.sheet{border-radius:var(--r-0);animation:up .28s cubic-bezier(.2,.9,.3,1)}}
.menu-pop{border-radius:var(--r-0);border:1px solid var(--border);box-shadow:var(--shadow-pop);padding:8px;animation:menuin .14s ease-out}
@keyframes menuin{from{transform:translateY(-4px) scale(.98);opacity:0}}
.menu-pop button{border-radius:var(--r-0)}
.toast{border-radius:var(--r-0);box-shadow:var(--shadow-pop);animation:toastin .28s cubic-bezier(.2,.9,.3,1.2)}
@keyframes toastin{from{transform:translate(-50%,12px) scale(.96);opacity:0}}

/* cards lift a little on hover */
.card{background:var(--card-bg);border-color:var(--card-line)}
a.card:hover,button.card:hover{box-shadow:none;border-color:var(--border2)}
.empty-state{padding:32px 16px}
.empty-state h2{font-size:var(--fs-16);font-weight:600}
.es-icon{background:var(--brand-soft);color:var(--accent)}

/* ---------------- hub (home side) ---------------- */
.hub-head{padding:0 12px}
.hub-search{display:flex;align-items:center;gap:8px;width:100%;height:34px;border:1px solid var(--border);background:var(--surface);color:var(--faint);border-radius:var(--r-0);padding:0 12px;font-size:var(--fs-13);cursor:pointer;text-align:left;box-shadow:none;transition:border-color .12s,color .12s}
.hub-search:hover{border-color:var(--border2);color:var(--muted)}
.hub-search span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hub-nav{display:flex;flex-direction:column;gap:2px;padding-top:2px}
.hub-link{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:var(--r-0);color:var(--muted);text-decoration:none;font-weight:500;font-size:var(--fs-14);transition:background .1s,color .1s;position:relative}
.hub-link:hover{background:var(--hover);color:var(--text)}
.hub-link.on{background:var(--sel);color:var(--sel-ink)}
.hub-link .ch-ic{color:inherit}
.hub-link .nav-badge{margin-left:auto;position:static}
.hub-side-h{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-12);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);padding:16px 12px 8px}
.hub-side-h button{border:0;background:none;color:var(--faint);cursor:pointer;padding:2px;border-radius:var(--r-0);display:inline-flex}.hub-side-h button:hover{color:var(--text)}
.dc.hub .page.hub-page{max-width:1120px;margin:0 auto;padding:24px 24px 56px}
.hub-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.hub-hero h1{font-size:var(--fs-24);margin:0 0 4px;font-weight:600;letter-spacing:-.025em}
.hub-hero p{margin:0}
.hub-note{display:flex;align-items:center;gap:12px;padding:12px 12px;border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:var(--r-0);margin:0 0 16px;font-size:var(--fs-14)}
.hub-note svg{color:var(--accent);flex:none}
.sec-h{display:flex;align-items:baseline;gap:8px;margin:8px 0 12px}
.sec-h h2{font-size:var(--fs-14);margin:0;font-weight:600}
.sec-h .grow{flex:1}
.ws-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.ws-card{display:flex;flex-direction:column;background:var(--card-bg);border:1px solid var(--card-line);border-radius:var(--r-0);overflow:hidden;text-decoration:none;color:var(--text);box-shadow:none;transition:transform .16s cubic-bezier(.2,.8,.3,1),box-shadow .16s,border-color .16s}
.ws-card:hover{transform:translateY(-2px);box-shadow:none;border-color:var(--border2)}
.ws-banner{height:76px;position:relative;background:color-mix(in srgb,hsl(var(--h) 72% 58%) 22%,var(--surface2));overflow:hidden}
.ws-card[style*="--wa"] .ws-banner{background:color-mix(in srgb,var(--wa) 22%,var(--surface2))}
.ws-banner::after{content:"";position:absolute;inset:0;background:none}
.ws-banner img{width:100%;height:100%;object-fit:cover;display:block}
.ws-body{padding:0 16px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.ws-top{display:flex;align-items:flex-end;justify-content:space-between;margin-top:-24px;position:relative;z-index:1}
.ws-top .pic.card-pic{width:52px;height:52px;border-radius:var(--r-0);box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0;font-size:var(--fs-16)}
.ws-badges{display:flex;gap:8px;padding-bottom:2px}
.ws-card h2{font-size:var(--fs-16);margin:8px 0 0;font-weight:600}
.ws-card p{margin:0;min-height:2.9em}
.ws-stats{display:flex;gap:12px;font-size:var(--fs-13);color:var(--muted);margin-top:4px}
.ws-stats span{display:inline-flex;align-items:center;gap:4px}
.ws-stats svg{color:var(--faint)}
.ws-card .bar{margin-top:8px}
.ws-new{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:236px;border:1.5px dashed var(--border2);border-radius:var(--r-0);background:transparent;color:var(--text);cursor:pointer;text-align:center;padding:16px;transition:border-color .15s,background .15s}
.ws-new:hover{border-color:var(--accent);background:var(--accent-soft)}
.ws-new .nc-plus{width:44px;height:44px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--brand-grad);color:var(--accent-ink);box-shadow:none;margin-bottom:4px}
.hub-skel .skel-line{margin:0 0 12px}
.hub-skel .grid-cards{margin-top:16px}
.hub-sbox{position:relative}.hub-sbox svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--faint)}.hub-sbox .input{padding-left:32px}
.hs-res{margin-top:12px;min-height:120px}
.hs-h{font-size:var(--fs-12);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);padding:12px 4px 4px}
.hs-row{display:flex;align-items:center;gap:12px;width:100%;padding:8px;border:0;background:none;border-radius:var(--r-0);color:var(--text);text-decoration:none;cursor:pointer;text-align:left;font-size:var(--fs-14)}
.hs-row:hover{background:var(--hover)}

/* ---------------- profile card ---------------- */
.pcard{width:320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);box-shadow:none;overflow:hidden;color:var(--text)}
.pcard-pop{position:fixed;z-index:200;animation:cardin .18s cubic-bezier(.2,.9,.3,1.1)}
@keyframes cardin{from{transform:translateY(6px) scale(.97);opacity:0}}
.pc-banner{height:96px;background:color-mix(in srgb,hsl(var(--h) 70% var(--pc-banner-l)) 22%,var(--surface2));position:relative;overflow:hidden}
.pc-banner img{width:100%;height:100%;object-fit:cover;display:block}
.pc-head{display:flex;align-items:flex-end;justify-content:space-between;padding:0 16px;margin-top:-32px;position:relative}
.pc-av .avatar.xl{width:84px;height:84px;font-size:var(--fs-24);box-shadow:none;outline:2px solid var(--surface);outline-offset:0}
.pc-av .presence{width:18px;height:18px;right:3px;bottom:3px;box-shadow:none;outline:2px solid var(--surface);outline-offset:0;background:var(--off)}
.pc-av .presence.on{background:var(--ok)}
.pc-badges{display:flex;gap:4px;padding-bottom:8px}
.pc-body{padding:12px 16px 16px}
.pc-name{font-size:var(--fs-20);font-weight:600;letter-spacing:-.02em;line-height:1.25}
.pc-user{color:var(--muted);font-size:var(--fs-13)}
.pc-sec{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.pc-sec-h{font-size:var(--fs-12);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin-bottom:8px}
.pc-roles{display:flex;flex-wrap:wrap;gap:8px}
.pc-acts{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.pc-acts .btn{flex:1}
.pcard-sheet .sheet-h{position:absolute;right:6px;top:6px;z-index:3;padding:0}
.pcard-sheet .sheet-h h2{display:none}
.pcard-sheet .sheet-h .btn{background:var(--glass);border-radius:var(--r-0)}
.pcard-sheet .sheet-b{padding:0}
.pcard-sheet .pcard.sheet-card{width:auto;border:0;box-shadow:none;border-radius:0}
.pcard-sheet .grabber{position:absolute;left:50%;transform:translateX(-50%);z-index:3}

/* ---------------- landing ---------------- */
.lp{background:var(--lp-bg);position:relative;overflow:hidden}
.lp-glow{position:absolute;inset:0 0 auto 0;height:1100px;pointer-events:none;z-index:0;
  background:var(--lp-glow1);
  -webkit-mask-image:none;mask-image:none}
.lp>*:not(.lp-glow){position:relative;z-index:1}
.lp-nav{background:var(--glass);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid var(--glass-line)}
.lp-hero{padding-top:72px;padding-bottom:64px}
.lp-copy h1{font-size:var(--fs-24);line-height:1.02;letter-spacing:-.045em;font-weight:600;margin:24px 0 16px}
.lp-grad{background:var(--brand-grad);-webkit-background-clip:border-box;background-clip:border-box;color:currentColor;-webkit-text-fill-color:currentColor}
.lp-sub{font-size:var(--fs-16)}
.lp-eyebrow{background:var(--glass);border-color:var(--border);backdrop-filter:blur(8px)}
.lp-ctas .btn.lg{min-height:46px;padding:12px 16px;font-size:var(--fs-14);border-radius:var(--r-0)}
.lp-checks{display:flex;flex-wrap:wrap;gap:8px 16px;list-style:none;padding:0;margin:24px 0 0;color:var(--muted);font-size:var(--fs-13)}
.lp-checks li{display:inline-flex;align-items:center;gap:8px}
.lp-checks svg{color:var(--ok)}
.lp .pc-install-row{margin:16px 0 0}
.lp .auth-card{background:var(--glass);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border:1px solid var(--border);border-radius:var(--r-0);box-shadow:none;padding:24px}
.lp-shot{padding-bottom:96px;perspective:1600px}
.lp-shot-in{position:relative;transform:rotateX(8deg) scale(.98);transform-origin:50% 0;transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.lp-shot-in:hover{transform:none}
.lp-shot-in::before{content:"";position:absolute;inset:-2px;border-radius:var(--r-0);background:var(--brand-grad);opacity:.5;filter:blur(28px);z-index:-1}
.lpm{border-radius:var(--r-0)}
.lpm-bar span{display:inline-flex;align-items:center;gap:8px}
.lpm-ban{display:block;height:5px;border-radius:var(--r-0);background:var(--brand-grad);margin:-4px 0 8px;width:100%}
.lpm-proj{flex-direction:column;align-items:stretch}
.lpm-proj span:last-child{display:flex;align-items:center;justify-content:space-between}
.lpm-tag{font-size:var(--fs-12);font-weight:600;color:var(--muted);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:0 8px;line-height:1.6}
.lpm-comp{display:flex;align-items:center;justify-content:space-between}
.lpm-comp svg{color:var(--accent)}
.lp-sec{padding-top:24px;padding-bottom:96px}
.lp-sec-h{text-align:center;max-width:640px;margin:0 auto 32px}
.lp-sec-h h2{font-size:var(--fs-24);line-height:1.1;letter-spacing:-.035em;font-weight:600;margin:16px 0 12px}
.lp-sec-h .lp-sub{margin:0 auto}
.lp-bento{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.lp-bento .lp-f{grid-column:span 1;background:var(--card-bg);border:1px solid var(--card-line);border-radius:var(--r-0);padding:24px;box-shadow:none;transition:transform .2s,box-shadow .2s,border-color .2s;position:relative;overflow:hidden}
.lp-bento .lp-f.wide{grid-column:span 2}
.lp-bento .lp-f::after{content:"";position:absolute;right:-40px;top:-40px;width:140px;height:140px;border-radius:var(--r-0);background:var(--brand-soft);opacity:.9}
.lp-bento .lp-f:hover{transform:translateY(-3px);box-shadow:none;border-color:var(--border2)}
.lp-fi{background:var(--brand-grad);color:var(--accent-ink);box-shadow:none;border-radius:var(--r-0)}
.lp-f b{font-size:var(--fs-14)}
.lp-rgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.lp-r{display:flex;gap:16px;align-items:flex-start;background:var(--card-bg);border:1px solid var(--card-line);border-radius:var(--r-0);padding:24px;box-shadow:none}
.lp-r .lp-fi{margin:0;flex:none}
.lp-r b{display:block;font-size:var(--fs-14);margin-bottom:4px}
.lp-r p{margin:0;color:var(--muted);font-size:var(--fs-14);line-height:1.55}
.lp-cta{padding-bottom:96px}
.lp-cta-in{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:32px;border-radius:var(--r-0);background:var(--brand-grad);color:var(--accent-ink);box-shadow:none;position:relative;overflow:hidden}
.lp-cta-in::after{content:"";position:absolute;inset:0;background:none;pointer-events:none}
.lp-cta-in h2{font-size:var(--fs-24);margin:0 0 8px;letter-spacing:-.03em;font-weight:600}
.lp-cta-in p{margin:0;opacity:.88;font-size:var(--fs-16)}
.lp-cta-in .btn{position:relative;z-index:1}
.lp-cta-in .btn.primary{background:var(--surface);color:var(--text);border-color:transparent;box-shadow:none}
.lp-cta-in .btn.discord{box-shadow:none;outline:1px solid rgba(255,255,255,.25);outline-offset:0}
.lp-foot{border-top:1px solid var(--border);background:var(--lp-bg)}
@media (max-width:1000px){.lp-bento{grid-template-columns:repeat(2,minmax(0,1fr))}.lp-copy h1{font-size:var(--fs-24)}}
@media (max-width:900px){.lp-shot-in{transform:none}}
@media (max-width:640px){
  .lp-copy h1{font-size:var(--fs-24)}.lp-sub{font-size:var(--fs-16)}
  .lp-bento,.lp-rgrid{grid-template-columns:minmax(0,1fr)}.lp-bento .lp-f.wide{grid-column:span 1}
  .lp-sec-h h2{font-size:var(--fs-24)}.lp-cta-in{padding:24px}.lp-cta-in h2{font-size:var(--fs-24)}
  .lp-hero{padding-top:32px}.lp-sec{padding-bottom:64px}.lp-shot{padding-bottom:56px}
  .lp-ctas .btn.lg{width:100%}
}

/* phones */
@media (max-width:820px){
  .chs-head{height:calc(56px + env(safe-area-inset-top))}
  .ch-head{height:calc(56px + env(safe-area-inset-top))}
  .dc.hub .page.hub-page{padding:16px 12px 48px}
  .hub-hero h1{font-size:var(--fs-20)}
  .ws-grid{grid-template-columns:minmax(0,1fr)}
  .hub-hero .proj-acts{width:100%}.hub-hero .proj-acts .btn{flex:1}
}
@media (prefers-reduced-motion:reduce){.sheet,.pcard-pop,.toast,.menu-pop{animation:none}.lp-shot-in{transform:none}}

.pc-av{position:relative;display:inline-block;line-height:0}
.pc-av .presence{position:absolute;display:block;border-radius:50%}
.pcard-sheet{position:relative;overflow:hidden}
.pcard-sheet .sheet-h{top:10px;right:10px}
@media (max-width:820px){.ws-new{min-height:120px}}

/* ---------------- profiles, Roblox, games (PartCrew 9) ---------------- */
.rbx-mark{flex:none}
.avail{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-13);font-weight:500;border-radius:var(--r-0);padding:4px 12px 4px 8px;background:var(--surface2);border:1px solid var(--border);color:var(--text);white-space:nowrap}
.avail i,.avd{width:8px;height:8px;border-radius:var(--r-0);background:var(--off);display:inline-block;flex:none}
.avail.ok{background:var(--ok-soft);border-color:transparent}.avail.ok i,.avd.ok{background:var(--ok)}
.avail.warn{background:var(--warn-soft);border-color:transparent}.avail.warn i,.avd.warn{background:var(--warn)}
.avail.off i{background:var(--off)}
.rbx-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;border-radius:var(--r-0);padding:4px 8px;background:var(--surface2);border:1px solid var(--border);color:var(--text);text-decoration:none;white-space:nowrap}
.rbx-badge .i:last-child{color:var(--accent)}
.rbx-badge.big{font-size:var(--fs-13);padding:4px 12px}
.rbx-badge:hover{border-color:var(--border2)}
.tier-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;letter-spacing:.01em;border-radius:var(--r-0);padding:2px 8px;vertical-align:middle;white-space:nowrap;color:var(--accent-ink);background:var(--brand-grad)}
.tier-badge.t-plus{background:var(--accent)}
.tier-badge.t-founder{background:var(--amber);color:var(--tip-bg)}
.tier-badge.t-staff{background:var(--text);color:var(--bg2)}
.tier-badge.mini{font-size:var(--fs-12);padding:1px 4px;gap:4px;margin-left:2px}
.tier-badge.mini span{display:none}.tier-badge.mini.t-staff span{display:inline}
.m-rbx{display:inline-flex;align-items:center;color:var(--faint);margin-left:-2px}
.m-rbx:hover{color:var(--text)}
.ml-rbx{display:inline-flex;align-items:center;gap:4px}
.ml-rbx svg{color:var(--faint)}
.ml-av.ok{color:var(--ok)}.ml-av.warn{color:var(--warn)}
.ml-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:1px}
.pc-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.prof-page.page.hub-page{max-width:1080px}
.prof-hero{background:var(--card-bg);border:1px solid var(--card-line);border-radius:var(--r-0);overflow:hidden;box-shadow:none}
.prof-banner{height:170px;background:color-mix(in srgb,hsl(var(--h) 72% var(--pc-banner-l)) 22%,var(--surface2));position:relative}
.prof-banner.acc{background:color-mix(in srgb,var(--pa) 22%,var(--surface2))}
.prof-banner::after{content:"";position:absolute;inset:0;background:none}
.prof-banner img{width:100%;height:100%;object-fit:cover;display:block}
.prof-top{display:flex;align-items:flex-end;justify-content:space-between;padding:0 24px;margin-top:-56px;position:relative;z-index:1}
.prof-av-l .avatar.xl{width:112px;height:112px;font-size:var(--fs-24);box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0}
.prof-acts{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:8px}
.prof-id{padding:12px 24px 24px}
.prof-id h1{font-size:var(--fs-24);margin:0;font-weight:600;letter-spacing:-.025em;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.prof-sub{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px;font-size:var(--fs-14)}
.dot-sep{width:3px;height:3px;border-radius:50%;background:var(--faint)}
.prof-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}
.rbx-connect{display:inline-flex;align-items:center;gap:8px;font:inherit;font-size:var(--fs-13);font-weight:600;border:1.5px dashed var(--border2);background:transparent;border-radius:var(--r-0);padding:4px 12px;color:var(--text);cursor:pointer}
.rbx-connect:hover{border-color:var(--accent);color:var(--accent)}
.rbx-connect .faint{font-weight:500;font-size:var(--fs-12)}
.rep-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:12px 0}
.rep{display:flex;flex-direction:column;gap:2px;padding:12px;background:var(--card-bg);border:1px solid var(--card-line);border-radius:var(--r-0);box-shadow:none}
.rep b{font-size:var(--fs-20);font-weight:600;letter-spacing:-.02em;line-height:1.2;margin-top:8px}
.rep span:last-child{font-size:var(--fs-13);color:var(--muted)}
.rep-i{width:30px;height:30px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--surface2);color:var(--muted)}
.rep.on .rep-i{background:var(--accent-soft);color:var(--accent)}
.prof-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.prof-main,.prof-side{display:flex;flex-direction:column;gap:16px;min-width:0}
.prof-sec{padding:16px}
section.prof-sec:not(.card){padding:0}
.ps-h{display:flex;align-items:center;gap:8px;margin:0 0 12px}
.ps-h h2{font-size:var(--fs-14);margin:0;font-weight:600;display:inline-flex;align-items:center;gap:8px}
.ps-h .btn{margin-left:auto}
.prof-bio{margin:0;line-height:1.6;white-space:normal}
.skill-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.skill{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-13);font-weight:500;border-radius:var(--r-0);padding:4px 12px;background:var(--accent-soft);color:var(--accent2);border:1px solid var(--accent-line)}
.skill.sm{font-size:var(--fs-12);padding:1px 8px}
.skill.pick{background:var(--surface);color:var(--text);border-color:var(--border2);cursor:pointer;font:inherit;font-size:var(--fs-13)}
.skill.pick.on,.skill.pick:has(input:checked){background:var(--accent-soft);color:var(--accent2);border-color:var(--accent)}
.skill.pick input{display:none}
.skill-pick{display:flex;flex-wrap:wrap;gap:8px}
.prof-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.prof-links a{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-13);font-weight:500;text-decoration:none;color:var(--text);padding:4px 12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface2)}
.prof-links a:hover{border-color:var(--border2)}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.pf-item{background:var(--card-bg);border:1px solid var(--card-line);border-radius:var(--r-0);overflow:hidden;box-shadow:none;display:flex;flex-direction:column;transition:transform .16s,box-shadow .16s}
.pf-item:hover{transform:translateY(-2px);box-shadow:none}
.pf-img{aspect-ratio:16/10;background:var(--surface2);display:grid;place-items:center;color:var(--faint);overflow:hidden}
.pf-img img{width:100%;height:100%;object-fit:cover;display:block}
.pf-txt{padding:12px 12px;display:flex;flex-direction:column;gap:4px;flex:1}
.pf-txt p{margin:0}
.pf-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:8px}
.pf-foot a{display:inline-flex;align-items:center;gap:4px;text-decoration:none;font-weight:500}
.empty-mini{display:flex;align-items:center;gap:12px;padding:16px;color:var(--muted);font-size:var(--fs-14);border-style:dashed}
.empty-mini svg{color:var(--faint);flex:none}
.end-list{display:flex;flex-direction:column;gap:2px}
.end{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:var(--r-0)}
.end:hover{background:var(--hover)}
.end a{color:var(--text);text-decoration:none}
.end p{margin:2px 0 0;color:var(--muted);font-size:var(--fs-14)}
.rbx-who{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--border);border-radius:var(--r-0);text-decoration:none;color:var(--text);background:var(--surface2)}
.rbx-who img{width:48px;height:48px;border-radius:var(--r-0);background:var(--surface3)}
.rbx-who>div{display:flex;flex-direction:column;flex:1;min-width:0}
.rbx-who>svg{color:var(--faint)}
.grp-list{display:flex;flex-direction:column;gap:2px}
.grp{display:flex;align-items:center;gap:12px;padding:8px 8px;border-radius:var(--r-0);text-decoration:none;color:var(--text)}
.grp:hover{background:var(--hover)}
.grp>div{display:flex;flex-direction:column}
.grp b{font-size:var(--fs-13);font-weight:600}
.grp-ic{width:30px;height:30px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--surface3);font-weight:600;font-size:var(--fs-13);flex:none}
.ep-row{display:flex;gap:16px;align-items:flex-start}
.ep-row .prof-av{margin-top:4px}
.av-seg{display:flex;flex-wrap:wrap}.av-seg button{flex:1}
.swatches{display:flex;flex-wrap:wrap;gap:8px}
.sw{width:30px;height:30px;border-radius:50%;border:2px solid var(--surface);box-shadow:none;outline:1px solid var(--border2);outline-offset:0;cursor:pointer;display:grid;place-items:center;color:var(--muted)}
.sw.none{background:var(--surface2)}
.sw.on{box-shadow:none;outline:2px solid var(--text);outline-offset:0}
.rbx-intro{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border);font-size:var(--fs-14);line-height:1.5}
.rbx-big{width:44px;height:44px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--text);color:var(--bg2);flex:none}
.rbx-steps{list-style:none;counter-reset:s;padding:0;margin:16px 0;display:flex;flex-direction:column;gap:8px}
.rbx-steps li{counter-increment:s;display:flex;align-items:center;gap:12px;color:var(--muted);font-size:var(--fs-14)}
.rbx-steps li::before{content:counter(s);width:22px;height:22px;border-radius:var(--r-0);display:grid;place-items:center;font-size:var(--fs-12);font-weight:600;background:var(--surface3);color:var(--muted);flex:none}
.rbx-steps li.on{color:var(--text)}.rbx-steps li.on::before{background:var(--accent);color:var(--accent-ink)}
.rbx-steps li.done::before{content:"✓";background:var(--ok);color:var(--accent-ink)}
.rbx-phrase{display:flex;align-items:center;gap:12px;padding:12px 12px 12px 12px;border:1.5px dashed var(--accent-line);background:var(--accent-soft);border-radius:var(--r-0)}
.rbx-phrase code{flex:1;font-family:var(--mono);font-size:var(--fs-14);font-weight:600;color:var(--text);word-break:break-word}
.rbx-linked{display:flex;align-items:center;gap:12px}
.rbx-linked img{width:64px;height:64px;border-radius:var(--r-0);background:var(--surface3)}
.rbx-linked.sm img{width:40px;height:40px;border-radius:var(--r-0)}
.rbx-linked.sm{margin-bottom:12px}
.ok-t{color:var(--ok);display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-weight:600}
.warn-t{color:var(--warn);display:inline-flex;align-items:center;gap:8px}
.pf-drop{width:100%;aspect-ratio:16/8;border:1.5px dashed var(--border2);border-radius:var(--r-0);background:var(--surface2);display:grid;place-items:center;cursor:pointer;color:var(--muted);margin-bottom:12px;overflow:hidden;padding:0}
.pf-drop span{display:flex;flex-direction:column;align-items:center;gap:4px}
.pf-drop small{color:var(--faint)}
.pf-drop img{width:100%;height:100%;object-fit:cover}
.games-sec{margin:0 0 16px}
.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.game{display:flex;align-items:center;gap:12px;padding:12px;background:var(--card-bg);border:1px solid var(--card-line);border-radius:var(--r-0);box-shadow:none}
.game-ic{width:56px;height:56px;border-radius:var(--r-0);overflow:hidden;background:var(--surface3);display:grid;place-items:center;flex:none;color:var(--faint)}
.game-ic img{width:100%;height:100%;object-fit:cover}
.game-n{display:block;font-weight:600;color:var(--text);text-decoration:none;font-size:var(--fs-14)}
.game-n:hover{text-decoration:underline}
.game-st{display:flex;flex-wrap:wrap;gap:12px;font-size:var(--fs-13);color:var(--muted);margin-top:4px}
.game-st span{display:inline-flex;align-items:center;gap:4px}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);display:inline-block;box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
#lg-prev .game{margin-top:4px}
@media (max-width:980px){.prof-grid{grid-template-columns:minmax(0,1fr)}.rep-row{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.rep-row{grid-template-columns:repeat(2,minmax(0,1fr))}.prof-banner{height:120px}.prof-top{padding:0 16px;margin-top:-48px}.prof-av-l .avatar.xl{width:88px;height:88px;font-size:var(--fs-24)}.prof-id{padding:12px 16px 16px}.prof-id h1{font-size:var(--fs-20)}.ep-row{flex-direction:column;gap:8px}}

.ml-total{display:flex;align-items:center;gap:8px;font-size:var(--fs-13);color:var(--muted);padding:2px 8px 12px;border-bottom:1px solid var(--border);margin:0 0 8px}
.ml-total svg{color:var(--faint)}
.ml-on{margin-left:auto;display:inline-flex;align-items:center;gap:4px}.ml-on i{width:7px;height:7px;border-radius:var(--r-0);background:var(--ok)}
.chs-tt{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.chs-tt small{font-size:var(--fs-12);font-weight:500;color:var(--faint)}
.chs-banner{height:84px;flex:none;position:relative;background:var(--wa,var(--accent));overflow:hidden}
.chs-banner img{width:100%;height:100%;object-fit:cover;display:block}
.chs-head.on-banner{margin-top:-56px;border-bottom:0;background:transparent;position:relative;z-index:1}
.chs-head.on-banner .chs-title{color:var(--accent-ink);text-shadow:none}
.chs-head.on-banner .chs-tt small{color:var(--accent-ink);opacity:.85}
.chs-head.on-banner .chs-title:hover{background:rgba(255,255,255,.12)}

/* roles */
.role-list{display:flex;flex-direction:column;gap:8px}
.role-row{display:flex;align-items:center;gap:12px;padding:12px 12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface)}
.role-row:hover{border-color:var(--border2)}
.role-dot{width:14px;height:14px;border-radius:50%;flex:none;box-shadow:none;outline:2px solid var(--surface2);outline-offset:0}
.role-ord{display:flex;gap:0}.role-ord .btn{width:30px;min-width:30px;height:30px;min-height:30px}
.role-chip.big{font-size:var(--fs-14);padding:4px 12px 4px 12px}.role-chip.big i{width:11px;height:11px}
.re-prev{display:flex;justify-content:center;padding:16px;margin:0 0 12px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border)}
.sw-in{width:30px;height:30px;padding:0;border:2px solid var(--surface);border-radius:50%;box-shadow:none;outline:1px solid var(--border2);outline-offset:0;cursor:pointer;background:none;overflow:hidden}
.sw-in::-webkit-color-swatch-wrapper{padding:0}.sw-in::-webkit-color-swatch{border:0;border-radius:50%}
.toggle-row,.perm-row{display:flex;gap:12px;align-items:flex-start;padding:12px 12px;border:1px solid var(--border);border-radius:var(--r-0);cursor:pointer;margin-bottom:8px;background:var(--surface)}
.toggle-row input,.perm-row input{margin-top:4px;accent-color:var(--accent);width:16px;height:16px;flex:none}
.toggle-row span,.perm-row span{display:flex;flex-direction:column;gap:1px}
.toggle-row small,.perm-row small{font-size:var(--fs-13)}
.perm-row:has(input:checked){border-color:var(--accent-line);background:var(--accent-soft)}
.perm-row.dis{opacity:.55;cursor:not-allowed}
.re-mem{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.re-mem.col{grid-template-columns:minmax(0,1fr)}
.re-m{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--r-0);cursor:pointer;font-size:var(--fs-14);background:var(--surface)}
.re-m input{accent-color:var(--accent)}
.re-m:has(input:checked){border-color:var(--accent-line);background:var(--accent-soft)}
.role-pick i{width:9px;height:9px;border-radius:var(--r-0);display:inline-block}

/* ---------------- friends, messages, inbox (PartCrew 9) ---------------- */
.hub-page .tabs{max-width:none;margin:0 0 16px;padding:0;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none;gap:2px}
.hub-page .tabs::-webkit-scrollbar{display:none}
.hub-page .tabs a{padding:12px 12px;white-space:nowrap;margin-bottom:-1px}
.hub-page .tabs a .nav-badge{background:var(--busy);color:var(--accent-ink);margin-left:2px}
.hub-page .tabs a.tab-add{color:var(--ok)}
.hub-page .tabs a.tab-add.on{border-bottom-color:var(--ok)}
.fr-list,.ib-list,.dm-home-list{padding:8px;display:flex;flex-direction:column;gap:2px}
.fr-row{display:flex;align-items:center;gap:12px;padding:8px 8px;border-radius:var(--r-0);transition:background .1s}
.fr-row:hover{background:var(--hover)}
.fr-who{display:flex;align-items:center;gap:12px;flex:1;min-width:0;border:0;background:none;color:var(--text);cursor:pointer;text-align:left;padding:4px 0;font:inherit}
.fr-who .avatar{width:36px;height:36px;border-radius:50%;font-size:var(--fs-14)}
.fr-txt{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.fr-acts{display:flex;gap:8px;align-items:center;flex:none}
.fr-acts .icon-btn{width:36px;height:36px;border-radius:var(--r-0);background:var(--surface2)}
.fr-acts .icon-btn:hover{background:var(--surface3);color:var(--text)}
.fr-add{padding:16px}
.fr-add h2{margin:0 0 4px;font-size:var(--fs-16)}
.fr-add p{margin:0 0 12px}
.fr-add-row{display:flex;gap:12px;align-items:center}
.fr-add-row .grow{flex:1;min-width:0}
.av-wrap .presence{box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0}
.av-wrap .presence.on{background:var(--ok)}
/* messages */
.dm-list{display:flex;flex-direction:column;gap:1px;padding-bottom:12px}
.dm-none{padding:4px 12px}
.dm-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:var(--r-0);color:var(--muted);text-decoration:none;min-width:0}
.dm-row:hover{background:var(--hover);color:var(--text)}
.dm-row.on{background:var(--sel);color:var(--sel-ink)}
.dm-row.unread b{color:var(--text)}
.dm-row .avatar.sm{width:32px;height:32px;border-radius:50%;font-size:var(--fs-12)}
.dm-txt{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.3}
.dm-txt b{font-weight:600;font-size:var(--fs-14)}
.dm-txt .small{color:var(--faint)}
.dm-row.unread .dm-txt .small{color:var(--muted);font-weight:500}
.dm-row .nav-badge{background:var(--busy);color:var(--accent-ink)}
.dm-gav{position:relative;width:32px;height:32px;flex:none;display:inline-grid;place-items:center;border-radius:50%;background:var(--surface3);color:var(--muted)}
.dm-gav .avatar{position:absolute;width:22px;height:22px;border-radius:50%;font-size:var(--fs-12);box-shadow:none;outline:2px solid var(--chs-bg);outline-offset:0}
.dm-gav .avatar:first-child{left:0;top:0}.dm-gav .avatar:nth-child(2){right:0;bottom:0}
.dm-gav.big{width:auto;height:auto;background:none;display:flex}
.dm-gav.big .avatar{position:static;width:56px;height:56px;font-size:var(--fs-20);margin-left:-12px;box-shadow:none;outline:2px solid var(--main-bg);outline-offset:0}
.dm-gav.big .avatar:first-child{margin-left:0}
.dm-home-list .dm-row{padding:12px 12px}
.dm-home-list .dm-row .avatar.sm,.dm-home-list .dm-gav{width:40px;height:40px}
.dc.hub .page.hub-page.dm-page{max-width:none;padding:0;height:100%;display:flex;flex-direction:column}
.dm-page .dm-chat{height:100%}
.dm-welcome{padding:32px 16px 12px}
.dm-welcome .avatar.xl{border-radius:50%}
.dm-chat .m-name{color:var(--text);text-decoration:none}
.dm-chat .m-name:hover{text-decoration:underline}
.dm-chat .m-av{text-decoration:none}
.dm-picked{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.dm-picked:empty{display:none}
.dm-chip{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--text);border-radius:var(--r-0);padding:4px 8px 4px 4px;font-size:var(--fs-13);cursor:pointer}
.dm-chip .avatar{border-radius:50%}
/* inbox */
.ib-row{display:flex;align-items:flex-start;gap:12px;width:100%;padding:12px;border:0;background:none;border-radius:var(--r-0);color:var(--text);text-align:left;font:inherit;font-size:var(--fs-14)}
.ib-row.click{cursor:pointer}
.ib-row.click:hover{background:var(--hover)}
.ib-row.unread{background:var(--accent-soft)}
.ib-row.unread:hover{background:var(--sel)}
.ib-av{position:relative;flex:none}
.ib-av .avatar.sm{width:36px;height:36px;border-radius:50%;font-size:var(--fs-13)}
.ib-av .n-ico{width:36px;height:36px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--surface2);color:var(--muted)}
.ib-k{position:absolute;right:-4px;bottom:-4px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0}
.ib-k svg{width:11px;height:11px}
.ib-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.ib-txt .n-text{overflow-wrap:anywhere}
.ib-list .ib-row .n-ico{flex:none}
@media (max-width:640px){.fr-add-row{flex-direction:column;align-items:stretch}.hub-page .tabs{margin-bottom:12px}}
.hub-link .nav-badge{background:var(--busy);color:var(--accent-ink)}

/* ---------------- slash commands + rich cards (PartCrew 9.5) ---------------- */
.composer{position:relative}
.cmd-pop button{display:flex;align-items:center;gap:8px}
.cmd-pop small{color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmd-pop .cmd-arg{color:var(--muted)}
.cmd-ic{width:26px;height:26px;flex:none;border-radius:var(--r-0);display:inline-grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.cmd-help{display:flex;flex-direction:column;gap:12px}
.cmd-h-row{display:flex;gap:12px;align-items:flex-start}
.m-card{margin-top:4px}
.rcard{max-width:420px;border:1px solid var(--card-line);background:var(--card-bg);border-radius:var(--r-0);box-shadow:none;overflow:hidden}
.rc-band{display:flex;align-items:center;gap:8px;font-size:var(--fs-12);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface2)}
.rc-top{display:flex;gap:12px;align-items:center;padding:12px 12px 0}
.rc-av{width:64px;height:64px;border-radius:50%;flex:none;background:var(--surface3);object-fit:cover;display:grid;place-items:center;color:var(--muted)}
.rc-icon{width:72px;height:72px;border-radius:var(--r-0);flex:none;background:var(--surface3);object-fit:cover;display:grid;place-items:center;color:var(--muted)}
.rc-id{display:flex;flex-direction:column;min-width:0;gap:1px}
.rc-id b{font-size:var(--fs-16);letter-spacing:-.01em}
.rc-bio{margin:12px 12px 0;font-size:var(--fs-13);color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.rc-groups{display:flex;flex-direction:column;gap:4px;margin:12px 12px 0}
.rc-grp{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--text);font-size:var(--fs-13);padding:4px 8px;border-radius:var(--r-0);min-width:0}
.rc-grp:hover{background:var(--hover)}
.rc-grp .grp-ic{width:24px;height:24px;border-radius:var(--r-0);flex:none;display:grid;place-items:center;background:var(--surface3);color:var(--muted);font-weight:600;font-size:var(--fs-12)}
.rc-grp small{color:var(--faint);margin-left:8px}
.rc-stats{display:flex;flex-wrap:wrap;gap:12px;font-size:var(--fs-13);color:var(--muted);margin-top:4px}
.rc-stats span{display:inline-flex;align-items:center;gap:4px}
.live-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);display:inline-block}
.rc-acts{display:flex;gap:8px;flex-wrap:wrap;padding:12px}
.rc-acts .btn{text-decoration:none}

/* ---------------- supporter tiers (PartCrew 9.6) ---------------- */
:root{--qr-bg:#ffffff;--gold-soft:#fff7e0;--gold-line:#f1d48a;--gold-ink:#8a5a00;--pro-soft:#eef1fe;--pro-ink:#3b5cf5;--plus-soft:#effaf5;--plus-ink:#0f7a4a;--staff-soft:#e9f2ff;--staff-ink:#1d4ed8;--staff-line:#bcd3ff}
[data-theme=dark]{--qr-bg:#ffffff;--gold-soft:#2a210b;--gold-line:#6b5216;--gold-ink:#f2c94c;--pro-soft:#171f3a;--pro-ink:#8ba1ff;--plus-soft:#0f241a;--plus-ink:#4ade80;--staff-soft:#13213d;--staff-ink:#93b4ff;--staff-line:#2c4677}
.staff-badge{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;letter-spacing:.02em;padding:2px 8px;border-radius:var(--r-0);background:var(--staff-soft);color:var(--staff-ink);border:1px solid var(--staff-line);vertical-align:middle;white-space:nowrap}
.staff-badge.mini{padding:1px 4px;font-size:var(--fs-12);margin-left:4px}
.staff-badge.mini span{display:none}
.prof-id h1 .staff-badge{font-size:var(--fs-12)}
.founder-frame .avatar.xl{box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0}
.staff-card h2{display:flex;align-items:center;gap:8px;color:var(--staff-ink)}
.up-hero{margin-bottom:16px}
.up-status{display:flex;align-items:center;gap:12px;padding:12px 12px;border-radius:var(--r-0);border:1px solid var(--gold-line);background:var(--gold-soft);color:var(--text);margin-bottom:16px;font-size:var(--fs-14)}
.up-status svg{color:var(--gold-ink);flex:none}
.up-status.staff{border-color:var(--staff-line);background:var(--staff-soft)}
.up-status.staff svg{color:var(--staff-ink)}
.tier-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
.tier-card{position:relative;background:var(--card-bg);border:1px solid var(--card-line);border-radius:var(--r-0);padding:24px 16px;box-shadow:none;display:flex;flex-direction:column;gap:8px;transition:transform .15s,box-shadow .15s}
.tier-card:hover{transform:translateY(-2px);box-shadow:none}
.tier-card.best{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:0}
.best-tag{position:absolute;top:-11px;left:50%;transform:translateX(-50%);background:var(--accent);color:var(--accent-ink);font-size:var(--fs-12);font-weight:600;letter-spacing:.03em;padding:4px 12px;border-radius:var(--r-0);white-space:nowrap}
.tc-head{display:flex;align-items:center;gap:12px}
.tc-head h2{margin:0;font-size:var(--fs-16)}
.tc-ic{width:36px;height:36px;border-radius:var(--r-0);display:inline-grid;place-items:center;flex:none}
.tc-ic.sm{width:28px;height:28px;border-radius:var(--r-0)}
.t-plus .tc-ic,.tc-ic.t-plus{background:var(--plus-soft);color:var(--plus-ink)}
.t-pro .tc-ic,.tc-ic.t-pro{background:var(--pro-soft);color:var(--pro-ink)}
.t-founder .tc-ic,.tc-ic.t-founder{background:var(--gold-soft);color:var(--gold-ink)}
.tc-price{display:flex;align-items:baseline;gap:8px;margin-top:8px}
.tc-price b{font-size:var(--fs-24);letter-spacing:-.03em;font-weight:600}
.tc-sub{margin:0 0 12px}
.tc-buy{margin-bottom:8px}
.tier-card.owned .tc-buy{opacity:1}
.perks{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:var(--fs-13)}
.perks li{display:flex;align-items:flex-start;gap:8px}
.perks li svg{flex:none;margin-top:2px;color:var(--ok)}
.perks li.soon{color:var(--muted)}
.perks li.soon svg{color:var(--faint)}
.perks em{margin-left:auto;font-style:normal;font-size:var(--fs-12);font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--faint);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:1px 8px;white-space:nowrap;flex:none}
.up-reqs,.up-gp{margin-top:16px;padding:16px 16px}
.up-req{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--border)}
.up-req:first-of-type{border-top:0}
.req-st{font-size:var(--fs-12);font-weight:600;padding:2px 8px;border-radius:var(--r-0);background:var(--surface2);color:var(--muted)}
.req-st.st-approved{background:var(--ok-soft);color:var(--ok)}
.req-st.st-pending{background:var(--warn-soft);color:var(--warn)}
.req-st.st-rejected{background:var(--busy-soft);color:var(--busy)}
.up-fine{margin:16px 0 0;max-width:760px}
.pay-sum{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface2);margin-bottom:12px}
.pay-amt{font-size:var(--fs-20)}
.pay-seg{margin-bottom:12px}
.pay-steps{margin:0;padding:0;list-style:none;counter-reset:st;display:flex;flex-direction:column;gap:12px}
.pay-steps>li{counter-increment:st;display:flex;gap:12px}
.pay-steps>li::before{content:counter(st);width:24px;height:24px;flex:none;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:var(--fs-13);display:grid;place-items:center}
.pay-steps>li>div{flex:1;min-width:0}
.pay-cash{display:flex;gap:12px;align-items:center;margin-top:12px;flex-wrap:wrap}
.pay-qr{width:132px;height:132px;border-radius:var(--r-0);border:1px solid var(--border);background:var(--qr-bg);object-fit:contain;padding:8px}
.pay-cash-b{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.pay-note{display:flex;align-items:center;gap:8px;margin:8px 0 4px;padding:8px 12px;border:1px dashed var(--border2);border-radius:var(--r-0);background:var(--surface2);justify-content:space-between;flex-wrap:wrap}
.pay-ok{text-align:center}.pay-ok .es-icon{margin:0 auto 12px}
.dev-buy .buy-li{align-items:flex-start;gap:12px}
.buy-acts{display:flex;gap:8px;flex:none}
.buy-li.approved{opacity:.8}.buy-li.rejected,.buy-li.cancelled{opacity:.6}
.tier-form .tf-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.qr-row{display:flex;gap:12px;align-items:flex-start}
.qr-prev{width:110px;height:110px;border-radius:var(--r-0);border:1px solid var(--border);background:var(--qr-bg);object-fit:contain;padding:4px;flex:none}
.tag.tier-tag{margin-left:4px}
.tag.tier-tag.t-founder{background:var(--gold-soft);color:var(--gold-ink);border-color:var(--gold-line)}
.tag.tier-tag.t-pro{background:var(--pro-soft);color:var(--pro-ink)}
.tag.tier-tag.t-plus{background:var(--plus-soft);color:var(--plus-ink)}
@media (max-width:900px){.tier-grid{grid-template-columns:1fr;gap:24px}.tier-form .tf-row{grid-template-columns:1fr}}

/* ---------------- threads (PartCrew 9.7) ---------------- */
.m-thread{display:inline-flex;align-items:center;gap:8px;margin-top:8px;padding:4px 12px 4px 8px;border:1px solid var(--border);background:var(--surface2);border-radius:var(--r-0);font-size:var(--fs-13);color:var(--text);cursor:pointer;max-width:100%}
.m-thread svg{color:var(--accent)}
.m-thread b{font-weight:600;color:var(--accent)}
.m-thread:hover{border-color:var(--accent-line);background:var(--accent-soft)}
.m-thread svg:last-child{color:var(--faint)}
.thread-panel{width:400px;flex:none;display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--main-bg);min-height:0;animation:thin .18s ease-out}
@keyframes thin{from{transform:translateX(16px);opacity:0}}
.dc.thread-open .mlist{display:none}
.th-head{display:flex;align-items:center;gap:12px;padding:0 12px 0 16px;height:52px;border-bottom:1px solid var(--border);flex:none}
.th-head b{font-size:var(--fs-14)}
.th-box{flex:1;min-height:0;overflow-y:auto;padding:8px 0}
.th-msg{display:grid;grid-template-columns:40px minmax(0,1fr);gap:0 12px;padding:8px 16px;position:relative}
.th-msg:hover{background:var(--hover)}
.th-msg .m-av{grid-row:span 2;border:0;background:none;padding:0;cursor:pointer;align-self:start}
.th-msg .m-acts{position:absolute;right:12px;top:-10px;display:none}
.th-msg:hover .m-acts{display:flex}
.th-root{padding-top:12px;padding-bottom:12px}
.th-root:hover{background:none}
.th-div{display:flex;align-items:center;gap:8px;margin:4px 16px 8px;font-size:var(--fs-12);font-weight:600;color:var(--faint)}
.th-div::after{content:"";flex:1;height:1px;background:var(--border)}
.th-comp{margin:0 12px calc(12px + env(safe-area-inset-bottom))}
@media (max-width:820px){
  .thread-panel{position:fixed;inset:0;width:auto;z-index:60;border-left:0;height:var(--app-h,100%)}
  .th-head{padding-top:env(safe-area-inset-top);height:calc(52px + env(safe-area-inset-top))}
}

/* ---------------- discover + branding (PartCrew 9.8) ---------------- */
.disc-hero{position:relative;overflow:hidden;border-radius:var(--r-0);padding:32px 32px;margin-bottom:16px;background:var(--brand-grad);color:var(--accent-ink);display:flex;flex-direction:column;gap:16px}
.disc-hero::after{content:"";position:absolute;inset:0;background:none;pointer-events:none}
.disc-hero h1{margin:0 0 8px;font-size:var(--fs-24);letter-spacing:-.03em}
.disc-hero p{margin:0;opacity:.9;max-width:560px}
.disc-search{position:relative;max-width:560px;z-index:1}
.disc-search span{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--faint);display:flex}
.disc-search .input{padding:12px 12px 12px 48px;border-radius:var(--r-0);border-color:transparent;box-shadow:none;background:var(--surface);color:var(--text)}
.disc-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.disc-chips,.disc-tags{display:flex;flex-wrap:wrap;gap:8px}
.disc-tag{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:var(--r-0);padding:4px 12px;font-size:var(--fs-13);cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.disc-tag:hover{border-color:var(--border2);color:var(--text)}
.disc-tag.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent)}
.disc-sort{margin:0;width:auto}
.disc-sort button{flex:none;padding:8px 12px}
.disc-card .ws-body{gap:8px}
.disc-card p{min-height:2.9em}
.disc-tags .disc-tag{padding:2px 8px;font-size:var(--fs-12)}
.disc-game{display:flex;align-items:center;gap:8px;font-size:var(--fs-13);color:var(--text);padding:8px 8px;border-radius:var(--r-0);background:var(--surface2);min-width:0}
.disc-game img{width:22px;height:22px;border-radius:var(--r-0);flex:none}
.disc-game .faint{margin-left:auto;white-space:nowrap}
.disc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:4px}
.disc-foot .ws-stats{margin:0}
.live-dot.off{background:var(--off)}
.disc-empty{grid-column:1/-1}
.br-prev{margin-bottom:16px}
.br-card{max-width:340px;pointer-events:none}
.br-card p{min-height:0}
.sw-custom{position:relative;overflow:hidden;background:var(--surface2)}
.sw-custom input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.br-disc{border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;margin-top:8px}
@media (max-width:640px){.disc-hero{padding:24px 16px}.disc-hero h1{font-size:var(--fs-24)}}

/* ---- Talent hub (PartCrew 9.9) ---- */
.tl-hero-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;position:relative;z-index:1}
.tl-post{flex:none;background:var(--surface);color:var(--accent);border-color:transparent;box-shadow:none;font-weight:600}
.tl-post:hover{background:var(--accent-soft)}
.tl-tabs{margin-bottom:12px;overflow-x:auto;scrollbar-width:none;width:max-content;max-width:100%}
.tl-tabs::-webkit-scrollbar{display:none}
.tl-tabs button{flex:none}
.tl-skills{margin-bottom:16px;align-items:center;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;-webkit-mask-image:none;mask-image:none}
.tl-skills::-webkit-scrollbar{display:none}
.tl-skills .disc-tag{flex:none}
.tl-sk-l{display:inline-flex;align-items:center;gap:4px;margin-right:2px;flex:none}
.tl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.tl-card{display:flex;flex-direction:column;gap:8px;padding:16px;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;min-width:0}
.tl-card:hover{transform:translateY(-2px);box-shadow:none;border-color:var(--accent-line)}
.tl-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tl-card:active{transform:translateY(0)}
.tl-top,.tl-facts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tl-kind{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;padding:4px 8px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent)}
.tl-kind.k-commission{background:var(--k-bg-fef3c7);color:var(--k-fg-92400e)}
.tl-kind.k-revshare{background:var(--k-bg-ede9fe);color:var(--k-fg-6d28d9)}
.tl-pay{margin-left:auto;font-weight:600;font-size:var(--fs-13);color:var(--text);font-variant-numeric:tabular-nums}
.tl-facts .tl-pay{margin-left:0}
.tl-card .tl-title,.tl-title{margin:2px 0 0;font-size:var(--fs-16);font-weight:600;line-height:1.3;letter-spacing:-.01em;text-transform:none;color:var(--text);overflow-wrap:anywhere}
.tl-who{display:flex;align-items:center;gap:8px;font-size:var(--fs-13);min-width:0;color:var(--text)}
.tl-who.big{margin:12px 0 4px;font-size:var(--fs-14)}
.tl-pic{width:22px;height:22px;border-radius:var(--r-0);font-size:var(--fs-12);flex:none}
.tl-chips{display:flex;flex-wrap:wrap;gap:4px}
.tl-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:8px;border-top:1px solid var(--border)}
.tl-cta{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-13);font-weight:600;color:var(--accent);transition:gap .15s ease}
.tl-card:hover .tl-cta{gap:8px}
.tl-apps{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-13);color:var(--muted)}
.tl-apps.new{color:var(--accent);font-weight:600}
.tl-st{background:var(--surface3);color:var(--muted)}
.tl-st.st-pending{background:var(--accent-soft);color:var(--accent)}
.tl-st.st-accepted,.tl-st.st-completed{background:var(--k-bg-dcfce7);color:var(--k-fg-047857)}
.tl-st.st-rejected{background:var(--k-bg-fee2e2);color:var(--k-fg-b91c1c)}
.tl-st.st-in_progress{background:var(--k-bg-fef3c7);color:var(--k-fg-92400e)}
.tl-empty{grid-column:1/-1}
.tl-mine{grid-column:1/-1;padding:8px}
.tl-app-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;background:transparent;color:var(--text);padding:12px;border-radius:var(--r-0);cursor:pointer;font:inherit}
.tl-app-row:hover{background:var(--hover)}
.tl-app-row+.tl-app-row{border-top:1px solid var(--border)}
.tl-app-row .grow{min-width:0}
.tl-body{margin:12px 0 12px;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text)}
.tl-myapp{margin-top:12px;border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;background:var(--surface2)}
.tl-myapp.st-accepted{border-color:var(--k-bd-a7f3d0)}
.tl-myapp p{margin:8px 0 0}
.tl-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tl-apply-for{display:flex;align-items:center;gap:8px;margin-top:0}
.tl-owner-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0 8px;padding-top:12px;border-top:1px solid var(--border)}
.tl-apps-h{margin:16px 0 12px}
.tl-appls{display:flex;flex-direction:column;gap:12px}
.tl-appl{border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;display:flex;flex-direction:column;gap:8px;background:var(--surface)}
.tl-appl.st-pending{border-color:var(--accent-line)}
.tl-appl.st-rejected{opacity:.72}
.tl-appl-h{display:flex;align-items:center;gap:12px}
.tl-appl-h .grow{min-width:0}
.tl-appl-msg{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}
.tl-appl-meta{display:flex;flex-wrap:wrap;gap:12px;color:var(--muted)}
.tl-appl-meta span,.tl-link{display:inline-flex;align-items:center;gap:4px;min-width:0}
.tl-links{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-13)}
.tl-link{color:var(--accent);max-width:100%}
.tl-appl-act{display:flex;align-items:center;gap:8px}
.tl-kinds{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.tl-kind-pick{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;border:1px solid var(--border2);background:var(--surface);color:var(--text);border-radius:var(--r-0);padding:12px;cursor:pointer;font:inherit;transition:border-color .15s ease,background .15s ease}
.tl-kind-pick:hover{border-color:var(--accent-line)}
.tl-kind-pick.on{border-color:var(--accent);background:var(--accent-soft)}
.tl-kind-pick .i{color:var(--accent)}
.tl-suggest{margin-top:8px}
.tl-hint,.field .tl-hint{display:block;font-style:normal;font-size:var(--fs-13);font-weight:400;color:var(--faint);margin:8px 0 0}
.tl-hint:empty{display:none}
.tl-prof-l{display:flex;flex-direction:column;gap:8px}
.tl-prof-row{display:flex;align-items:center;gap:12px;padding:12px 12px;border:1px solid var(--border);border-radius:var(--r-0);color:var(--text);text-decoration:none;min-width:0}
.tl-prof-row:hover{border-color:var(--accent-line);background:var(--hover)}
.tl-prof-row b{min-width:0}
.tl-suggest .skill{font-size:var(--fs-12);padding:4px 8px}
@media (max-width:640px){
  .tl-hero-row{flex-direction:column}
  .tl-post{width:100%;justify-content:center}
  .tl-grid{grid-template-columns:1fr}
  .tl-kinds{grid-template-columns:1fr}
  .tl-kind-pick{flex-direction:row;align-items:center;flex-wrap:wrap}
  .tl-kind-pick .small{flex-basis:100%}
  .tl-two{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){.tl-card,.tl-card:hover{transition:none;transform:none}}

/* landing: Made for Roblox grid (PartCrew 9.9.1) */
@media (min-width:1000px){.lp-rgrid{grid-template-columns:repeat(3,minmax(0,1fr))}.lp-r{flex-direction:column;gap:12px}}
.lp-r{transition:transform .18s ease,border-color .18s ease}
.lp-r:hover{transform:translateY(-2px);border-color:var(--accent-line)}
@media (prefers-reduced-motion:reduce){.lp-r,.lp-r:hover{transition:none;transform:none}}

/* accessibility pass (PartCrew 9.9.2): readable initials and badges */
.avatar:not(.img):not([title="Unassigned"]){background-image:none!important}
.dot-count{background:#dc2626}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.rail-btn:focus-visible{outline-offset:-2px}
[data-theme=dark] .btn.primary{background:#4562ec;border-color:#4562ec}
[data-theme=dark] .best-tag{background:#4562ec}
[data-theme=dark] .btn.primary:hover{background:#5370f2;border-color:#5370f2}
[data-theme=dark] .tl-kind.k-recruit{color:#93a6ff}
.ok-text{color:var(--k-fg-047857)}
[data-theme=dark] .online{color:#4ade80}

/* mobile pass (PartCrew 9.9.5): bigger touch targets for the small sidebar buttons, without moving anything */
@media (pointer:coarse){
  .cat-act,.ch-gear,#dm-new,.hub-side-h button{position:relative}
  .cat-act::after,.ch-gear::after,#dm-new::after,.hub-side-h button::after{content:"";position:absolute;inset:-7px}
}
@media (max-width:720px){
  .hub-page .tabs{position:static;background:none;backdrop-filter:none;border-top:0;border-bottom:1px solid var(--border);padding:0;justify-content:flex-start;gap:2px;z-index:auto}
  .hub-page .tabs a{flex:none;flex-direction:row;gap:8px;font-size:var(--fs-14);padding:12px 12px;border-radius:0;border-bottom:2px solid transparent;letter-spacing:0}
  .hub-page .tabs a.on{border-bottom-color:var(--accent)}
  .tl-tabs{width:100%}
}

/* Get started checklist on Home (PartCrew 9.9.6) */
.gs-card{padding:16px 16px;margin-bottom:16px;transition:opacity .2s ease,transform .2s ease}
.gs-card.gs-out{opacity:0;transform:translateY(-6px)}
.gs-h{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.gs-h h2{margin:0;font-size:var(--fs-16);letter-spacing:-.01em;text-transform:none;color:var(--text)}
.gs-bar{flex:1;height:6px;border-radius:var(--r-0);background:var(--surface3);overflow:hidden;max-width:220px;margin-left:auto}
.gs-bar i{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .4s ease}
.gs-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.gs-step{display:flex;align-items:center;gap:12px;padding:12px 12px;border:1px solid var(--border);border-radius:var(--r-0);color:var(--text);text-decoration:none;min-width:0;transition:border-color .15s ease,background .15s ease}
.gs-step:hover{border-color:var(--accent-line);background:var(--hover)}
.gs-step .grow{display:flex;flex-direction:column;min-width:0}
.gs-step b{font-size:var(--fs-14)}
.gs-ic{flex:none;width:32px;height:32px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.gs-step.done{opacity:.65}
.gs-step.done .gs-ic{background:var(--k-bg-dcfce7);color:var(--k-fg-047857)}
.gs-step.done b{text-decoration:line-through;text-decoration-color:var(--faint)}
@media (max-width:640px){.gs-list{grid-template-columns:1fr}.gs-bar{max-width:none}}
@media (prefers-reduced-motion:reduce){.gs-card,.gs-bar i,.gs-step{transition:none}}

/* Discover: Hiring chip linking to the workspace's open roles (PartCrew 9.9.7) */
.disc-hiring{display:flex;align-items:center;gap:8px;font-size:var(--fs-13);font-weight:600;color:var(--k-fg-047857);background:var(--k-bg-ecfdf5);border:1px solid var(--k-bd-a7f3d0);padding:4px 8px;border-radius:var(--r-0);text-decoration:none;min-width:0;transition:filter .15s ease}
.disc-hiring:hover{filter:brightness(.97)}
.disc-hiring .ellip{flex:1;min-width:0}

/* names in role colours: slightly deepened in light mode for contrast (PartCrew 9.9.8) */
:root{--name-mix:74%}
[data-theme=dark]{--name-mix:100%}
.tl-short{display:none}
@media (max-width:640px){.tl-tabs .tl-long{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.tl-tabs .tl-short{display:inline}.tl-tabs button{flex:1 0 auto;padding:8px 8px}}
@media (max-width:640px){.dev-buy .buy-li{flex-wrap:wrap}.dev-buy .buy-li .grow{flex:1 1 calc(100% - 50px)}.dev-buy .buy-acts{flex-basis:100%;display:flex;gap:8px;padding-left:48px}.dev-buy .buy-acts .btn{flex:1;justify-content:center}}
/* Talent hub: first-run board (PartCrew 9.9.8) */
.tl-start{grid-column:1/-1;padding:8px 0}
.tl-start-h h2{margin:0 0 4px;font-size:var(--fs-16);letter-spacing:-.01em;text-transform:none;color:var(--text)}
.tl-start-h p{margin:0 0 12px}
.tl-start-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.tl-start-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;text-align:left;font:inherit;color:var(--text);background:var(--surface);border:1px dashed var(--border2);border-radius:var(--r-0);padding:16px;cursor:pointer;transition:border-color .15s ease,transform .15s ease,background .15s ease}
.tl-start-card:hover{border-style:solid;border-color:var(--accent-line);transform:translateY(-2px)}
.tl-start-card .tl-cta{margin-top:auto;padding-top:8px}
.tl-start-ic{width:38px;height:38px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);margin-bottom:4px}
.tl-start-card.k-commission .tl-start-ic{background:var(--k-bg-fef3c7);color:var(--k-fg-92400e)}
.tl-start-card.k-revshare .tl-start-ic{background:var(--k-bg-ede9fe);color:var(--k-fg-6d28d9)}
@media (prefers-reduced-motion:reduce){.tl-start-card,.tl-start-card:hover{transition:none;transform:none}}
.tl-facts .tl-share{margin-left:auto}
.es-acts{gap:8px;justify-content:center}
.hub-page .tabs a.tab-add{color:var(--k-fg-047857)}
[data-theme=dark] .hub-page .tabs a.tab-add{color:#4ade80}
[data-theme=dark] .rail-badge,[data-theme=dark] .hub-link .nav-badge,[data-theme=dark] .dm-row .nav-badge,[data-theme=dark] .hub-page .tabs a .nav-badge{background:#e11d48}
@media (pointer:coarse){.disc-tag{min-height:30px;padding-left:12px;padding-right:12px}.disc-tags .disc-tag{min-height:26px}}

/* ---- supporter perks (PartCrew 9.10) ---- */
.pt-ocean{--pt:#2563eb}
.pt-sunset{--pt:#db2777}
.pt-forest{--pt:#0f766e}
.pt-midnight{--pt:#312e81}
.pt-candy{--pt:#a855f7}
.pt-aurora{--pt:#6366f1}
.pt-ember{--pt:#dc2626}
.pt-gold{--pt:#eab308}
.prof-banner.pt,.pc-banner.pt{background:var(--pt)!important}
.prof-banner.pt::after,.pc-banner.pt::after{content:"";position:absolute;inset:0;background:none;pointer-events:none}
.prof-banner.pt,.pc-banner.pt{position:relative}
.prof-status{display:inline-flex;align-items:center;gap:8px;margin-top:8px;padding:4px 12px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border);font-size:var(--fs-13);color:var(--text);max-width:100%}
.prof-status span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-status{margin-top:8px;font-size:var(--fs-13);color:var(--text);padding:8px 8px;border-radius:var(--r-0);background:var(--surface2);overflow-wrap:anywhere}
.founder-name{background-image:none;background-size:200% auto;-webkit-background-clip:border-box;background-clip:border-box;-webkit-text-fill-color:currentColor;animation:fname 5s linear infinite}
[data-theme=dark] .founder-name{background-image:#d97706}
@keyframes fname{to{background-position:200% center}}
@media (prefers-reduced-motion:reduce){.founder-name{animation:none}}
.tier-mini{display:inline-block;font-size:var(--fs-12);font-weight:600;letter-spacing:.03em;text-transform:uppercase;padding:1px 8px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent);margin-left:8px;vertical-align:1px}
.tier-mini.founder{background:var(--k-bg-fef3c7);color:var(--k-fg-92400e)}
.perk-lock{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-13);color:var(--muted);text-decoration:none;padding:8px 12px;border:1px dashed var(--border2);border-radius:var(--r-0)}
.perk-lock:hover{color:var(--accent);border-color:var(--accent-line)}
.theme-pick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.tp{width:44px;height:30px;border-radius:var(--r-0);border:2px solid transparent;cursor:pointer;background:var(--pt);display:grid;place-items:center;color:var(--muted);transition:transform .12s ease}
.tp.none{background:var(--surface2);border-color:var(--border2)}
.tp:hover{transform:translateY(-1px)}
.tp.on{border-color:var(--text);box-shadow:none;outline:2px solid var(--surface);outline-offset:0}
.setting.lab{padding:8px 0}
.lab-compact .msg.start{margin-top:8px}
.lab-compact .msg{padding-top:0;padding-bottom:0}
.lab-compact .m-text{line-height:1.4}

/* Pro tools (9.11) */
.pt-wrap{display:flex;flex-direction:column;gap:12px}
.pt-tile{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 16px;border:1px solid var(--accent-line);border-radius:var(--r-0);background:var(--accent-soft);color:var(--text);cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}
.pt-tile:hover{transform:translateY(-1px);border-color:var(--accent);box-shadow:none}
.pt-tile>.i:first-child{color:var(--accent);flex:none}
.pt-tile div{flex:1;min-width:0}.pt-tile b{display:block;font-size:var(--fs-14)}.pt-tile span{font-size:var(--fs-13);color:var(--muted)}
.pt-sec{border:1px solid var(--border);border-radius:var(--r-0);padding:12px 16px;background:var(--surface)}
.pt-sec h3{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:var(--fs-14)}
.pt-sec h3 .i{color:var(--accent)}
.pt-sec p{margin:0 0 12px}
.pt-sec select.input{flex:1;min-width:0}
.pt-copy{display:flex;gap:8px;margin:4px 0 8px}.pt-copy .input{flex:1;min-width:0;font-size:var(--fs-13)}
.pt-new{border:1px dashed var(--accent-line);border-radius:var(--r-0);padding:12px;margin-bottom:12px;background:var(--surface2)}
.pt-new b{display:flex;align-items:center;gap:8px;color:var(--green)}
.pt-list{display:flex;flex-direction:column;gap:8px}
.pt-item{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:var(--r-0);background:var(--surface2)}
.pt-item b{display:block;font-size:var(--fs-13)}.pt-item span{display:block}
.pt-up{text-align:center;padding:8px 8px}.pt-up>.i{color:var(--accent)}.pt-up h3{margin:8px 0 8px}
.ti-chart{display:flex;align-items:flex-end;gap:4px;height:110px;margin:16px 0 4px;padding:12px;border-radius:var(--r-0);background:var(--surface2)}
.ti-chart i{flex:1;min-height:3px;height:calc(var(--v) * 100%);border-radius:var(--r-0);background:var(--brand-grad, var(--accent));opacity:.9;transition:opacity .15s;animation:ti-grow .6s cubic-bezier(.2,.8,.2,1) both}
.ti-chart i:hover{opacity:1}
@keyframes ti-grow{from{transform:scaleY(0);transform-origin:bottom}to{transform:scaleY(1);transform-origin:bottom}}
.ti-axis{display:flex;justify-content:space-between;margin-bottom:12px}
.ti-people{display:flex;flex-direction:column;gap:4px}
.ti-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:var(--r-0);transition:background .15s}
.ti-row:hover{background:var(--surface2)}
.ti-row b{display:block;font-size:var(--fs-14)}.ti-row .small{display:block}
.ti-rank{width:18px;text-align:center;font-weight:600;color:var(--faint);font-size:var(--fs-13)}
.ti-av{width:30px;height:30px;font-size:var(--fs-12);flex:none}
.ti-n{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-13);color:var(--muted);min-width:44px;justify-content:flex-end}
@media (max-width:560px){.ti-n:nth-of-type(n+3){display:none}.pt-copy{flex-direction:column}}
@media (prefers-reduced-motion:reduce){.ti-chart i{animation:none}}

/* Planner priority + labels, honeycomb colours (9.12) */
.ktags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px;align-items:center}
.kcard .ktags .hexchip{margin-top:0}
dd.ktags{margin-top:0}
.pri{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;letter-spacing:.01em;border-radius:var(--r-0);padding:1px 8px 1px 4px;border:1px solid transparent}
.pri-urgent{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--red);border-color:color-mix(in srgb,var(--red) 30%,transparent)}
.pri-high{background:color-mix(in srgb,var(--amber) 16%,transparent);color:color-mix(in srgb,var(--amber) 70%,var(--text));border-color:color-mix(in srgb,var(--amber) 30%,transparent)}
.pri-medium{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-line)}
.pri-low{background:var(--surface3);color:var(--muted)}
.pri-low .i{transform:rotate(180deg)}
.tlabel{display:inline-flex;align-items:center;font-size:var(--fs-12);font-weight:600;border-radius:var(--r-0);padding:1px 8px;background:hsl(var(--lh) 80% 50% / .13);color:hsl(var(--lh) 55% 38%);border:1px solid hsl(var(--lh) 70% 50% / .25)}
[data-theme=dark] .tlabel{color:hsl(var(--lh) 80% 75%);background:hsl(var(--lh) 70% 50% / .18)}
.task .meta .pri,.task .meta .tlabel{margin-left:2px}
.pro-hint{display:flex;align-items:center;gap:8px;margin:0 0 12px}
.pro-hint .i{color:var(--accent);flex:none}
.sw.auto{background:var(--surface2)}
.sw.custom{position:relative;overflow:hidden;background:var(--surface2);color:var(--surface)}
.sw.custom input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%}
.sw{transition:transform .12s,box-shadow .12s}.sw:hover{transform:scale(1.08)}

/* =====================================================================
   Design v4 (PartCrew 10): one design system for every screen. Type scale, spacing, radii, layered shadows and
   motion tokens; crisper blue-white neutrals; glass chrome; springy feedback on everything you can press.
   Light values live in :root, dark values in [data-theme=dark] right below.
   ===================================================================== */
:root{
  --fs-xs:12px; --fs-sm:13px; --fs-md:14px; --fs-lg:16px; --fs-xl:20px; --fs-2xl:24px; --fs-3xl:24px;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-8:32px;
  --r-xs:0; --r-sm:0; --r-md:0; --r-lg:0; --r-xl:0; --r-2xl:0; --radius:0;
  --ease:cubic-bezier(.2,.8,.2,1); --ease-spring:cubic-bezier(.34,1.56,.64,1); --dur-1:.12s; --dur-2:.2s; --dur-3:.36s;
  --bg:#f5f7fb; --bg2:#ffffff; --surface:#ffffff; --surface2:#f3f5f9; --surface3:#e9edf4; --border:#e3e7ef; --border2:#d4dae5;
  --text:#0a0f1c; --muted:#525b6e; --faint:#687083;
  --accent:#3b5cf5; --accent-hover:#2f4ee0; --accent-soft:#eef2ff; --accent-line:#c9d4fd; --ring:rgba(59,92,245,.22);
  --rail-bg:#eaedf3; --chs-bg:#f7f8fb; --main-bg:#ffffff; --hover:#eef1f6; --sel:#e4eafe; --sel-ink:#132060;
  --shadow:none;
  --shadow-md:none;
  --shadow-lg:none;
  --shadow-pop:0 4px 16px rgba(0,0,0,.35);
  --glow:none;
  --glass:rgba(255,255,255,.72); --glass-line:rgba(15,23,42,.07);
  --lp-aur1:rgba(13,186,252,.28); --lp-aur2:rgba(127,61,255,.22); --lp-aur3:rgba(59,92,245,.22);
  --spot:rgba(59,92,245,.10); --float-bg:rgba(255,255,255,.88); --k-tint:#ffffff;
}
[data-theme=dark]{
  --bg:#090b11; --bg2:#0f121a; --surface:#12151d; --surface2:#181c26; --surface3:#212633; --border:#222735; --border2:#2e3445;
  --text:#eef0f5; --muted:#a3a9b8; --faint:#858c9c;
  --accent:#6382ff; --accent-hover:#7591ff; --accent-soft:#161e3b; --accent-line:#2d3b78; --ring:rgba(110,140,255,.36);
  --rail-bg:#07090e; --chs-bg:#0d1017; --main-bg:#12151d; --hover:#1a1f2a; --sel:#1f2846; --sel-ink:#eef1ff;
  --shadow:none;
  --shadow-md:none;
  --shadow-lg:none;
  --shadow-pop:0 4px 16px rgba(0,0,0,.35);
  --glow:none;
  --glass:rgba(14,17,24,.72); --glass-line:rgba(255,255,255,.07);
  --lp-aur1:rgba(13,186,252,.16); --lp-aur2:rgba(127,61,255,.20); --lp-aur3:rgba(59,92,245,.18);
  --spot:rgba(110,140,255,.12); --float-bg:rgba(20,24,34,.9); --k-tint:#c7d2ff;
}
body{font-feature-settings:"cv02","cv03","cv04","cv11","ss01";letter-spacing:-.006em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1{letter-spacing:-.03em} h2,h3{letter-spacing:-.022em}

/* ---- press + hover feedback ---- */
.btn{border-radius:var(--r-0);transition:background var(--dur-1),border-color var(--dur-1),color var(--dur-1),box-shadow var(--dur-2) var(--ease),transform var(--dur-1) var(--ease)}
.btn:hover{border-color:var(--border2)}
.btn:active:not(:disabled){transform:scale(.97)}
.btn.primary{background:var(--accent);border-color:var(--accent)}
.btn.primary:hover{background:var(--accent);transform:translateY(-1px)}
.btn.primary:active:not(:disabled){transform:scale(.97)}
.btn.lg{border-radius:var(--r-0)}
.btn.ghost:hover{background:var(--hover)}
.icon-btn{border-radius:var(--r-0)}
.input,select.input,textarea.input{border-radius:var(--r-0);transition:border-color var(--dur-1),box-shadow var(--dur-2) var(--ease),background var(--dur-1)}
.input:hover{border-color:color-mix(in srgb,var(--border2) 60%,var(--accent))}
.input:focus{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.card{border-radius:var(--r-0)}

/* ---- modals and sheets: scale in, blurred backdrop ---- */
.scrim{backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);animation:v4-fade var(--dur-2) var(--ease)}
.sheet{border-radius:var(--r-0);box-shadow:none;border:1px solid var(--glass-line);animation:v4-pop var(--dur-3) var(--ease-spring)}
@keyframes v4-fade{from{opacity:0}to{opacity:1}}
@keyframes v4-pop{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
@keyframes v4-up{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes v4-rise{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (max-width:720px){.sheet{border-radius:var(--r-0);animation:v4-sheet var(--dur-3) var(--ease)}@keyframes v4-sheet{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}}
.toast{border-radius:var(--r-0);box-shadow:var(--shadow-pop);backdrop-filter:blur(10px);animation:v4-pop var(--dur-3) var(--ease-spring)}
.pop,.menu-pop{border-radius:var(--r-0);box-shadow:var(--shadow-pop);animation:v4-pop var(--dur-2) var(--ease)}

/* ---- page transitions: every view rises in ---- */
#view,.dc-view>main,.msgs-in{animation:v4-rise var(--dur-3) var(--ease)}

/* ---- skeleton shimmer, softer and calmer ---- */
.skel-line,.skel-block{background:var(--surface2);background-size:300% 100%;animation:shimmer 1.6s infinite var(--ease)}

/* ---- rail + sidebar ---- */
.rail-btn .pic{transition:border-radius var(--dur-2) var(--ease),transform var(--dur-1) var(--ease),box-shadow var(--dur-2)}
.rail-btn:hover .pic{transform:translateY(-1px);box-shadow:none}
.rail-btn:active .pic{transform:scale(.94)}
.rail-btn .pill{transition:height var(--dur-2) var(--ease-spring)}
.ch,.hub-link{border-radius:var(--r-0);transition:background var(--dur-1),color var(--dur-1),transform var(--dur-1) var(--ease)}
.ch:hover,.hub-link:hover{background:var(--hover);color:var(--text)}
.ch.on,.hub-link.on{background:var(--sel);color:var(--sel-ink);box-shadow:none;outline:1px solid color-mix(in srgb,var(--accent) 14%,transparent);outline-offset:-1px}
.ch.on::before,.hub-link.on::before{content:"";position:absolute;left:-8px;top:8px;bottom:8px;width:3px;border-radius:var(--r-0);background:var(--accent)}
.chs-head{box-shadow:none;border-bottom:1px solid var(--border)}
.user-panel{background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--glass-line)}
.topbar,.dc-main>.topbar{background:var(--glass);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);border-bottom:1px solid var(--glass-line)}

/* ---- chat: hover cards, floating composer ---- */
.msg{border-radius:var(--r-0);margin:0 8px;transition:background var(--dur-1)}
.msg:hover,.msg.show-acts{background:var(--hover)}
.composer{border-radius:var(--r-0);background:var(--surface);border:1px solid var(--border2);box-shadow:none;transition:border-color var(--dur-1),box-shadow var(--dur-2) var(--ease)}
.composer:focus-within{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
[data-theme=dark] .composer:focus-within{background:var(--surface)}

/* ---- cards that lift and light up under the cursor ---- */
.ws-card,.tier-card,.lp-f,.lp-r,.pt-tile{position:relative;isolation:isolate}
.ws-card::after,.tier-card::after,.lp-f::after,.lp-r::after,.pt-tile::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;opacity:0;transition:opacity var(--dur-2);background:none}
.ws-card:hover::after,.tier-card:hover::after,.lp-f:hover::after,.lp-r:hover::after,.pt-tile:hover::after{opacity:1}
.ws-card{border-radius:var(--r-0);transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),border-color var(--dur-2)}
.ws-card:hover{transform:translateY(-3px);box-shadow:none;border-color:var(--accent-line)}

/* ---- landing hero ---- */
.lp{position:relative;overflow:hidden}
.lp-glow{background:var(--lp-aur1);filter:blur(10px);animation:v4-aurora 18s ease-in-out infinite alternate}
@keyframes v4-aurora{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(2%,-1.5%,0) scale(1.05)}100%{transform:translate3d(-2%,1%,0) scale(1.02)}}
.lp-glow::after{content:"";position:absolute;inset:0;background-image:none;background-size:56px 56px;-webkit-mask-image:none;mask-image:none}
.lp-nav{background:var(--glass);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);border-bottom:1px solid var(--glass-line)}
.lp-pill{display:inline-flex;align-items:center;gap:12px;padding:4px 12px 4px 4px;border-radius:var(--r-0);background:var(--glass);border:1px solid var(--glass-line);box-shadow:none;color:var(--text);text-decoration:none;font-size:var(--fs-13);font-weight:500;backdrop-filter:blur(8px);transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2),border-color var(--dur-2);animation:v4-up .6s var(--ease) both}
.lp-pill:hover{transform:translateY(-1px);box-shadow:none;border-color:var(--accent-line)}
.lp-pill .i{color:var(--muted);transition:transform var(--dur-2) var(--ease)}.lp-pill:hover .i{transform:translateX(2px);color:var(--accent)}
.lp-pill-new{background:var(--brand-grad);color:#fff;font-size:var(--fs-12);font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:4px 8px;border-radius:var(--r-0)}
.lp-hero h1{font-size:var(--fs-display);line-height:1.02;letter-spacing:-.045em;font-weight:600;margin:16px 0 16px;animation:v4-up .7s .05s var(--ease) both}
.lp-grad{background:none;background-size:220% 100%;-webkit-background-clip:border-box;background-clip:border-box;animation:v4-shine 7s linear infinite}
@keyframes v4-shine{to{background-position:-220% 0}}
.lp-hero .lp-sub{font-size:var(--fs-20);line-height:1.6;color:var(--muted);max-width:560px;animation:v4-up .7s .12s var(--ease) both}
.lp-ctas{animation:v4-up .7s .18s var(--ease) both}
.lp-ctas .btn.primary.lg{background:var(--brand-grad);border-color:transparent;box-shadow:none}
.lp-ctas .btn.primary.lg:hover{filter:brightness(1.07);box-shadow:none}
.lp-ctas .btn.primary.lg .i{transition:transform var(--dur-2) var(--ease)}.lp-ctas .btn.primary.lg:hover .i{transform:translateX(3px)}
.lp-checks{animation:v4-up .7s .24s var(--ease) both}
.lp-checks li .i{color:var(--ok)}
.lp-hero .auth-card{border-radius:var(--r-0);background:var(--glass);backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);border:1px solid var(--glass-line);box-shadow:none;position:relative;animation:v4-up .8s .15s var(--ease) both}
.lp-hero .auth-card::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:none;-webkit-mask:none;-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.lp-shot{position:relative}
.lp-shot-glow{position:absolute;left:10%;right:10%;top:12%;height:70%;background:var(--brand-grad);filter:blur(80px);opacity:.28;border-radius:var(--r-0);pointer-events:none}
.lp-shot-in{transform:rotateX(14deg) scale(.96);transform-origin:50% 0;transition:transform 1s var(--ease);animation:v4-up .9s .25s var(--ease) both}
.lp-shot:hover .lp-shot-in{transform:rotateX(0) scale(1)}
.lp-shot .lpm{border-radius:var(--r-0);box-shadow:none;outline:1px solid var(--glass-line);outline-offset:0}
.lp-float{position:absolute;display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-0);background:var(--float-bg);border:1px solid var(--glass-line);box-shadow:none;font-size:var(--fs-13);color:var(--muted);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);z-index:2;animation:v4-float 6s ease-in-out infinite}
.lp-float b{color:var(--text)} .lp-float .i{color:var(--accent)}
.lp-float.f1{left:-6px;top:22%}.lp-float.f2{right:-8px;top:12%;animation-delay:-2s}.lp-float.f3{right:6%;bottom:16%;animation-delay:-4s}
@keyframes v4-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.lp-strip{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 16px;padding:8px 0 64px;color:var(--faint);font-weight:600;font-size:var(--fs-14);letter-spacing:.01em}
.lp-strip i{width:4px;height:4px;border-radius:var(--r-0);background:var(--border2)}
.lp-sec-h h2{font-size:var(--fs-24);letter-spacing:-.04em;line-height:1.08}
.lp-f,.lp-r{border-radius:var(--r-0);transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2),border-color var(--dur-2)}
.lp-f:hover,.lp-r:hover{transform:translateY(-3px);box-shadow:none;border-color:var(--accent-line)}
.lp-fi{transition:transform var(--dur-2) var(--ease-spring)}.lp-f:hover .lp-fi,.lp-r:hover .lp-fi{transform:scale(1.1) rotate(-4deg)}
.lp-cta-in{border-radius:var(--r-0);position:relative;overflow:hidden}
.rv{opacity:0;transform:translateY(24px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.rv.in{opacity:1;transform:none}
@media (max-width:900px){.lp-float{display:none}.lp-shot-in{transform:none}.lp-hero h1{margin-top:16px}}
@media (prefers-reduced-motion:reduce){.lp-glow,.lp-grad,.lp-float,.lp-pill,.lp-hero h1,.lp-hero .lp-sub,.lp-ctas,.lp-checks,.lp-hero .auth-card,.lp-shot-in,#view,.dc-view>main,.msgs-in,.sheet,.toast{animation:none!important}.rv{opacity:1;transform:none}.lp-shot-in{transform:none}}
.lp-bento .lp-f::after{inset:0;right:0;top:0;width:auto;height:auto;border-radius:inherit;opacity:0;background:none}
.lp-bento .lp-f:hover::after{opacity:1}
.lp-bento .lp-f{background:var(--card-bg)}

/* ---- Design v4, batch 2: hub pages ---- */
.hub-hero h1{font-size:var(--fs-24);font-weight:600;letter-spacing:-.035em}
.home-hero{position:relative;overflow:hidden;align-items:flex-end;padding:24px 24px 24px;border-radius:var(--r-0);background:var(--card-bg);border:1px solid var(--card-line);box-shadow:none;isolation:isolate}
.hh-glow{position:absolute;inset:0;z-index:-1;background:var(--lp-aur1);animation:v4-aurora 16s ease-in-out infinite alternate}
.hh-glow::after{content:"";position:absolute;inset:0;background-image:none;background-size:18px 18px;-webkit-mask-image:none;mask-image:none}
.hh-date{display:block;font-size:var(--fs-12);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.hh-stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.hh-stats span{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-0);background:var(--glass);border:1px solid var(--glass-line);font-size:var(--fs-13);color:var(--muted);backdrop-filter:blur(8px)}
.hh-stats b{color:var(--text);font-weight:600}.hh-stats .i{color:var(--accent)}
.sec-h h2{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.015em}
.ws-banner{position:relative}
.ws-banner::after{content:"";position:absolute;inset:0;background:none;pointer-events:none}
.ws-card .bar{height:6px;border-radius:var(--r-0);background:var(--surface3);overflow:hidden}
.ws-card .bar i{border-radius:var(--r-0);background:var(--brand-grad)}
.ws-new{border-radius:var(--r-0);transition:border-color var(--dur-2),background var(--dur-2),transform var(--dur-2) var(--ease)}
.ws-new:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-3px)}
.ws-new .nc-plus{transition:transform var(--dur-3) var(--ease-spring)}.ws-new:hover .nc-plus{transform:rotate(90deg) scale(1.08)}
.stagger>*{animation:v4-rise var(--dur-3) var(--ease) both}
.stagger>*:nth-child(2){animation-delay:.04s}.stagger>*:nth-child(3){animation-delay:.08s}.stagger>*:nth-child(4){animation-delay:.12s}.stagger>*:nth-child(5){animation-delay:.16s}.stagger>*:nth-child(n+6){animation-delay:.2s}
.gs-card{border-radius:var(--r-0)}
.hub-search{border-radius:var(--r-0);height:36px;transition:border-color var(--dur-1),box-shadow var(--dur-2),color var(--dur-1)}
.hub-search:hover{border-color:var(--accent-line);color:var(--muted);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
/* Discover + Talent heroes: aurora mesh over the brand gradient */
.disc-hero{border-radius:var(--r-0);box-shadow:none;isolation:isolate}
.disc-hero::before{content:"";position:absolute;inset:-20%;z-index:-1;background:none;animation:v4-aurora 14s ease-in-out infinite alternate}
.disc-hero h1{font-size:var(--fs-24);letter-spacing:-.04em;font-weight:600}
/* talent cards, tier cards, inbox rows */
.tl-card{border-radius:var(--r-0);transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),border-color var(--dur-2)}
.tl-card:hover{transform:translateY(-3px);box-shadow:none;border-color:var(--accent-line)}
.tier-card{border-radius:var(--r-0);padding:24px 24px;transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),border-color var(--dur-2)}
.tier-card:hover{transform:translateY(-4px);box-shadow:none}
.tier-card:has(.best-tag){border-color:var(--accent);box-shadow:none}
.tier-card:has(.best-tag)::before{content:"";position:absolute;inset:0;border-radius:inherit;background:none;pointer-events:none;z-index:-1}
.best-tag{background:var(--brand-grad);box-shadow:none}
[data-theme=dark] .best-tag{background:var(--brand-grad)}
.perks li{transition:transform var(--dur-1)}.perks li:hover{transform:translateX(2px)}
.perks li .i{color:var(--ok)}
.ib-list{padding:8px;border-radius:var(--r-0)}
.ib-row{border-radius:var(--r-0);position:relative;transition:background var(--dur-1)}
.ib-row.click:hover{background:var(--hover)}
.ib-row.unread{background:color-mix(in srgb,var(--accent-soft) 70%,transparent)}
.ib-row.unread::before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:var(--r-0);background:var(--accent)}
.dm-row{border-radius:var(--r-0);transition:background var(--dur-1),color var(--dur-1)}
.dm-row:hover{background:var(--hover);color:var(--text)}
/* profile */
.prof-banner{height:190px;overflow:hidden}
.prof-banner::after{content:"";position:absolute;inset:0;background:none;pointer-events:none}
.prof-av-l{transition:transform var(--dur-3) var(--ease-spring)}.prof-av-l:hover{transform:scale(1.04) rotate(-2deg)}
.prof-sec{border-radius:var(--r-0);transition:border-color var(--dur-2)}
.prof-sec:hover{border-color:var(--border2)}
.stat{border-radius:var(--r-0)}
a.stat:hover{transform:translateY(-2px);box-shadow:none;border-color:var(--accent-line)}
/* dev console + settings */
main.page.dev .card,.settings .card{border-radius:var(--r-0);box-shadow:none}
main.page.dev h1{letter-spacing:-.035em}
.setting{border-radius:var(--r-0);transition:background var(--dur-1)}
.setting:hover{background:var(--hover)}
.tabs a,.seg button{transition:background var(--dur-1),color var(--dur-1),box-shadow var(--dur-2)}
.seg{border-radius:var(--r-0)}
.seg button.on{box-shadow:none}
.empty-state .es-icon,.es-icon{border-radius:var(--r-0);background:var(--brand-soft);color:var(--accent);box-shadow:none;outline:1px solid var(--accent-line);outline-offset:-1px;animation:v4-pop var(--dur-3) var(--ease-spring)}
@media (prefers-reduced-motion:reduce){.hh-glow,.disc-hero::before,.stagger>*,.es-icon{animation:none!important}}
@media (max-width:720px){.home-hero{padding:16px 16px}.hh-stats span{font-size:var(--fs-13)}}

/* ---- Overview dashboard (10.1) ---- */
.ov-hero{position:relative;border-radius:var(--r-0);overflow:hidden;background:var(--card-bg);border:1px solid var(--card-line);box-shadow:none;margin-bottom:16px;isolation:isolate;animation:v4-rise var(--dur-3) var(--ease)}
.ov-ban{position:relative;height:132px;background:color-mix(in srgb,hsl(var(--h) 75% 55%) 22%,var(--surface2));overflow:hidden}
.ov-hero[style*="--wa"] .ov-ban{background:color-mix(in srgb,var(--wa) 22%,var(--surface2))}
.ov-ban img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ov-ban img.blur{filter:blur(24px) saturate(1.4);transform:scale(1.4);opacity:.85}
.ov-mesh{position:absolute;inset:-30%;background:transparent;animation:v4-aurora 16s ease-in-out infinite alternate}
.ov-ban::after{content:"";position:absolute;inset:0;background:none}
.ov-hero-in{position:relative;padding:0 24px 16px;margin-top:-48px;display:grid;grid-template-columns:1fr auto;grid-template-areas:"id acts" "meta acts";gap:12px 16px;align-items:end}
.ov-id{grid-area:id;display:flex;align-items:flex-end;gap:16px;min-width:0}
.ov-icon{width:88px!important;height:88px!important;border-radius:var(--r-0)!important;font-size:var(--fs-24)!important;flex:none;box-shadow:none;transition:transform var(--dur-3) var(--ease-spring)}
.ov-icon:hover{transform:scale(1.05) rotate(-3deg)}
.ov-name{min-width:0;padding-bottom:4px}
.ov-hello{font-size:var(--fs-12);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.ov-name h1{margin:2px 0 4px;font-size:var(--fs-24);font-weight:600;letter-spacing:-.04em;line-height:1.1}
.ov-desc{margin:0;color:var(--muted);font-size:var(--fs-14);max-width:640px}
.ov-meta{grid-area:meta;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.ov-stack{display:flex;padding-left:8px;margin-right:4px}
.ov-av{margin-left:-8px;border-radius:50%;box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0;position:relative;transition:transform var(--dur-2) var(--ease)}
.ov-av:hover{transform:translateY(-3px);z-index:2}
.ov-av.on::after{content:"";position:absolute;right:-1px;bottom:-1px;width:9px;height:9px;border-radius:50%;background:var(--ok);box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0}
.ov-av.more{width:28px;height:28px;display:grid;place-items:center;background:var(--surface3);color:var(--muted);font-size:var(--fs-12);font-weight:600}
.ov-chip{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border);font-size:var(--fs-13);color:var(--muted);font-weight:500}
.ov-chip .i{color:var(--accent)}
.ov-acts{grid-area:acts;display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.btn.glass{background:var(--glass);border-color:var(--glass-line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.btn.glass:hover{background:var(--surface);border-color:var(--accent-line)}
.ov-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.ov-stat{position:relative;display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:var(--r-0);background:var(--card-bg);border:1px solid var(--card-line);box-shadow:none;color:var(--text);text-decoration:none;overflow:hidden;transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2),border-color var(--dur-2);animation:v4-rise var(--dur-3) var(--ease) both}
.ov-stat:nth-child(2){animation-delay:.05s}.ov-stat:nth-child(3){animation-delay:.1s}.ov-stat:nth-child(4){animation-delay:.15s}
a.ov-stat:hover{transform:translateY(-3px);box-shadow:none;border-color:var(--accent-line)}
.ov-stat>div{display:flex;flex-direction:column}
.ov-stat b{font-size:var(--fs-24);font-weight:600;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.ov-stat b small{font-size:var(--fs-14);color:var(--faint);font-weight:600;letter-spacing:0}
.ov-stat>div>span{font-size:var(--fs-13);color:var(--muted);margin-top:4px}
.ov-si{width:36px;height:36px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.ov-si.ok{background:var(--ok-soft);color:var(--ok)}.ov-si.warn{background:var(--warn-soft);color:var(--warn)}.ov-si.violet{background:color-mix(in srgb,var(--violet) 14%,transparent);color:var(--violet)}
.ov-sub{position:absolute;top:18px;right:16px;font-style:normal;font-size:var(--fs-12);color:var(--faint);font-weight:600}
.ov-bar{display:block;height:5px;border-radius:var(--r-0);background:var(--surface3);overflow:hidden}
.ov-bar i{display:block;height:100%;border-radius:var(--r-0);background:var(--ok);animation:v4-grow-x .9s var(--ease) both}
@keyframes v4-grow-x{from{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1);transform-origin:left}}
.ov-spark{position:absolute;right:14px;bottom:14px;width:90px;height:34px;overflow:visible}
.ov-spark polyline{fill:none;stroke:var(--violet);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:200;stroke-dashoffset:200;animation:v4-draw 1.2s .2s var(--ease) forwards;vector-effect:non-scaling-stroke}
@keyframes v4-draw{to{stroke-dashoffset:0}}
.ov-grid2{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:16px;align-items:start}
.ov-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.ov-col>.card,.ov-col>.games-sec{animation:v4-rise var(--dur-3) var(--ease) both}
.ov-prog-in{display:flex;align-items:center;gap:24px;margin:4px 0 16px}
.ring{transition:--p .8s}
.ring.big{width:104px;height:104px;background:conic-gradient(from -90deg,var(--accent) calc(var(--p)*1%),var(--surface3) 0)}
.ring.big:after{width:84px;height:84px;font-size:var(--fs-20);letter-spacing:-.03em}
.ring.sm{width:42px;height:42px;background:conic-gradient(from -90deg,var(--teal) calc(var(--p)*1%),var(--surface3) 0)}
.ring.sm:after{width:32px;height:32px;font-size:var(--fs-12)}
.ov-rings{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0}
.ov-ring{display:flex;align-items:center;gap:12px;min-width:0}
.ov-ring>div:last-child{display:flex;flex-direction:column;min-width:0}
.ov-ring b{font-size:var(--fs-13)}.ov-ring span{font-size:var(--fs-12);color:var(--muted)}
.ov-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:4px 0 12px}
.ov-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 8px;border-radius:var(--r-0);background:var(--surface2);border:1px solid transparent;color:var(--muted);text-decoration:none;transition:transform var(--dur-1) var(--ease),border-color var(--dur-1),background var(--dur-1)}
.ov-day:hover{transform:translateY(-2px);border-color:var(--accent-line)}
.ov-day span{font-size:var(--fs-12);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.ov-day b{font-size:var(--fs-16);color:var(--text);font-weight:600}
.ov-day i{display:flex;gap:4px;height:6px;align-items:center}
.ov-day s{width:5px;height:5px;border-radius:var(--r-0);text-decoration:none}.ov-day s.e{background:var(--accent)}.ov-day s.t{background:var(--amber)}
.ov-day.today{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.ov-day.today b{color:var(--accent-ink)}.ov-day.today s.e,.ov-day.today s.t{background:var(--accent-ink)}
.ov-ms{display:flex;align-items:center;gap:12px;padding:12px 12px;border-radius:var(--r-0);background:var(--brand-soft);border:1px solid var(--accent-line);margin-bottom:8px}
.ov-ms>.i{color:var(--accent);flex:none}.ov-ms b{display:block;font-size:var(--fs-14)}.ov-ms span{font-size:var(--fs-13);color:var(--muted)}
.ov-tl{position:relative;display:flex;flex-direction:column;gap:2px}
.ov-tl::before{content:"";position:absolute;left:13px;top:10px;bottom:10px;width:2px;border-radius:var(--r-0);background:var(--border)}
.ov-tli{position:relative;display:flex;gap:12px;padding:8px 8px 8px 0;border-radius:var(--r-0);transition:background var(--dur-1)}
.ov-tli:hover{background:var(--hover)}
.ov-tli .avatar{position:relative;z-index:1;box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0}
.ov-tli .s{font-size:var(--fs-12);color:var(--faint)}
.ov-empty{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;align-items:center;padding:24px;border-radius:var(--r-0);background:var(--card-bg);margin-bottom:16px}
.ov-empty>*:nth-child(n+3){grid-column:1 / -1}
.ov-empty-art{width:64px;height:64px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--brand-grad);color:var(--accent-ink);box-shadow:none;animation:v4-float 5s ease-in-out infinite}
.ov-empty h2{margin:0 0 4px;font-size:var(--fs-20)}
.ov-empty p{margin:0}
.games-sec .game{border-radius:var(--r-0);transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2)}
.games-sec .game:hover{transform:translateY(-2px);box-shadow:none}
@media (max-width:1100px){.ov-grid2{grid-template-columns:1fr}}
@media (max-width:900px){.ov-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.ov-hero-in{grid-template-columns:1fr;grid-template-areas:"id" "meta" "acts"}.ov-acts{justify-content:flex-start}}
@media (max-width:560px){.ov-ban{height:104px}.ov-hero-in{padding:0 16px 16px;margin-top:-32px}.ov-icon{width:68px!important;height:68px!important;border-radius:var(--r-0)!important}.ov-stat{padding:12px}.ov-stat b{font-size:var(--fs-24)}.ov-sub{position:static}.ov-spark{width:70px;height:26px}.ov-prog-in{flex-direction:column;align-items:stretch}.ov-prog-in .ring.big{align-self:center}.ov-acts .btn{flex:1 1 calc(50% - 8px)}}
@media (prefers-reduced-motion:reduce){.ov-hero,.ov-stat,.ov-col>.card,.ov-col>.games-sec,.ov-mesh,.ov-empty-art,.ov-bar i{animation:none!important}.ov-spark polyline{animation:none;stroke-dashoffset:0}}
@media (max-width:560px){.ov-name h1{white-space:normal;overflow:visible;font-size:var(--fs-20);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}

/* ---- Design v4, batch 3: chat, tool channels, phone nav ---- */
.m-welcome{padding:32px 24px 12px;position:relative}
.m-welcome .ch-ic.big{width:68px;height:68px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--brand-grad);color:var(--accent-ink);box-shadow:none;animation:v4-pop var(--dur-3) var(--ease-spring)}
.m-welcome .ch-ic.big .i,.m-welcome .ch-ic.big svg{width:32px;height:32px}
.m-welcome h2{font-size:var(--fs-24);font-weight:600;letter-spacing:-.035em;margin:12px 0 8px}
.day-div span{padding:4px 12px;border-radius:var(--r-0);background:var(--surface);border:1px solid var(--border);box-shadow:none;color:var(--muted);font-size:var(--fs-12)}
.new-div{color:var(--red)}
.msg.start{margin-top:8px}
.m-name{font-weight:600;letter-spacing:-.01em}
.m-av .avatar{transition:transform var(--dur-2) var(--ease-spring)}.m-av:hover .avatar{transform:scale(1.07)}
.m-acts{border-radius:var(--r-0);box-shadow:var(--shadow-pop);border-color:var(--border);animation:v4-pop var(--dur-2) var(--ease)}
.m-acts button{border-radius:var(--r-0);transition:background var(--dur-1),color var(--dur-1),transform var(--dur-1) var(--ease)}
.m-acts button:hover{background:var(--hover);color:var(--accent);transform:scale(1.08)}
.msgs-in>.msg:last-child{animation:v4-rise var(--dur-2) var(--ease)}
.composer:focus-within{box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.composer textarea,.composer .input{background:transparent}
.composer button[type=submit],.composer .send,.comp-send{border-radius:var(--r-0);transition:transform var(--dur-1) var(--ease-spring),background var(--dur-1)}
.composer button[type=submit]:active,.composer .send:active,.comp-send:active{transform:scale(.9)}
.mention.me{box-shadow:none;border-left:3px solid var(--amber)}
/* tool channels */
.page-head h1{font-size:var(--fs-24);font-weight:600;letter-spacing:-.035em}
.kcol{border-radius:var(--r-0);background:var(--surface2)}
.kcol-h{font-size:var(--fs-13);letter-spacing:.01em}
.kcard{border-radius:var(--r-0);box-shadow:none;transition:transform var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease),border-color var(--dur-2)}
.kcard:hover{transform:translateY(-2px);box-shadow:none;border-color:var(--accent-line)}
.kcard.dragging,.kcard.drag{transform:rotate(2deg) scale(1.03);box-shadow:none}
.kanban-tabs button{border-radius:var(--r-0)}
.task{border-radius:var(--r-0);transition:background var(--dur-1)}
.task:hover{background:var(--hover)}
.chk{transition:transform var(--dur-2) var(--ease-spring),background var(--dur-1),border-color var(--dur-1)}
.chk:hover{transform:scale(1.12)}
.hex{transition:transform var(--dur-2) var(--ease-spring),filter var(--dur-2)}
.hex:hover{transform:translateY(-3px) scale(1.04);filter:none}
.day2{border-radius:var(--r-0);transition:border-color var(--dur-1),background var(--dur-1),transform var(--dur-1) var(--ease)}
.day2:hover{border-color:var(--accent-line);background:var(--surface2)}
.day2.today{box-shadow:none;outline:2px solid var(--accent);outline-offset:-2px}
.li.click,.bug-row{border-radius:var(--r-0);transition:background var(--dur-1)}
.li.click:hover,.bug-row:hover{background:var(--hover)}
.toolbar .search .input{border-radius:var(--r-0)}
/* phone bottom bar: glass with a lifted active tab */
@media (max-width:900px){
  .bottom-nav{background:var(--glass);backdrop-filter:blur(18px) saturate(170%);-webkit-backdrop-filter:blur(18px) saturate(170%);border-top:1px solid var(--glass-line)}
  .bottom-nav a,.bottom-nav button{transition:color var(--dur-1),transform var(--dur-1) var(--ease)}
  .bottom-nav a:active,.bottom-nav button:active{transform:scale(.92)}
  .bottom-nav .on,.bottom-nav [aria-current]{color:var(--accent)}
}
@media (prefers-reduced-motion:reduce){.m-welcome .ch-ic.big,.m-acts,.msgs-in>.msg:last-child{animation:none!important}.hex:hover,.kcard:hover{transform:none}}

/* ---- Founder decorations (PartCrew 10.4): avatar decorations and profile frames ---- */
:root{--deco-scale:1.42;--k-deco-glow-swirl:rgba(168,85,247,.45);--k-deco-glow-circuit:rgba(6,182,212,.42);--k-deco-glow-crown:rgba(234,179,8,.5);--k-deco-glow-cyan:rgba(14,165,233,.45);--k-deco-glow-lava:rgba(249,115,22,.5);--k-pf-glow-studio:rgba(6,182,212,.35);--k-pf-glow-gold:rgba(234,179,8,.4);--k-pf-glow-terminal:rgba(34,197,94,.35);--k-pf-glow-energy:rgba(168,85,247,.38);--k-pf-glow-sky:rgba(59,130,246,.35);}
[data-theme=dark]{--k-deco-glow-swirl:rgba(192,132,252,.7);--k-deco-glow-circuit:rgba(34,211,238,.65);--k-deco-glow-crown:rgba(250,204,21,.7);--k-deco-glow-cyan:rgba(56,189,248,.7);--k-deco-glow-lava:rgba(251,146,60,.7);--k-pf-glow-studio:rgba(34,211,238,.5);--k-pf-glow-gold:rgba(250,204,21,.5);--k-pf-glow-terminal:rgba(74,222,128,.5);--k-pf-glow-energy:rgba(192,132,252,.55);--k-pf-glow-sky:rgba(96,165,250,.5);}
.avdeco{position:relative;display:inline-grid;place-items:center;flex:none;vertical-align:middle;--dg:var(--k-deco-glow-cyan)}
.avdeco-swirl{--dg:var(--k-deco-glow-swirl)}.avdeco-circuit{--dg:var(--k-deco-glow-circuit)}.avdeco-crown{--dg:var(--k-deco-glow-crown)}.avdeco-cyan{--dg:var(--k-deco-glow-cyan)}.avdeco-lava{--dg:var(--k-deco-glow-lava)}
.avdeco>.avatar{position:relative;z-index:0}
.av-deco{position:absolute;left:50%;top:50%;width:calc(100% * var(--deco-scale));height:calc(100% * var(--deco-scale));max-width:none;transform:translate(-50%,-50%);pointer-events:none;user-select:none;-webkit-user-drag:none;z-index:1}
.avdeco-sm .av-deco{display:none}
.dm-row .avdeco-sm .av-deco,.ib-av .avdeco-sm .av-deco,.ov-av .avdeco-sm .av-deco{display:block}
.avatars .avdeco,.dm-gav .avdeco{display:contents}
.avatars .av-deco,.dm-gav .av-deco{display:none}
.avatars .avdeco:not(:first-child)>.avatar{margin-left:-8px}
.dm-gav .avdeco:nth-child(2)>.avatar{left:auto;top:auto;right:0;bottom:0}
.m-av,.ov-av,.ml-av,.pc-av,.prof-av-l,.prof-av,.dm-row,.ib-av{overflow:visible}
.avdeco-xl .av-deco,.avdeco-lg .av-deco{animation:decoPulse 3.6s ease-in-out infinite}
.m-av:hover .av-deco,.ov-av:hover .av-deco{filter:brightness(1.15)}
@keyframes decoPulse{0%,100%{filter:none}50%{filter:brightness(1.08)}}
.founder-frame .avdeco .avatar.xl{box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0}
/* profile frame: a transparent frame image wrapped around the card, with a soft pulsing glow behind it */
.pframe{--pfg:var(--k-pf-glow-studio)}
.pframe:not(.pcard-pop){position:relative}
.pframe-studio{--pf-img:url(/deco/frame-studio.webp);--pfg:var(--k-pf-glow-studio)}.pframe-gold{--pf-img:url(/deco/frame-gold.webp);--pfg:var(--k-pf-glow-gold)}.pframe-terminal{--pf-img:url(/deco/frame-terminal.webp);--pfg:var(--k-pf-glow-terminal)}.pframe-energy{--pf-img:url(/deco/frame-energy.webp);--pfg:var(--k-pf-glow-energy)}.pframe-sky{--pf-img:url(/deco/frame-sky.webp);--pfg:var(--k-pf-glow-sky)}
.pcard.pframe,.prof-hero.pframe,.dk-pcard.pframe{overflow:visible}
.pframe::after{content:"";position:absolute;left:-9%;right:-9%;top:-7%;bottom:-7%;background:var(--pf-img) center/100% 100% no-repeat;pointer-events:none;z-index:6}
.pframe::before{content:"";position:absolute;inset:-3%;border-radius:var(--r-0);box-shadow:none;opacity:.35;pointer-events:none;z-index:-1;animation:pfPulse 3.8s ease-in-out infinite}
@keyframes pfPulse{50%{opacity:.9}}
.pcard.pframe .pc-banner{border-radius:var(--r-0)}
.pcard.pframe .pc-head,.pcard.pframe .pc-body{padding-left:24px;padding-right:24px}
.pcard.pframe .pc-body{padding-bottom:24px}
.sheet-card.pframe{margin:24px 32px 32px}
.prof-hero.pframe.wide{margin:16px 12px 24px}
.prof-hero.pframe.wide::after{left:-14px;right:-14px;top:-14px;bottom:-14px;background:none;border-style:solid;border-color:transparent;border-width:46px 38px;border-image:var(--pf-img) 100 80 / 46px 38px / 0 round stretch}
.prof-hero.pframe.wide .prof-banner{border-radius:var(--r-0)}
.prof-hero.pframe.wide .prof-top,.prof-hero.pframe.wide .prof-id{padding-left:48px;padding-right:48px}
.prof-hero.pframe.wide .prof-id{padding-bottom:32px}
/* the Decorations picker in Edit profile */
.deco-field .dk-preview{display:grid;place-items:center;padding:32px 0 32px;margin:8px 0 12px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border)}
.dk-pcard{position:relative;width:180px;padding:0 0 12px;border-radius:var(--r-0);background:var(--card-bg);border:1px solid var(--card-line);display:grid;justify-items:center;text-align:center;gap:2px;box-shadow:none}
.dk-pban{width:100%;height:58px;border-radius:var(--r-0);background:var(--brand-grad)}
.dk-pav{margin-top:-32px;margin-bottom:8px;display:inline-grid}
.dk-pav .avatar.xl{width:72px;height:72px;font-size:var(--fs-24);box-shadow:none;outline:2px solid var(--card-bg);outline-offset:0}
.dk-pcard b{max-width:150px;font-size:var(--fs-14);color:var(--text)}
.dk-pcard small{max-width:150px;color:var(--muted)}
.dk-pcard.pframe::after{left:-10%;right:-10%;top:-8%;bottom:-8%}
.dk-sec{margin-top:12px}
.dk-h{font-size:var(--fs-12);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}
.dk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
.dk-tile{display:grid;justify-items:center;gap:8px;padding:12px 8px 8px;border-radius:var(--r-0);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;transition:border-color var(--dur-1),background var(--dur-1),transform var(--dur-1) var(--ease)}
.dk-tile:hover:not([disabled]){border-color:var(--accent-line);background:var(--hover);transform:translateY(-2px)}
.dk-tile.on{border-color:var(--accent);box-shadow:none;outline:2px solid var(--accent-line);outline-offset:0}
.dk-tile[disabled]{cursor:not-allowed}
.dk-prev{display:grid;place-items:center;width:64px;height:64px}
.dk-prev .avatar.lg{width:40px;height:40px}
.dk-prev .avdeco-lg .av-deco{animation:none}
.dk-fprev{display:grid;place-items:center;width:60px;height:72px}
.dk-fprev img{width:54px;height:72px;object-fit:contain}
.dk-card{width:40px;height:52px;border-radius:var(--r-0);border:1px dashed var(--border2);background:var(--surface2)}
.dk-name{font-size:var(--fs-12);font-weight:600;color:var(--muted);text-align:center;line-height:1.2}
.dk-tile.on .dk-name{color:var(--text)}
.deco-field.locked .dk-grid{opacity:.55;filter:saturate(.7)}
.deco-field.locked .dk-preview{opacity:.8}
.dk-lock{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 8px;padding:12px 12px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border);color:var(--muted);font-size:var(--fs-13)}
.dk-lock span{flex:1;min-width:160px}.dk-lock .btn{margin-left:auto}
@media (max-width:640px){.dk-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.prof-hero.pframe.wide{margin:12px 8px 16px}.prof-hero.pframe.wide::after{border-width:34px 28px;border-image-width:34px 28px}}
@media (prefers-reduced-motion:reduce){.av-deco,.pframe::before{animation:none!important}}

/* ---------- PartCrew 10.5: @everyone/@here, polls ---------- */
.mention.ping{background:var(--mention-bg);color:var(--text);box-shadow:none;outline:1px solid var(--mention-line);outline-offset:-1px}
.mention-pop .mp-special .mp-at{width:22px;height:22px;border-radius:var(--r-0);display:inline-grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:none}
.mention-pop .mp-special small{color:var(--muted);font-size:var(--fs-13);margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.m-card.m-pollw{max-width:520px}
.m-poll{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:12px;box-shadow:none;margin-top:4px}
.mp-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px}
.mp-ic{width:30px;height:30px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:none}
.mp-q{font-weight:600;font-size:var(--fs-16);line-height:1.35;word-break:break-word}
.mp-sub{font-size:var(--fs-13);color:var(--muted);margin-top:2px}
.mp-opts{display:flex;flex-direction:column;gap:8px}
.mp-opt{position:relative;overflow:hidden;display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 12px;border-radius:var(--r-0);border:1px solid var(--border2);background:var(--surface2);cursor:pointer;font-size:var(--fs-14);color:var(--text);transition:border-color .15s,transform .08s}
.mp-opt:hover:not([disabled]){border-color:var(--accent-line)} .mp-opt:active:not([disabled]){transform:scale(.99)}
.mp-opt[disabled]{cursor:default}
.mp-opt.on{border-color:var(--accent)}
.mp-fill{position:absolute;inset:0 auto 0 0;background:var(--accent-soft);transition:width .5s cubic-bezier(.2,.8,.2,1);z-index:0}
.mp-opt.on .mp-fill{background:var(--sel)}
.mp-opt.win{border-color:var(--green)}
.mp-opt>*:not(.mp-fill){position:relative;z-index:1}
.mp-tick{width:18px;height:18px;border-radius:var(--r-0);border:2px solid var(--border2);display:grid;place-items:center;flex:none;color:var(--accent-ink)}
.mp-tick.sq{border-radius:var(--r-0)}
.mp-opt.on .mp-tick{background:var(--accent);border-color:var(--accent)}
.mp-t{flex:1;min-width:0;word-break:break-word}
.mp-n{font-weight:600;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px}
.mp-n small{font-weight:500;color:var(--muted);font-size:var(--fs-12)}
.mp-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;font-size:var(--fs-13);color:var(--muted)}
.mp-foot>span{margin-right:auto}
.m-poll.closed .mp-ic{background:var(--surface3);color:var(--muted)}
.pf-opt{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.pf-multi{margin:2px 0 12px}
@media (prefers-reduced-motion:reduce){.mp-fill{transition:none}}

/* ---------- PartCrew 10.5: scheduled messages, notifications ---------- */
.sched-bar{display:flex;align-items:center;gap:8px;width:100%;margin:0 0 8px;padding:8px 12px;border-radius:var(--r-0);border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent);font-size:var(--fs-13);cursor:pointer;text-align:left}
.sched-bar span{flex:1;min-width:0;color:var(--text)} .sched-bar b{font-weight:600}
.sched-bar.warn{border-color:var(--mention-line);background:var(--mention-bg)}
.sf-quick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.sf-chip{border:1px solid var(--border2);background:var(--surface2);color:var(--text);border-radius:var(--r-0);padding:8px 12px;font-size:var(--fs-13);font-weight:600;cursor:pointer;transition:border-color .15s,background .15s}
.sf-chip:hover{border-color:var(--accent-line)} .sf-chip.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.sf-note{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-13);color:var(--muted);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:8px 12px;margin:4px 0 0}
.sf-note svg{flex:none;margin-top:2px}
.sl-list{display:flex;flex-direction:column;gap:8px}
.sl-row{border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;background:var(--surface)}
.sl-row.here{border-color:var(--accent-line)}
.sl-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.sl-top .muted{margin-left:auto}
.sl-pill{font-size:var(--fs-12);font-weight:600;padding:2px 8px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent)}
.sl-pill.bad{background:var(--mention-bg);color:var(--text);box-shadow:none;outline:1px solid var(--mention-line);outline-offset:-1px}
.sl-pill.ok{background:var(--surface3);color:var(--muted)}
.sl-body{white-space:pre-wrap;word-break:break-word;font-size:var(--fs-14)}
.sl-err{margin-top:8px;color:var(--muted)}
.sl-acts{display:flex;gap:8px;margin-top:8px}
.ps-hint{display:flex;gap:12px;align-items:flex-start;padding:12px 12px;border-radius:var(--r-0);border:1px solid var(--accent-line);background:var(--accent-soft);margin-bottom:8px}
.ps-hint svg{flex:none;color:var(--accent);margin-top:2px}
.ps-hint p{margin:4px 0 8px;font-size:var(--fs-13);color:var(--muted);line-height:1.45}
.ps-hint.warn{border-color:var(--mention-line);background:var(--mention-bg)}
.ps-main{border-color:var(--accent-line)}
.ps-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 2px 4px}
.set-ic{width:36px;height:36px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:none}

/* ---- PartCrew 10.7: reports and moderation ---- */
:root{--on-solid:#fff}
[data-theme=dark]{--on-solid:#fff}
.rp-quote{display:flex;flex-direction:column;gap:2px;border-left:3px solid var(--accent-line);background:var(--surface2);padding:12px 12px;border-radius:var(--r-0);margin:0 0 12px;font-size:var(--fs-14);color:var(--text);word-break:break-word}
.rp-quote b{font-size:var(--fs-13);color:var(--muted);font-weight:600}
.rp-lead{margin:0 0 12px}
.rp-reasons{border:0;padding:0;margin:0 0 12px;display:grid;grid-template-columns:1fr 1fr;gap:0 8px}
.rp-reasons legend{padding:0}
.rp-r{margin-bottom:8px}
.rp-r small{font-size:var(--fs-12);line-height:1.35}
@media (max-width:560px){.rp-reasons{grid-template-columns:1fr}}
.pc-mod{display:flex;align-items:center;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border);font-size:var(--fs-13)}
.pc-mod .linkish{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-13)}
.pc-mod .linkish.faint{color:var(--faint)}
.pc-mod .linkish.faint:hover{color:var(--danger)}
.pc-to{display:inline-flex;align-items:center;gap:4px;color:var(--danger-ink);background:var(--danger-soft);border-radius:var(--r-0);padding:2px 8px;font-size:var(--fs-12);font-weight:600}
.mm-who{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.mm-acts{display:flex;flex-direction:column;gap:8px}
.mm-row{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:12px 12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface)}
.mm-row>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.mm-row small{font-size:var(--fs-13)}
.mm-dur{display:flex;gap:8px;flex-wrap:nowrap;justify-content:flex-end}
@media (max-width:560px){.mm-row{flex-wrap:wrap}.mm-dur{flex-wrap:wrap;justify-content:flex-start}}
.composer.locked.timed-out{color:var(--danger-ink);background:var(--danger-soft);border-color:var(--danger-line)}
.mq-sheet{max-width:760px!important}
.mq-tabs{margin-bottom:12px;overflow-x:auto}
.mq-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;border-radius:var(--r-0);background:var(--danger);color:var(--on-solid);font-size:var(--fs-12);font-weight:600;margin-left:8px}
.mq-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.mq-bar .seg{margin:0}
.mq-sw button{padding:4px 12px}
.mq-item{border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);padding:12px 12px;margin-bottom:12px;display:flex;flex-direction:column;gap:12px;box-shadow:none}
.mq-item.done{opacity:.85}
.mq-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mq-reason{background:var(--danger-soft);color:var(--danger-ink)}
.mq-n{background:var(--warn-soft);color:var(--text)}
.mq-ctx{display:flex;flex-direction:column;gap:2px;background:var(--surface2);border-radius:var(--r-0);padding:8px 12px}
.mq-line{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:baseline;font-size:var(--fs-13);padding:4px 8px;border-radius:var(--r-0);color:var(--muted)}
.mq-line b{color:var(--text);font-weight:600;white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}
.mq-line span{word-break:break-word;min-width:0}
.mq-line time{font-size:var(--fs-12)}
.mq-line b,.mq-line.mq-hit b{font-size:var(--fs-13)}
@media (max-width:560px){.mq-line{grid-template-columns:1fr auto;gap:2px 8px}.mq-line span{grid-column:1/-1;grid-row:2}.mq-acts .mq-also{margin-left:0;width:100%}}
.mq-line.mq-hit{background:var(--mention-bg);box-shadow:none;border-left:3px solid var(--mention-line);color:var(--text)}
.mq-note{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-13);color:var(--muted)}
.mq-note svg{flex:none;margin-top:2px}
.mq-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mq-sep{width:1px;height:20px;background:var(--border);margin:0 2px}
.mq-to{display:inline-flex;gap:0;align-items:center}
.mq-to-l{margin-right:8px}
.mq-to .btn{border-radius:0;margin-left:-1px}
.mq-to .btn:first-of-type{border-radius:var(--r-0);margin-left:0}
.mq-to .btn:last-child{border-radius:var(--r-0)}
.mq-also{display:inline-flex;align-items:center;gap:8px;color:var(--muted);margin-left:auto}
.mq-also input{accent-color:var(--accent)}
.mq-out{display:flex;align-items:center;gap:8px;font-size:var(--fs-13);color:var(--ok)}
.mq-person{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.mq-person:last-child{border-bottom:0}
.mq-log{list-style:none;margin:0;padding:0}
.mq-log li{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border);font-size:var(--fs-13)}
.mq-li-ico{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--r-0);background:var(--surface2);color:var(--muted);flex:none}
.mq-hist summary{cursor:pointer;color:var(--muted);margin-top:8px}
.mq-open{background:var(--warn-soft);color:var(--text)}
.mq-done{background:var(--ok-soft);color:var(--ok)}
.disc-rep{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--r-0);border:1px solid transparent;background:transparent;color:var(--faint);cursor:pointer;opacity:0;transition:opacity var(--dur-1,.15s),color var(--dur-1,.15s)}
.disc-card:hover .disc-rep,.disc-rep:focus-visible{opacity:1}
.disc-rep:hover{color:var(--danger);border-color:var(--border)}
@media (hover:none){.disc-rep{opacity:1}}

/* ---- PartCrew 10.8: public pages and webhooks ---- */
body.pub-mode{overflow:auto}
.pub{min-height:100vh;background:var(--bg);color:var(--text);--wa:var(--accent)}
.pub-top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border)}
.pub-hero{max-width:1120px;margin:0 auto;padding:0 24px}
.pub-banner{height:200px;border-radius:var(--r-0);overflow:hidden;background:var(--accent);position:relative}
.pub-banner img{width:100%;height:100%;object-fit:cover;display:block}
.pub-id{display:flex;align-items:flex-end;gap:16px;margin-top:-48px;padding:0 8px;position:relative;flex-wrap:wrap}
.pub-id .pic.pub-pic{width:96px;height:96px;border-radius:var(--r-0);font-size:var(--fs-24);border:4px solid var(--bg);box-shadow:none;flex:none}
.pub-id .pic.pub-pic img{border-radius:var(--r-0)}
.pub-id h1{margin:0;font-size:var(--fs-24);letter-spacing:-.02em;line-height:1.15;padding-top:48px}
.pub-tag{margin:4px 0 0;color:var(--muted);font-size:var(--fs-14)}
.pub-stats{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;font-size:var(--fs-14);color:var(--muted)}
.pub-stats>span{display:inline-flex;align-items:center;gap:8px}
.pub-stats b{color:var(--text)}
.pub-stats .disc-tag{cursor:default}
.pub-cta{display:flex;gap:8px;align-items:center;padding-bottom:4px}
.pub-main{max-width:1120px;margin:0 auto;padding:24px}
.pub-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.pub-col,.pub-side{display:flex;flex-direction:column;gap:16px;min-width:0}
.pub-sec{padding:16px 16px}
.pub-sec h2{margin:0 0 12px}
.pub-h{display:flex;align-items:center;gap:8px}
.pub-desc{font-size:var(--fs-14);line-height:1.6;color:var(--text);word-break:break-word}
.pub-chat{padding:0;overflow:hidden}
.pub-chtabs{display:flex;align-items:center;gap:4px;padding:12px 12px;border-bottom:1px solid var(--border);overflow-x:auto}
.pub-chtabs button{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--muted);font-weight:600;font-size:var(--fs-14);padding:8px 12px;border-radius:var(--r-0);cursor:pointer;white-space:nowrap}
.pub-chtabs button.on{background:var(--accent-soft);color:var(--text)}
.pub-chtabs button:hover{background:var(--hover)}
.pub-ro{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.pub-msgs{max-height:460px;overflow-y:auto;padding:8px 8px 12px}
.pub-topic{padding:4px 12px 12px}
.pub-msg{display:flex;gap:12px;padding:8px 12px;border-radius:var(--r-0)}
.pub-msg:hover{background:var(--hover)}
.pub-msg .avatar{flex:none}
.pub-mh{display:flex;align-items:baseline;gap:8px;font-size:var(--fs-14)}
.pub-mh time{font-size:var(--fs-12)}
.pub-mb{font-size:var(--fs-14);line-height:1.5;color:var(--text);word-break:break-word}
.pub-game{padding:16px;display:flex;flex-direction:column;gap:12px}
.pub-gtop{display:flex;align-items:center;gap:12px}
.pub-gtop .grow{display:flex;flex-direction:column}
.pub-gicon{width:56px;height:56px;border-radius:var(--r-0);object-fit:cover;flex:none;background:var(--surface2);display:inline-flex;align-items:center;justify-content:center;color:var(--muted)}
.pub-gstats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pub-gstats div{background:var(--surface2);border-radius:var(--r-0);padding:8px;text-align:center;display:flex;flex-direction:column}
.pub-gstats b{font-size:var(--fs-16)}
.pub-gstats span{font-size:var(--fs-12);color:var(--muted)}
.pub-play{justify-content:center}
.pub-about .btn{margin-top:4px}
.pub-rep{display:inline-flex;align-items:center;gap:4px;margin-top:12px}
.pub-comb{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;padding:4px 0}
.pub-hex{height:98px;clip-path:polygon(25% 3%,75% 3%,100% 50%,75% 97%,25% 97%,0 50%);background:var(--surface3);display:flex;align-items:center;justify-content:center;text-align:center;padding:12px 16px;width:100%;transition:transform var(--dur-1,.15s)}
.pub-hex:hover{transform:scale(1.04)}
.pub-hex>div{display:flex;flex-direction:column;gap:2px;font-size:var(--fs-12);line-height:1.2}
.pub-hex b{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-12)}
.pub-hex span{color:var(--muted);font-size:var(--fs-12);font-weight:600}
.pub-hex.doing{background:var(--accent-soft)}
.pub-hex.done{background:var(--ok-soft)}
.pub-hex.done span{color:var(--ok)}
.pub-legend{display:flex;gap:12px;margin-top:12px}
.pub-legend span{display:inline-flex;align-items:center;gap:8px}
.pub-legend .lg{width:12px;height:12px;border-radius:var(--r-0);background:var(--surface3);display:inline-block}
.pub-legend .lg.doing{background:var(--accent-soft);box-shadow:none;outline:1px solid var(--accent-line);outline-offset:-1px}
.pub-legend .lg.done{background:var(--ok-soft)}
.pub-gone{max-width:480px;margin:64px auto;text-align:center;padding:32px;display:flex;flex-direction:column;align-items:center;gap:8px}
.pub-gone h1{font-size:var(--fs-20);margin:8px 0 0}
.pub-credit{max-width:1120px;margin:0 auto;padding:8px 24px 32px;justify-content:center}
@media (max-width:900px){.pub-grid{grid-template-columns:1fr}.pub-side{display:contents}.pub-game{order:-1}.pub-about{order:9}}
.pub-none{padding:4px 12px}
@media (max-width:600px){.pub-top{padding:12px 12px}.pub-hero{padding:0}.pub-banner{height:140px;border-radius:0}.pub-id{padding:0 16px;gap:12px}.pub-id .pic.pub-pic{width:76px;height:76px;font-size:var(--fs-24)}.pub-id h1{padding-top:0;width:100%}.pub-id>.grow{flex-basis:100%}.pub-cta{width:100%}.pub-cta .btn.primary{flex:1;justify-content:center}.pub-main{padding:16px}.pub-comb{grid-template-columns:repeat(3,1fr)}.pub-hex{height:84px;padding:8px 12px}}
.pp-addr{display:flex;align-items:center;gap:0;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);padding:4px 4px 4px 12px}
.pp-addr .input{border:0;background:transparent;padding-left:2px;box-shadow:none;min-width:0;flex:1}
.pp-pre{color:var(--muted);font-size:var(--fs-14);white-space:nowrap}
.pp-link{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:var(--fs-13);word-break:break-all}
.pp-view{margin-top:8px;width:100%;justify-content:center}
.hk-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.hk-row .hk-name{padding:8px 8px;font-weight:600}
.hk-av{background:var(--accent-soft);color:var(--accent)}
.hk-new{display:flex;gap:8px;margin-top:12px}
.hk-new .input{flex:1}
.hk-url{display:flex;gap:8px}
.hk-url .input{flex:1;font-family:var(--mono);font-size:var(--fs-13)}
.hk-how{margin-top:12px}
.hk-how summary{cursor:pointer;color:var(--muted)}
.oh-row{padding:12px 12px;margin-bottom:12px;display:flex;flex-direction:column;gap:8px}
.oh-top{display:flex;align-items:center;gap:8px;min-width:0}
.oh-top b{font-family:var(--mono);font-size:var(--fs-13);font-weight:600}
.oh-dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--faint)}
.oh-dot.ok{background:var(--ok)} .oh-dot.warn{background:var(--danger)}
.oh-evs{display:flex;flex-wrap:wrap;gap:8px}
.oh-ev{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:var(--r-0);padding:4px 12px;font-size:var(--fs-13);cursor:pointer;background:var(--surface)}
.oh-ev:has(input:checked){border-color:var(--accent-line);background:var(--accent-soft)}
.oh-ev input{accent-color:var(--accent);margin:0}
.oh-new{padding:12px;display:flex;flex-direction:column;gap:12px}
.oh-new .btn{align-self:flex-start}

/* ---------- PartCrew 10.9: API docs, Developer portal, bots ---------- */
:root{--code-bg:#0f172a;--code-fg:#e2e8f0;--code-head:#1e293b;--code-line:#22304a;--code-com:#7c8aa5;--code-str:#86efac;--code-num:#fbbf24;--code-key:#93c5fd;--code-muted:#94a3b8;
  --m-get:#059669;--m-post:#2563eb;--m-put:#7c3aed;--m-patch:#d97706;--m-delete:#dc2626;--m-soft:#eef2f8}
[data-theme=dark]{--code-bg:#0b1220;--code-fg:#e2e8f0;--code-head:#141d2f;--code-line:#1f2a40;--code-com:#7c8aa5;--code-str:#86efac;--code-num:#fbbf24;--code-key:#93c5fd;--code-muted:#94a3b8;
  --m-get:#34d399;--m-post:#60a5fa;--m-put:#a78bfa;--m-patch:#fbbf24;--m-delete:#f87171;--m-soft:#1b2436}
.dx .pub-top .dx-crumb{color:var(--muted);font-weight:600;font-size:var(--fs-14);padding-left:12px;margin-left:4px;border-left:1px solid var(--border)}
.dx-wrap{max-width:1180px;margin:0 auto;padding:24px;display:grid;grid-template-columns:200px minmax(0,1fr);gap:32px}
.dx-nav{position:sticky;top:76px;align-self:start;display:flex;flex-direction:column;gap:2px;max-height:calc(100vh - 96px);overflow:auto}
.dx-nav a{color:var(--muted);text-decoration:none;font-size:var(--fs-14);padding:8px 12px;border-radius:var(--r-0)}
.dx-nav a:hover{background:var(--surface2);color:var(--text)}
.dx-main{min-width:0;max-width:860px}
.dx-main section{padding:8px 0 24px;border-bottom:1px solid var(--border);margin-bottom:24px;scroll-margin-top:80px}
.dx-main section:last-child{border-bottom:0}
.dx-main h2{font-size:var(--fs-24);margin:8px 0 12px;letter-spacing:-.01em}
.dx-main h3{font-size:var(--fs-16);margin:24px 0 8px}
.dx-main p,.dx-main li{line-height:1.6;color:var(--text)}
.dx-main code{font-family:var(--mono);font-size:var(--fs-12);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:1px 4px}
.dx-hero{padding:24px 0 24px;border-bottom:1px solid var(--border);margin-bottom:24px}
.dx-hero h1{font-size:var(--fs-24);line-height:1.1;margin:12px 0 12px;letter-spacing:-.02em}
.dx-hero p{font-size:var(--fs-16);color:var(--muted);max-width:640px;margin:0 0 16px}
.dx-kicker{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-13);font-weight:600;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r-0);padding:4px 12px}
.dx-base{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;max-width:640px}
.dx-base code{flex:1;min-width:0;overflow-wrap:anywhere;background:none!important;border:0!important;font-size:var(--fs-14)!important}
.dx-cta{gap:12px;margin-top:16px;flex-wrap:wrap}
.dx-steps{padding-left:16px;margin:0 0 12px}
.dx-steps li{margin:4px 0}
.dx-note{display:flex;gap:12px;background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r-0);padding:12px 12px;color:var(--text);font-size:var(--fs-14);line-height:1.55;margin-top:12px}
.dx-note .i{flex:none;color:var(--accent);margin-top:2px}
.dx-tablewrap{overflow-x:auto}
.dx-table{width:100%;border-collapse:collapse;font-size:var(--fs-14);margin:12px 0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);overflow:hidden}
.dx-table th{text-align:left;font-size:var(--fs-12);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface2);padding:8px 12px}
.dx-table td{padding:8px 12px;border-top:1px solid var(--border);vertical-align:top;line-height:1.5}
.dx-table .chip{padding:1px 8px;font-size:var(--fs-12)}
.dx-eps td:nth-child(2){white-space:nowrap}
.dx-m{display:inline-block;min-width:54px;text-align:center;font:600 var(--fs-12)/1.9 var(--mono);border-radius:var(--r-0);background:var(--m-soft)}
.dx-get{color:var(--m-get)}.dx-post{color:var(--m-post)}.dx-put{color:var(--m-put)}.dx-patch{color:var(--m-patch)}.dx-delete{color:var(--m-delete)}
.dx-group{margin:12px 0 16px}
.dx-tabs{display:flex;gap:4px;margin-bottom:-1px;position:relative;z-index:1}
.dx-tabs button{font:600 var(--fs-13) var(--font);color:var(--muted);background:var(--surface2);border:1px solid var(--border);border-bottom:0;border-radius:var(--r-0);padding:8px 12px;cursor:pointer}
.dx-tabs button.on{background:var(--code-head);color:var(--code-fg);border-color:var(--code-head)}
.dx-code{background:var(--code-bg);border-radius:var(--r-0);overflow:hidden;margin:12px 0;border:1px solid var(--code-line)}
.dx-group .dx-code{margin-top:0;border-top-left-radius:0}
.dx-code-h{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--code-head);color:var(--code-muted);font:600 var(--fs-12) var(--font);padding:8px 8px 8px 12px;min-height:38px}
.dx-code-h .btn{background:transparent;color:var(--code-fg);border-color:var(--code-line)}
.dx-code-h .btn:hover{background:var(--code-line)}
.dx-code pre{margin:0;padding:12px 16px;overflow:auto;max-height:560px}
.dx-code pre code{background:none!important;border:0!important;padding:0!important;color:var(--code-fg);font:var(--fs-13)/1.6 var(--mono);white-space:pre;tab-size:4}
.hc{color:var(--code-com);font-style:italic}.hs{color:var(--code-str)}.hn{color:var(--code-num)}.hk{color:var(--code-key);font-weight:600}
@media (max-width:900px){.dx-wrap{grid-template-columns:1fr;gap:0;padding:16px}.dx-nav{position:static;flex-direction:row;flex-wrap:wrap;max-height:none;gap:4px;margin-bottom:12px}.dx-nav a{background:var(--surface);border:1px solid var(--border);font-size:var(--fs-13);padding:4px 12px}.dx-hero h1{font-size:var(--fs-24)}}
/* developer portal */
.dp-page{max-width:980px}
.dp-tabs{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}
.dp-tabs a[role=tab]{display:inline-flex;align-items:center;gap:8px;padding:12px 12px;color:var(--muted);text-decoration:none;font-weight:600;font-size:var(--fs-14);border-bottom:2px solid transparent;margin-bottom:-1px}
.dp-tabs a[role=tab].on{color:var(--text);border-bottom-color:var(--accent)}
.dp-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}
.dp-intro h2{margin:0 0 4px}.dp-intro p{margin:0;max-width:600px}
.dp-list{padding:4px 0}
.dp-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--border)}
.dp-row:first-child{border-top:0}
.dp-ic{width:34px;height:34px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:none}
.dp-row code,.dp-kv code,.dp-cmds code,.dp-sec p code,.dp-secret code,.dp-link code{font-family:var(--mono);font-size:var(--fs-13);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:1px 8px}
.bt-perms{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.bt-perms .chip{padding:1px 8px;font-size:var(--fs-12)}
.dp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.dp-app{display:flex;align-items:center;gap:12px;padding:12px;text-decoration:none;color:var(--text);transition:border-color .15s,transform .15s}
.dp-app:hover{border-color:var(--accent-line);transform:translateY(-1px)}
.dp-back{display:inline-flex;align-items:center;gap:4px;margin-bottom:12px;color:var(--muted);text-decoration:none}
.dp-apphead{margin-bottom:16px}
.dp-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.dp-sec{padding:16px 16px}.dp-sec h3{margin:0 0 8px}
.dp-sec .field{margin-bottom:12px}
.dp-wide,.dp-danger{grid-column:1/-1}
.dp-danger{border-color:var(--k-bd-fecaca)}
.dp-kv{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 12px}
.dp-link{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}
.dp-link code{flex:1;min-width:0;overflow-wrap:anywhere;padding:8px 12px!important}
.dp-cmds{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.dp-cmds>div{display:flex;flex-direction:column;gap:2px}
.dp-color input[type=color]{width:48px;height:32px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);padding:2px;cursor:pointer}
.perm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0}
.dp-secret{background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:12px;margin-bottom:12px}
.dp-secret code{background:none!important;border:0!important;font-size:var(--fs-13)!important;overflow-wrap:anywhere;color:var(--text)}
.dp-warn{display:flex;gap:8px;align-items:flex-start;background:var(--mention-bg);border:1px solid var(--mention-line);border-radius:var(--r-0);padding:12px 12px;color:var(--text);margin:8px 0}
.dp-warn .i{flex:none;margin-top:2px}
@media (max-width:760px){.dp-cols,.perm-grid{grid-template-columns:1fr}.dp-intro{flex-direction:column}}
/* bots */
.bt-av{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--bt);color:var(--on-solid,var(--accent-ink));flex:none}
.bt-av.lg{width:64px;height:64px}
.bt-head{display:flex;align-items:center;gap:12px}
.bt-name{display:flex;align-items:center;gap:8px;min-width:0}
.bt-list{display:flex;flex-direction:column;gap:8px}
.bt-row{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--border);border-radius:var(--r-0);padding:12px;background:var(--surface)}
.bt-acts{display:flex;flex-direction:column;gap:8px;flex:none}
.bt-edit{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.bt-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:24px 16px;color:var(--muted)}
.bt-empty b{color:var(--text)}
.bt-install-page{display:flex;justify-content:center}
.bt-install{max-width:520px;width:100%;padding:24px;margin:12px auto}
.bt-desc{color:var(--muted);margin:12px 0 4px}
.bt-always{opacity:.85;cursor:default}
.bt-always .i{flex:none;margin-top:2px;color:var(--green)}
.m-via{grid-column:2;display:flex;align-items:center;gap:8px;font-size:var(--fs-13);color:var(--muted);padding:0 0 4px;min-width:0;position:relative}
.m-via::before{content:"";position:absolute;left:-34px;top:9px;width:28px;height:10px;border-left:2px solid var(--border2);border-top:2px solid var(--border2);border-top-left-radius:var(--r-0)}
.m-via .i{flex:none}
.m-via b{color:var(--text);font-weight:600}
.ml-act{display:inline-flex;align-items:center;gap:4px;color:var(--green);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ml-act .i{flex:none}

/* PartCrew 10.10: one settings shell (left nav), a three-button hover bar with a More menu, tooltips on icon buttons,
   quieter sidebar controls. Colours are theme variables only. */
.sheet.set-shell{max-width:920px;height:min(86vh,720px);display:flex;flex-direction:column;overflow:hidden}
.set-wrap{display:flex;flex:1;min-height:0}
.set-nav{width:224px;flex:none;border-right:1px solid var(--border);background:var(--surface2);padding:16px 12px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}
.set-nav-t{font-weight:600;font-size:var(--fs-13);color:var(--text);padding:2px 12px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.set-nav-g{font-size:var(--fs-12);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);padding:12px 12px 4px}
.set-nav-g:empty{padding:0;margin:12px 8px 8px;border-top:1px solid var(--border)}
.set-nav-i{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;background:none;color:var(--muted);font:inherit;font-size:var(--fs-14);font-weight:500;padding:8px 12px;border-radius:var(--r-0);cursor:pointer;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}
.set-nav-i:hover{background:var(--hover);color:var(--text)}
.set-nav-i.on{background:var(--accent-soft);color:var(--accent)}
.set-nav-i.danger,.set-nav-i.danger:hover{color:var(--danger)}
.set-nav-i span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.set-nav-i .set-ext{flex:none;color:var(--faint);display:inline-flex}
.set-main{flex:1;min-width:0;overflow-y:auto;display:flex;flex-direction:column}
.set-main .sheet-b{flex:1}
.set-main .sheet-h{position:sticky;top:0;z-index:2;background:inherit}
.set-shell .set-main{background:inherit}
.set-main .sheet-f{position:sticky;bottom:0;z-index:2}
@media (max-width:720px){
  .sheet.set-shell{height:92vh;max-width:none}
  .set-wrap{flex-direction:column}
  .set-nav{width:auto;flex-direction:row;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid var(--border);padding:8px 12px;gap:8px;scrollbar-width:none;flex:none}
  .set-nav::-webkit-scrollbar{display:none}
  .set-nav-t,.set-nav-g,.set-nav-i .set-ext{display:none}
  .set-nav-i{width:auto;flex:none;padding:8px 12px;border-radius:var(--r-0);font-size:var(--fs-13)}
  .set-nav-i span{overflow:visible}
}
.ap-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ap-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1.5px solid var(--border);background:var(--surface);border-radius:var(--r-0);padding:12px;cursor:pointer;text-align:left;font:inherit;color:var(--text)}
.ap-card:hover{border-color:var(--border2)}
.ap-card.on{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.ap-prev{display:flex;align-items:center;justify-content:center;width:100%;height:72px;border-radius:var(--r-0);margin-bottom:8px;background:var(--surface2);color:var(--muted)}
.ap-card.on .ap-prev{color:var(--accent)}
.m-ovf[hidden]{display:none!important}
.m-more-pop{min-width:210px}
.pm-rx{display:flex;gap:4px;padding:2px 2px 4px}
.pop-menu .pm-rx button{flex:1;justify-content:center;font-size:var(--fs-20);padding:8px 0;border-radius:var(--r-0)}
.tip.tip-up,.tip.tip-down{font-size:var(--fs-12);padding:4px 8px;white-space:nowrap}
.tip.tip-up::before,.tip.tip-down::before{display:none}
.ch .ch-gear{opacity:0}
.ch:hover .ch-gear,.ch.on .ch-gear,.ch-gear:focus-visible{opacity:.7}
.cat-h .cat-act{opacity:0}
.cat-h:hover .cat-act,.cat-act:focus-visible{opacity:.8}
@media (hover:none){.cat-h .cat-act{opacity:.8}.ch .ch-gear{opacity:0}.ch.on .ch-gear{opacity:.7}}
@media (hover:none){.cat-h [data-new-ch]{display:none}}
.ov-ovf[hidden]{display:none!important}

/* ================= PartCrew 10.11: rail Explore buttons, a calm Home, a calmer workspace ================= */
.rail-explore{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}
.rail-btn.explore .pic{display:grid;place-items:center;background:var(--surface);color:var(--accent);box-shadow:none}
.rail-btn.explore .pic svg{width:22px;height:22px}
.rail-btn.explore:hover .pic,.rail-btn.explore.on .pic{background:var(--accent);color:var(--accent-ink)}

/* Home */
.page.home2{max-width:1080px;margin:0 auto;padding:32px 32px 24px;display:flex;flex-direction:column;gap:32px;min-height:100%}
.h2-hello h1{font-size:var(--fs-24);line-height:1.2;letter-spacing:-.02em;margin:0 0 8px;font-weight:600}
.h2-hello p{margin:0;font-size:var(--fs-14)}
.h2-sec-h{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:12px;min-height:32px}
.h2-sec-h h2{font-size:var(--fs-14);font-weight:600;margin:0;color:var(--text);letter-spacing:0}
.h2-more{font-size:var(--fs-13);color:var(--muted);text-decoration:none;font-weight:500}.h2-more:hover{color:var(--accent)}
.h2-count{font-size:var(--fs-12);font-weight:600;color:var(--muted);background:var(--surface2);border-radius:var(--r-0);padding:2px 8px}
.h2-count:empty{display:none}
.h2-ws-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.h2-ws{position:relative;overflow:hidden;display:flex;align-items:center;gap:12px;padding:12px 12px 16px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);color:var(--text);text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s}
.h2-ws:hover{border-color:var(--accent-line);box-shadow:none;transform:translateY(-1px)}
.h2-ws .pic.h2-ws-pic{width:44px;height:44px;border-radius:var(--r-0);flex:none;display:grid;place-items:center;font-weight:600;font-size:var(--fs-14);color:var(--accent-ink);overflow:hidden}
.h2-ws .pic.h2-ws-pic img{width:100%;height:100%;object-fit:cover}
.h2-ws-t{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.h2-ws-t b{font-size:var(--fs-14);font-weight:600}
.h2-ws-t span{font-size:var(--fs-13);color:var(--muted)}
.h2-ws-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--surface2)}
.h2-ws-bar i{display:block;height:100%;background:var(--accent);border-radius:var(--r-0)}
.h2-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
.h2-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:12px 16px 12px;min-width:0}
.h2-panel .h2-sec-h{margin-bottom:4px}
.h2-list{display:flex;flex-direction:column}
.h2-list .skel-line{margin:12px 0}
.h2-row{display:flex;align-items:center;gap:12px;width:calc(100% + 12px);margin:0 -8px;padding:8px 8px;border:0;border-radius:var(--r-0);background:none;color:var(--text);text-decoration:none;text-align:left;font:inherit;cursor:pointer}
.h2-row:hover{background:var(--surface2)}
.h2-ic{width:30px;height:30px;flex:none;display:grid;place-items:center;border-radius:var(--r-0);background:var(--surface2);color:var(--muted)}
.h2-ic svg{width:16px;height:16px}
.h2-av{width:30px;flex:none;display:grid;place-items:center}
.h2-txt{display:flex;flex-direction:column;min-width:0;flex:1}
.h2-txt b{font-size:var(--fs-14);font-weight:500}
.h2-txt span{font-size:var(--fs-13);color:var(--muted)}
.h2-when{flex:none;font-size:var(--fs-12);color:var(--faint)}
.h2-when.late{color:var(--red)}
.h2-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.h2-none{display:flex;align-items:center;gap:8px;padding:12px 0 12px;color:var(--muted);font-size:var(--fs-13)}
.h2-foot{padding:8px 0 4px}
.h2-empty{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding:32px 16px;border:1px dashed var(--border2);border-radius:var(--r-0);background:var(--surface)}
.h2-empty b{font-size:var(--fs-16)}
.h2-empty-ic{width:52px;height:52px;margin-bottom:8px;display:grid;place-items:center;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent)}
.h2-inv,.h2-note{display:flex;align-items:center;gap:12px;padding:12px 12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);font-size:var(--fs-14)}
.h2-note{color:var(--muted)}.h2-note svg{flex:none;color:var(--accent)}
.page.home2 .app-foot{margin-top:auto}
@media (max-width:1050px){.h2-cols{grid-template-columns:repeat(2,minmax(0,1fr))}.h2-cols>:first-child{grid-column:1/-1}}
@media (max-width:640px){.page.home2{padding:24px 16px 16px;gap:24px}.h2-hello h1{font-size:var(--fs-24)}.h2-cols,.h2-ws-grid{grid-template-columns:1fr}.h2-inv{flex-wrap:wrap}}

/* Workspace: one mark per name in chat (owner crown or BOT tag); badges and Roblox links live on the profile card */
.msgs .m-head .m-rbx,.msgs .m-head .staff-badge,.msgs .m-head .tier-badge.mini{display:none}
/* the sidebar's "Create channel" row only shows while you're using the sidebar (it's also in the workspace menu and each category's +) */
@media (hover:hover){.chs .add-ch{opacity:0;transition:opacity .15s}.chs:hover .add-ch,.chs .add-ch:focus-visible{opacity:1}}
/* Overview: three stats, one colour; amber only when bugs are open */
.ov-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.ov-si,.ov-si.ok{background:var(--surface2);color:var(--muted)}
.ov-si.warn{background:var(--warn-soft);color:var(--warn)}
@media (max-width:900px){.ov-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:560px){.ov-stats{grid-template-columns:1fr}}

/* 10.12: two-factor sign-in, badges, sprint reports. Colours are theme variables only. */
.tf-hero{display:flex;gap:12px;align-items:flex-start;padding:12px 12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface2);margin-bottom:12px}
.tf-hero>svg{color:var(--accent);flex:none;margin-top:2px}
.tf-steps{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:16px}
.tf-steps li>b{display:block;margin-bottom:8px}
.tf-qr{width:184px;height:184px;margin:8px 0 12px;border:1px solid var(--border);border-radius:var(--r-0);overflow:hidden;background:var(--surface)}
.tf-qr svg{display:block;width:100%;height:100%}
.tf-key{display:flex;align-items:center;gap:8px;margin:4px 0 12px;flex-wrap:wrap}
.tf-key code{font-size:var(--fs-13);letter-spacing:.04em;padding:8px 12px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border);word-break:break-all}
.tf-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tf-codes code{font-size:var(--fs-14);text-align:center;padding:8px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border);letter-spacing:.06em}
.otp-in{letter-spacing:.12em}
.prof-badges .bdg-row{display:flex;flex-wrap:wrap;gap:8px}
.bdg{display:inline-flex;align-items:center;gap:8px;padding:8px 12px 8px 8px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);font-size:var(--fs-13);font-weight:600;color:var(--text)}
.bdg-i{width:26px;height:26px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:none}
.bdg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.bdg-card{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface)}
.bdg-card>svg{color:var(--accent);flex:none;margin-top:2px}
.bdg-card.off{opacity:.62}.bdg-card.off>svg{color:var(--faint)}
.pc-badges{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 12px}
.pcb{width:26px;height:26px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:var(--fs-12);font-weight:600}
.pcb.more{background:var(--surface2);color:var(--muted)}
.sr-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.sr-bar select{min-width:240px;max-width:100%}
.sr-dates{display:inline-flex;gap:8px}.sr-dates.hidden{display:none}
.sr-dates input{width:auto}
.sr-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.sr-tile{padding:12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);display:flex;flex-direction:column;gap:2px}
.sr-tile b{font-size:var(--fs-24);line-height:1.1;color:var(--text)}.sr-tile span{font-size:var(--fs-13);color:var(--muted)}
.sr-sub{margin:12px 0 16px}
.sr-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.sr-sec{border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;background:var(--surface);min-width:0}
.sr-sec h3{display:flex;align-items:center;justify-content:flex-start;gap:8px;font-size:var(--fs-14);margin:0 0 8px;color:var(--text);text-transform:none;letter-spacing:0;text-align:left;font-weight:600}.sr-sec h3 svg{color:var(--accent)}
.sr-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.sr-list li{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--border);font-size:var(--fs-14);min-width:0}
.sr-list li:first-child{border-top:0}
.sr-list li .grow{min-width:0;overflow:hidden;text-overflow:ellipsis}
.sr-who{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-13);color:var(--muted);flex:none;max-width:45%}
.sr-who span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-sev{font-size:var(--fs-12);font-weight:600;padding:1px 8px;border-radius:var(--r-0);background:var(--surface2);color:var(--muted);text-transform:capitalize}
.sr-link{display:flex;align-items:center;gap:8px;padding:8px 0}
.sr-pub{max-width:980px}
.sr-head{display:flex;align-items:center;gap:12px;padding:16px 16px;margin-bottom:12px}
.sr-head h1{font-size:var(--fs-24);margin:2px 0}
.sr-pic{width:52px;height:52px;border-radius:var(--r-0);object-fit:cover;flex:none;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.sr-card{padding:16px 16px}
@media (max-width:720px){.sr-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.sr-grid{grid-template-columns:1fr}.sr-bar select{min-width:0;flex:1}.sr-head{flex-wrap:wrap}}

/* 10.13: language picker, translated messages, invite friends, asset versions. Theme variables only. */
.lang-pick{display:flex;flex-direction:column;gap:8px}
.lang-opt{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 12px;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;text-align:left}
.lang-opt:hover{background:var(--surface2)}
.lang-opt.on{border-color:var(--accent);background:var(--accent-soft)}.lang-opt.on svg{color:var(--accent)}
.m-tr{margin-top:8px;padding:8px 12px;border-left:3px solid var(--accent-line);background:var(--surface2);border-radius:var(--r-0)}
.m-tr-h{display:flex;align-items:center;gap:8px;font-size:var(--fs-12);color:var(--muted);margin-bottom:4px}
.m-tr-h .linkish{font-size:var(--fs-12);margin-left:4px}
.m-tr-t{white-space:pre-wrap;word-break:break-word;color:var(--text)}
.rf-link{display:flex;gap:8px}.rf-link .input{flex:1;min-width:0}
.rf-count{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:12px 0 4px}
.rf-count>b{font-size:var(--fs-24);color:var(--text)}
.rf-rewards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.rf-people{display:flex;flex-direction:column}
.rf-p{display:flex;align-items:center;gap:12px;padding:8px 4px;border-top:1px solid var(--border);color:var(--text);text-decoration:none}
.rf-p:first-child{border-top:0}
.av-new{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.av-note{flex:1;min-width:160px}
.av-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.av-list li{display:flex;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--border)}
.av-list li:first-child{border-top:0}
.av-n{flex:none;min-width:34px;height:26px;padding:0 8px;border-radius:var(--r-0);display:grid;place-items:center;font-size:var(--fs-12);font-weight:600;background:var(--surface2);color:var(--muted)}
.av-list li.cur .av-n{background:var(--accent-soft);color:var(--accent)}
.av-t{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.av-cur{font-size:var(--fs-12);font-weight:600;padding:1px 8px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent);margin-left:4px}
@media (max-width:720px){.rf-rewards{grid-template-columns:1fr}.av-list li .btn span{display:none}}
.rf-rewards .bdg-card:not(.off){border-color:var(--accent-line);background:var(--accent-soft)}

/* 10.14: Discord bridge and Game stats. Theme variables only. */
.dcb-row{display:flex;align-items:center;gap:8px;padding:12px 0;border-top:1px solid var(--border);flex-wrap:wrap}
.dcb-row:first-of-type{border-top:0}
.dcb-row b{color:var(--text)}.dcb-row svg{vertical-align:-2px;color:var(--muted)}
.dcb-off{color:var(--k-fg-b91c1c)}
.dcb-new{margin-top:8px}
.gst-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.gst-ic{width:44px;height:44px;border-radius:var(--r-0);object-fit:cover;flex:none;display:grid;place-items:center;background:var(--surface2);color:var(--muted)}
.gst-game{max-width:320px}
.gst-tiles{margin-bottom:12px}
.gst-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.seg-tabs{display:inline-flex;gap:2px;padding:4px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border)}
.seg-tabs button{border:0;background:transparent;color:var(--muted);font:inherit;font-size:var(--fs-13);font-weight:600;padding:4px 12px;border-radius:var(--r-0);cursor:pointer}
.seg-tabs button.on{background:var(--surface);color:var(--text);box-shadow:none}
.gst-chart{border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface);padding:12px 8px 4px}
.gst-svg{display:block;width:100%;height:auto}
.gst-grid{stroke:var(--border);stroke-width:1}
.gst-ax{fill:var(--faint);font-size:var(--fs-12)}
.gst-line{fill:none;stroke:var(--accent);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.gst-area{fill:var(--accent-soft);opacity:.75}
.gst-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2}
.gst-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:24px 16px;color:var(--muted)}
.gst-empty p{max-width:420px;margin:0}

/* 10.15: Studio plugin page (#/studio) and phone install guide (#/get-app) */
.st .pub-top .dx-crumb,.ga .pub-top .dx-crumb{color:var(--muted);font-weight:600;font-size:var(--fs-14);padding-left:12px;margin-left:4px;border-left:1px solid var(--border)}
.st-main,.ga-main{max-width:1040px;margin:0 auto;padding:32px 24px 48px;display:flex;flex-direction:column;gap:24px}
.st-hero{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:32px;align-items:center;padding:8px 0 4px}
.st-hero h1,.ga-hero h1{font-size:var(--fs-24);line-height:1.15;letter-spacing:-.02em;margin:12px 0 12px}
.st-hero p,.ga-hero p{color:var(--muted);font-size:var(--fs-16);line-height:1.55;margin:0 0 16px}
.st-hero p.small{font-size:var(--fs-13);margin-top:12px}
.st-dl{gap:12px;flex-wrap:wrap}
.st-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);box-shadow:none;padding:12px;font-size:var(--fs-13)}
.st-ph{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:12px;border-bottom:1px solid var(--border);margin-bottom:8px}
.st-ph span{color:var(--muted);font-size:var(--fs-12)}
.st-pl{font-size:var(--fs-12);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin:12px 0 8px}
.st-row{display:flex;align-items:center;justify-content:space-between;background:var(--surface2);border-radius:var(--r-0);padding:8px 8px;margin-bottom:8px}
.st-row i{font-style:normal;font-size:var(--fs-12);font-weight:600;background:var(--accent);color:var(--accent-ink);border-radius:var(--r-0);padding:4px 12px}
.st-in{border:1px solid var(--border2);border-radius:var(--r-0);padding:8px;color:var(--muted)}
.st-tg{display:flex;align-items:center;gap:8px;padding:4px 0;color:var(--text)}
.st-dot{width:8px;height:8px;border-radius:50%;background:var(--green)}
.st-feats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.st-feat{display:flex;flex-direction:column;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:16px}
.st-feat b{font-size:var(--fs-14)}.st-feat p{margin:4px 0 0;color:var(--muted);font-size:var(--fs-13);line-height:1.5}
.st-fi{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent)}
.st-card{padding:24px 24px}.st-card h2{font-size:var(--fs-20);margin:0 0 12px}
.st-card code,.ga-card code{font-family:var(--mono);font-size:var(--fs-13);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:1px 4px}
.ga-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.ga-steps li{display:flex;gap:12px;align-items:flex-start;line-height:1.55;font-size:var(--fs-14)}
.ga-n{flex:none;display:inline-grid;place-items:center;width:26px;height:26px;border-radius:var(--r-0);background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:var(--fs-13);margin-top:1px}
.ga-steps a,.st-ul a,.st-card a{color:var(--accent)}
.st-two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.st-ul{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:8px;font-size:var(--fs-14);line-height:1.55;color:var(--text)}
.st-card p.small{margin:12px 0 0}
.ga-hero{display:flex;gap:24px;align-items:center}
.ga-hero h1{margin-top:0}
.ga-icon{width:88px;height:88px;border-radius:var(--r-0);box-shadow:none;flex:none}
.ga-ok{display:inline-flex;align-items:center;gap:8px;color:var(--green)!important;font-weight:600;font-size:var(--fs-14)!important}
.ga-grid{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:24px;align-items:start}
.ga-card{padding:16px 24px}
.ga-tabs{display:flex;gap:8px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:4px;margin-bottom:16px;width:max-content;max-width:100%}
.ga-tabs button{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--muted);font:inherit;font-size:var(--fs-13);font-weight:600;padding:8px 12px;border-radius:var(--r-0);cursor:pointer}
.ga-tabs button.on{background:var(--surface);color:var(--text);box-shadow:none}
.ga-ico{display:inline-grid;place-items:center;vertical-align:-3px;width:24px;height:24px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border);color:var(--accent);margin:0 2px}
.ga-phone{display:flex;flex-direction:column;align-items:center;gap:12px}
.ga-screen{width:200px;aspect-ratio:1179/2556;border-radius:var(--r-0);border:8px solid var(--text);overflow:hidden;background:var(--surface);box-shadow:none}
.ga-screen{display:flex;flex-direction:column;justify-content:space-between;padding:32px 12px 12px;background:var(--surface2)}
.ga-home{display:grid;grid-template-columns:repeat(4,1fr);gap:16px 12px}
.ga-app{display:flex;flex-direction:column;align-items:center;gap:4px}
.ga-app i,.ga-app img{width:34px;height:34px;border-radius:var(--r-0);background:var(--surface3);display:block}
.ga-app em{display:block;width:26px;height:4px;border-radius:var(--r-0);background:var(--border2)}
.ga-me em{width:auto;height:auto;background:none;font-style:normal;font-size:var(--fs-12);font-weight:600;color:var(--text)}
.ga-me img{box-shadow:none;outline:2px solid var(--accent);outline-offset:0}
html[data-theme=dark] .ga-screen{border-color:var(--border2)}
.ga-dock{display:flex;justify-content:space-around;background:var(--surface);border-radius:var(--r-0);padding:8px}
.ga-dock i{width:30px;height:30px;border-radius:var(--r-0);background:var(--surface3)}
.ga-cap{font-size:var(--fs-13);color:var(--muted)}
.ga-why{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.ga-why>div{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:16px;display:flex;flex-direction:column;gap:8px}
.ga-why b{font-size:var(--fs-14)}.ga-why p{margin:0;color:var(--muted);font-size:var(--fs-13);line-height:1.5}.ga-why a{color:var(--accent)}
.pc-guide a{color:var(--accent);font-weight:600}
@media (max-width:900px){.st-hero{grid-template-columns:1fr;gap:24px}.st-feats,.ga-why{grid-template-columns:1fr 1fr}.st-two{grid-template-columns:1fr}.ga-grid{grid-template-columns:1fr}.ga-phone{display:none}}
@media (max-width:600px){.st .pub-top .dx-crumb,.ga .pub-top .dx-crumb{display:none}.st-main,.ga-main{padding:16px 16px 32px;gap:16px}.st-hero h1,.ga-hero h1{font-size:var(--fs-24)}.st-feats,.ga-why{grid-template-columns:1fr}.st-card,.ga-card{padding:16px 16px}.ga-hero{flex-direction:column;align-items:flex-start;gap:12px}.ga-icon{width:72px;height:72px;border-radius:var(--r-0)}.st-dl .btn{flex:1;justify-content:center}}

/* 10.16: New workspace > From Discord template */
.pf-src{display:flex;gap:4px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:4px;margin-bottom:12px}
.pf-src button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;background:transparent;color:var(--muted);font:inherit;font-size:var(--fs-13);font-weight:600;padding:8px 12px;border-radius:var(--r-0);cursor:pointer}
.pf-src button.on{background:var(--surface);color:var(--text);box-shadow:none}
.pf-src button:not(.on):hover{color:var(--text)}
.dti-sheet .sheet,.sheet.dti-sheet{width:min(720px,calc(100vw - 24px));max-width:none}
.dti-row{display:flex;gap:12px;align-items:flex-end}.dti-row .field{margin:0}.dti-row .btn{height:40px}
.dti-help{margin:8px 0 12px}
.dti-err{display:flex;gap:8px;align-items:flex-start;color:var(--red);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;margin:0}
.dti-sum{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--r-0);padding:12px 12px;margin-bottom:12px}
.dti-sum b{font-size:var(--fs-14)}
.dti-counts{display:flex;gap:12px;font-size:var(--fs-13);color:var(--muted)}.dti-counts b{color:var(--text);font-size:var(--fs-14)}
.dti-cols{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px;margin-top:4px}
.dti-cols section{border:1px solid var(--border);border-radius:var(--r-0);padding:12px 12px;max-height:300px;overflow:auto;background:var(--surface)}
.dti-h{font-size:var(--fs-12);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin:2px 0 8px}
.dti-cat+.dti-cat{margin-top:12px}
.dti-cath{font-size:var(--fs-12);font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.dti-cat ul,.dti-roles,.dti-notes{list-style:none;margin:0;padding:0}
.dti-ch{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 2px;font-size:var(--fs-13);color:var(--text)}
.dti-hash{display:inline-flex;color:var(--faint)}
.dti-tag{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-12);font-weight:600;color:var(--muted);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-0);padding:1px 8px}
.dti-topic{flex-basis:100%;padding-left:16px;font-size:var(--fs-12);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dti-roles li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 0;font-size:var(--fs-13)}
.dti-dot{width:10px;height:10px;border-radius:50%;background:var(--rc,var(--faint));flex:none}
.dti-perms{flex-basis:100%;padding-left:16px}
.dti-skip{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-13);color:var(--text);margin-top:12px}
.dti-skip .i{color:var(--faint);flex:none;margin-top:2px}
.dti-notes{margin-top:12px;display:flex;flex-direction:column;gap:4px}
.dti-notes li{font-size:var(--fs-13);color:var(--muted);padding-left:12px;position:relative}
.dti-notes li::before{content:'';position:absolute;left:2px;top:8px;width:4px;height:4px;border-radius:var(--r-0);background:var(--faint)}
.dti-tools{display:flex;gap:12px;align-items:flex-start;margin-top:12px;padding:12px;border:1px solid var(--border);border-radius:var(--r-0);cursor:pointer}
.dti-tools input{margin-top:4px;accent-color:var(--accent)}
.dti-tools>span{display:flex;flex-direction:column;gap:2px;font-size:var(--fs-13)}
@media (max-width:640px){.dti-sum{flex-direction:column;align-items:flex-start;gap:8px}.dti-cols{grid-template-columns:1fr}.dti-row{flex-direction:column;align-items:stretch}.dti-cols section{max-height:220px}}

/* ===== 10.17 redesign: update logs, boards, public pages. Every colour below is a theme variable. ===== */

/* tags shared by update logs */
.ntag{display:inline-flex;align-items:center;font-size:var(--fs-12);font-weight:600;line-height:1;border-radius:var(--r-0);padding:4px 8px;border:1px solid transparent;white-space:nowrap}
.nt-new{background:var(--rd-new-bg);color:var(--rd-new-fg);border-color:var(--rd-new-bd)}
.nt-improved{background:var(--rd-imp-bg);color:var(--rd-imp-fg);border-color:var(--rd-imp-bd)}
.nt-fixed{background:var(--rd-fix-bg);color:var(--rd-fix-fg);border-color:var(--rd-fix-bd)}
.ver{background:var(--rd-ver-bg);color:var(--rd-ver-fg);border-radius:var(--r-0);padding:4px 8px;letter-spacing:-.01em}

/* update log timeline */
.ul-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:860px;margin:0 0 24px}
.ul-sum>div{background:var(--rd-tile);border:1px solid var(--rd-card-bd);border-radius:var(--r-0);padding:12px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ul-sum b{font-size:var(--fs-16);letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ul-sum span{font-size:var(--fs-13);color:var(--muted)}
.ulog{position:relative;max-width:860px;display:flex;flex-direction:column;gap:0}
.ulog-e{display:grid;grid-template-columns:120px 22px minmax(0,1fr);gap:0 12px;position:relative;padding-bottom:24px;scroll-margin-top:80px}
.ulog-e:before{content:"";position:absolute;left:144px;top:14px;bottom:-14px;width:2px;background:var(--rd-rail)}
.ulog-e:last-child:before{display:none}
.ulog-when{display:flex;flex-direction:column;align-items:flex-end;gap:8px;padding-top:12px;text-align:right}
.ulog-when time{font-size:var(--fs-13);color:var(--muted);white-space:nowrap}
.ulog-dot{grid-column:2;width:14px;height:14px;margin:16px auto 0;border-radius:50%;background:var(--rd-dot);border:3px solid var(--rd-dot-bd);position:relative;z-index:1}
.ulog-e.latest .ulog-dot{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.ulog-card{cursor:pointer;padding:16px 16px 16px;border:1px solid var(--rd-card-bd);background:var(--rd-card);box-shadow:none;border-radius:var(--r-0);transition:box-shadow .18s,border-color .18s,transform .18s}
.ulog-card:hover{box-shadow:none;border-color:var(--accent-line)}
.ulog-e.latest .ulog-card{border-color:var(--accent-line);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.ulog-e.draft .ulog-card{border-style:dashed;opacity:.9}
.ulog-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:30px}
.ulog-ver-m,.ulog-date-m{display:none}
.ulog-link{width:30px;height:30px;opacity:.55}.ulog-card:hover .ulog-link,.ulog-link:focus-visible{opacity:1}
.ulog-card h2{font-size:var(--fs-20);line-height:1.3;letter-spacing:-.02em;margin:8px 0 8px;font-weight:600}
.ulog-body{font-size:var(--fs-14);line-height:1.6;color:var(--text)}
.ulog-body p{margin:8px 0;color:var(--muted)}
.un-group{margin-top:12px}.un-h{display:flex;align-items:center;gap:8px;margin-bottom:4px}.un-n{font-size:var(--fs-12);color:var(--faint)}
.ulog-body ul{list-style:none;margin:0;padding:0}
.ulog-body li{position:relative;padding:4px 0 4px 16px;margin:0}
.ulog-body li:before{content:"";position:absolute;left:4px;top:.85em;width:6px;height:6px;border-radius:var(--r-0);background:var(--rd-dot-bd)}
.un-new li:before{background:var(--rd-new-fg)}.un-improved li:before{background:var(--rd-imp-fg)}.un-fixed li:before{background:var(--rd-fix-fg)}
.ulog-by{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
@media (max-width:700px){.ulog-e{grid-template-columns:16px minmax(0,1fr);gap:0 12px}.ulog-e:before{left:7px}.ulog-when{display:none}.ulog-dot{grid-column:1;margin-top:16px;width:14px}
  .ulog-ver-m{display:inline-flex}.ulog-date-m{display:block;margin-top:8px}.ulog-card{padding:16px 16px 12px}.ulog-card h2{font-size:var(--fs-16)}.ul-sum b{font-size:var(--fs-16)}.ul-sum>div{padding:12px 12px}}

/* kanban board */
.kboard-sum{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px;padding:12px 12px;background:var(--rd-tile);border:1px solid var(--rd-card-bd);border-radius:var(--r-0)}
.kbs-stats{display:flex;gap:12px;flex-wrap:wrap;font-size:var(--fs-13);color:var(--muted)}
.kbs{display:inline-flex;align-items:center;gap:8px}.kbs b{color:var(--text);font-size:var(--fs-14)}
.kbs i{width:8px;height:8px;border-radius:var(--r-0);background:var(--rd-todo)}.kbs-doing i{background:var(--rd-doing)}.kbs-testing i{background:var(--rd-testing)}.kbs-done i{background:var(--rd-done)}
.kbs-prog{flex:1;min-width:120px;height:6px;border-radius:var(--r-0);background:var(--rd-track);overflow:hidden}.kbs-prog span{display:block;height:100%;border-radius:var(--r-0);background:var(--rd-done);transition:width .4s}
.kbs-pct{font-size:var(--fs-13);font-variant-numeric:tabular-nums}
.kanban{gap:12px}
.kcol{background:var(--rd-col);border:1px solid var(--rd-card-bd);border-radius:var(--r-0);padding:8px 8px 12px}
.kcol-h{position:sticky;top:0;padding:8px 4px 12px;font-size:var(--fs-13);font-weight:600;color:var(--text);gap:8px}
.kcol-h i{width:10px;height:10px;border-radius:var(--r-0);background:var(--rd-todo);box-shadow:none;outline:2px solid var(--rd-col);outline-offset:0}
.kc-doing .kcol-h i{background:var(--rd-doing)}.kc-testing .kcol-h i{background:var(--rd-testing)}.kc-done .kcol-h i{background:var(--rd-done)}
.kcol-h .cnt{background:var(--rd-card);border:1px solid var(--rd-card-bd);color:var(--muted);font-weight:600;font-variant-numeric:tabular-nums;padding:1px 8px}
.kcol-h .kadd{margin-left:auto;width:28px;height:28px;opacity:.6}.kcol:hover .kcol-h .kadd{opacity:1}
.kcol-b{gap:8px}
.kcard{position:relative;background:var(--rd-card);border:1px solid var(--rd-card-bd);border-radius:var(--r-0);padding:12px 12px 12px 12px;box-shadow:none;overflow:hidden}
.kcard:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent}
.kcard.kp-urgent:before{background:var(--rd-crit)}.kcard.kp-high:before{background:var(--rd-high)}.kcard.kp-medium:before{background:var(--rd-doing)}.kcard.kp-low:before{background:var(--rd-low)}
.kcard:hover{box-shadow:none;border-color:var(--accent-line)}
.kcard .kt{font-size:var(--fs-14);font-weight:600;line-height:1.4;letter-spacing:-.005em}
.kcard .kgrip{opacity:0;color:var(--faint);transition:opacity .15s;cursor:grab;margin:-2px -4px 0 0}
.kcard:hover .kgrip{opacity:1}
@media (pointer:coarse){.kcard .kgrip{opacity:.7}}
.kcard .ktags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.kcard .kmeta{margin-top:12px;gap:8px;font-size:var(--fs-12);min-height:24px}
.kdue{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--r-0);background:var(--surface2);color:var(--muted);font-weight:500}
.kdue.soon{background:var(--rd-new-bg);color:var(--rd-new-fg)}
.kdue.late{background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red)}
.kdue.ok-text{background:var(--rd-fix-bg);color:var(--rd-fix-fg)}
.kwho{display:inline-flex}.kwho .avatar{box-shadow:none;outline:2px solid var(--rd-card);outline-offset:0}
.kwho.none{width:22px;height:22px;border-radius:var(--r-0);border:1.5px dashed var(--border2);color:var(--faint);align-items:center;justify-content:center}
.kcard.done{background:var(--rd-col)}.kcard.done .kt{color:var(--muted)}
.kempty{display:flex;flex-direction:column;align-items:center;gap:8px;border:1.5px dashed var(--rd-card-bd);background:transparent;border-radius:var(--r-0);padding:16px 12px;color:var(--faint);font-size:var(--fs-13)}
.kcol.kover{background:var(--accent-soft);border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
@media (max-width:820px){.kboard-sum{padding:8px 12px;gap:12px}.kbs-stats{gap:12px;font-size:var(--fs-12)}.kcol{padding:4px 8px 8px}}

/* bug tracker */
.bug-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) minmax(0,1.6fr);gap:12px;margin:0 0 12px}
.bs{background:var(--rd-tile);border:1px solid var(--rd-card-bd);border-radius:var(--r-0);padding:12px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.bs b{font-size:var(--fs-20);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.bs span{font-size:var(--fs-13);color:var(--muted)}
.bs-open b{color:var(--rd-crit)}.bs-in_progress b{color:var(--rd-testing)}.bs-fixed b{color:var(--rd-done)}
.bs-bar{display:flex!important;gap:4px;height:8px;margin:8px 0 8px;border-radius:var(--r-0);overflow:hidden}
.bs-bar i{display:block;height:100%;border-radius:var(--r-0)}.bs-bar .sev-crit{background:var(--rd-crit)}.bs-bar .sev-high{background:var(--rd-high)}.bs-bar .sev-med{background:var(--rd-med)}.bs-bar .sev-low{background:var(--rd-low)}.bs-bar .bs-none{background:var(--rd-track)}
.list-card .bug-row{position:relative;padding-left:16px}
.list-card .bug-row:before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:var(--r-0);background:var(--rd-low)}
.bug-row.br-sev-crit:before{background:var(--rd-crit)}.bug-row.br-sev-high:before{background:var(--rd-high)}.bug-row.br-sev-med:before{background:var(--rd-med)}
.bug-row.br-closed .t{color:var(--muted)}
.bug-row .s{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.bug-clear{display:flex;flex-direction:column;align-items:center;gap:8px;padding:32px 16px;text-align:center;color:var(--rd-done)}.bug-clear b{color:var(--text);font-size:var(--fs-16)}
@media (max-width:700px){.bug-sum{grid-template-columns:repeat(4,minmax(0,1fr))}.bs-sev{grid-column:1/-1}.bs{padding:8px 12px}.bs b{font-size:var(--fs-16)}.bs span{font-size:var(--fs-12)}}

/* public workspace page */
.pub-banner{height:220px;background:transparent}
.pub-banner:after{content:"";position:absolute;inset:0;background-image:none;background-size:28px 28px;mask-image:none;-webkit-mask-image:none;pointer-events:none}
.pub-banner img+*{display:none}
.pub-id{margin-top:-48px}
.pub-id .pic.pub-pic{width:104px;height:104px;border-radius:var(--r-0);border-width:5px;box-shadow:none}
.pub-id h1{font-weight:600;letter-spacing:-.03em}
.pub-tag{font-size:var(--fs-16);color:var(--muted);margin:8px 0 0}
.pub-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 16px}
.pub-tile{display:flex;align-items:center;gap:12px;background:var(--rd-tile);border:1px solid var(--rd-card-bd);border-radius:var(--r-0);padding:12px 16px;box-shadow:none;min-width:0}
.pub-tile b{display:block;font-size:var(--fs-20);letter-spacing:-.02em;line-height:1.15;font-variant-numeric:tabular-nums}.pub-tile div span{font-size:var(--fs-13);color:var(--muted)}
.pub-ti{width:36px;height:36px;border-radius:var(--r-0);display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:none}
.pub-ti.ok{background:var(--rd-fix-bg);color:var(--rd-fix-fg)}.pub-ti.live{background:var(--rd-fix-bg)}
.pub-sec{border-radius:var(--r-0);border-color:var(--rd-card-bd);box-shadow:none}
.pub-sec-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.pub-sec-h h2{margin-bottom:8px}
.pub-rm-bar{height:8px;border-radius:var(--r-0);background:var(--rd-track);overflow:hidden;margin:2px 0 8px}.pub-rm-bar span{display:block;height:100%;border-radius:var(--r-0);background:var(--accent)}
.pub-rm-pct{margin-bottom:12px}.pub-rm-pct b{color:var(--text)}
.pub-hex{transition:transform .18s,background .18s}
.pub-hex.done{background:var(--rd-fix-bg)}.pub-hex.done span{color:var(--rd-fix-fg)}
.pub-hex.doing{background:var(--rd-new-bg)}.pub-hex.doing span{color:var(--rd-new-fg)}
.pub-game{border-radius:var(--r-0);box-shadow:none}
@media (max-width:820px){.pub-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.pub-tile{padding:12px 12px;gap:12px}.pub-tile b{font-size:var(--fs-16)}.pub-ti{width:32px;height:32px}.pub-banner{height:150px}.pub-id .pic.pub-pic{width:84px;height:84px;border-radius:var(--r-0)}.pub-id{margin-top:-48px}}

/* public sprint report */
.sr-pub .sr-head{border-radius:var(--r-0);background:var(--surface);border-color:var(--rd-hero-line);padding:24px 24px}
.sr-pub .sr-head h1{font-size:var(--fs-24);letter-spacing:-.025em}
.sr-pub .sr-card{border-radius:var(--r-0);box-shadow:none}
.sr-tile{border-color:var(--rd-card-bd);background:var(--rd-tile);box-shadow:none;border-radius:var(--r-0)}
.sr-tile b{letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.sr-sec{border-color:var(--rd-card-bd);border-radius:var(--r-0)}
@media (max-width:640px){.sr-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.sr-grid{grid-template-columns:minmax(0,1fr)}.sr-pub .sr-head{flex-wrap:wrap}}

/* Discord bridge rows: long webhook URLs never push the buttons off screen */
.dcb-row>.grow{min-width:0}
.dcb-url{font-family:var(--mono);font-size:var(--fs-12);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
@media (max-width:640px){.dcb-row>.grow{flex:1 1 100%}.dcb-row>.btn,.dcb-row>button{flex:1 1 auto}}

.ulog,.ul-sum{max-width:860px}.pub-log{max-width:860px;margin-bottom:24px}
.pub-id .pub-stats>span:not(.disc-tag){display:none}
@media (max-width:700px){.pub-log .pub-link>.small.muted{display:none}.pub-log .pub-btns{flex-wrap:wrap}.pub-log .pub-btns .btn{flex:1 1 40%}}

/* ===== 10.18 verified checks: theme variables only ===== */
.vcheck{display:inline-flex;align-items:center;vertical-align:-.16em;margin-left:4px;flex:none;cursor:help;line-height:0;border-radius:50%;outline:none}
.vcheck svg{display:block;overflow:visible}
.vcheck .vc-seal{stroke-width:1.6;stroke-linejoin:round}
.vcheck .vc-tick{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.vc-owner .vc-seal{fill:var(--vf-owner);stroke:var(--vf-owner)}
.vc-owner .vc-tick{stroke:var(--vf-owner-tick)}
.vc-coowner .vc-seal{fill:var(--vf-co-fill);stroke:var(--vf-co)}
.vc-coowner .vc-tick{stroke:var(--vf-co-tick)}
.vcheck:focus-visible{box-shadow:none;outline:2px solid var(--accent-line);outline-offset:0}
.m-head .vcheck{margin-left:4px;margin-right:2px}
.ml-txt b.ellip .vcheck,.u-acc b.ellip .vcheck{margin-left:4px}
.mention .vcheck{margin-left:2px;vertical-align:-.12em}
.prof-id h1 .vcheck{margin-left:8px;vertical-align:-.08em}
.pc-name .vcheck{margin-left:4px}
.vtip{position:fixed;z-index:9999;left:0;top:0;padding:8px 12px;border-radius:var(--r-0);background:var(--vf-tip-bg);color:var(--vf-tip-fg);font-size:var(--fs-13);font-weight:600;line-height:1.3;white-space:nowrap;pointer-events:none;opacity:0;transform:translateY(2px);transition:opacity .12s,transform .12s;box-shadow:none}
.vtip.on{opacity:1;transform:none}
.vf-head{display:flex;align-items:baseline;gap:12px}
.vf-head .h3{margin-bottom:8px}
.vf-form{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:end;margin-bottom:12px}
.vf-form .field{margin:0}
.vf-at{display:flex;align-items:center;border:1px solid var(--border2);border-radius:var(--r-0);background:var(--surface);padding-left:12px}
.vf-at span{color:var(--faint);font-weight:600}
.vf-at .input{border:0;background:transparent;box-shadow:none;padding-left:4px}
.vf-at:focus-within{border-color:var(--accent);box-shadow:none;outline:1px solid var(--accent);outline-offset:-1px}
.vf-role .seg{display:inline-flex;padding:4px;border-radius:var(--r-0);background:var(--surface2);border:1px solid var(--border);gap:2px}
.vf-role .seg-b{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:0;border-radius:var(--r-0);background:transparent;color:var(--muted);font:inherit;font-weight:600;font-size:var(--fs-13);cursor:pointer}
.vf-role .seg-b .vcheck{margin:0;cursor:inherit}
.vf-role .seg-b.on{background:var(--vf-seg-on);color:var(--text);box-shadow:none}
.vf-role .seg-b:disabled{opacity:.45;cursor:not-allowed}
.vf-go{height:40px}
.vf-list .vf-row .t{font-weight:600}
@media (max-width:640px){.vf-form{grid-template-columns:1fr}.vf-role .seg{display:flex}.vf-role .seg-b{flex:1;justify-content:center}.vf-go{width:100%;justify-content:center}}

/* ===== 10.19 getting started checklist, search engines card, guides link, no-JS landing ===== */
.su-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-0);padding:16px 16px 8px;box-shadow:none}
.su-head{display:flex;align-items:flex-start;gap:12px}
.su-head h2{font-size:var(--fs-16);margin:2px 0 2px}
.su-head p{margin:0}
.su-ic{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r-0);background:var(--su-dot-bg);color:var(--su-dot-fg);flex:none}
.su-x{margin:-4px -8px 0 0}
.su-prog{display:flex;align-items:center;gap:12px;margin:12px 0 8px}
.su-bar{flex:1;height:6px;border-radius:var(--r-0);background:var(--su-bar-bg);overflow:hidden}
.su-bar i{display:block;height:100%;border-radius:inherit;background:var(--su-bar-fill);transition:width .3s}
.su-n{font-size:var(--fs-13);color:var(--muted);font-weight:600;white-space:nowrap}
.su-list{list-style:none;margin:0;padding:0}
.su-step{display:flex;align-items:center;gap:12px;padding:12px 8px;margin:0 -8px;border-radius:var(--r-0)}
.su-step+.su-step{border-top:1px solid var(--border)}
.su-step.next{background:var(--su-next-bg)}
.su-dot{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--su-dot-bg);color:var(--su-dot-fg);flex:none}
.su-step.done .su-dot{background:var(--su-done);color:var(--su-done-ink)}
.su-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.su-txt b{font-size:var(--fs-14);font-weight:600}
.su-txt span{font-size:var(--fs-13);color:var(--muted);line-height:1.4}
.su-step.done .su-txt b{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--border2)}
.su-opt{display:inline-block;font-size:var(--fs-12);font-weight:600;color:var(--faint);border:1px solid var(--border);border-radius:var(--r-0);padding:0 8px;margin-left:4px;vertical-align:1px;text-decoration:none}
.su-act{display:flex;gap:8px;flex:none}
@media (max-width:640px){.su-step{flex-wrap:wrap}.su-act{width:100%;padding-left:32px}.su-act .btn{flex:1;justify-content:center}}
.seo-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}
.seo-form .field{margin:0}
@media (max-width:640px){.seo-form{grid-template-columns:1fr}}
.lp-foot-link{color:var(--muted);font-weight:600;font-size:var(--fs-14);text-decoration:none;margin-left:12px}
.lp-foot-link:hover{color:var(--text)}
.seo-landing{max-width:760px;margin:24px auto;padding:0 16px;color:var(--text);line-height:1.6}
.seo-landing h1{font-size:var(--fs-24);line-height:1.2}



/* ===== 10.20 de-card: sections sit directly on the page with a header and a 1px divider.
   Bordered containers stay only where they are needed: modals, popovers, the composer, kanban columns and cards, forms. ===== */
section.card,.h2-panel,.su-card,.prof-sec,.empty-state.card,.card.empty-mini,.ov-feed,.ov-prog,.ov-plan,.vf-card,.seo-card,.dev-buy,.dev-tiers{
  background:transparent!important;border:0!important;border-top:1px solid var(--border)!important;box-shadow:none!important;
  padding:var(--sp-6) 0 var(--sp-4)!important;margin-top:0;outline:0}
.lp-f,.lp-r,.lp-bento .lp-f{background:transparent!important;border:0!important;border-top:1px solid var(--border)!important;padding:var(--sp-4) 0!important}
.lp-f::after,.lp-r::after,.ws-card::after,.tier-card::after,.pt-tile::after{display:none!important}
.stat,.ov-stat{background:transparent!important;border:0!important;border-top:1px solid var(--border)!important;padding:var(--sp-3) 0!important}
.utable{border:0!important}
.rep{background:transparent!important;border:0!important;border-top:1px solid var(--border)!important;padding:var(--sp-3) 0!important}
.ur{border:0!important;border-top:1px solid var(--border)!important}
.bell .dot-count,.dot-count{top:-4px;right:-8px;min-width:16px;height:16px;padding:0 4px;line-height:16px}
/* decorative glows, meshes and spotlights are gone */
.lp-glow,.hh-glow,.lp-shot-glow,.ov-mesh,.lp-shot-in::before{display:none!important}
/* type: one display size on the landing hero, everything else on the scale */
.lp-hero h1,.lp-h1{font-size:var(--fs-display)!important;letter-spacing:-.02em;line-height:1.1}
.lp-sub,.lp-lead,.lp-hero p{font-size:var(--fs-16)!important}
h1,.page-title,.ph-title{letter-spacing:-.01em}
/* buttons and inputs: flat, square, 1px borders */
.btn{box-shadow:none!important}
.btn.primary,.btn.primary:hover{background:var(--accent);border-color:var(--accent)}
.btn.primary:hover{background:var(--accent-hover)}
/* heroes on Discover and Talent hub: plain page headers, no colour block */
.disc-hero{background:transparent!important;color:var(--text)!important;border-bottom:1px solid var(--border);padding:var(--sp-4) 0 var(--sp-6)!important;margin-bottom:var(--sp-4)}
.disc-hero p{color:var(--muted);opacity:1}
.disc-hero .btn:not(.primary),.disc-hero a.btn:not(.primary){background:var(--btn-bg);color:var(--text);border:1px solid var(--border2)}
.disc-hero .input,.disc-hero input{background:var(--surface);color:var(--text);border:1px solid var(--border2)}
/* floating menus and popovers get the one faint shadow plus a border */
.menu-pop,.pop,.mention-pop,.emoji-pop,.ctx-menu,.dropdown{box-shadow:var(--shadow-pop);border:1px solid var(--border)}

/* ===== 10.21 Batch 1: expenses, wiki, check-ins, game kit, message search, reviews, local time, link check =====
   Same design system as 10.20: square corners, 1px dividers, no shadows or gradients, type and spacing tokens only. */
.b1-page{max-width:880px;margin:0 auto}
.b1-head{display:flex;align-items:flex-start;gap:var(--sp-4);padding:0 0 var(--sp-4);border-bottom:1px solid var(--border)}
.b1-title{margin:0;font-size:var(--fs-20);font-weight:600;color:var(--text)}
.b1-sub{margin:var(--sp-1) 0 0;font-size:var(--fs-13);color:var(--muted);max-width:560px}
.b1-acts{display:flex;gap:var(--sp-2);flex-shrink:0}
.b1-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none;margin:0 0 var(--sp-4)}
.b1-tabs::-webkit-scrollbar{display:none}
.b1-tabs button{appearance:none;background:transparent;border:0;border-bottom:2px solid transparent;margin:0 0 -1px;padding:var(--sp-3) var(--sp-3);font:inherit;font-size:var(--fs-13);font-weight:500;color:var(--muted);cursor:pointer;white-space:nowrap;border-radius:0}
.b1-tabs button:hover{color:var(--text)}
.b1-tabs button.on{color:var(--text);border-bottom-color:var(--accent)}
.b1-tabs-sm{margin:0 0 var(--sp-3)}
.b1-tabs-sm button{padding:var(--sp-2) var(--sp-3)}
.b1-sec{padding:var(--sp-4) 0;border-bottom:1px solid var(--border)}
.b1-sec:last-child{border-bottom:0}
.b1-h{margin:0 0 var(--sp-3);font-size:var(--fs-14);font-weight:600;color:var(--text)}
.b1-h .faint{font-weight:400;margin-left:var(--sp-1)}
.b1-sec>p{margin:0 0 var(--sp-3)}
.b1-row{display:flex;align-items:center;gap:var(--sp-2);min-width:0}
.b1-row.b1-wrap,.b1-wrap{flex-wrap:wrap}
.b1-center{justify-content:center}
.b1-inline{display:inline-flex;align-items:center;gap:var(--sp-2)}
.b1-inline .input{width:auto;min-width:160px}
.b1-period{margin:0 0 var(--sp-2)}
.b1-pad{padding:var(--sp-4) 0}
.b1-narrow{max-width:120px}
.b1-grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.b1-form .field{margin:0 0 var(--sp-3)}
.b1-form textarea.input{resize:vertical;min-height:56px}
.b1-alert{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-3);margin:0 0 var(--sp-3);border:1px solid var(--b1-warn-line);background:var(--b1-warn-bg);color:var(--text);font-size:var(--fs-13);border-radius:var(--r-0)}
.b1-alert svg{color:var(--amber);flex-shrink:0;margin-top:2px}
.b1-check{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-13);cursor:pointer}
.b1-empty{text-align:center;padding:var(--sp-12) var(--sp-4);max-width:520px;margin:0 auto}
.b1-empty-i{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border:1px solid var(--border);color:var(--accent);margin:0 0 var(--sp-3)}
.b1-empty h3{margin:0 0 var(--sp-2);font-size:var(--fs-16);font-weight:600}
.b1-empty p{margin:0 0 var(--sp-3);font-size:var(--fs-13);color:var(--muted)}
.b1-empty .btn{margin-top:var(--sp-2)}
/* totals and charts */
.b1-totals{display:flex;flex-wrap:wrap;gap:var(--sp-8);margin:0 0 var(--sp-2)}
.b1-total{display:flex;flex-direction:column;gap:var(--sp-1)}
.b1-total b{font-size:var(--fs-24);font-weight:600;letter-spacing:-.01em;color:var(--text)}
.b1-bars{display:flex;flex-direction:column;gap:var(--sp-2)}
.b1-bar-row{display:grid;grid-template-columns:minmax(120px,200px) 1fr 88px 104px;align-items:center;gap:var(--sp-3);font-size:var(--fs-13)}
.b1-bar-l{color:var(--text)}
.b1-bar{display:block;height:8px;background:var(--b1-track);overflow:hidden;border-radius:var(--r-0)}
.b1-bar i{display:block;height:100%}
.b1-bar-row.over .b1-bar i{background:var(--amber)!important}
.b1-bar-v{font-weight:600;text-align:right;white-space:nowrap}
.b1-bar-b{white-space:nowrap}
.b1-chart{margin:0 0 var(--sp-4)}
.b1-cols{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--sp-2);align-items:end;margin-top:var(--sp-2)}
.b1-col{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1);min-width:0}
.b1-col-bar{display:flex;align-items:flex-end;width:100%;max-width:48px;height:96px;background:var(--b1-track)}
.b1-col-bar i{display:block;width:100%;background:var(--b1-c2)}
.b1-col.on .b1-col-bar i{background:var(--accent)}
.b1-col-v{min-height:16px;font-size:var(--fs-12);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.b1-col-l{text-transform:capitalize}
/* lists */
.b1-filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-3)}
.b1-filters .search{max-width:none;flex:1 1 220px}
.b1-filters select.input,.b1-filters input[type=date]{width:auto;flex:0 1 auto}
.b1-list-tot{padding:var(--sp-2) 0;border-bottom:1px solid var(--border)}
.b1-list{list-style:none;margin:0;padding:0}
.b1-list>li{border-bottom:1px solid var(--border)}
.b1-exp,.b1-hit{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) 0;background:transparent;border:0;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:0}
.b1-exp:hover,.b1-hit:hover{background:var(--surface2)}
.b1-exp-d{width:88px;flex-shrink:0;font-variant-numeric:tabular-nums}
.b1-exp-m,.b1-hit-m{display:flex;flex-direction:column;min-width:0;flex:1}
.b1-exp-tags{display:flex;gap:var(--sp-1);flex-shrink:0}
.b1-exp-a{white-space:nowrap;font-variant-numeric:tabular-nums}
.b1-tag{display:inline-flex;align-items:center;gap:var(--sp-1);padding:0 var(--sp-1);border:1px solid var(--border);font-size:var(--fs-12);color:var(--muted);line-height:18px;border-radius:var(--r-1)}
.b1-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0 0 var(--sp-3)}
.b1-chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);border:1px solid var(--border2);font-size:var(--fs-13);border-radius:var(--r-1)}
.b1-chip button{display:inline-flex;background:transparent;border:0;padding:0;color:var(--faint);cursor:pointer}
.b1-chip button:hover{color:var(--red)}
/* budgets and rev share */
.b1-budgets{display:flex;flex-direction:column;margin:0 0 var(--sp-3)}
.b1-bud,.b1-bud-h{display:grid;grid-template-columns:1fr 112px 112px;gap:var(--sp-2);align-items:center;padding:var(--sp-2) 0;border-bottom:1px solid var(--border);font-size:var(--fs-13)}
.b1-bud-h{padding-top:0}
.b1-splits{display:flex;flex-direction:column;gap:var(--sp-2);margin:0 0 var(--sp-3)}
.b1-split{display:flex;align-items:center;gap:var(--sp-2)}
.b1-split select.input,.b1-split [data-name]{flex:1 1 0;min-width:0;width:auto}
.b1-split .btn{flex-shrink:0}
.b1-pct{display:inline-flex;align-items:center;gap:var(--sp-1)}
.b1-pct .input{width:72px;text-align:right}
#rs-rev{max-width:160px}
/* wiki */
.b1-wiki{display:grid;grid-template-columns:220px 1fr;gap:var(--sp-6);align-items:start}
.b1-wiki-nav{border-right:1px solid var(--border);padding-right:var(--sp-4);position:sticky;top:0}
.b1-wiki-nav ul{list-style:none;margin:var(--sp-2) 0 0;padding:0}
.b1-wiki-nav a{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);color:var(--muted);text-decoration:none;font-size:var(--fs-13);border-radius:0}
.b1-wiki-nav a:hover{background:var(--surface2);color:var(--text)}
.b1-wiki-nav a.on{background:var(--accent-soft);color:var(--text);font-weight:500}
.b1-wiki-page{min-width:0}
.b1-wiki-top{margin:0 0 var(--sp-2)}
.b1-wiki-title{margin:0 0 var(--sp-1);font-size:var(--fs-24);font-weight:600;letter-spacing:-.01em}
.b1-md{margin-top:var(--sp-4);font-size:var(--fs-14);line-height:1.6;color:var(--text);overflow-wrap:anywhere}
.b1-md h1,.b1-md h2,.b1-md h3{margin:var(--sp-6) 0 var(--sp-2);font-weight:600;line-height:1.3}
.b1-md h1{font-size:var(--fs-20);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border)}
.b1-md h2{font-size:var(--fs-16)}
.b1-md h3{font-size:var(--fs-14)}
.b1-md p{margin:0 0 var(--sp-3)}
.b1-md ul,.b1-md ol{margin:0 0 var(--sp-3);padding-left:var(--sp-6)}
.b1-wiki-edit{display:flex;flex-direction:column;gap:var(--sp-3)}
.b1-wiki-title-in{font-size:var(--fs-20);font-weight:600}
.b1-wiki-body{min-height:420px;resize:vertical;font-size:var(--fs-14);line-height:1.6}
/* check-ins */
.b1-cis{list-style:none;margin:0;padding:0}
.b1-ci{padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}
.b1-ci:last-child{border-bottom:0}
.b1-ci-who{display:flex;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-2)}
.b1-ci dl{display:grid;grid-template-columns:72px 1fr;gap:var(--sp-1) var(--sp-3);margin:0;font-size:var(--fs-13)}
.b1-ci dt{color:var(--muted);font-weight:500}
.b1-ci dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.b1-past summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:var(--sp-2)}
.b1-past summary::-webkit-details-marker{display:none}
.b1-past[open] summary{margin:0 0 var(--sp-2)}
/* game kit */
.b1-ul,.b1-ol{margin:0 0 var(--sp-3);padding-left:var(--sp-6);font-size:var(--fs-13)}
.b1-ul li,.b1-ol li{margin:0 0 var(--sp-2)}
.b1-code-row{display:flex;gap:var(--sp-2);align-items:center;margin:0 0 var(--sp-3)}
.b1-code{flex:1;min-width:0;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);background:var(--surface2);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-12);overflow-x:auto;white-space:nowrap;border-radius:var(--r-0)}
.b1-pre{margin:0 0 var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);background:var(--surface2);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--fs-12);overflow:auto;max-height:240px;white-space:pre;border-radius:var(--r-0)}
.b1-errs{list-style:none;margin:0;padding:0}
.b1-errs li{padding:var(--sp-2) 0;border-bottom:1px solid var(--border);font-size:var(--fs-13)}
.b1-quote{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border-left:2px solid var(--border2);color:var(--muted);font-size:var(--fs-13)}
/* message search */
.b1-search{margin:0 0 var(--sp-3)}
.b1-search .search{max-width:none;margin:0 0 var(--sp-2)}
.b1-results{min-height:120px}
.b1-results>.small{padding:0 0 var(--sp-2)}
.b1-hit{align-items:flex-start;padding:var(--sp-3) var(--sp-2)}
.b1-hit-t{font-size:var(--fs-13);color:var(--text);overflow-wrap:anywhere}
.b1-hit mark,.b1-hit-t mark{background:var(--accent-soft);color:var(--accent);padding:0;font-weight:500}
.msg.flash,.m.flash,[id^="m-"].flash{background:var(--b1-flash);transition:background .6s}
/* reviews and stars */
.b1-stars{display:inline-flex;gap:0;vertical-align:middle}
.b1-stars i{display:inline-flex;color:var(--border2)}
.b1-stars i.on{color:var(--b1-star)}
.b1-stars i.on svg{fill:currentColor}
.b1-star-pick{display:flex;gap:var(--sp-1);margin:0 0 var(--sp-3)}
.b1-star-pick button{display:inline-flex;background:transparent;border:1px solid var(--border);padding:var(--sp-2);color:var(--border2);cursor:pointer;border-radius:0}
.b1-star-pick button.on{color:var(--b1-star);border-color:var(--b1-star)}
.b1-star-pick button.on svg{fill:currentColor}
.b1-rv .ps-h{display:flex;align-items:center;gap:var(--sp-3)}
.b1-rv-avg{display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-13)}
.b1-rvs{list-style:none;margin:0;padding:0}
.b1-rvs>li{padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}
.b1-rvs>li:last-child{border-bottom:0}
.b1-rvs p{margin:var(--sp-2) 0;font-size:var(--fs-13);overflow-wrap:anywhere}
.b1-hidden{opacity:.6}
.b1-rv-ask,.b1-rv-mine{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border)}
/* local time and templates */
.b1-lt .small{display:flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap}
.b1-tpl small{display:block;margin-top:var(--sp-1)}
@media (max-width:640px){
  .b1-head{flex-direction:column;gap:var(--sp-3)}
  .b1-acts,.b1-acts .btn{width:100%}
  .b1-grid2{grid-template-columns:1fr}
  .b1-totals{gap:var(--sp-6)}
  .b1-bar-row{grid-template-columns:1fr auto;gap:var(--sp-1) var(--sp-3)}
  .b1-bar-row .b1-bar-l{grid-column:1;grid-row:1}
  .b1-bar-row .b1-bar-v{grid-column:2;grid-row:1}
  .b1-bar-row .b1-bar{grid-column:1 / -1;grid-row:2}
  .b1-bar-row .b1-bar-b{grid-column:1 / -1;grid-row:3}
  .b1-bars{gap:var(--sp-3)}
  .b1-exp-d{width:auto}
  .b1-exp{flex-wrap:wrap;row-gap:var(--sp-1)}
  .b1-exp .b1-exp-d{order:-1;width:100%}
  .b1-filters select.input,.b1-filters input[type=date]{flex:1 1 40%}
  .b1-bud,.b1-bud-h{grid-template-columns:1fr 88px 88px}
  .b1-wiki{grid-template-columns:1fr}
  .b1-wiki-nav{border-right:0;padding-right:0;position:static}
  .b1-wiki.has-page .b1-wiki-nav{display:none}
}

/* ================= PartCrew 10.22 Batch 2: chat essentials and notification controls ================= */
/* Text size (Settings, Appearance): the reader's own setting scales the type tokens on this device. */
html[data-textsize=sm]:not(#x){--fs-12:11px; --fs-13:12px; --fs-14:13px; --fs-16:15px; --fs-20:18px; --fs-24:22px; --fs-lg:15px; --fs-xs:11px; --fs-sm:12px; --fs-md:13px; --fs-xl:18px; --fs-2xl:22px; --fs-3xl:22px;}
html[data-textsize=lg]:not(#x){--fs-12:13px; --fs-13:14px; --fs-14:15px; --fs-16:17px; --fs-20:22px; --fs-24:26px; --fs-lg:17px; --fs-xs:13px; --fs-sm:14px; --fs-md:15px; --fs-xl:22px; --fs-2xl:26px; --fs-3xl:26px;}
html[data-textsize=xl]:not(#x){--fs-12:14px; --fs-13:15px; --fs-14:16px; --fs-16:18px; --fs-20:24px; --fs-24:28px; --fs-lg:18px; --fs-xs:14px; --fs-sm:15px; --fs-md:16px; --fs-xl:24px; --fs-2xl:28px; --fs-3xl:28px;}
.b2-sec{font-size:var(--fs-12);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:var(--sp-4) 0 var(--sp-2)}
.b2-note{margin:var(--sp-2) 0}
.b2-seg{display:flex;border:1px solid var(--border);border-radius:var(--r-0)}
.b2-seg button{flex:1;padding:var(--sp-2) var(--sp-1);background:transparent;border:0;border-right:1px solid var(--border);color:var(--text);font-size:var(--fs-13);cursor:pointer;border-radius:var(--r-0)}
.b2-seg button:last-child{border-right:0}
.b2-seg button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}
.b2-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-4)}
/* spoilers */
.b2-spoiler{background:var(--text);color:transparent;border-radius:var(--r-1);cursor:pointer;padding:0 var(--sp-1);transition:background .15s}
.b2-spoiler *{visibility:hidden}
.b2-spoiler.shown{background:var(--surface3);color:inherit;cursor:text}
.b2-spoiler.shown *{visibility:visible}
.b2-spoil-img{position:relative;overflow:hidden}
.b2-spoil-img img{filter:blur(24px);transform:scale(1.05)}
.b2-spoil-img::after{content:"Spoiler";position:absolute;inset:auto auto 50% 50%;transform:translate(-50%,50%);background:var(--text);color:var(--bg);font-size:var(--fs-12);font-weight:600;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-0);letter-spacing:.04em;text-transform:uppercase}
.b2-spoil-img.shown img{filter:none;transform:none}
.b2-spoil-img.shown::after{display:none}
/* custom emoji */
.b2-emo{width:20px;height:20px;object-fit:contain;vertical-align:-4px;display:inline-block}
.m-text .b2-emo:only-child{width:32px;height:32px}
.rx .b2-emo{width:16px;height:16px;vertical-align:-3px}
.emoji-float .b2-pick-sep{grid-column:1/-1;width:100%;font-size:var(--fs-12);color:var(--muted);padding:var(--sp-2) var(--sp-1) var(--sp-1);border-top:1px solid var(--border);margin-top:var(--sp-1)}
.emoji-float button .b2-emo{width:20px;height:20px;vertical-align:middle}
.b2-emo-add{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center;padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}
.b2-emo-add .input[name=name]{width:160px}
.b2-emo-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border)}
.b2-emo-row .b2-emo{width:28px;height:28px}
/* link previews */
.b2-lp{display:flex;gap:var(--sp-3);align-items:stretch;max-width:440px;margin-top:var(--sp-2);border:1px solid var(--border);border-left:2px solid var(--accent);border-radius:var(--r-0);padding:var(--sp-2) var(--sp-3);color:var(--text);text-decoration:none;background:var(--surface)}
.b2-lp:hover{border-color:var(--border-strong);border-left-color:var(--accent)}
.b2-lp-t{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0;flex:1}
.b2-lp-t small{font-size:var(--fs-12);color:var(--muted)}
.b2-lp-t b{font-size:var(--fs-14);font-weight:600;color:var(--accent);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.b2-lp-d{font-size:var(--fs-13);color:var(--muted);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.b2-lp-stat{font-size:var(--fs-12);color:var(--muted)}
.b2-lp img{width:64px;height:64px;object-fit:cover;flex:none;border-radius:var(--r-0);background:var(--surface2)}
.b2-lp.wide{flex-direction:column}
.b2-lp.wide img{width:100%;height:auto;aspect-ratio:16/9}
/* pinned */
.b2-pinbar{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-4);background:var(--bg);border:0;border-bottom:1px solid var(--border);color:var(--text);font-size:var(--fs-13);text-align:left;cursor:pointer;border-radius:var(--r-0)}
.b2-pinbar:hover{background:var(--surface2)}
.b2-pinbar .i{color:var(--accent);flex:none}
.b2-pinbar-go{color:var(--accent);font-weight:500;flex:none}
.b2-pin-tag{display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-12);color:var(--muted);margin-left:var(--sp-2)}
.msg.b2-pinned .m-main{border-left:2px solid var(--accent-line);padding-left:var(--sp-2);margin-left:calc(-1 * var(--sp-2) - 2px)}
.b2-row{padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}
.b2-row-h{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-13)}
.b2-row-b{font-size:var(--fs-14);margin:var(--sp-1) 0 var(--sp-2);white-space:pre-wrap;word-break:break-word}
.b2-row-a{display:flex;gap:var(--sp-2)}
.b2-where{padding-top:var(--sp-3)}
.b2-where + .b2-row{padding-top:var(--sp-1)}
.b2-due{color:var(--accent);font-weight:500}
/* edit history */
.b2-ver{padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}
.b2-ver-h{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-1);font-size:var(--fs-13)}
.b2-ver-b{font-size:var(--fs-14);white-space:pre-wrap;word-break:break-word}
.b2-ver:not(.now) .b2-ver-b{color:var(--muted)}
.m-edited{cursor:pointer}
.m-edited:hover{text-decoration:underline}
/* forum channels */
.b2-forum .msgs-in{padding-top:var(--sp-2)}
.b2-forum .msg.b2-post{margin:0 var(--sp-4);padding:var(--sp-3) 0;border-bottom:1px solid var(--border);cursor:pointer}
.b2-forum .msg.b2-post:not(.start){padding-top:var(--sp-3)}
.b2-post-title{display:block;font-size:var(--fs-16);font-weight:600;color:var(--text);margin-bottom:var(--sp-1)}
.b2-post-body{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;color:var(--muted)}
.b2-forum .day-div{display:none}
/* unread jump */
.b2-unread{position:absolute;top:var(--sp-2);left:50%;transform:translateX(-50%);z-index:5;display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);background:var(--accent);color:var(--accent-ink);border:0;border-radius:var(--r-0);font-size:var(--fs-13);font-weight:500;cursor:pointer;box-shadow:var(--shadow-pop);white-space:nowrap}
.chat{position:relative}
/* swipe to reply */
#msgs-in .msg{transition:transform .12s ease-out}
#msgs-in .msg.b2-swipe-ready{background:var(--accent-soft)}
/* notifications sheet: keyword alerts and quiet hours */
.b2-kw{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-2)}
.b2-kw .input{flex:1;min-width:0}
.b2-q{display:flex;gap:var(--sp-3)}
.b2-q .field{flex:1}
.b2-q.off,.b2-days.off{opacity:.5}
.b2-days{display:flex;border:1px solid var(--border);border-radius:var(--r-0);margin:var(--sp-2) 0}
.b2-days button{flex:1;padding:var(--sp-2) 0;background:transparent;border:0;border-right:1px solid var(--border);color:var(--muted);font-size:var(--fs-12);cursor:pointer;border-radius:var(--r-0)}
.b2-days button:last-child{border-right:0}
.b2-days button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}
.b2-qp{margin:var(--sp-1) 0}
/* quick switcher and shortcuts */
.b2-qs-list{display:flex;flex-direction:column;margin-top:var(--sp-2);border-top:1px solid var(--border);max-height:min(60vh,420px);overflow:auto}
.b2-qs-list button{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-2);background:transparent;border:0;border-bottom:1px solid var(--border);color:var(--text);text-align:left;font-size:var(--fs-14);cursor:pointer;border-radius:var(--r-0)}
.b2-qs-list button small{font-size:var(--fs-12);max-width:160px}
.b2-qs-list button.on,.b2-qs-list button:hover{background:var(--accent-soft)}
.b2-qs-list button.on .i{color:var(--accent)}
.b2-kbd{display:inline-block;font-family:var(--mono);font-size:var(--fs-12);padding:0 var(--sp-1);border:1px solid var(--border-strong);border-radius:var(--r-1);color:var(--muted);background:var(--surface2);margin-left:var(--sp-1);line-height:1.6}
.menu-pop .b2-kbd{margin-left:auto}
.b2-key{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);font-size:var(--fs-14)}
.b2-kk{flex:none}
/* draw on screenshots */
.att{position:relative}
.b2-att-acts{position:absolute;top:var(--sp-1);right:var(--sp-1);display:flex;gap:var(--sp-1)}
.b2-att-acts button{width:24px;height:24px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--r-0);cursor:pointer;padding:0}
.b2-att-acts button:disabled{opacity:.4}
.b2-draw-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border);margin-bottom:var(--sp-2)}
.b2-draw-bar > button{width:32px;height:32px;display:grid;place-items:center;background:transparent;border:1px solid transparent;color:var(--text);border-radius:var(--r-0);cursor:pointer;padding:0}
.b2-draw-bar > button.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.b2-draw-bar .b2-sw{width:24px;height:24px;background:var(--sw);border:1px solid var(--border-strong)}
.b2-draw-bar .b2-sw.on{outline:2px solid var(--accent);outline-offset:1px;background:var(--sw)}
.b2-draw-sep{width:1px;height:24px;background:var(--border);margin:0 var(--sp-1)}
.b2-draw-stage{display:grid;place-items:center;background:var(--surface2);border:1px solid var(--border)}
.b2-draw-stage canvas{max-width:100%;max-height:60vh;touch-action:none;cursor:crosshair;display:block}

/* ===== 10.23 Batch 3: safety, privacy and team admin ===== */
.b3-sheet{display:block}
.b3-sec{padding:var(--sp-4) 0;border-bottom:1px solid var(--border)}
.b3-sec:first-child{padding-top:0}
.b3-sec:last-child{border-bottom:0}
.b3-sec h3{font-size:var(--fs-14);font-weight:600;margin:0 0 var(--sp-2)}
.b3-sec h3 .faint{font-weight:400}
.b3-sec>p{margin:0 0 var(--sp-3)}
.b3-sec select.input{width:100%}
.b3-gap{margin-top:var(--sp-2)}
.b3-list{display:flex;flex-direction:column;border-top:1px solid var(--border);margin-top:var(--sp-2)}
.b3-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);min-width:0;color:inherit;text-decoration:none}
.b3-item.b3-col{flex-direction:column;align-items:stretch;gap:var(--sp-2)}
.b3-item.b3-col>.b3-item{border-bottom:0;padding:0}
.b3-item select.input{width:auto;max-width:50%}
.b3-grow{flex:1;min-width:0;display:flex;flex-direction:column}
.b3-grow small{font-size:var(--fs-12)}
.b3-av,.b3-ic{display:flex;flex:none;color:var(--muted)}
.b3-tag{font-size:var(--fs-12);font-weight:500;color:var(--accent);border:1px solid var(--accent-line);border-radius:var(--r-1);padding:0 var(--sp-1);margin-left:var(--sp-1)}
.b3-link{display:flex;align-items:center;gap:var(--sp-2);color:var(--accent);text-decoration:none}
.b3-link:hover{text-decoration:underline}
.b3-item.b3-link{color:inherit}
.b3-item.b3-link:hover{background:var(--hover);text-decoration:none}
.b3-warn{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);margin:var(--sp-2) 0 0;background:var(--b1-warn-bg);border:1px solid var(--b1-warn-line);border-radius:var(--r-1)}
.b3-quote{margin:0;padding:var(--sp-2) var(--sp-3);border-left:2px solid var(--border-strong);background:var(--bg2);white-space:pre-wrap;word-break:break-word;font-size:var(--fs-14)}
.b3-checks{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-1)}
.b3-check{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);border:1px solid var(--border);border-radius:var(--r-1);font-size:var(--fs-13);cursor:pointer}
.b3-check:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.b3-head{display:flex;align-items:flex-start;gap:var(--sp-3);padding:0 0 var(--sp-4);border-bottom:1px solid var(--border)}
.b3-head h2{font-size:var(--fs-20);font-weight:600;margin:0 0 var(--sp-1)}
.b3-welcome .b1-sec h3{font-size:var(--fs-14);font-weight:600;margin:0 0 var(--sp-2)}
.b3-rules{line-height:1.6}
.b3-away{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-13);color:var(--muted);margin:var(--sp-1) 0}
.b3-prof{padding:var(--sp-3) 0;border-bottom:1px solid var(--border);margin:0 0 var(--sp-3)}
.b3-tip{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);margin:0 var(--sp-3) var(--sp-2);border:1px solid var(--b1-warn-line);background:var(--b1-warn-bg);border-radius:var(--r-1);font-size:var(--fs-13);line-height:1.45}
.b3-tip a{color:var(--accent)}
.b3-tip .btn{flex:none}
@media (max-width:640px){
  .b3-item select.input{max-width:60%}
  .b3-tip{margin:0 var(--sp-2) var(--sp-2)}
}


/* ===================== 10.24 Batch 4: planner, sprints and progress tracking ===================== */
.b4-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.b4-tools .input.b4-lane-pick{width:auto;min-width:160px}
.b4-tools .btn.on{border-color:var(--accent);color:var(--accent)}
.b4-chip{display:inline-flex;align-items:center;gap:4px;padding:0 4px;border:1px solid var(--border);border-radius:var(--r-1);font-size:var(--fs-12);color:var(--muted);white-space:nowrap;line-height:1.5}
.b4-chip.ok{color:var(--green);border-color:var(--green)}
.b4-chip.warn{color:var(--amber);border-color:var(--b1-warn-line);background:var(--b1-warn-bg)}
.b4-lanes{display:flex;flex-direction:column;gap:16px}
.b4-lane{border-top:1px solid var(--border);padding-top:12px}
.b4-lane-h{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:var(--fs-14)}
.b4-lane-h .faint{font-size:var(--fs-12)}
.kempty.b4-lane-empty{padding:12px;font-size:var(--fs-12)}
.b4-archrow{display:flex;justify-content:flex-end;margin-top:8px}
.b4-selecting .kcard{cursor:pointer;position:relative;padding-left:32px}
.b4-check{position:absolute;left:8px;top:12px;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);border-radius:var(--r-1);background:var(--surface);color:transparent}
.b4-selecting .kcard.b4-picked{border-color:var(--accent);background:var(--accent-soft)}
.b4-picked .b4-check{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.b4-selecting .kgrip{display:none}
.b4-bulkbar{position:sticky;bottom:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 0;margin-top:12px;background:var(--bg);border-top:1px solid var(--border)}
.b4-bulkbar .input{width:auto;min-width:120px}
.b4-bulk-n{font-size:var(--fs-14);font-weight:600;margin-right:4px}
.b4-task{margin-top:16px;border-top:1px solid var(--border);padding-top:12px}
.b4-th{display:flex;align-items:baseline;gap:8px;margin:12px 0 8px}
.b4-th:first-child{margin-top:0}
.b4-th h3{font-size:var(--fs-14);font-weight:600;margin:0}
.b4-th .faint{font-size:var(--fs-12)}
.b4-bar{position:relative;height:4px;background:var(--b1-track);margin:4px 0 8px;overflow:hidden}
.b4-bar i{position:absolute;left:0;top:0;bottom:0;background:var(--accent)}
.b4-bar i.b4-bar-doing{background:var(--b1-c3)}
.b4-steps{display:flex;flex-direction:column}
.b4-step{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px solid var(--border);min-height:32px}
.b4-step:last-child{border-bottom:0}
.b4-step label{display:flex;align-items:center;gap:8px;flex:1;min-width:0;font-size:var(--fs-14);cursor:pointer}
.b4-step label span{overflow-wrap:anywhere}
.b4-step.done label span{color:var(--faint);text-decoration:line-through}
.b4-step small{font-size:var(--fs-12)}
.b4-row{display:flex;gap:8px;align-items:center;margin-top:8px}
.b4-row .grow{flex:1;min-width:0}
.b4-deps{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.b4-dep{display:flex;align-items:center;gap:8px;min-width:0}
.b4-dep .linky,.b4-sheet .linky{padding:0;background:none;color:var(--text);text-align:left;min-width:0;font-size:var(--fs-14)}
.b4-dep .linky:hover,.b4-sheet .linky:hover{color:var(--accent);text-decoration:underline}
.b4-waiting{display:flex;align-items:center;gap:4px;margin:8px 0}
.b4-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:end;margin-bottom:8px}
.b4-grid .field{margin:0}
@media (max-width:640px){.b4-grid{grid-template-columns:1fr 1fr}.b4-tools{width:100%}.b4-tools .input.b4-lane-pick{flex:1;min-width:0}}
.b4-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;margin-bottom:12px;border-bottom:1px solid var(--border)}
.b4-tabs .chip{flex:none;padding:4px 12px;font-size:var(--fs-13)}
.b4-tabs .chip.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.b4-pane{min-height:160px}
.b4-pane p{margin:0 0 12px}
.b4-sec{padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--border)}
.b4-sec:last-child{border-bottom:0;margin-bottom:0}
.b4-sec h3{font-size:var(--fs-16);font-weight:600;margin:0 0 8px}
.b4-sec h3 .faint{font-weight:400;font-size:var(--fs-14)}
.b4-list{display:flex;flex-direction:column}
.b4-wl,.b4-rel{padding:8px 0;border-bottom:1px solid var(--border);min-width:0}
.b4-wl:last-child,.b4-rel:last-child{border-bottom:0}
.b4-wl-top{display:flex;align-items:center;gap:8px;min-width:0;font-size:var(--fs-14)}
.b4-wl-top b{min-width:0}
.b4-wl small,.b4-rel small{font-size:var(--fs-12)}
.b4-rel .b4-steps{margin-top:4px}
.b4-empty{padding:24px 0;text-align:center}
.b4-empty b{display:block;font-size:var(--fs-14);margin-bottom:4px}
.b4-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:8px}
.b4-key{display:inline-block;width:12px;height:8px;background:var(--accent);vertical-align:middle}
.b4-key.late{background:var(--red)}
.b4-key.done{background:var(--b1-c4)}
.b4-key.doing{background:var(--b1-c3)}
.b4-key.line{height:2px;background:var(--accent)}
.b4-key.ideal{height:0;border-top:2px dashed var(--b1-c5);background:none}
.b4-key.sev-critical,.b4-stack i.sev-critical{background:var(--red)}
.b4-key.sev-high,.b4-stack i.sev-high{background:var(--amber)}
.b4-key.sev-medium,.b4-stack i.sev-medium{background:var(--b1-c1)}
.b4-key.sev-low,.b4-stack i.sev-low{background:var(--b1-c6)}
.b4-tl{display:flex;flex-direction:column;border-top:1px solid var(--border)}
.b4-tl-row{display:grid;grid-template-columns:minmax(96px,32%) 1fr;gap:8px;align-items:center;min-height:32px;border-bottom:1px solid var(--border)}
.b4-tl-name{font-size:var(--fs-13);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:0;background:none;padding:0;text-align:left;color:var(--text);cursor:pointer;min-width:0}
.b4-tl-track{position:relative;height:32px}
.b4-tl-head .b4-tl-track{height:24px}
.b4-tl-head .b4-tl-name{font-size:var(--fs-12);color:var(--faint)}
.b4-tl-wk{position:absolute;top:4px;font-size:var(--fs-12);color:var(--faint);white-space:nowrap;border-left:1px solid var(--border);padding-left:4px}
.b4-tl-bar{position:absolute;top:12px;height:8px;background:var(--accent)}
.b4-tl-bar.late{background:var(--red)}
.b4-tl-bar.done{background:var(--b1-c4)}
.b4-tl-today{position:absolute;top:0;bottom:0;width:1px;background:var(--amber)}
.b4-burn{width:100%;max-width:480px;height:auto;display:block;margin:8px 0}
.b4-axis{stroke:var(--border-strong);stroke-width:1}
.b4-ideal{stroke:var(--b1-c5);stroke-width:2;stroke-dasharray:4 4}
.b4-actual{stroke:var(--accent);stroke-width:2}
.b4-warn{color:var(--amber);font-weight:500}
.b4-cols{display:flex;align-items:flex-end;gap:8px;height:160px;border-bottom:1px solid var(--border-strong);overflow-x:auto}
.b4-colw{flex:1;min-width:32px;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%}
.b4-colv{font-size:var(--fs-12);color:var(--muted)}
.b4-col{position:relative;flex:1;width:100%;max-width:32px;display:flex;flex-direction:column;justify-content:flex-end}
.b4-col i{display:block;width:100%;background:var(--accent)}
.b4-coll{font-size:var(--fs-12);color:var(--faint);max-width:100%;text-align:center;padding-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.b4-pair{flex:1;width:100%;display:flex;gap:2px;justify-content:center;align-items:stretch}
.b4-pair .b4-col{max-width:16px}
.b4-stack.fixed{opacity:.55}
.b4-score{display:flex;align-items:center;gap:16px;margin-bottom:12px}
.b4-score-n{font-size:var(--fs-24);font-weight:600;min-width:48px;padding:8px 0;text-align:center;border:1px solid var(--green);color:var(--green)}
.b4-score-n.mid{border-color:var(--amber);color:var(--amber)}
.b4-score-n.bad{border-color:var(--red);color:var(--red)}
.b4-score span{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-14)}
.b4-score small{font-size:var(--fs-12)}
.b4-tips{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:8px;font-size:var(--fs-14)}

/* ===== PartCrew 10.25 (Batch 5): game docs and Roblox tools ===== */
.b5-page .b1-tabs{margin-top:var(--sp-2)}
.b5-form{display:flex;flex-direction:column;gap:var(--sp-2);padding:0 0 var(--sp-4);margin:0 0 var(--sp-4);border-bottom:1px solid var(--border)}
.b5-form .field{margin:0}
.b5-date{width:auto;max-width:180px}
.b5-num{width:80px}
.b5-bar{padding:0 0 var(--sp-3);margin:0 0 var(--sp-2)}
.b5-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--border)}
.b5-r{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--border);min-width:0}
.b5-r>.grow{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0}
.b5-r b{font-weight:600;color:var(--text);font-size:var(--fs-14)}
.b5-r small{font-size:var(--fs-12)}
.b5-click{cursor:pointer}
.b5-click:hover b{color:var(--accent)}
.b5-why{font-size:var(--fs-13);color:var(--muted)}
.b5-why p{margin:0}
.b5-old b{color:var(--muted);text-decoration:line-through}
.b5-tag{display:inline-flex;align-items:center;gap:var(--sp-1);padding:0 var(--sp-1);border:1px solid var(--border);border-radius:var(--r-0);font-size:var(--fs-12);color:var(--muted);white-space:nowrap}
.b5-acts{display:flex;align-items:center;gap:var(--sp-1);flex-shrink:0}
.b5-h{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--fs-14);font-weight:600;color:var(--text)}
.b5-sec{padding:var(--sp-2) 0 var(--sp-4);border-bottom:1px solid var(--border)}
.b5-sec .b5-h{margin-top:var(--sp-2)}
.b5-sec p{margin:0 0 var(--sp-2)}
.b5-out{width:100%;font-size:var(--fs-13);resize:vertical}
.b5-mono{font-family:var(--mono);font-size:var(--fs-12)}
.b5-check{gap:var(--sp-2);font-size:var(--fs-13);margin:var(--sp-2) 0}
.b5-upl{cursor:pointer}
.b5-mood{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--sp-3)}
.b5-mi{margin:0;display:flex;flex-direction:column;gap:var(--sp-1)}
.b5-mi-b{display:block;padding:0;border:1px solid var(--border);border-radius:var(--r-0);background:var(--surface2);cursor:pointer;aspect-ratio:4/3;overflow:hidden}
.b5-mi-b img{width:100%;height:100%;object-fit:cover;display:block}
.b5-mi-b:hover{border-color:var(--border-strong)}
.b5-mi figcaption{font-size:var(--fs-12);color:var(--muted)}
.b5-big{display:block;max-width:100%;max-height:60vh;margin:0 auto var(--sp-3);border:1px solid var(--border)}
.b5-meet{border-bottom:0}
.b5-mt-title{font-size:var(--fs-16);font-weight:600}
.b5-notes{min-height:200px;resize:vertical}
.b5-acts-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}
.b5-act{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.b5-act .input.grow{flex:1 1 200px;min-width:0}
.b5-act select{flex:0 1 180px}
.b5-th{width:40px;height:40px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--surface2);color:var(--muted);overflow:hidden}
.b5-th img{width:100%;height:100%;object-fit:cover}
.b5-asset code{font-family:var(--mono);font-size:var(--fs-12)}
.b5-rules{list-style:none;margin:0 0 var(--sp-2);padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}
.b5-rule{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.b5-rule select{flex:1 1 160px}
.b5-picks{display:flex;flex-direction:column;border-top:1px solid var(--border)}
.b5-pick{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}
.b5-pick:hover b{color:var(--accent)}
.b5-pick b{display:block;font-weight:600;font-size:var(--fs-14)}
.b5-pick small{display:block;font-size:var(--fs-12);color:var(--muted)}
.b5-pick-i{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);color:var(--accent);flex-shrink:0}
.b5-hist p{margin:0 0 var(--sp-2)}
.b5-ver{border-top:1px solid var(--border);padding:var(--sp-3) 0 0;max-height:50vh;overflow:auto}
.b5-imp{margin:var(--sp-4) 0 0}
.b5-imp-empty{margin:var(--sp-2) 0 0}
.b5-imp-n{text-align:right;color:var(--muted);flex-shrink:0}
.b5-mk{width:2px;align-self:stretch;background:var(--amber);flex-shrink:0}
.b5-up{color:var(--ok)}
.b5-down{color:var(--danger)}
.gst-mark{stroke:var(--amber);stroke-width:1.5;stroke-dasharray:4 4}
.gst-mark-t{fill:var(--muted);font-size:var(--fs-12)}
@media (max-width:640px){
  .b5-r{flex-wrap:wrap}
  .b5-imp-n{text-align:left;width:100%}
  .b5-mood{grid-template-columns:repeat(2,1fr);gap:var(--sp-2)}
  .b5-date{max-width:none}
}

/* ===== PartCrew 10.26 (Batch 6): profiles, Talent Hub and hiring ===== */
.b6-h{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--fs-14);font-weight:600;color:var(--text)}
.b6-rows{list-style:none;margin:0;padding:0}
.b6-row{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);min-width:0}
.b6-rows .b6-row:last-child{border-bottom:0}
.b6-row>.grow{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0}
.b6-row small{font-size:var(--fs-12)}
.b6-row.done .ellip{color:var(--muted);text-decoration:line-through}
.b6-gic{width:32px;height:32px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--r-0);object-fit:cover;color:var(--muted)}
.b6-big{margin:0;font-size:var(--fs-24);font-weight:600;color:var(--text)}
.b6-me-bar{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:0 0 var(--sp-3)}
.b6-copy{display:flex;gap:var(--sp-2);margin-top:var(--sp-2)}
.b6-copy .input{flex:1;min-width:0;font-size:var(--fs-12)}
.b6-avs{display:flex;flex-wrap:wrap;gap:var(--sp-1)}
.b6-proved{cursor:pointer;border-color:var(--accent);color:var(--accent);gap:var(--sp-1)}
.b6-flash{outline:2px solid var(--accent);outline-offset:4px}
.b6-show-grid{margin-bottom:0}
.b6-heat{display:grid;grid-template-rows:repeat(7,10px);grid-auto-flow:column;grid-auto-columns:10px;gap:0;overflow-x:auto;padding:var(--sp-1) 0}
.b6-heat i,.b6-heat-f i{display:block;width:10px;height:10px;border:1px solid var(--bg);background:var(--surface3)}
.b6-heat i.l1,.b6-heat-f i.l1{background:color-mix(in srgb,var(--accent) 25%,var(--surface3))}
.b6-heat i.l2,.b6-heat-f i.l2{background:color-mix(in srgb,var(--accent) 50%,var(--surface3))}
.b6-heat i.l3,.b6-heat-f i.l3{background:color-mix(in srgb,var(--accent) 75%,var(--surface3))}
.b6-heat i.l4,.b6-heat-f i.l4{background:var(--accent)}
.b6-heat-f{display:flex;align-items:center;gap:var(--sp-1);margin-top:var(--sp-2);flex-wrap:wrap}
.b6-stars{display:inline-flex;gap:0;color:var(--border-strong);vertical-align:middle}
.b6-stars .on{color:var(--warn)}
.b6-stars .on .i{fill:currentColor}
.b6-card-slot{display:flex;align-items:center;gap:var(--sp-1);margin-top:var(--sp-2)}
.b6-card-slot:empty{display:none}
.b6-tl-bar{display:flex;justify-content:flex-end;gap:var(--sp-2);margin:0 0 var(--sp-2)}
.b6-tl-bar[hidden],.b6-dir[hidden],#tl-res[hidden],#tl-sk[hidden]{display:none}
.b6-dir-top{display:flex;flex-direction:column;gap:var(--sp-3);padding:0 0 var(--sp-3);border-bottom:1px solid var(--border)}
.b6-filters{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.b6-filters .input{width:auto;min-width:0;flex:1 1 160px;font-size:var(--fs-13)}
.b6-filters #b6-dq{flex:2 1 220px}
.b6-chk{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-13);color:var(--text);cursor:pointer;min-width:0}
.b6-dir-acts{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.b6-devs{list-style:none;margin:0;padding:0}
.b6-dev{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4) 0;border-bottom:1px solid var(--border)}
.b6-dev>.grow{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0}
.b6-dev-h{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}
.b6-dev-h b{font-weight:600;color:var(--text)}
.b6-dev-rv{display:inline-flex;align-items:center;gap:var(--sp-1)}
.b6-dev-lft{font-size:var(--fs-13);color:var(--text)}
.b6-dev-lft .badge{gap:var(--sp-1)}
.b6-dev-meta{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center}
.b6-dev-meta span{display:inline-flex;align-items:center;gap:var(--sp-1)}
.b6-empty{list-style:none;padding:var(--sp-6) 0}
.b6-pick{display:flex;flex-direction:column;border-top:1px solid var(--border)}
.b6-pick-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);cursor:pointer;min-width:0}
.b6-pick-row .grow{display:flex;flex-direction:column;min-width:0}
.b6-qs{padding:0 0 var(--sp-2)}
.b6-qrow{display:flex;align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-2)}
.b6-own{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-2) 0}
.b6-appx{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-2) 0}
.b6-appx select.input{width:auto;font-size:var(--fs-13)}
.b6-ans{margin:0;font-size:var(--fs-13)}
.b6-ans dt{font-weight:500;color:var(--muted);margin:var(--sp-2) 0 0}
.b6-ans dd{margin:0;color:var(--text);white-space:pre-wrap}
.b6-det summary{cursor:pointer;color:var(--muted)}
.b6-trial-sum{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.b6-trial-sum b{display:inline-flex;align-items:center;gap:var(--sp-1);font-weight:600}
.b6-trial .b6-h:first-child{margin-top:0}
.b6-trial-d{font-size:var(--fs-14);color:var(--text);padding:0 0 var(--sp-3);border-bottom:1px solid var(--border)}
.b6-msgs{list-style:none;margin:0 0 var(--sp-3);padding:0;display:flex;flex-direction:column;gap:var(--sp-3);font-size:var(--fs-14)}
.b6-msgs li{display:flex;gap:var(--sp-2);align-items:flex-start}
.b6-ms{margin:var(--sp-3) 0;padding:var(--sp-3) 0 0;border-top:1px solid var(--border)}
.b6-ms-h{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}
.b6-ms-h .b6-h{margin:var(--sp-2) 0}
.b6-ms-add{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0 0 var(--sp-2)}
.b6-ms-add .input{width:auto;flex:1 1 120px;min-width:0}
.b6-bar{height:4px;background:var(--surface3);margin:0 0 var(--sp-2)}
.b6-bar i{display:block;height:100%;background:var(--ok)}
.b6-pipe{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-3)}
.b6-pcol{border:1px solid var(--border);border-radius:var(--r-0);padding:var(--sp-2);min-width:0}
.b6-pcol .b6-h{margin:0 0 var(--sp-2)}
.b6-pcard{border:1px solid var(--border);border-radius:var(--r-0);padding:var(--sp-2);margin:0 0 var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-1);background:var(--bg)}
.b6-pcard .b6-row{border:0;padding:0;flex-wrap:wrap}
.b6-two{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.b6-two .b6-row{border:0;padding:0}
.b6-video{position:relative;width:100%;aspect-ratio:16/9;background:var(--surface3)}
.b6-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.b6-page{max-width:760px;padding:var(--sp-6) var(--sp-4)}
.b6-ph h1{margin:0 0 var(--sp-2);font-size:var(--fs-20);font-weight:600}
.b6-ph p{margin:0 0 var(--sp-4)}
.b6-rev{border-top:1px solid var(--border)}
.b6-rev .b6-row{padding:var(--sp-3) 0}
.b6-pct{font-size:var(--fs-16);font-weight:600;color:var(--text)}
.b6-psec{margin-top:var(--sp-6);padding-top:var(--sp-2);border-top:1px solid var(--border)}
@media (max-width:720px){
  .b6-pipe{grid-template-columns:1fr}
  .b6-two{grid-template-columns:1fr}
  .b6-filters .input{flex:1 1 140px}
  .b6-page{padding:var(--sp-4) var(--sp-3)}
  .b6-dev{gap:var(--sp-2)}
}
@media (max-width:720px){.b6-show-grid .pf-img{height:96px;aspect-ratio:auto}}
.b6-sec .b6-row:last-child{border-bottom:0}
.b6-big{line-height:1.2}
.b6-dev-lft{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1)}
@media (max-width:720px){.b6-dev{flex-wrap:wrap}.b6-dev>.grow{flex:1 1 calc(100% - 64px)}.b6-dev>.btn{margin-left:auto}}

/* ===== PartCrew 10.27 (Batch 7): growth, sharing and stats ===== */
.b7-row{gap:var(--sp-2);align-items:center}
.b7-grow{flex:1 1 200px;min-width:0}
.b7-new{margin:0 0 var(--sp-4)}
.b7-new>summary{list-style:none;display:inline-flex;cursor:pointer;margin-bottom:var(--sp-3)}
.b7-new>summary::-webkit-details-marker{display:none}
.b7-bars{display:flex;align-items:flex-end;gap:var(--sp-1);height:48px;padding:var(--sp-1) 0;border-bottom:1px solid var(--border)}
.b7-bars span{flex:1;height:100%;display:flex;align-items:flex-end}
.b7-bars i{display:block;width:100%;min-height:1px;background:var(--accent)}
.b7-meter{display:block;height:4px;background:var(--surface2);max-width:240px}
.b7-meter i{display:block;height:4px;background:var(--accent)}
.b7-st-busy{color:var(--accent);border-color:var(--accent)}
.b7-st-dead{color:var(--danger)}
.b7-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--sp-4);padding:var(--sp-2) 0 var(--sp-3)}
.b7-kpis div{display:flex;flex-direction:column;gap:var(--sp-1)}
.b7-kpis b{font-size:var(--fs-20);font-weight:600;color:var(--text)}
.b7-kpis small{font-size:var(--fs-12);color:var(--muted)}
.b7-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-4)}
.b7-card{margin:0;display:flex;flex-direction:column;gap:var(--sp-2)}
.b7-card-img{border:1px solid var(--border);line-height:0;max-width:600px}
.b7-canvas{display:block;width:100%;height:auto}
.b7-pre{white-space:pre-wrap;font-family:var(--mono);font-size:var(--fs-12);color:var(--muted);border-top:1px solid var(--border);padding:var(--sp-3) 0;margin:var(--sp-3) 0 0}
.b7-roles{display:flex;flex-wrap:wrap;gap:var(--sp-1)}
.b7-feat{padding:var(--sp-4) 0;margin:0 0 var(--sp-4);border-bottom:1px solid var(--border)}
.b7-feat-k{font-size:var(--fs-12);font-weight:500;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--sp-2)}
.b7-feat-t{font-size:var(--fs-16);font-weight:600;margin:0 0 var(--sp-1)}
.b7-feat p{margin:0 0 var(--sp-1)}
.b7-feat-pic{width:48px;height:48px;flex-shrink:0}
.b7-staff{margin-top:var(--sp-3)}
.b7-staff summary{cursor:pointer;color:var(--muted)}
.b7-staff form{margin-top:var(--sp-2)}
.b7-board{padding:var(--sp-6) 0 var(--sp-4);margin-top:var(--sp-6);border-top:1px solid var(--border)}
.b7-board-t{font-size:var(--fs-16);font-weight:600;margin:0 0 var(--sp-2)}
.b7-perk{border-bottom:0}
.b7-so .b5-rows{border-top:0}
@media (max-width:640px){.b7-cards{grid-template-columns:1fr}.b7-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.b7-feat .row{flex-wrap:wrap}}

/* ===== PartCrew 10.28 (Batch 8): outside services, sign-in and voice ===== */
.b8-note{margin:var(--sp-3) 0 0}
.b8-lead{margin:0 0 var(--sp-3)}
.b8-sec{padding:var(--sp-4) 0;border-bottom:1px solid var(--border)}
.b8-sec:last-child{border-bottom:0}
.b8-h{font-size:var(--fs-14);font-weight:600;margin:0 0 var(--sp-2)}
.b8-form{display:flex;flex-direction:column;gap:var(--sp-3)}
.b8-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--sp-3)}
.b8-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
.b8-inline{display:flex;gap:var(--sp-2);margin:var(--sp-3) 0}
.b8-foot{display:flex;gap:var(--sp-2);width:100%}
.b8-list{list-style:none;margin:var(--sp-2) 0 0;padding:0}
.b8-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);min-width:0}
.b8-row:last-child{border-bottom:0}
.b8-empty{padding:var(--sp-3) 0}
.b8-link{appearance:none;background:transparent;border:0;padding:0;font:inherit;color:var(--accent);cursor:pointer;display:inline-flex;align-items:center;gap:var(--sp-2);text-align:left}
.b8-link:hover{text-decoration:underline}
.b8-toggle{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;cursor:pointer}
.b8-det{margin:var(--sp-3) 0 0}
.b8-det>summary{cursor:pointer;color:var(--accent);font-size:var(--fs-13)}
.b8-pre{white-space:pre-wrap;word-break:break-word;font-family:var(--mono);font-size:var(--fs-12);background:var(--surface2);border:1px solid var(--border);padding:var(--sp-3);margin:var(--sp-2) 0 0;max-height:320px;overflow:auto}
.b8-rc{font-size:var(--fs-16);text-align:center;letter-spacing:.08em}
.b8-code{font-family:var(--mono);font-size:var(--fs-16);letter-spacing:.08em}
.b8-st{display:inline-block;min-width:104px;font-size:var(--fs-12);font-weight:500;color:var(--muted);border:1px solid var(--border);padding:0 var(--sp-2);text-align:center}
.b8-st.on{color:var(--success,var(--accent));border-color:currentColor}
.b8-gif-top{margin:0 0 var(--sp-3)}
.b8-gifs>p{grid-column:1/-1;margin:0}
.b8-note code{word-break:break-all}
.b8-gifs{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:var(--sp-2);min-height:120px;max-height:56vh;overflow:auto}
.b8-gif{appearance:none;border:1px solid var(--border);background:var(--surface2);padding:0;cursor:pointer;line-height:0;aspect-ratio:4/3;overflow:hidden}
.b8-gif img{width:100%;height:100%;object-fit:cover}
.b8-gif:hover,.b8-gif:focus-visible{border-color:var(--accent)}
.b8-gif.busy{opacity:.5}
.b8-rec{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-4) 0}
.b8-rec-time{font-size:var(--fs-24);font-weight:500;font-variant-numeric:tabular-nums}
.b8-audio{display:block;width:100%;max-width:320px;height:40px;margin:var(--sp-1) 0}
.b8-video{display:block;width:100%;max-width:360px;max-height:320px;background:var(--surface2);border:1px solid var(--border);margin:var(--sp-1) 0}
.b8-vaudio{position:fixed;width:0;height:0;overflow:hidden}
.b8-thumb{width:40px;height:40px;object-fit:cover;border:1px solid var(--border)}
.b8-dlog{margin-top:var(--sp-2)}

/* ===== PartCrew 10.29 (Batch 9): supporter plans, tracking only ===== */
.b9-sec{padding:var(--sp-4) 0;border-bottom:1px solid var(--border)}
.b9-sec .b5-form{border-bottom:0;margin:0;padding:var(--sp-2) 0 0}
.b9-sec .b5-rows{margin-top:var(--sp-3)}
.b9-k{font-size:var(--fs-12);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 var(--sp-2)}
.b9-now{margin:0 0 var(--sp-2);font-size:var(--fs-14);color:var(--text)}
.b9-now b{font-weight:600}
.b9-perks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-1)}
.b9-perks li{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-13);color:var(--muted)}
.b9-check{display:flex;align-items:flex-start;gap:var(--sp-2);font-size:var(--fs-13);color:var(--text);cursor:pointer}
.b9-check input{margin:var(--sp-1) 0 0;flex-shrink:0}
.b9-opts{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.b9-opt{display:flex;align-items:flex-start;gap:var(--sp-2);flex:1 1 160px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-0);cursor:pointer}
.b9-opt:has(input:checked){border-color:var(--accent)}
.b9-opt input{margin:var(--sp-1) 0 0}
.b9-opt span{display:flex;flex-direction:column;gap:0;font-size:var(--fs-13)}
.b9-opt b{font-weight:600;color:var(--text)}
.b9-meter{height:8px;background:var(--border);border-radius:var(--r-0);overflow:hidden;margin:var(--sp-2) 0}
.b9-meter i{display:block;height:100%;background:var(--accent)}
.b9-foot{margin:var(--sp-4) 0 0}
.b9-up{margin-top:var(--sp-6);border-top:1px solid var(--border)}
.b9-shop{margin-top:var(--sp-6);padding-top:var(--sp-4);border-top:1px solid var(--border)}
.b9-shop-t{margin:0;font-size:var(--fs-16);font-weight:600;color:var(--text)}
.b9-shop form{margin:var(--sp-3) 0}
.b9-tplr .b5-tag{align-self:flex-start}
.b9-tplr .grow{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0}
.b9-feat{color:var(--accent);border-color:var(--accent)}
.dev-b9{padding:var(--sp-4) 0;border-top:1px solid var(--border);margin:0 0 var(--sp-4)}
.b9-done{margin-top:var(--sp-3)}
.b9-done summary{cursor:pointer;color:var(--muted)}
.b9-set{margin-top:var(--sp-4);align-items:flex-end}
.b9-set .field{margin:0}
