/* Troop — YellowPixel skin, made quiet and expensive.
   Tokens are YP's (#0e0e10 / #ffd21f, Chelsea Market + Roboto). One accent, one spotlight, one easing family. */
@font-face{font-family:"Chelsea Market";font-weight:400;font-display:swap;src:url(/static/fonts/chelsea-market-400.woff2) format("woff2")}
@font-face{font-family:"Roboto";font-weight:100 900;font-stretch:100%;font-display:swap;src:url(/static/fonts/roboto-var.woff2) format("woff2")}
:root{
  --bg:#0e0e10;--ink-0:#0a0a0c;--panel:#141418;--panel-2:#1b1b21;--line:#26262e;--line-2:#34343f;
  --tx:#f1f1f5;--mut:#9a9aa8;--dim:#6b6b78;--yl:#ffd21f;--yl-ink:#151203;--yl-soft:rgba(255,210,31,.12);
  --ok:#4ade80;--bad:#f87171;--blue:#7cb4ff;
  --disp:"Chelsea Market","Marker Felt",cursive;--body:"Roboto",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --ease-in:cubic-bezier(.22,1,.36,1);--ease-mv:cubic-bezier(.65,0,.35,1);
  --r:16px;--gut:clamp(16px,4vw,40px);
}
*{box-sizing:border-box}html,body{margin:0}
body{background:var(--bg);color:var(--tx);font:15px/1.55 var(--body);min-height:100svh;-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(120% 60% at 50% -10%,rgba(255,210,31,.07),transparent 60%)}
a{color:var(--yl);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}
h1,h2,h3,.disp,button,.btn,th,label.k,.chip,.stamp,nav a{font-family:var(--disp);font-weight:400;letter-spacing:.015em}
h1{font-size:clamp(28px,5vw,46px);line-height:1.05;margin:0}
h2{font-size:clamp(16px,2vw,19px);margin:0 0 14px;color:var(--tx)}
.mut{color:var(--mut)}.dim{color:var(--dim)}.small{font-size:13px}
::selection{background:var(--yl);color:var(--yl-ink)}
:focus-visible{outline:2px solid var(--yl);outline-offset:2px;border-radius:6px}

/* chrome */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:20px;padding:12px var(--gut);
  background:rgba(14,14,16,.82);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;color:var(--tx)}.brand:hover{text-decoration:none}
.brand img{width:30px;height:30px;border-radius:8px;box-shadow:0 0 18px rgba(255,210,31,.3)}
.brand b{font:400 18px var(--disp);letter-spacing:.04em;white-space:nowrap}.brand b i{font-style:normal;color:var(--yl)}
.top nav{display:flex;gap:2px;margin-left:auto;overflow-x:auto;scrollbar-width:none}
.top nav a{color:var(--mut);padding:7px 12px;border-radius:9px;white-space:nowrap;font-size:14px;transition:color .2s var(--ease-in),background .2s var(--ease-in)}
.top nav a:hover{color:var(--tx);background:var(--panel-2);text-decoration:none}
.top nav a.on{color:var(--yl-ink);background:var(--yl)}
.top form{margin:0}.top button{white-space:nowrap}
@media(max-width:620px){.top{flex-wrap:wrap;row-gap:8px;padding-bottom:8px}.top .brand{order:1}.top .pw{order:2;margin-left:auto}.top form{order:2;margin-left:0}.top nav{order:3;width:100%;margin-left:-6px}}
main{max-width:1180px;margin:0 auto;padding:clamp(24px,5vw,56px) var(--gut) 96px}

/* surfaces */
.card{background:linear-gradient(180deg,var(--panel),#111115);border:1px solid var(--line);border-radius:var(--r);padding:clamp(18px,3vw,28px)}
.card+.card{margin-top:20px}
.grid{display:grid;gap:20px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.split{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:20px;align-items:start}
@media(max-width:860px){.g3,.g4,.split{grid-template-columns:repeat(2,minmax(0,1fr))}.split{grid-template-columns:1fr}}
@media(max-width:560px){.g2,.g3,.g4{grid-template-columns:1fr}}
.stat{padding:18px 20px;border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.stat b{display:block;font:400 clamp(30px,4vw,44px)/1 var(--disp);color:var(--tx)}.stat span{color:var(--mut);font-size:13px}
.stat.hot b{color:var(--yl)}

/* controls */
button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--yl);color:var(--yl-ink);border:0;border-radius:11px;
  padding:11px 20px;font-size:15px;cursor:pointer;transition:transform .2s var(--ease-in),filter .2s var(--ease-in),box-shadow .2s var(--ease-in)}
button:hover,.btn:hover{filter:brightness(1.07);transform:translateY(-1px);box-shadow:0 8px 24px -8px rgba(255,210,31,.5);text-decoration:none}
button:active{transform:none}
.btn.ghost,button.ghost{background:transparent;color:var(--tx);border:1px solid var(--line-2)}.btn.ghost:hover,button.ghost:hover{border-color:var(--yl);color:var(--yl);box-shadow:none}
.btn.sm,button.sm{padding:6px 12px;font-size:13px;border-radius:9px}
button[disabled],.btn[aria-disabled=true]{background:var(--panel-2);color:var(--dim);border:1px solid var(--line);cursor:not-allowed;transform:none;box-shadow:none;filter:none}
input[type=text],input[type=email],input[type=password],input[type=url],input[type=date],input[type=search],textarea,select{
  width:100%;background:var(--ink-0);color:var(--tx);border:1px solid var(--line);border-radius:11px;padding:12px 14px;font:15px var(--body);transition:border-color .2s}
input:focus,textarea:focus,select:focus{outline:0;border-color:var(--yl);box-shadow:0 0 0 3px var(--yl-soft)}
textarea{min-height:104px;resize:vertical}
label.k{display:block;color:var(--mut);font-size:13px;margin:0 0 6px}
.f{margin:0 0 16px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.row>*{min-width:0}
.fieldset-grey{opacity:.45;pointer-events:none;filter:saturate(.3)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips label{cursor:pointer}.chips input{position:absolute;opacity:0;pointer-events:none}
.chips span{display:inline-block;padding:9px 15px;border:1px solid var(--line-2);border-radius:999px;color:var(--mut);font:400 14px var(--disp);transition:all .2s var(--ease-in)}
.chips input:checked+span{background:var(--yl);color:var(--yl-ink);border-color:var(--yl)}
.chips input:focus-visible+span{outline:2px solid var(--yl);outline-offset:2px}
.chip{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;border:1px solid var(--line-2);color:var(--mut)}
.chip.y{background:var(--yl-soft);color:var(--yl);border-color:rgba(255,210,31,.35)}.chip.g{color:var(--ok);border-color:rgba(74,222,128,.35)}.chip.r{color:var(--bad);border-color:rgba(248,113,113,.35)}

/* tables → stacked on phones */
table{width:100%;border-collapse:collapse}th{color:var(--dim);font-size:12px;text-align:left;padding:0 12px 10px;text-transform:uppercase;letter-spacing:.08em}
td{padding:14px 12px;border-top:1px solid var(--line);vertical-align:middle}
tr.link:hover td{background:rgba(255,255,255,.02)}
.tw{overflow-x:auto}
@media(max-width:640px){table.stack thead{display:none}table.stack,table.stack tbody,table.stack tr,table.stack td{display:block;width:100%}
  table.stack tr{border-top:1px solid var(--line);padding:12px 0}table.stack td{border:0;padding:3px 0}}

/* the one bold idea: the call-sheet name + the "mem since" stamp */
.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:clamp(24px,4vw,44px)}
.hero .eyebrow{color:var(--yl);font:400 13px var(--disp);letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px}
.act-name{font:400 clamp(38px,8vw,92px)/.95 var(--disp);letter-spacing:.005em;margin:0;text-wrap:balance}
.stamp{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--yl);color:var(--yl);padding:6px 13px;border-radius:9px;font-size:13px;
  transform:rotate(-2.5deg);background:rgba(255,210,31,.05);white-space:nowrap}
.stamp b{font:400 15px var(--disp)}
.mytroop{display:inline-flex;align-items:center;gap:12px}
.rule{height:1px;background:linear-gradient(90deg,var(--yl),transparent 40%);opacity:.5;margin:0 0 28px;border:0}

/* login */
.gate{min-height:100svh;display:grid;place-items:center;padding:24px}
.gate .box{width:min(420px,100%)}
.gate .logo{width:72px;height:72px;border-radius:18px;box-shadow:0 0 50px rgba(255,210,31,.35);margin-bottom:22px}
.gate h1{font-size:clamp(34px,9vw,52px)}.gate .sub{color:var(--mut);margin:8px 0 28px}
.err{color:var(--bad);font-size:14px;margin:0 0 14px}
.ok{color:var(--ok)}
.note{background:var(--yl-soft);border:1px solid rgba(255,210,31,.3);border-radius:12px;padding:12px 16px;margin-bottom:20px;color:var(--tx)}
.terms p{margin:0 0 12px}.terms li{margin:0 0 10px}.terms ul{padding-left:20px;margin:0}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 18px}.kv dt{color:var(--dim);font-size:13px}.kv dd{margin:0;overflow-wrap:anywhere}
code,.mono{font:13px ui-monospace,Menlo,monospace;color:var(--mut);overflow-wrap:anywhere}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:8px;background:var(--dim)}.dot.g{background:var(--ok)}.dot.r{background:var(--bad)}.dot.y{background:var(--yl)}
.headshot{width:96px;height:96px;flex:none;border-radius:50%;object-fit:cover;border:1px solid var(--line-2)}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@keyframes rise{from{opacity:0;transform:translateY(10px)}}
main>*{animation:rise .6s var(--ease-in) backwards}main>*:nth-child(2){animation-delay:.06s}main>*:nth-child(3){animation-delay:.12s}main>*:nth-child(n+4){animation-delay:.18s}

/* ── calendar ─────────────────────────────────────────────── */
main.wide{max-width:1560px}
.cal-wrap{display:grid;grid-template-columns:minmax(0,1fr) clamp(240px,22vw,300px);gap:20px;align-items:start}
.side{position:sticky;top:76px;align-self:start}.side .card{display:flex;flex-direction:column;max-height:calc(100svh - 96px)}
.results{display:grid;gap:6px;align-content:start;flex:1 1 auto;min-height:220px;overflow-y:auto;overscroll-behavior:contain;padding-right:4px;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.cal .dow{display:grid;grid-template-columns:repeat(var(--cols,7),minmax(0,1fr));gap:8px;margin-bottom:8px}.cal .dow span{color:var(--dim);font:400 12px var(--disp);letter-spacing:.1em;text-transform:uppercase;padding-left:6px}
.week{display:grid;grid-template-columns:repeat(var(--cols,7),minmax(0,1fr));gap:8px;margin-bottom:8px}
.day{min-height:96px;min-width:0;background:rgba(255,255,255,.015);border:1px solid var(--line);border-radius:14px;padding:6px;display:flex;flex-direction:column;gap:6px}
.day.out{opacity:.38}.day.today{border-color:rgba(255,210,31,.5);box-shadow:0 0 0 1px rgba(255,210,31,.18) inset}
.dn{display:flex;justify-content:space-between;align-items:baseline;color:var(--mut);padding:2px 4px 0}.dn span{font:400 15px var(--disp)}.dn i{display:none;font-style:normal;font-size:12px}
.today .dn span{color:var(--yl)}
/* The card is its own size container: circles, type and spacing all scale with the width the day gives it. */
.show{container-type:inline-size;min-width:0;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line-2);border-radius:12px;padding:clamp(6px,5cqw,12px);display:grid;gap:clamp(6px,5cqw,10px);transition:border-color .2s var(--ease-in)}
.show.off{opacity:.45}.show.drop{border-color:var(--yl)}
.show header{display:grid;gap:1px;min-width:0}.show header b{font-size:clamp(12px,11cqw,15px);line-height:1.15;overflow-wrap:anywhere}
.show header span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(10px,8cqw,12px)}
.slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(4px,4cqw,8px) clamp(4px,5cqw,8px);justify-items:center}
.cell{display:grid;justify-items:center;gap:2px;width:100%;min-width:0}
.tag{font:400 clamp(9px,7cqw,11px) var(--disp);font-style:normal;color:var(--dim);letter-spacing:.06em;line-height:1}
.role-mc .tag,.role-hl .tag{color:var(--yl)}
.role-mc .slot,.role-hl .slot{border-color:rgba(255,210,31,.45)}
.slot[draggable=true]{cursor:grab}.slot.dragging{opacity:.4}
@container (min-width:128px){.slots{grid-template-columns:repeat(4,minmax(0,1fr))}}
.slot{width:100%;max-width:44px;aspect-ratio:1;height:auto;padding:0;border-radius:50%;background:transparent;border:1.5px dashed var(--line-2);color:var(--tx);display:grid;place-items:center;overflow:hidden;position:relative;transition:transform .2s var(--ease-in),border-color .2s,background .2s;font:400 12px var(--disp);box-shadow:none}
.slot:hover{transform:none;box-shadow:none;filter:none;border-color:var(--yl);background:var(--yl-soft)}
.slot.empty.over,.slot.empty.armed{border-style:solid;border-color:var(--yl);background:var(--yl-soft);transform:scale(1.1)}
.slot.on{border-style:solid;background:var(--panel-2)}.slot img{width:100%;height:100%;object-fit:cover;display:block}
.slot.offered{border-color:var(--yl);box-shadow:0 0 0 2px rgba(255,210,31,.18)}.slot.confirmed{border-color:var(--ok);box-shadow:0 0 0 2px rgba(74,222,128,.18)}
.slot.declined{border-color:var(--bad);opacity:.55}.slot.played{border-color:var(--ok)}
.show footer{display:flex;align-items:center;gap:6px;justify-content:space-between;flex-wrap:wrap;min-width:0}.show .cnt{white-space:nowrap}
.slotctl{display:flex;gap:4px;margin:0}.slotctl button{padding:1px 8px;min-width:26px;line-height:1.4}
.more summary{cursor:pointer;list-style:none;text-align:center;opacity:.7;font-size:11px}.more summary::-webkit-details-marker{display:none}.more summary:hover{opacity:1;color:var(--yl)}
.more[open] summary{margin-bottom:6px}
.show .cancel{width:100%;font-size:11px;padding:3px 0;color:var(--dim);border-color:var(--line)}.show .cancel:hover{color:var(--bad);border-color:rgba(248,113,113,.45)}
.chip.soon{color:var(--bad);border-color:rgba(248,113,113,.45)}
.av{width:32px;height:32px;border-radius:50%;background:var(--panel-2);border:1px solid var(--line-2);display:grid;place-items:center;overflow:hidden;flex:none;font:400 12px var(--disp);color:var(--yl)}.av img{width:100%;height:100%;object-fit:cover}
.pick{display:flex;gap:10px;align-items:center}
.person{display:flex;gap:10px;align-items:center;padding:7px 9px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2);cursor:grab;text-align:left;width:100%;color:var(--tx);font:400 14px var(--disp);transition:border-color .2s,transform .2s var(--ease-in);touch-action:manipulation}
.person:hover{border-color:var(--yl);transform:none;box-shadow:none;filter:none}.person.armed{border-color:var(--yl);background:var(--yl-soft)}.person small{display:block;font:400 11px var(--body);color:var(--dim)}
.person.dragging{opacity:.5}
.sugg{display:grid;gap:4px;margin-top:6px}.sugg .person{cursor:pointer}
dialog{background:var(--panel);color:var(--tx);border:1px solid var(--line-2);border-radius:18px;padding:0;width:min(520px,calc(100vw - 24px));max-height:92svh;overflow:auto}
dialog::backdrop{background:rgba(5,5,7,.72);backdrop-filter:blur(4px)}
.dlg{padding:clamp(18px,4vw,28px);margin:0}.dlg h2{font-size:20px}
label.inline{display:flex;gap:10px;align-items:center;color:var(--mut);font-size:14px}label.inline input{width:auto}
[hidden]{display:none!important}
.invite{width:min(520px,100%)}.inv-top{display:flex;gap:16px;align-items:center;margin-bottom:20px}.inv-top h1{font-size:clamp(24px,6vw,34px)}
.ticket{margin-bottom:20px;border-style:dashed;border-color:rgba(255,210,31,.4)}.tk-date{font-size:clamp(26px,7vw,40px);line-height:1.05;color:var(--yl);margin-bottom:4px}
@media(max-width:1180px){.cal-wrap{grid-template-columns:1fr}.side{position:static;order:-1}.side .card{max-height:none}.results{max-height:230px;min-height:0;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}}
@media(max-width:900px){.cal .dow{display:none}.week{display:block}.day{display:none;margin-bottom:8px;min-height:0}.day.has{display:flex}.dn i{display:inline}.dn span{font-size:20px}
 .show{grid-template-columns:1fr}.slots{grid-template-columns:repeat(4,minmax(0,1fr));justify-items:start}.slot{max-width:48px}}
