@font-face{font-family:PublicPixel;src:url(/fonts/public-pixel.ttf)format("truetype");font-display:block}@font-face{font-family:PixelifySans;src:url(/fonts/pixelify-sans.ttf)format("truetype");font-display:swap}:root{--bg:#0e0b14;--panel:#1a1426;--panel-2:#221836;--ink:#e7d9ff;--ink-dim:#9c8bc4;--accent:#b07cff;--familiar:#b07cff;--gold:#ffd24a;--green:#6df5a0;--hp:#ff5d73;--edge:#34254d;--brass:#4d3a70;--stone:#14101d;--stone-lit:#1f1830;--pixel:"PublicPixel", "Press Start 2P", monospace;--mono:ui-monospace, "SF Mono", "Courier New", monospace}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:var(--mono);margin:0;font-size:13px;overflow:hidden}#app{grid-template-columns:1fr 380px;height:100vh;display:grid}#world{background:radial-gradient(ellipse at 50% 35%, var(--stone-lit) 0%, var(--bg) 78%);flex-direction:column;min-width:0;display:flex}#topbar{font-family:var(--pixel);border-bottom:1px solid var(--edge);letter-spacing:.14em;align-items:center;gap:14px;padding:11px 14px;font-size:11px;display:flex}#phase{color:var(--gold);font-weight:700}#round{color:var(--ink-dim)}#webmcp-status{color:var(--ink-dim);margin-left:auto;font-size:10px}#webmcp-status.ok{color:var(--green)}#webmcp-status.warn{color:var(--gold)}#stage-wrap{flex:1;justify-content:center;align-items:center;min-height:0;padding:20px;display:flex;overflow:hidden}#stage-fit{position:relative}#stage{image-rendering:pixelated;position:relative;box-shadow:inset 0 0 140px 60px #000000bf}.sigil{z-index:60;filter:drop-shadow(0 0 4px #000000e6);width:32px;height:32px;margin-left:-16px;position:absolute}.sigil svg{width:100%;height:100%}.prop{cursor:pointer;transition:filter .24s}.prop:hover{outline:1px solid var(--accent);outline-offset:2px}#panel{background:var(--panel);border-left:1px solid var(--edge);flex-direction:column;gap:10px;min-height:0;padding:14px;display:flex}#familiar-head{--portrait:54px;align-items:center;gap:12px;display:flex}#portrait-box{width:var(--portrait);height:var(--portrait);border:1px solid var(--brass);background-color:var(--bg);flex:none;place-items:center;display:grid;overflow:hidden}#portrait{image-rendering:pixelated}#panel h1{font-family:var(--pixel);letter-spacing:.06em;color:var(--familiar);text-transform:uppercase;margin:0 0 6px;font-size:10px}#energy-row{align-items:center;gap:8px;display:flex}#energy{gap:4px;display:flex}.orb{border:1px solid var(--brass);background:var(--panel-2);border-radius:50%;width:12px;height:12px}.orb--full{background:radial-gradient(circle at 35% 30%, #fff0bd, var(--gold) 62%, #a07714);box-shadow:0 0 10px #ffd24a99}#energy-label{color:var(--ink-dim);font-size:11px}#tabs{gap:4px;display:flex}.tab{font-family:var(--pixel);text-align:center;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--edge);background:var(--bg);color:#574a75;border-bottom:none;flex:1;padding:6px 3px;font-size:6px;line-height:1.6}.tab--known{color:var(--ink-dim);border-color:var(--brass)}.tab--active{background:var(--panel-2);color:var(--gold);border-color:var(--gold)}#tools{color:var(--ink-dim);border:1px solid var(--edge);background:var(--bg);word-break:break-word;padding:6px 8px;font-size:10px;line-height:1.7}#log{border:1px solid var(--edge);background:var(--bg);flex:1;min-height:0;padding:10px;line-height:1.6;overflow-y:auto}.line{white-space:pre-wrap;margin-bottom:8px}.line--system{font-family:var(--pixel);color:var(--gold);text-transform:uppercase;font-size:8px;line-height:1.8}.line--familiar{color:#cbaaff}.line--familiar:before{content:"❝ ";opacity:.6}.line--human{color:var(--ink)}.line--human:before{content:"› ";color:var(--ink-dim)}.line--tool{color:var(--ink-dim);font-size:11px}.tag{font-family:var(--pixel);border:1px solid var(--brass);color:var(--gold);vertical-align:middle;border-radius:4px;margin-right:6px;padding:3px 5px;font-size:6px;display:inline-block}#controls{gap:8px;display:flex}#say{background:var(--bg);border:1px solid var(--edge);min-width:0;color:var(--ink);font:inherit;flex:1;padding:8px}#say:focus{border-color:var(--accent);outline:none}button{background:var(--panel-2);border:1px solid var(--edge);color:var(--ink);font:inherit;cursor:pointer;border-radius:9px;padding:9px 13px;transition:background .14s,border-color .14s}button:hover:not(:disabled){border-color:var(--accent);background:#33265180}button:disabled{opacity:.4;cursor:default}.door--open{filter:brightness(1.5)drop-shadow(0 0 16px #ffd24abf);animation:1.8s ease-in-out infinite doorPulse}@keyframes doorPulse{0%,to{filter:brightness(1.4)drop-shadow(0 0 10px #ffd24a99)}50%{filter:brightness(1.75)drop-shadow(0 0 24px #ffd24af2)}}#admin{font-family:var(--mono);z-index:999;border:1px solid var(--accent);background:#0b0812;width:340px;padding:12px;font-size:11px;position:fixed;bottom:16px;left:16px;box-shadow:0 8px 32px #000000b3}#admin header{font-family:var(--pixel);color:var(--gold);letter-spacing:.14em;justify-content:space-between;align-items:baseline;margin-bottom:10px;font-size:8px;display:flex}#admin header span{color:var(--ink-dim);letter-spacing:.06em;font-size:9px}.admin-row{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}.admin-row button{flex:auto;padding:5px 7px;font-size:10px}.admin-row button.on{background:var(--accent);color:#170e26;border-color:var(--accent)}#admin pre{background:var(--panel);border:1px solid var(--edge);color:var(--ink-dim);font:inherit;white-space:pre-wrap;margin:0;padding:8px;line-height:1.6}#hazard{color:var(--ink-dim)}#hazard.near{color:var(--hp);font-weight:700}#hazard.bound{color:var(--green)}.wight{filter:drop-shadow(0 0 9px #6df5a066)}.wight--bound{filter:grayscale()brightness(.75)drop-shadow(0 0 12px #6df5a0d9)}#topbar{white-space:nowrap;overflow:hidden}#webmcp-status{text-overflow:ellipsis;overflow:hidden}#title{z-index:500;background:radial-gradient(circle at 50% -10%, #241836, var(--bg));padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}.title-inner{flex-direction:column;align-items:center;gap:14px;margin:auto;display:flex}#title h1{font-family:var(--pixel);letter-spacing:.04em;color:var(--accent);text-shadow:0 0 18px #b07cff99,0 0 46px #b07cff47;margin:0;font-size:clamp(18px,3.2vw,34px);line-height:1.5}.title-tag{text-align:center;color:var(--ink-dim);max-width:62ch;line-height:1.9}.title-cards{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:6px;display:flex}.card{background:var(--panel);border:1px solid var(--edge);width:172px;color:var(--ink);font:inherit;text-align:center;cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;gap:5px;padding:12px 11px;transition:border-color .16s,background .16s,transform .16s;display:flex}.card:hover{border-color:#5b4788;transform:translateY(-2px)}.card--on{border-color:var(--accent);background:var(--panel-2);box-shadow:0 0 0 2px var(--accent) inset, 0 0 24px #b07cff59}.card-art{background:#07050c;border-radius:6px;place-items:center;width:84px;height:84px;display:grid;overflow:hidden}.card-name{font-family:var(--pixel);color:var(--accent);font-size:9px;line-height:1.6}.card-epithet{color:var(--ink-dim);letter-spacing:.12em;text-transform:uppercase;font-size:10px}.card-stats{color:var(--green);font-size:11px}.card-tags{color:#8a79b5;font-size:10px}.card-affinity{color:var(--ink-dim);font-size:10.5px;line-height:1.55}.title-start{letter-spacing:.1em;font-size:13px;font-family:var(--pixel);background:var(--accent);color:#170e26;cursor:pointer;border:none;border-radius:8px;margin-top:6px;padding:11px 26px;font-size:10px}.title-start:hover{background:#c79bff}.title-hint{text-align:center;color:#7b6ca3;font-size:11px;line-height:1.9}.title-hint b{color:var(--ink-dim)}#title.ending h1{color:var(--gold);text-shadow:0 0 18px #ffd24a99,0 0 46px #ffd24a47}.ending-credit{color:var(--gold);letter-spacing:.22em;margin-top:14px}#actions{color:var(--green)}#actions.spent{color:var(--hp)}#tool-banner{border:1px solid var(--accent);pointer-events:none;opacity:0;z-index:300;background:#0e0b14f0;border-radius:10px;flex-direction:column;align-items:center;gap:5px;padding:10px 18px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 0 26px #b07cff66}#tool-banner.show{animation:2s forwards toolBanner}.tool-banner-label{font-family:var(--pixel);letter-spacing:.1em;color:var(--ink-dim);text-transform:uppercase;font-size:6px}.tool-banner-name{font-family:var(--pixel);color:var(--accent);text-shadow:0 0 12px #b07cffb3;font-size:10px}@keyframes toolBanner{0%{opacity:0;transform:translate(-50%,-8px)}12%{opacity:1;transform:translate(-50%)}78%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-6px)}}#progress{color:var(--ink-dim)}.player--hurt{filter:drop-shadow(0 0 10px #ff5d73e6);animation:.42s steps(2,end) 2 playerShake}@keyframes playerShake{0%,to{transform:translate(0)}50%{transform:translate(-5px)}}.shock--hit,.shock--vent{animation:.42s ease-out 2 roomShock}.shock--hit:after,.shock--vent:after{content:"";pointer-events:none;z-index:400;animation:.9s ease-out forwards flash;position:absolute;inset:0}.shock--hit:after{background:radial-gradient(#0000 45%,#ff5d736b)}.shock--vent:after{background:radial-gradient(#0000 40%,#ffd24a66)}#stage-wrap{position:relative}@keyframes roomShock{0%,to{transform:translate(0)}25%{transform:translate(-4px,2px)}75%{transform:translate(4px,-2px)}}@keyframes flash{0%{opacity:.95}to{opacity:0}}.score-sheet{background:var(--panel);border:1px solid var(--edge);border-radius:10px;width:min(320px,90vw);margin-top:4px;padding:14px 16px}.score-row{color:var(--ink-dim);justify-content:space-between;padding:5px 0;font-size:12px;display:flex}.score-row b{color:var(--ink)}.score-row--total{border-top:1px solid var(--edge);margin-top:6px;padding-top:10px}.score-row--total b{color:var(--gold);font-size:15px}.score-rank{text-align:center;font-family:var(--pixel);color:var(--gold);text-shadow:0 0 14px #ffd24a8c;margin-top:10px;font-size:11px}.light{pointer-events:none;mix-blend-mode:screen;z-index:5;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.prop--lit{animation:2.4s ease-in-out infinite propPulse}@keyframes propPulse{0%,to{filter:brightness(1.2)saturate(1.25)drop-shadow(0 0 12px #ffffff73)}50%{filter:brightness(1.45)saturate(1.45)drop-shadow(0 0 22px #ffffffb3)}}.ritual{z-index:4;pointer-events:none;mix-blend-mode:screen;opacity:.55;width:340px;height:340px;margin:-170px 0 0 -170px;animation:44s linear infinite ritualSpin;position:absolute}.ritual svg{filter:drop-shadow(0 0 10px #b07cffcc);width:100%;height:100%}.ritual svg polygon:last-of-type{transform-origin:100px 100px;animation:31s linear infinite reverse ritualSpin}@keyframes ritualSpin{to{transform:rotate(360deg)}}.motes{z-index:6;pointer-events:none;width:0;height:0;position:absolute}.motes i{opacity:0;background:#d8b8ff;border-radius:50%;width:3px;height:3px;animation-name:moteRise;animation-timing-function:ease-out;animation-iteration-count:infinite;position:absolute;bottom:0;box-shadow:0 0 7px 2px #b07cffcc}@keyframes moteRise{0%{opacity:0;transform:translateY(0)scale(.6)}14%{opacity:.95}to{opacity:0;transform:translateY(-190px)scale(1.15)}}.pipe{transform-origin:0;opacity:.28;z-index:3;pointer-events:none;border-radius:3px;height:5px;margin-top:-2px;transition:opacity .22s;position:absolute}.pipe--live{opacity:.9;background-image:repeating-linear-gradient(90deg,#ffffff8c 0 6px,#0000 6px 18px);background-size:24px 100%;animation:1.1s linear infinite pipeFlow;box-shadow:0 0 12px}@keyframes pipeFlow{to{background-position:24px 0}}.steam{z-index:75;pointer-events:none;width:0;height:0;position:absolute}.steam i{filter:blur(1px);opacity:0;background:#e2ecff80;border-radius:50%;width:9px;height:9px;animation:1.9s ease-out infinite steamRise;position:absolute}@keyframes steamRise{0%{opacity:0;transform:translateY(0)scale(.5)}20%{opacity:.75}to{opacity:0;transform:translateY(-70px)scale(2.1)}}.score-note{border-bottom:1px solid #241c38;padding:7px 0}.score-note:last-of-type{border-bottom:none}.score-note-head{color:var(--ink);justify-content:space-between;align-items:baseline;gap:10px;font-size:12px;display:flex}.score-note-head b.up{color:var(--green)}.score-note-head b.down{color:var(--hp)}.score-note-head b.flat{color:#574a75}.score-note-detail{color:var(--ink-dim);margin-top:2px;font-size:10.5px;line-height:1.5}
