:root{--bg:#0f1218;--surface:#181d26;--surface-2:#212836;--border:#2a3242;--text:#e6e9ef;--muted:#8b95a7;--accent:#6aa9ff;--up:#3ecf8e;--down:#f06a6a;--starting:#f2c14e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}a{color:var(--accent);text-decoration:none}h1,h2,h3{margin:0 0 .75rem;font-weight:600}h2{font-size:1.1rem}h3{color:var(--muted);font-size:.95rem}main{max-width:1100px;margin:0 auto;padding:1.5rem}section{margin-bottom:2rem}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.8rem}.error{color:var(--down)}.topbar{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:.75rem 1.5rem;display:flex}.brand{color:var(--text);font-weight:700}.topbar nav{align-items:center;gap:1.25rem;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem 1.25rem}.hero h1{margin-bottom:.25rem;font-size:1.8rem}.hero p{margin:0}.hero p:first-letter,.frame-date:first-letter{text-transform:uppercase}.tiles{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.75rem;display:grid}.tile{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:12px;align-items:center;gap:.85rem;padding:.9rem 1rem;transition:transform .12s,border-color .12s;display:flex}.tile:hover{border-color:var(--accent);transform:translateY(-2px)}.tile-icon{font-size:1.8rem}.tile-body{flex-direction:column;flex:1;min-width:0;display:flex}.tile-body .muted{white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;overflow:hidden}.dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:9px;height:9px;display:inline-block}.dot.up{background:var(--up);box-shadow:0 0 6px var(--up)}.dot.down{background:var(--down)}.dot.starting{background:var(--starting)}.photo{max-width:520px;padding:0;display:block;position:relative;overflow:hidden}.photo img{object-fit:cover;width:100%;max-height:420px;display:block}.photo.fading img{opacity:.5;transition:opacity .2s}.souvenir{max-width:520px}.souvenir .section-header h2{flex:1}.memories{scroll-snap-type:x mandatory;gap:.75rem;padding-bottom:.5rem;display:flex;overflow-x:auto}.memory{border:1px solid var(--border);scroll-snap-align:start;color:#fff;border-radius:12px;flex:0 0 170px;height:220px;transition:transform .12s;position:relative;overflow:hidden}.memory:hover{transform:translateY(-2px)}.memory img{object-fit:cover;width:100%;height:100%;display:block}.memory-caption{background:linear-gradient(#0000,#000000bf);flex-direction:column;padding:2rem .75rem .6rem;font-size:.8rem;display:flex;position:absolute;inset:auto 0 0}.memory-caption strong{font-size:.95rem}.refresh-icon{display:inline-block}.refresh.loading .refresh-icon{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.photo-caption{color:#fff;background:linear-gradient(#0000,#000000b3);padding:1.5rem 1rem .6rem;font-size:.85rem;position:absolute;bottom:0;left:0;right:0}.host{margin-bottom:1.25rem}.host-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.host-header h2{align-items:center;gap:.5rem;display:flex}.project{margin-top:1rem}table{border-collapse:collapse;width:100%}td{border-top:1px solid var(--border);vertical-align:middle;padding:.45rem .5rem}td:first-child{width:20px}.actions{flex-wrap:wrap;justify-content:flex-end;gap:.4rem;display:flex}details{margin-top:1rem}button,.button{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:.5rem 1rem}button:hover,.button:hover{border-color:var(--accent)}button.small,.button.small{padding:.2rem .6rem;font-size:.8rem}button.stop:hover{border-color:var(--down)}button.start:hover{border-color:var(--up)}button.primary{background:var(--accent);color:#0b1020;border:none;font-weight:600}button.link{color:var(--muted);background:0 0;border:none;padding:0}button.link:hover{color:var(--text)}.login{flex-direction:column;gap:1rem;max-width:360px;margin:4rem auto;display:flex}.login .oidc{text-align:center}.login details .form{margin-top:.9rem}.login label{color:var(--muted);flex-direction:column;gap:.3rem;font-size:.9rem;display:flex}input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.55rem .75rem}input:focus{outline:2px solid var(--accent);border-color:#0000}.logs{border:1px solid var(--border);white-space:pre-wrap;word-break:break-all;background:#0a0c10;border-radius:12px;max-height:75vh;padding:1rem;font:12px/1.45 ui-monospace,Menlo,monospace;overflow:auto}.success{color:var(--up)}.hint{text-transform:none;margin-top:.75rem}img.tile-icon{object-fit:contain;width:32px;height:32px}td img.tile-icon{width:24px;height:24px}td .tile-icon{font-size:1.3rem}h3 img.tile-icon{vertical-align:-4px;width:20px;height:20px}.tile-add{color:var(--muted);border-style:dashed}.tile-add .tile-icon{text-align:center;width:32px;font-size:1.4rem}.section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.section-header h2,.section-header h3{margin:0}.widgets{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1rem;margin-bottom:2rem;display:grid}.widgets .card>.actions{justify-content:flex-start;margin-top:.75rem}.items{margin:0;padding:0;list-style:none}.items li{border-top:1px solid var(--border);padding:.35rem 0}.items li:first-child{border-top:none}.form{flex-direction:column;gap:.9rem;display:flex}.form label{flex-direction:column;gap:.3rem;font-size:.9rem;display:flex}.form small{font-size:.78rem}.form .actions{justify-content:flex-end}.tile-form{max-width:620px}.preview{color:var(--muted);align-items:center;gap:.6rem;font-size:.85rem;display:flex}select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.55rem .75rem}code{word-break:break-all;font-size:.75rem}.project-header{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.project-header h3{flex:1;margin:0}.project-header .error{font-size:.8rem}.badge{white-space:nowrap;border:1px solid;border-radius:999px;padding:.05rem .45rem;font-size:.72rem}.warning{color:var(--starting)}.frame{z-index:100;cursor:none;-webkit-user-select:none;user-select:none;background:#000;position:fixed;inset:0;overflow:hidden}.frame.show-controls{cursor:default}.frame-slide{animation-name:frame-zoom,frame-fade;animation-timing-function:linear,ease;animation-fill-mode:forwards;position:absolute;inset:0}.frame-slide img{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.frame-backdrop{filter:blur(30px)brightness(.45);background-position:50%;background-size:cover;position:absolute;inset:-40px}@keyframes frame-fade{0%{opacity:0}to{opacity:1}}@keyframes frame-zoom{0%{transform:scale(1)}to{transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){.frame-slide{animation-name:none,frame-fade}}.frame-clock,.frame-caption,.frame-agenda{color:#fff;text-shadow:0 1px 8px #000c;position:absolute}.frame-clock{bottom:3vh;left:3vw}.frame-time{font-variant-numeric:tabular-nums;font-size:clamp(3rem,9vw,7rem);font-weight:200;line-height:1}.frame-date{opacity:.9;font-size:clamp(1rem,2.4vw,1.8rem)}.frame-caption{text-align:right;flex-direction:column;font-size:clamp(.9rem,1.8vw,1.3rem);display:flex;bottom:3vh;right:3vw}.frame-caption strong{font-size:1.3em}.frame-agenda{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#00000059;border-radius:14px;max-width:40vw;margin:0;padding:.8rem 1.1rem;font-size:clamp(.85rem,1.6vw,1.15rem);list-style:none;top:3vh;right:3vw}.frame-agenda li+li{margin-top:.35rem}.frame-agenda span{opacity:.8}.frame-empty{color:var(--muted);place-items:center;display:grid;position:absolute;inset:0}.frame-controls{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;pointer-events:none;background:#0000008c;border-radius:16px;gap:.5rem;padding:.6rem;transition:opacity .3s;display:flex;position:absolute;bottom:4vh;left:50%;transform:translate(-50%)}.frame.show-controls .frame-controls{opacity:1;pointer-events:auto}.frame-controls button,.frame-controls .button{color:#fff;background:#ffffff1f;border:none;padding:.7rem 1rem;font-size:1.05rem}.alert{color:var(--starting);border-color:var(--starting)}.gauges{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.6rem 1.25rem;margin:.75rem 0 .25rem;font-size:.85rem;display:grid}.gauge-label{justify-content:space-between;gap:.5rem;margin-bottom:.25rem;display:flex}.gauge-track{background:var(--surface-2);border-radius:3px;height:6px;overflow:hidden}.gauge-fill{background:var(--up);border-radius:3px;height:100%;transition:width .4s}.gauge-fill.starting{background:var(--starting)}.gauge-fill.down{background:var(--down)}.container-stats{font-size:.75rem}.prune{margin-top:1rem}.prune summary{list-style:none;display:inline-block}.prune summary::-webkit-details-marker{display:none}.prune ul{margin:.75rem 0}button.danger{border-color:var(--down);color:var(--down)}button.danger:hover{background:var(--down);color:#fff}.banner{margin-bottom:1rem;display:block}.live-logs{position:relative}.logs-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.logs-toolbar input[type=search]{flex:1;min-width:220px}.logs-toolbar input.invalid{outline:2px solid var(--down)}.logs-toolbar .check{color:var(--muted);align-items:center;gap:.35rem;font-size:.85rem;display:flex}.logs-status{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.5rem;font-size:.8rem;display:flex}.status-live{color:var(--up)}.status-reconnecting,.status-connecting{color:var(--starting)}.status-ended,.status-failed{color:var(--down)}.logs.live{white-space:normal;height:70vh;max-height:none;padding:.5rem 0}.log-line{white-space:pre-wrap;word-break:break-all;gap:.75rem;padding:0 1rem;display:flex}.log-line:hover{background:var(--surface)}.log-line time{color:var(--muted);-webkit-user-select:none;user-select:none;flex-shrink:0}.log-line.lvl-stderr{color:#e9b8b8}.log-line.lvl-warn{color:var(--starting)}.log-line.lvl-error{color:var(--down)}.log-line mark{color:#000;background:#f2c14e;border-radius:2px}.follow{position:absolute;bottom:1rem;right:1.5rem;box-shadow:0 2px 10px #00000080}h1 .mono{font-size:.85rem;font-weight:400}
