:root{--bg:#f7f4ef;--surface:#ffffff;--surface-2:#f1ece4;--border:#e7e0d6;--ink:#232a31;--ink-2:#5d6873;--ink-3:#8a929c;--primary:#0e7c6f;--primary-600:#0b675c;--primary-ink:#ffffff;--primary-soft:#d6efea;--accent:#e8765a;--success:#15803d;--success-soft:#dcfce7;--warning:#a96512;--warning-soft:#fcefcd;--danger:#b4271f;--danger-soft:#fbe3e1;--info:#1d6fb8;--info-soft:#ddeefb;--font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--fs-1:2rem;--fs-2:1.5rem;--fs-3:1.175rem;--fs-base:1.0625rem;--fs-sm:.9375rem;--fs-xs:.8125rem;--radius:16px;--radius-sm:10px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(20,28,36,.05);--shadow:0 1px 3px rgba(20,28,36,.06),0 8px 24px rgba(20,28,36,.06);--shadow-lg:0 12px 40px rgba(20,28,36,.12);--tap:48px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--fs-base);line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{line-height:1.2;margin:0 0 .4em;letter-spacing:-.01em}h1{font-size:var(--fs-1);font-weight:760}h2{font-size:var(--fs-2);font-weight:720}h3{font-size:var(--fs-3);font-weight:680}p{margin:0 0 1em}a{color:var(--primary-600);text-decoration:none}a:hover{text-decoration:underline}.muted,small{color:var(--ink-2)}ul{padding-left:1.2em}code{background:var(--surface-2);padding:.1em .4em;border-radius:6px;font-size:.9em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:var(--tap);padding:0 1.15rem;border-radius:var(--radius-sm);font:inherit;font-weight:640;border:1px solid var(--border);background:var(--surface);color:var(--ink);cursor:pointer;transition:transform .06s ease,box-shadow .15s ease,background .15s ease}.btn,.btn:hover{text-decoration:none}.btn:hover{box-shadow:var(--shadow-sm)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.btn-primary:hover{background:var(--primary-600)}.btn-accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn-ghost{background:transparent;border-color:transparent}.btn-block{width:100%}.btn-lg{min-height:56px;font-size:var(--fs-3);padding:0 1.5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:clamp(16px,3vw,24px)}.card-hd{border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}.card-bd,.card-hd{padding:16px 20px}.badge{display:inline-flex;align-items:center;gap:.35em;padding:.28em .7em;border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:680;background:var(--surface-2);color:var(--ink-2);text-transform:capitalize}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-primary{background:var(--primary-soft);color:var(--primary-600)}.field{display:block;margin-bottom:1rem}.field>label{display:block;font-weight:640;font-size:var(--fs-sm);margin-bottom:.4em}.input,.select,.textarea{width:100%;min-height:var(--tap);padding:.6rem .8rem;font:inherit;background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:var(--radius-sm)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.textarea{min-height:110px;padding:.7rem .8rem;resize:vertical}.app{min-height:100dvh}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:30;justify-content:space-between;gap:12px;padding:10px clamp(14px,4vw,24px);background:var(--surface);border-bottom:1px solid var(--border)}.brand,.topbar{display:flex;align-items:center}.brand{gap:.55em;font-weight:760;font-size:var(--fs-3);color:var(--ink)}.brand:hover{text-decoration:none}.brand .logo{width:34px;height:34px;display:grid;place-items:center;background:var(--primary);color:#fff;border-radius:10px;font-weight:800}.nav{position:fixed;bottom:0;left:0;right:0;z-index:30;display:flex;justify-content:space-around;background:var(--surface);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.nav-link{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;min-height:var(--tap);border-radius:10px;color:var(--ink-2);font-size:var(--fs-xs);font-weight:600;text-decoration:none}.nav-link .ico{font-size:1.3rem;line-height:1}.nav-link:hover{text-decoration:none;color:var(--ink)}.nav-link[data-active=true]{color:var(--primary-600);background:var(--primary-soft)}.main{padding:clamp(16px,4vw,32px) clamp(16px,4vw,32px) 96px;max-width:1080px;margin:0 auto}@media (min-width:900px){.app{display:grid;grid-template-columns:248px 1fr;grid-template-rows:auto 1fr;grid-template-areas:"side top" "side main"}.topbar{grid-area:top}.nav{grid-area:side;position:-webkit-sticky;position:sticky;top:0;height:100dvh;flex-direction:column;gap:4px;border-top:none;border-right:1px solid var(--border);padding:16px 12px}.nav,.nav-link{justify-content:flex-start}.nav-link{flex:0 0 auto;flex-direction:row;gap:.7em;font-size:var(--fs-base);padding:12px 14px}.main{grid-area:main;padding-bottom:32px}}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));grid-gap:14px;gap:14px}.tile{display:flex;flex-direction:column;gap:.35em;padding:20px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);color:var(--ink);transition:box-shadow .15s,transform .06s}.tile:hover{box-shadow:var(--shadow);text-decoration:none;transform:translateY(-1px)}.tile .ico{font-size:1.7rem}.tile .t{font-weight:700;font-size:var(--fs-3)}.tile .d{color:var(--ink-2);font-size:var(--fs-sm)}.module-launcher{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));grid-gap:14px;gap:14px;align-items:start}.launcher-group{min-height:100%}.launcher-links{display:grid;grid-gap:10px;gap:10px;margin-top:12px}.launcher-link{display:grid;grid-template-columns:42px 1fr;grid-gap:10px;gap:10px;align-items:start;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);background:var(--surface);text-decoration:none}.launcher-link:hover{text-decoration:none;border-color:var(--primary);box-shadow:var(--shadow-sm)}.launcher-link .ico{display:grid;place-items:center;min-height:38px;border-radius:12px;background:var(--primary-soft);color:var(--primary-600);font-weight:800;font-size:var(--fs-xs)}.launcher-link small{display:block;margin-top:2px;color:var(--ink-2)}.ask-hero{background:linear-gradient(135deg,var(--primary) 0,#0b6258 100%);color:#fff;border-radius:var(--radius);padding:clamp(20px,4vw,30px);margin-bottom:1.5rem;box-shadow:var(--shadow)}.ask-hero h2{color:#fff;margin-bottom:.2em}.ask-hero p{color:rgba(255,255,255,.86);margin-bottom:1rem}.stack>*+*{margin-top:1rem}.row{align-items:center;gap:.6rem;flex-wrap:wrap}.list,.row{display:flex}.list{flex-direction:column;gap:10px}.spacer{flex:1 1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.inline-help{margin:0;color:var(--ink-2);font-size:var(--fs-sm)}.token-list{list-style:none;padding:0;margin:0}.error-state{max-width:720px;margin:10vh auto 0}.loading-skeleton{display:grid;grid-gap:10px;gap:10px}.loading-skeleton span{display:block;height:18px;border-radius:var(--radius-pill);background:linear-gradient(90deg,var(--surface-2),var(--border),var(--surface-2));background-size:220% 100%;animation:loading-shimmer 1.15s ease-in-out infinite}.loading-skeleton span:nth-child(2){width:82%}.loading-skeleton span:nth-child(3){width:64%}@keyframes loading-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}.who-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));grid-gap:14px;gap:14px;align-items:start}.who-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));grid-gap:10px;gap:10px}.who-card{border-left:6px solid var(--border)}.who-red{border-left-color:var(--danger)}.who-orange{border-left-color:var(--warning)}.who-green{border-left-color:var(--success)}.who-gray{border-left-color:var(--ink-3)}.who-card[data-pulse=true]{animation:who-pulse 1.4s ease-in-out infinite}@keyframes who-pulse{0%,to{box-shadow:var(--shadow-sm)}50%{box-shadow:0 0 0 4px var(--danger-soft),var(--shadow)}}.report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));grid-gap:14px;gap:14px;align-items:start}.report-row{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--border)}.report-row:last-child{border-bottom:0}.report-bar{display:grid;grid-gap:8px;gap:8px}.report-track{height:10px;background:var(--surface-2);border-radius:var(--radius-pill);overflow:hidden}.report-track>span{display:block;height:100%;background:var(--primary);border-radius:inherit}.availability-scroll{overflow-x:auto;padding:0 16px 16px}.availability-grid{min-width:min-content;display:grid;grid-template-columns:var(--availability-columns);grid-gap:6px;gap:6px;align-items:stretch}.availability-row{display:contents}.availability-corner,.availability-day,.availability-time{position:-webkit-sticky;position:sticky;z-index:1;background:var(--surface)}.availability-corner{left:0;min-height:var(--tap)}.availability-day{top:0;display:flex;min-height:var(--tap);flex-direction:column;justify-content:center;border-bottom:1px solid var(--border);font-size:var(--fs-sm)}.availability-day span{color:var(--ink-2);font-size:var(--fs-xs)}.availability-time{left:0;padding-right:10px;font-size:var(--fs-xs);font-weight:680}.availability-cell,.availability-time{display:flex;align-items:center;min-height:var(--tap);color:var(--ink-2)}.availability-cell{position:relative;min-width:72px;border:1px solid var(--border);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--primary-soft) calc(var(--heat) * 45%),var(--surface));font:inherit;font-size:var(--fs-xs);font-weight:720;cursor:crosshair;flex-direction:column;justify-content:center;gap:2px;touch-action:none}.availability-cell small{color:currentColor;font-size:.72rem;line-height:1}.availability-cell-available{background:var(--success-soft);border-color:color-mix(in srgb,var(--success) 55%,var(--border));color:var(--success)}.availability-cell-if-needed{background:var(--warning-soft);border-color:color-mix(in srgb,var(--warning) 55%,var(--border));color:var(--warning)}.availability-cell-unavailable{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 55%,var(--border));color:var(--danger)}.availability-cell-conflict:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:.38;background:repeating-linear-gradient(135deg,transparent 0 6px,currentColor 6px 8px,transparent 8px 14px)}.availability-cell:focus-visible{outline:3px solid var(--primary-soft);outline-offset:2px}.casting-board{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:14px;gap:14px;align-items:start}.casting-pool{position:-webkit-sticky;position:sticky;top:76px}.casting-character{min-height:156px;border-style:dashed}.casting-assignment,.casting-chip{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap}.casting-chip{min-height:var(--tap);padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.casting-chip:active{cursor:-webkit-grabbing;cursor:grabbing}.casting-chip[aria-pressed=true]{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.casting-assignment{padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}@media (min-width:980px){.casting-board{grid-template-columns:minmax(0,1fr) 320px}}