:root{--bg:#f4f3ef;--surface:#fffefb;--surface-sunken:#ebe9e2;--line:#d9d6cc;--line-strong:#b9b5a8;--text:#1d1f21;--text-muted:#5d6063;--accent:#1d5c4d;--accent-text:#fff;--live:#177245;--live-soft:#dcefe4;--warn:#8a5a00;--warn-soft:#f6ead0;--bad:#b3261e;--bad-soft:#f9e1de;--muted-soft:#e7e5de;--screen:#14171a;--radius:8px;--focus:#1a66c9;color:var(--text);background:var(--bg);font-family:ui-sans-serif,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.45}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#15181a;--surface:#1d2124;--surface-sunken:#111416;--line:#30363a;--line-strong:#4a5157;--text:#e9e8e3;--text-muted:#a0a4a6;--accent:#5fc4a6;--accent-text:#0d1f1a;--live:#6fd3a0;--live-soft:#173528;--warn:#e6bb63;--warn-soft:#3a2e14;--bad:#f2a29b;--bad-soft:#43201d;--muted-soft:#2a2f33;--screen:#0b0d0e;--focus:#7db4ff}}:root[data-theme=dark]{--bg:#15181a;--surface:#1d2124;--surface-sunken:#111416;--line:#30363a;--line-strong:#4a5157;--text:#e9e8e3;--text-muted:#a0a4a6;--accent:#5fc4a6;--accent-text:#0d1f1a;--live:#6fd3a0;--live-soft:#173528;--warn:#e6bb63;--warn-soft:#3a2e14;--bad:#f2a29b;--bad-soft:#43201d;--muted-soft:#2a2f33;--screen:#0b0d0e;--focus:#7db4ff}*{box-sizing:border-box}html,body{background:var(--bg);margin:0}h1{text-wrap:balance;margin:0 0 16px;font-size:1.5rem;line-height:1.2}h2{margin:0;font-size:1.05rem}h3{margin:0;font-size:.95rem}a{color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}main:focus{outline:none}.muted{color:var(--text-muted);margin:0}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.86rem}.stack{flex-direction:column;gap:12px;display:flex}.page-status{color:var(--text-muted);text-align:center;padding:32px 0}.skip-link{position:absolute;left:-9999px}.skip-link:focus{z-index:20;background:var(--surface);border-radius:var(--radius);padding:8px 12px;top:8px;left:16px}.shell{flex-direction:column;min-height:100dvh;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px 24px;padding:10px 24px;display:flex}.brand{color:var(--text);font-weight:650;text-decoration:none}.topnav{flex-wrap:wrap;flex:1;gap:4px;display:flex}.topnav a{color:var(--text-muted);border-radius:6px;padding:6px 10px;text-decoration:none}.topnav a:hover{color:var(--text);background:var(--surface-sunken)}.topnav a.active{color:var(--text);background:var(--surface-sunken);font-weight:600}.topbar-user{align-items:center;gap:12px;display:flex}.topbar-name{color:var(--text-muted);font-size:.9rem}.content{flex:1;width:100%;max-width:1600px;margin:0 auto;padding:24px}.button{appearance:none;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font:inherit;border-radius:var(--radius);cursor:pointer;min-height:40px;padding:7px 14px;font-weight:550}.button:hover:not(:disabled){background:var(--surface-sunken)}.button:disabled{opacity:.55;cursor:not-allowed}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.button-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.1)}.button-danger{background:var(--bad);border-color:var(--bad);color:var(--surface)}.button-danger:hover:not(:disabled){background:var(--bad);filter:brightness(1.1)}.button-quiet{background:0 0;border-color:#0000}.button-small{min-height:32px;padding:4px 10px;font-size:.86rem}.field{flex-direction:column;gap:4px;font-size:.9rem;font-weight:550;display:flex}input:not([type=checkbox]),select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;width:100%;min-height:40px;padding:7px 10px;font-weight:400}.hint{color:var(--text-muted);font-size:.82rem;font-weight:400}.inline-field{color:var(--text-muted);align-items:center;gap:8px;font-size:.9rem;display:inline-flex}.inline-field select{width:auto;min-height:34px;padding:4px 8px}.notice{border-radius:var(--radius);background:var(--muted-soft);margin:0 0 12px;padding:10px 12px}.notice-bad{background:var(--bad-soft);color:var(--bad)}.empty{text-align:center;border:1px dashed var(--line-strong);border-radius:var(--radius);padding:48px 16px}.empty p{margin:0 0 6px}.auth-screen{flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100dvh;padding:24px 16px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;width:100%;max-width:400px;padding:28px}.auth-card h1{margin:0;font-size:1.3rem}.auth-brand{color:var(--text-muted);margin:0 0 16px;font-size:.9rem;font-weight:650}.auth-foot{text-align:center;max-width:400px;color:var(--text-muted);margin:0;font-size:.82rem}.qr{border-radius:var(--radius);background:#fff;align-self:center;padding:8px;display:block}.setup-key{word-break:break-all;background:var(--surface-sunken);border-radius:6px;margin-top:6px;padding:8px;display:block}.code-input{letter-spacing:.25em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.2rem}.group-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.group-card{height:100%;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:6px;padding:16px;text-decoration:none;display:flex}.group-card:hover{border-color:var(--line-strong)}.group-card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.group-card-name{font-size:1.05rem;font-weight:650}.group-card-meta{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.86rem}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:12px;display:flex}.page-head h1{margin:0}.back-link{color:var(--text-muted);font-size:.86rem}.live-count{color:var(--text-muted);font-variant-numeric:tabular-nums;margin:0}.live-count strong{color:var(--text);font-size:1.25rem}.session-bar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin-bottom:16px;padding:10px 14px;display:flex}.session-bar-active{border-color:var(--live)}.session-copy,.session-actions{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.session-error{color:var(--bad);flex-basis:100%;margin:0}.grid-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin-bottom:12px;display:flex}.segmented{border:1px solid var(--line-strong);border-radius:6px;display:inline-flex;overflow:hidden}.segmented button{appearance:none;background:var(--surface);color:var(--text-muted);font:inherit;cursor:pointer;border:0;min-width:40px;min-height:34px;padding:4px 10px;font-size:.86rem}.segmented button+button{border-left:1px solid var(--line-strong)}.segmented button[aria-pressed=true]{background:var(--accent);color:var(--accent-text);font-weight:600}.tile-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}@media (width>=720px){.tile-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tile-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.tile-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.tile{text-align:left;width:100%;height:100%;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;padding:0;display:flex;overflow:hidden}.tile-button{appearance:none;cursor:pointer}.tile-button:hover{border-color:var(--line-strong)}.tile-screen{aspect-ratio:16/10;background:var(--screen);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.tile-screen img{object-fit:contain;width:100%;height:100%;display:block}.tile-screen-dimmed img{opacity:.45;filter:grayscale(.7)}.tile-placeholder{color:#c6cacc;text-align:center;text-wrap:balance;padding:12px 20px;font-size:.86rem}.tile-meta{flex-direction:column;gap:6px;padding:10px 12px;display:flex}.tile-title{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.tile-name{overflow-wrap:anywhere;min-width:0;font-weight:620}.tile-os{color:var(--text-muted);flex:none;font-size:.8rem}.tile-status{justify-content:space-between;align-items:center;gap:8px;display:flex}.tile-time{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.8rem}.tile-detail{color:var(--text-muted);font-size:.8rem}.badge{background:var(--muted-soft);color:var(--text-muted);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:2px 8px;font-size:.78rem;font-weight:620;display:inline-flex}.badge-dot{background:currentColor;border-radius:50%;width:7px;height:7px}.badge-live{background:var(--live-soft);color:var(--live)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-bad{background:var(--bad-soft);color:var(--bad)}.viewer{border:1px solid var(--line-strong);background:var(--surface);width:min(96vw,1500px);max-width:none;max-height:96dvh;color:var(--text);border-radius:10px;padding:0;overflow:hidden}.viewer[open]{flex-direction:column;display:flex}.viewer::backdrop{background:#080a0cb8}.viewer-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:10px 14px;display:flex}.viewer-title{flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;display:flex}.viewer-actions{align-items:center;gap:12px;display:flex}.viewer-mode{color:var(--text-muted);font-size:.82rem}.viewer-screen{background:var(--screen);flex:1;justify-content:center;align-items:center;min-height:0;display:flex}.viewer-screen img{object-fit:contain;max-width:100%;max-height:calc(96dvh - 64px);display:block}.viewer-empty{color:#c6cacc;text-align:center;margin:0;padding:80px 24px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px;padding:16px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.form-grid>h2,.form-wide{grid-column:1/-1}.form-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.form-actions{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.saved{color:var(--live);font-size:.86rem}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.inline-form .field{flex:220px}.row-form{margin-top:8px}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.92rem}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:10px 12px}thead th{color:var(--text-muted);white-space:nowrap;font-size:.8rem;font-weight:600}tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}tbody th{font-weight:600}.row-muted{color:var(--text-muted)}.row-actions{flex-wrap:wrap;gap:6px;display:flex}.test-ok,.test-bad{margin:6px 0 0;font-size:.84rem}.test-ok{color:var(--live)}.test-bad{color:var(--bad)}.group-editor{padding:0}.group-editor>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:8px;padding:14px 16px;display:flex}.group-editor>section,.group-editor>.danger-zone{border-top:1px solid var(--line);padding:14px 16px}.group-editor-name{font-weight:650}.flag{background:var(--warn-soft);color:var(--warn);border-radius:999px;padding:2px 8px;font-size:.78rem;font-weight:600}.day-picker{border:0;flex-wrap:wrap;gap:6px;margin:0;padding:0;display:flex}.day-picker legend{margin-bottom:4px;padding:0;font-size:.9rem;font-weight:550}.day-chip{border:1px solid var(--line-strong);cursor:pointer;border-radius:6px;align-items:center;gap:6px;min-height:36px;padding:4px 10px;font-size:.88rem;display:inline-flex}.check-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.check-list label{align-items:center;gap:8px;min-height:32px;display:inline-flex}.stats{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:12px 0 0;display:grid}.stat dt{color:var(--text-muted);font-size:.8rem}.stat dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.15rem;font-weight:620}@media (width<=640px){.topbar{padding:8px 16px}.content{padding:16px}.form-grid,.form-grid-3{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none}}
