:root{
  --glass:rgba(16,18,26,.66);
  --line:rgba(255,255,255,.1);
  --text:#eef1f6;
  --muted:#9aa2b4;
  --accent:#8c86ff;
  --good:#7fe0b0;
  --bad:#ff8a8a;
  --f-body:"Geist",ui-sans-serif,system-ui,sans-serif;
  --f-mono:"Geist Mono",ui-monospace,Menlo,monospace;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;position:fixed;inset:0;overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%;background:#171a2c;color:var(--text);font-family:var(--f-body);font-size:14px;-webkit-font-smoothing:antialiased}
canvas{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:manipulation}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid #fff;outline-offset:2px}
input,textarea,select{font:inherit;color:var(--text);background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:12px;padding:8px 11px;min-width:0}
textarea{resize:vertical;width:100%;line-height:1.45}
select{appearance:none;padding-right:26px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 13px) 55%,calc(100% - 9px) 55%;background-size:4px 4px;background-repeat:no-repeat}
select option{background:#1d2030}
[hidden]{display:none!important}
.glass{background:var(--glass);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);border:1px solid var(--line);box-shadow:0 8px 30px rgba(0,0,0,.3)}
.tab{font-variant-numeric:tabular-nums}
.m{color:var(--muted)}
.row{display:flex;gap:8px;align-items:center;justify-content:space-between}
.row>input{flex:1}
.col{display:flex;flex-direction:column;gap:8px}
.btn{padding:8px 14px;border-radius:999px;background:#fff;color:#0d0f1a;font-weight:600;font-size:12.5px;white-space:nowrap}
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line);font-weight:500}
.btn.small{padding:5px 10px;font-size:12px}
.btn.danger{color:var(--bad)}
.btn[disabled]{opacity:.4;cursor:not-allowed}
.link{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.tog{padding:4px 11px;border-radius:999px;border:1px solid var(--line);font-size:12px}
.tog[aria-pressed="true"]{background:rgba(255,255,255,.14)}
code{font-family:var(--f-mono);font-size:.92em;background:rgba(255,255,255,.08);padding:1px 5px;border-radius:5px}

#load{position:fixed;inset:0;display:grid;place-items:center;color:var(--muted);font-size:13px;z-index:30;background:#171a2c;transition:opacity .5s}
#hud{position:fixed;top:12px;left:12px;z-index:5;display:flex;align-items:center;gap:10px;padding:6px 12px;border-radius:999px;font-size:12px;max-width:calc(100% - 24px)}
#hud b{font-weight:600}
#hud .nm{font-weight:600;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}
.live{font-size:10.5px;font-weight:600;letter-spacing:.06em;color:#fff;background:#e5484d;border-radius:999px;padding:2px 8px}
.live.paused{background:#4a4f66}
.energy{width:44px;height:6px;border-radius:999px;background:rgba(255,255,255,.12);overflow:hidden;flex:none}
.energy i{display:block;height:100%;width:60%;background:var(--good);border-radius:999px;transition:width .6s}
.energy i.low{background:#f2c14e}

#caption{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:5;padding:8px 16px;border-radius:999px;font-size:13px;max-width:min(560px,calc(100% - 300px));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#caption span{color:var(--accent);font-weight:600}
#caption em{font-style:normal}
#bubble{position:fixed;z-index:5;left:0;top:0;width:max-content;max-width:min(300px,calc(100vw - 24px));padding:9px 13px;border-radius:16px 16px 16px 4px;font-size:13.5px;line-height:1.4;opacity:0;transform:translate(0, -100%) scale(.96);transition:opacity .35s, transform .35s;pointer-events:none}
#bubble.on{opacity:1;transform:translate(0, -100%) scale(1)}
#bubble small{display:block;color:var(--muted);font-size:11px;margin-bottom:2px}

#ticker{position:fixed;left:12px;bottom:16px;z-index:4;width:min(300px,calc(50% - 40px));display:flex;flex-direction:column;gap:3px;text-align:left;font-size:12px;line-height:1.35;mask-image:linear-gradient(to bottom,transparent,#000 40%)}
#ticker div{background:rgba(16,18,26,.5);padding:3px 9px;border-radius:10px;width:fit-content;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#ticker b{color:var(--accent);font-weight:600}
#ticker .ev{color:var(--muted)}

#dock{position:fixed;right:12px;bottom:12px;z-index:6;display:flex;gap:2px;padding:4px;border-radius:999px}
#dock button{position:relative;display:flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;font-size:12.5px;color:var(--muted)}
#dock button:hover,#dock button[aria-expanded="true"]{background:rgba(255,255,255,.1);color:var(--text)}
#dock svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
#dock b{position:absolute;top:2px;right:4px;min-width:16px;height:16px;border-radius:999px;background:var(--accent);color:#0b0c18;font-size:10px;display:grid;place-items:center;padding:0 4px}

.sheet{position:fixed;right:12px;top:12px;bottom:64px;z-index:7;width:min(360px,calc(100% - 24px));border-radius:20px;padding:14px;display:flex;flex-direction:column;gap:10px}
.sheet header,#admin header{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sheet h2,#admin h2{margin:0;font-size:14px;font-weight:600}
.sheet h3{margin:6px 0 0;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--muted)}
.x{width:28px;height:28px;border-radius:50%;font-size:18px;color:var(--muted);flex:none}
.x:hover{background:rgba(255,255,255,.1);color:var(--text)}
.note{margin:0;color:var(--muted);font-size:12px;line-height:1.5}
.note b{color:var(--text);font-weight:500}
.list{display:flex;flex-direction:column;gap:6px;overflow:auto;min-height:0}
#chatList{flex:1;gap:4px;padding-right:4px}
.msg{font-size:13px;line-height:1.45;word-wrap:break-word}
.msg b{font-weight:600;color:#c7c4ff}
.msg.ev{color:var(--muted);font-size:12px;padding:4px 9px;border-left:2px solid var(--accent);background:rgba(140,134,255,.07);border-radius:0 8px 8px 0}
.msg.ev.think{color:var(--text);font-style:italic}
.msg.letter{background:rgba(255,255,255,.05);border-radius:10px;padding:7px 9px}
.msg .reply{display:block;margin-top:5px;padding-top:5px;border-top:1px solid var(--line);color:var(--text)}
.msg .reply::before{content:"↳ ";color:var(--accent)}
.compose{display:flex;gap:6px}
.compose input{flex:1;border-radius:999px}
.as{margin:0;font-size:11.5px;color:var(--muted)}
.card-i{border:1px solid var(--line);border-radius:14px;padding:10px 11px;display:flex;flex-direction:column;gap:7px;background:rgba(255,255,255,.03)}
.card-i .t{font-weight:600;font-size:13.5px}
.card-i .r{color:var(--muted);font-size:12px;line-height:1.45}
.card-i .r q{font-style:italic}
.pill{display:inline-flex;align-items:center;gap:5px;flex:none;align-self:flex-start;white-space:nowrap;font-size:11px;font-weight:600;letter-spacing:.01em;padding:3px 9px 3px 8px;border-radius:999px;background:rgba(255,255,255,.08);color:var(--muted);line-height:1.3}
.pill::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}
.pill.funding{background:rgba(140,134,255,.2);color:#c7c4ff}
.pill.pending{background:rgba(242,193,78,.16);color:#f2c14e}
.pill.funded{background:rgba(127,224,176,.16);color:var(--good)}
.pill.declined{background:rgba(255,138,138,.12);color:var(--bad)}
.bar{height:6px;border-radius:999px;background:rgba(255,255,255,.1);overflow:hidden}
.bar i{display:block;height:100%;background:var(--accent)}
.amts{display:flex;gap:5px;flex-wrap:wrap}
.trait{display:inline-block;padding:3px 9px;border-radius:999px;border:1px solid var(--line);font-size:12px;margin:0 4px 4px 0}
.trait.rolled{border-style:dashed;color:var(--muted)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;font-size:12.5px}
.kv dt{color:var(--muted)}
.kv dd{margin:0}
.diary{font-size:13px;line-height:1.55;border-left:2px solid var(--line);padding-left:10px}
.diary small{display:block;color:var(--muted);font-size:11px}

#tip{position:fixed;z-index:8;pointer-events:none;padding:7px 11px;border-radius:14px;font-size:12px;transform:translate(14px,14px);display:none;max-width:240px}
#tip b{display:block;font-weight:600;margin-bottom:3px}
#tip span{display:inline-block;font-size:11px;font-weight:500;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.1)}
#tip span.gift{background:var(--accent);color:#0b0c18}
#look{position:fixed;z-index:8;left:50%;top:50%;transform:translate(-50%,-50%);width:min(300px,calc(100% - 32px));border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px}
#look b{font-size:15px;font-weight:600}
#look p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.5}
#look .sw{display:flex;gap:6px}
#look .art{width:100%;aspect-ratio:4/3;border-radius:10px;border:6px solid #2e3550;background:#f3efe6;display:block}
#look .sw i{width:22px;height:22px;border-radius:6px}

#placeBar{position:fixed;left:50%;top:14px;transform:translateX(-50%);z-index:12;border-radius:20px;padding:12px 14px;display:none;flex-direction:column;gap:8px;width:min(400px,calc(100% - 24px));font-size:13px}
#placeBar.on{display:flex}
.pb-top{display:flex;justify-content:space-between;align-items:center}
.pb-top b{font-weight:600}
#pbTime{font-family:var(--f-mono);font-size:12px;color:var(--muted)}
#pbHint{color:var(--muted);font-size:12px}
#pbHint.bad{color:var(--bad)}
#pbHint.good{color:var(--good)}
.pb-btns{display:flex;gap:6px}.pb-btns .btn{flex:1}
body.placing #dock,body.placing .sheet,body.placing #ticker,body.placing #bubble{display:none!important}

.modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;background:rgba(10,11,20,.45);padding:16px}
.modal .card{width:min(420px,100%);border-radius:22px;padding:22px;display:flex;flex-direction:column;gap:12px}
.modal h1{margin:0;font-size:20px;font-weight:600;letter-spacing:-.01em}
.modal p{margin:0;color:var(--muted);line-height:1.55;font-size:13.5px}
.modal ul{margin:0;padding-left:18px;line-height:1.7;font-size:13.5px;color:var(--muted)}
.modal ul b{color:var(--text);font-weight:500}
.modal label{font-size:12px;color:var(--muted)}
.modal input{border-radius:999px}

#admin{position:fixed;left:12px;top:56px;bottom:12px;z-index:9;width:min(370px,calc(100% - 24px));border-radius:20px;padding:12px;display:flex;flex-direction:column;gap:10px}
#admin header{flex-wrap:wrap}
.tabs{display:flex;gap:2px;flex-wrap:wrap;order:3;width:100%}
.tabs button{position:relative;padding:5px 10px;border-radius:999px;font-size:12px;color:var(--muted)}
.tabs button[aria-selected="true"]{background:rgba(255,255,255,.12);color:var(--text)}
.tabs b{margin-left:5px;background:var(--accent);color:#0b0c18;border-radius:999px;font-size:10px;padding:0 5px}
.tabp{overflow:auto;min-height:0;display:flex;flex-direction:column;gap:10px;padding-right:2px}
.banner{background:rgba(242,193,78,.12);border:1px solid rgba(242,193,78,.35);color:#f6d68a;border-radius:12px;padding:8px 10px;font-size:12px;line-height:1.45}
.grp{display:flex;flex-direction:column;gap:7px;border-top:1px solid var(--line);padding-top:10px}
.grp:first-child{border-top:0;padding-top:0}
.grp h4{margin:0;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chips button{padding:5px 10px;border-radius:999px;font-size:12px;color:var(--muted);border:1px solid var(--line)}
.chips button[aria-pressed="true"],.chips button:hover{background:rgba(255,255,255,.12);color:var(--text)}
.chips .lbl{width:100%;font-size:10.5px;color:var(--muted);margin-top:3px}
.stat{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.stat div{background:rgba(255,255,255,.04);border-radius:10px;padding:7px 9px;font-size:12px}
.stat span{display:block;color:var(--muted);font-size:10.5px}
.out{font-family:var(--f-mono);font-size:11px;white-space:pre-wrap;word-break:break-word;background:rgba(0,0,0,.25);border-radius:10px;padding:8px;max-height:220px;overflow:auto;color:#cfd3e0}
.turn{font-size:12px;border:1px solid var(--line);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;gap:4px}
.turn .err{color:var(--bad)}
.turn summary{cursor:pointer;color:var(--muted)}
#adOpen{position:fixed;left:12px;top:56px;z-index:9;padding:7px 13px;border-radius:999px;font-size:12.5px}
#editBar{position:fixed;left:50%;bottom:62px;transform:translateX(-50%);z-index:9;display:none;align-items:center;gap:8px;padding:5px 6px;border-radius:999px;font-size:12.5px}
#editBar.on{display:flex}
#editBar>button:not(.tog){width:30px;height:30px;border-radius:50%;font-size:16px}
#editBar>button:hover{background:rgba(255,255,255,.1)}
#toast{position:fixed;left:50%;top:64px;transform:translate(-50%,-8px);z-index:25;padding:8px 14px;border-radius:999px;background:#fff;color:#0d0f1a;font-size:12.5px;font-weight:500;opacity:0;pointer-events:none;transition:opacity .25s, transform .25s;max-width:calc(100% - 32px)}
#toast.on{opacity:1;transform:translate(-50%,0)}
#toast.bad{background:#ffd6d6}
body.placing #toast{top:140px}

@media (max-width:760px){
  #caption{bottom:62px;max-width:calc(100% - 24px);font-size:12px}
  #ticker{bottom:104px;width:calc(100% - 24px)}
  #ticker div:nth-child(-n+2){display:none}
  #dock{left:12px;right:12px;justify-content:space-around}
  #dock button span{display:none}
  .sheet{top:auto;height:62vh;bottom:64px;left:12px;right:12px;width:auto}
  #admin{top:auto;height:70vh;bottom:12px;z-index:13}
  #editBar{bottom:104px}
  #hud .m{display:none}
  #bubble{font-size:12.5px;max-width:240px}
  input,textarea,select{font-size:16px}   /* stops iOS zooming the page in when a field is tapped */
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

#workView{position:fixed;inset:0;z-index:60;background:rgba(10,10,24,.86);display:flex;flex-direction:column;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom))}
#workView .wv-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#fff;padding:4px 4px 10px;font-size:14px}
#workView .x{background:rgba(255,255,255,.12);border:0;color:#fff;width:32px;height:32px;border-radius:50%;font-size:20px;cursor:pointer}
#workFrame{flex:1;width:100%;border:0;border-radius:14px;background:#fff}
.pclog{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted);margin-top:8px}
.pclog div{border-left:2px solid rgba(140,134,255,.5);padding-left:8px;word-break:break-word}
.pclog b{color:#c7c4ff;text-transform:capitalize;margin-right:4px}
.pclog small{display:block;opacity:.75;margin-top:2px}
.btn.sm{padding:4px 12px;font-size:12px;flex:none}
.pill.pending{font-size:0;gap:0}.pill.pending::before{margin-right:5px}.pill.pending::after{content:'In review';font-size:11px}
.pc-sec{display:flex;flex-direction:column;gap:6px}
/* ticker: let lines wrap (up to 3) instead of cutting off */
#ticker{width:min(380px,calc(60% - 40px));mask-image:linear-gradient(to bottom,transparent,#000 18%)}
#ticker div{white-space:normal;text-overflow:clip;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3}
@media (max-width:760px){#ticker{width:calc(100% - 24px)}}
