:root{--bg: #0b0d0a;--panel: #12150f;--panel-edge: #232819;--ink: #e8ecdf;--ink-dim: #8a9179;--ok: #6fe042;--warn: #ffb020;--busy: #3fd6e0;--alert: #ff4d3d;--mono: "IBM Plex Mono", ui-monospace, monospace;--display: "Big Shoulders", "Arial Narrow", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:radial-gradient(120% 80% at 50% 0%,#141810 0%,var(--bg) 60%),var(--bg);color:var(--ink);font-family:var(--mono);font-size:14px;-webkit-font-smoothing:antialiased;overscroll-behavior:none}#root{max-width:560px;margin:0 auto;padding:12px 12px calc(20px + env(safe-area-inset-bottom))}.masthead{display:flex;align-items:baseline;justify-content:space-between;padding:6px 2px 10px}.masthead h1{font-family:var(--display);font-weight:800;font-size:20px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}.masthead h1 span{color:var(--ink-dim);font-weight:500}.masthead .who{color:var(--ink-dim);font-size:11px;letter-spacing:.06em;background:none;border:none;font-family:var(--mono);cursor:pointer}.masthead .who:active{color:var(--alert)}.hero{position:relative;border:1px solid var(--panel-edge);background:#000;overflow:hidden;cursor:pointer;aspect-ratio:16 / 9}.hero img{width:100%;height:100%;object-fit:cover;display:block}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(transparent 60%,#0000008c)}.hero .stamp{position:absolute;left:8px;bottom:6px;z-index:2;font-size:11px;letter-spacing:.08em;color:#e8ecdfd9;text-shadow:0 1px 2px #000}.hero .cam{position:absolute;right:8px;top:6px;z-index:2;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#e8ecdf99;text-shadow:0 1px 2px #000}.hero .cam:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--alert);margin-right:6px;animation:blink 2.4s infinite}@keyframes blink{0%,90%{opacity:1}95%{opacity:.2}}.status{text-align:center;padding:14px 0 4px}.status .word{font-family:var(--display);font-weight:800;font-size:clamp(64px,22vw,116px);line-height:.9;letter-spacing:.02em;text-transform:uppercase}.status .word.s-closed{color:var(--ok)}.status .word.s-open,.status .word.s-partially_open{color:var(--warn)}.status .word.s-opening,.status .word.s-closing{color:var(--busy);animation:pulse 1.2s ease-in-out infinite}.status .word.s-unknown{color:var(--alert)}@keyframes pulse{50%{opacity:.45}}.status .meta{margin-top:8px;color:var(--ink-dim);font-size:12px;letter-spacing:.04em}.status .meta b{color:var(--ink);font-weight:600}.narrative{margin-top:6px;text-align:center;color:var(--ink);font-size:13px;min-height:2.4em;padding:0 8px}.controls{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.hold{position:relative;overflow:hidden;border:1px solid var(--panel-edge);background:var(--panel);color:var(--ink);font-family:var(--display);font-weight:800;font-size:30px;letter-spacing:.1em;text-transform:uppercase;padding:26px 0 22px;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;transition:opacity .2s}.hold small{display:block;font-family:var(--mono);font-weight:400;font-size:10px;letter-spacing:.18em;color:var(--ink-dim);margin-top:6px}.hold:disabled{opacity:.35;cursor:not-allowed}.hold .fill{position:absolute;top:0;right:0;bottom:0;left:0;transform:translateY(100%);background:repeating-linear-gradient(-45deg,var(--stripe-a) 0 14px,var(--stripe-b) 14px 28px);opacity:.9;z-index:0;transition:transform .15s linear}.hold.holding .fill{transition:transform 2s linear;transform:translateY(0)}.hold>span{position:relative;z-index:1;text-shadow:0 1px 3px rgba(0,0,0,.7)}.hold.open{--stripe-a: #3a2f10;--stripe-b: #574413}.hold.close{--stripe-a: #16330f;--stripe-b: #1f4a15}.hold.open:not(:disabled){border-color:#6b5417}.hold.close:not(:disabled){border-color:#2c5a1e}.hold.fired{animation:fired .5s}@keyframes fired{0%{filter:brightness(2.2)}to{filter:none}}.hint{grid-column:1 / -1;text-align:center;color:var(--ink-dim);font-size:11px;letter-spacing:.12em;text-transform:uppercase}.hint.err{color:var(--alert)}.feed{margin-top:22px;border-top:1px dashed var(--panel-edge);padding-top:10px}.feed h2{font-family:var(--display);font-size:14px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-dim);margin-bottom:8px}.feed ul{list-style:none}.feed li{display:flex;gap:10px;align-items:baseline;padding:5px 0;border-bottom:1px solid rgba(35,40,25,.5);font-size:12px}.feed .t{color:var(--ink-dim);white-space:nowrap;font-size:11px}.feed .what{flex:1}.feed .k-transition b.to-open,.feed .k-transition b.to-partially_open{color:var(--warn)}.feed .k-transition b.to-closed{color:var(--ok)}.feed .k-transition b.to-opening,.feed .k-transition b.to-closing{color:var(--busy)}.feed .k-transition b.to-unknown{color:var(--alert)}.feed .k-command{color:var(--busy)}.feed .k-command_confirmed{color:var(--ok)}.feed .k-command_failed{color:var(--alert);font-weight:600}.foot{margin-top:18px;display:flex;justify-content:space-between;align-items:center;color:var(--ink-dim);font-size:11px}.foot button{background:none;border:1px solid var(--panel-edge);color:var(--ink-dim);font-family:var(--mono);font-size:11px;letter-spacing:.08em;padding:6px 10px;cursor:pointer}.foot button:active{color:var(--ink)}.foot .live{color:var(--ok)}.foot .dead{color:var(--alert)}.login{min-height:82vh;display:flex;flex-direction:column;justify-content:center;gap:14px;max-width:320px;margin:0 auto}.login h1{font-family:var(--display);font-weight:800;font-size:44px;letter-spacing:.05em;text-transform:uppercase;line-height:.95}.login h1 em{font-style:normal;color:var(--ok)}.login p{color:var(--ink-dim);font-size:12px;letter-spacing:.05em}.login input{background:var(--panel);border:1px solid var(--panel-edge);color:var(--ink);font-family:var(--mono);font-size:16px;padding:14px 12px;letter-spacing:.1em;width:100%}.login input:focus{outline:1px solid var(--ok)}.login button{background:var(--ok);color:#0b0d0a;border:none;font-family:var(--display);font-weight:800;font-size:22px;letter-spacing:.12em;text-transform:uppercase;padding:14px;cursor:pointer}.login button:disabled{opacity:.4}.login .err{color:var(--alert);min-height:1.2em}
