:root{color-scheme:light dark;--bg: #f1f3f4;--card: #ffffff;--ink: #1f1f1f;--muted: #5f6368;--line: #dadce0;--accent: #1a62c7;--on-accent: #ffffff;--danger: #c5221f;--good: #188038;--thumb: 6rem;font-family:system-ui,sans-serif}@media(prefers-color-scheme:dark){:root{--bg: #000000;--card: #121212;--ink: #e8eaed;--muted: #9aa0a6;--line: #303134;--accent: #8ab4f8;--on-accent: #0b1b33;--danger: #f28b82;--good: #81c995}}@media(prefers-contrast:more){:root{--muted: #3c4043;--line: #5f6368}}@media(prefers-contrast:more)and (prefers-color-scheme:dark){:root{--muted: #dadce0;--line: #9aa0a6}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}#app{max-width:640px;margin:0 auto;padding:16px}.card{background:var(--card);border-radius:12px;padding:16px}h1{font-size:1.4rem;margin:0}h2{font-size:1rem;margin:20px 0 6px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}header.row{align-items:center;gap:12px;margin-bottom:12px}header .muted{margin-left:auto}header .small-link{font-size:.85rem;color:var(--muted)}.back{font-size:1.6rem;text-decoration:none;color:var(--ink);line-height:1}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}form{display:grid;gap:8px}form.new{margin-bottom:8px}label{display:grid;gap:4px;font-size:.9rem;color:var(--muted)}label.row{display:flex;align-items:center}label.row input{width:auto}input{padding:10px;border:1px solid var(--line);border-radius:8px;background:transparent;color:inherit;font:inherit}button{padding:10px 16px;border:0;border-radius:999px;background:var(--accent);color:var(--on-accent);font:inherit;font-weight:600;cursor:pointer}button.secondary{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}button.icon{background:none;color:var(--accent);padding:6px 8px;font-size:1.1rem;line-height:1;border-radius:8px}button.danger{background:var(--danger);color:#fff}button.thumb{font-size:1.1rem;padding:6px 10px}button.thumb.secondary{background:none}button.thumb.active{background:var(--accent);color:var(--on-accent)}button:disabled{opacity:.6;cursor:default}button.small{padding:6px 10px;font-size:.9rem}.list{list-style:none;padding:0;margin:0;display:grid}.list li{padding:10px 0;border-bottom:1px solid var(--line)}.list li:last-child{border-bottom:0}.list li.muted{border:0}.list .list{padding-left:12px}.list li a{color:var(--ink);font-weight:600;text-decoration:none;margin-right:8px}.task .head{display:flex;justify-content:space-between;gap:8px}.task p{margin:6px 0 0}.task.accepted{border-color:var(--accent)}.task.rejected{border-color:var(--danger)}.photos{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.photos img{height:96px;width:auto;max-width:100%;object-fit:contain;border-radius:6px;border:1px solid var(--line);background:#000}.actions{margin-top:8px;display:flex;gap:8px;flex-wrap:wrap}.actions form.row{display:flex}.actions input[type=text],.actions input:not([type]){flex:1;min-width:120px}.muted{color:var(--muted);font-size:.9rem}.note{padding:8px 12px;border-left:3px solid var(--accent)}.flash{margin:12px 0 0;padding:8px 12px;border-radius:8px}.flash.err{background:color-mix(in srgb,var(--danger) 15%,transparent)}.flash.err:before{content:"⚠ "}.flash.ok{background:color-mix(in srgb,var(--accent) 15%,transparent)}.flash.ok:before{content:"✓ "}.photos img{cursor:zoom-in}.photos img.broken{object-fit:contain;font-size:.6rem;color:var(--danger)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:10;cursor:pointer}.lightbox img{max-width:100vw;max-height:100vh;object-fit:contain}.lightbox button{position:absolute;background:#00000080;color:#fff;border:0;font-size:1.6rem;line-height:1;padding:8px 14px;border-radius:8px}.lightbox .prev{left:8px;top:50%;transform:translateY(-50%)}.lightbox .next{right:8px;top:50%;transform:translateY(-50%)}.lightbox .close{top:8px;right:8px}.lightbox .pos{position:absolute;top:16px;left:12px;color:#fff;font-size:.9rem}.lightbox.single .prev,.lightbox.single .next{display:none}.achievement{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:6px}.achievement .ev{padding:6px 8px;border-left:2px solid var(--line)}.achievement .meta{margin-top:4px;font-size:.9rem}.verdict.ok{color:var(--accent)}.verdict.nope{color:var(--danger)}.photos img.pending{width:72px;background:var(--line)}.history .ev{display:grid;gap:6px}.history .meta strong{margin-right:6px}.badge{display:inline-block;font-size:.75rem;color:var(--muted);margin-left:6px}.reaction{display:flex;gap:6px}.shot{position:relative;display:inline-block}.shot .del{position:absolute;top:2px;right:2px;padding:0 6px;font-size:.8rem;line-height:1.4;border-radius:6px;background:#0009;color:#fff}.thumb-shown{font-size:.9rem;color:var(--muted)}.actions-row{margin-bottom:8px}.task .head button{margin-left:auto;white-space:nowrap}dialog.sheet{border:0;border-radius:12px;background:var(--card);color:var(--ink);padding:16px;width:min(92vw,480px)}dialog.sheet.page{width:100%;max-width:640px;height:100%;max-height:100%;margin:0 auto;border-radius:0;padding:8px 16px 24px}dialog.sheet.page::backdrop{background:#000}dialog.sheet header{align-items:center;gap:4px;margin-bottom:8px}dialog.sheet header .back{font-size:1.6rem;color:var(--ink)}dialog.sheet::backdrop{background:#0000008c}dialog.sheet h2{margin:0 0 4px}dialog.sheet.page h2{margin:0;font-size:1.3rem;text-transform:none;letter-spacing:0;color:var(--ink)}dialog.sheet .buttons{justify-content:flex-end;margin-top:8px}.routine>.head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.routine>.head .progress{margin-left:auto;font-size:.85rem;color:var(--muted);white-space:nowrap}.routine>p{margin:6px 0 0}.routine>.list{margin-top:8px}.routine>[data-add]{margin-top:8px}.badge.bonus{color:var(--accent)}.badge.late{color:var(--danger);font-weight:600}.badge.robo{color:var(--muted)}header .pager{display:flex;align-items:center;gap:2px;touch-action:pan-y;-webkit-user-select:none;user-select:none}header .pager h1{white-space:nowrap}header .status{display:inline-flex;gap:6px;align-items:center;font-size:.85rem;font-weight:700}header .status .dot{width:.7rem;height:.7rem;border-radius:50%;border:2px solid var(--muted)}header .status .dot.on{background:var(--good);border-color:var(--good)}header .status .count{text-decoration:none;padding:0 5px;border-radius:4px;line-height:1.4}header .status .win{color:var(--good)}header .status .todo{color:var(--accent);border:2px solid var(--accent)}header .status .fail{color:var(--danger)}header .presence.offline{color:var(--danger);font-weight:600}.job .head .muted{margin-left:auto;white-space:nowrap}h2.section{margin:0 0 4px}.screen h2.section:not(:first-child){margin-top:20px}.panels{display:grid}details.panel{border-bottom:1px solid var(--line);padding:10px 0}details.panel summary{cursor:pointer;font-weight:600}details.panel[open] summary{margin-bottom:8px}header .presence{margin-left:auto}header .back{font-size:1.6rem;color:var(--ink)}#app{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.tabbar{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:5}.tabbar a{flex:1;text-align:center;padding:14px 4px;color:var(--muted);text-decoration:none;font-weight:600}.tabbar a.active{color:var(--accent);box-shadow:inset 0 3px 0 var(--accent)}.tabbar .count{display:inline-block;min-width:1.4em;padding:1px 5px;border-radius:4px;background:var(--accent);color:var(--on-accent);font-size:.75rem;margin-left:4px}.filters{margin-bottom:8px;gap:4px}.filters [data-only]{background:none;color:var(--muted)}.filters [data-only]:not(.secondary){background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.filters select{margin-left:auto}.list.feed{gap:0}.feed .fi{border:0;border-radius:0;border-bottom:1px solid var(--line);padding:0;position:relative;overflow:hidden}.feed .fi .body{display:grid;gap:6px;padding:10px 0;position:relative;background:var(--card)}.feed .fi .act{display:none}.feed .fi:last-child{border-bottom:0}.feed .fi .line{display:flex;flex-wrap:wrap;gap:2px 8px;align-items:baseline}.feed .fi .line .what{flex:0 1 auto;min-width:0;color:inherit;text-decoration:none;font-weight:400;margin:0}.feed .fi .line .hide{flex:none;padding:0 4px;font-size:1rem}.feed .fi .what strong{font-size:1.05rem}.feed .fi.unseen .line .what{font-weight:700}.feed .fi .meta{flex:none;margin-left:auto;font-size:.75rem;color:var(--muted);white-space:nowrap}.feed .fi .extra{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}.feed .fi .extra .tail{display:flex;gap:8px;align-items:flex-end;margin-left:auto}.feed .fi .extra .tail .reaction{margin-left:0}.feed .fi .reaction{display:flex;gap:4px;flex:none;margin-left:auto}.feed .fi .previews{display:flex;flex-wrap:wrap;gap:3px;min-width:0}.feed .fi .previews:empty{display:none}@media(max-width:600px){.feed .fi .act{display:flex;position:absolute;top:0;bottom:0;align-items:center;gap:4px;padding:0 10px}.feed .fi .act.lead{left:0;margin:0}.feed .fi .act.trail{right:0;background:var(--danger)}.feed .fi .act.trail .hide{border:0;background:none;color:#fff;font-weight:600}.feed .fi .body{z-index:1;touch-action:pan-y;transition:transform .2s}.feed .fi .body.dragging{transition:none}.feed .fi .inline{display:none}.feed .fi.with-photos .line{position:absolute;top:14px;left:4px;right:4px;z-index:1;pointer-events:none}.feed .fi.with-photos .line>*{pointer-events:auto;padding:1px 6px;border-radius:4px;background:color-mix(in srgb,var(--bg) 70%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}.feed .fi .previews img{height:var(--thumb);width:auto;max-width:calc(var(--thumb) * 1.5);object-fit:cover;border-radius:3px;cursor:zoom-in}.feed .fi .previews img.pending{width:var(--thumb);background:var(--line)}:root[data-thumbs=full] .feed .fi .previews{flex-direction:column;flex:1 1 100%}:root[data-thumbs=full] .feed .fi .previews img{width:100%;height:auto;max-width:100%;max-height:80vh;object-fit:contain}:root[data-thumbs=full] .feed .fi .previews img.pending{aspect-ratio:4 / 3}.task-head h2{font-size:1.3rem;margin:0;text-transform:none;letter-spacing:0;color:var(--ink)}.task-head p{margin:4px 0 0}.task-head button{margin-top:8px}.task-head{margin-bottom:12px}.rows{display:grid;gap:6px}.task-row input{flex:1;min-width:120px}select.small{font:inherit;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:transparent;color:inherit}.attachment{font-size:.9rem;margin-top:2px}.server-line{max-width:640px;margin:0 auto;padding:4px 16px 0;font-size:.75rem;text-align:right}.update-bar{position:sticky;top:0;z-index:6;display:flex;gap:12px;align-items:center;justify-content:center;padding:8px 16px;background:var(--accent);color:var(--on-accent);font-weight:600}.update-bar button{background:var(--on-accent);color:var(--accent)}:root{--focus: var(--accent)}[hidden]{display:none!important}:focus-visible{outline:4px solid var(--focus);outline-offset:2px}.task[tabindex]{cursor:pointer}.task.locked{opacity:.6}.task-row label{white-space:nowrap}.task[tabindex]:focus-visible{border-color:var(--focus);box-shadow:0 0 0 2px var(--focus)}dialog.camera{width:min(96vw,560px);max-width:100%;max-height:96vh;overflow:auto;overflow-x:hidden}dialog.camera{overflow:hidden}dialog.camera form{display:flex;flex-direction:column;gap:6px;height:100%;min-height:0}dialog.camera form>*{flex:0 0 auto}dialog.camera .photos{gap:4px;margin:0}dialog.camera .photos img{height:56px}dialog.camera .photos img.playground{outline:2px solid var(--accent);outline-offset:-2px}@media(max-width:600px){dialog.camera{width:100%;height:100%;max-height:100%;margin:0;border:0;border-radius:0;padding:8px}dialog.camera .keys{display:none}}.viewfinder{--ar: 4 / 3;flex:1 1 auto!important;min-height:100px;aspect-ratio:var(--ar);width:auto;max-width:100%;height:auto;margin:0 auto}.viewfinder .flash-shot{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff}.viewfinder .confirm{position:absolute;left:0;right:0;top:12px;margin:0 12px;padding:8px 12px;text-align:center;font-weight:700;color:#000;background:#ffffffe6;border-radius:8px}.active-task{flex:1;min-width:0}.active-task h2{font-size:1.5rem;margin:0;overflow-wrap:anywhere}.viewfinder .taken{position:absolute;left:0;right:0;bottom:12px;text-align:center;font-size:1.6rem;font-weight:700;color:#fff;text-shadow:0 0 10px #000}dialog.camera header h2{flex:1}.viewfinder{touch-action:pan-y;position:relative;background:#000;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}.viewfinder video{width:100%;height:100%;object-fit:contain}.viewfinder .countdown{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:6rem;font-weight:700;color:#fff;text-shadow:0 0 12px #000;background:#00000040}.viewfinder .nocam{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;display:flex;align-items:center;justify-content:center;padding:16px;text-align:center;color:#ddd}dialog.camera [data-shoot]{flex:1;font-size:1.1rem;padding:14px}dialog.camera .keys{font-size:.75rem;flex:1;min-width:0}dialog.camera .photos img{max-width:100%}dialog.camera [data-playgrounds]{margin:4px 0 0;font-size:.85rem}dialog.camera [data-playgrounds].warn{color:var(--accent);font-weight:600}table.kinds{width:100%;border-collapse:collapse;margin-bottom:12px}table.kinds th{font-weight:400;color:var(--muted);font-size:.9rem}table.kinds td,table.kinds th{padding:4px 0}table.kinds td+td,table.kinds th+th{text-align:center;width:4.5rem}img.locked{display:inline-flex;align-items:center;justify-content:center;background:var(--line);font-size:1.4rem}h1 .badge{font-size:.7rem;vertical-align:middle;margin-left:6px}fieldset.order{border:1px solid var(--line);border-radius:8px;padding:8px 12px 12px;margin:0;display:grid;gap:8px}fieldset.order legend{font-size:.9rem;color:var(--muted);padding:0 4px}fieldset.order [data-order]{display:grid;gap:8px}fieldset.order [data-order][hidden]{display:none}fieldset.order .row label{flex:1}.task-line{display:grid;gap:4px}.task-line details summary{font-size:.85rem;color:var(--muted);cursor:pointer}.task-line details[open] summary{margin-bottom:6px}.task-line fieldset.order legend{display:none}@media(min-width:601px){body{background:#000}}@media(max-width:600px){body{background:var(--card)}#app{padding:0 0 calc(72px + env(safe-area-inset-bottom))}.card{border:0;border-radius:0;padding:8px}.server-line{padding:4px 8px 0}}
