:root{--bg: #f4f5f8;--surface: #ffffff;--surface-2: #f8f9fb;--line: #e2e5ec;--line-strong: #cfd4de;--text: #1b2130;--muted: #5d6679;--accent: #4257c9;--accent-soft: #e8ebfb;--accent-text: #ffffff;--nav: #171d2b;--nav-text: #c9d0df;--nav-muted: #7d879c;--nav-active: #283149;--ok: #1e7a4c;--ok-soft: #e3f4ea;--warn: #8a5a00;--warn-soft: #fff4dc;--bad: #b3261e;--bad-soft: #fdeceb;--draft: #5d6679;--draft-soft: #eceef3;--radius: 8px;--shadow: 0 1px 2px rgba(20, 28, 45, .06), 0 1px 1px rgba(20, 28, 45, .04);--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #11151f;--surface: #181d29;--surface-2: #1d2331;--line: #2a3142;--line-strong: #39425a;--text: #e6e9f0;--muted: #9aa3b6;--accent: #8a9cff;--accent-soft: #252d4d;--accent-text: #0e1220;--nav: #0c0f17;--nav-active: #1f2638;--ok: #5fd39a;--ok-soft: #16301f;--warn: #f0c060;--warn-soft: #33290f;--bad: #ff8a80;--bad-soft: #3a1a1a;--draft: #a9b1c4;--draft-soft: #262c3b;color-scheme:dark}}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:13px / 1.45 var(--font)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{font:12px var(--mono)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--muted)}.small{font-size:12px}.spacer{flex:1}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.skip{position:absolute;left:-999px;top:8px;z-index:10;background:var(--surface);padding:6px 10px}.skip:focus{left:8px}.app{display:grid;grid-template-columns:224px 1fr;height:100vh}.nav{background:var(--nav);color:var(--nav-text);display:flex;flex-direction:column;padding:14px 10px;gap:2px;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px}.brand span{display:flex;flex-direction:column;line-height:1.2}.brand strong{font-size:14px;color:#fff}.signin .brand strong{color:var(--text)}.brand small{color:var(--nav-muted)}.brand-mark{width:28px;height:28px;border-radius:8px;background:radial-gradient(circle at 50% 62%,#ffd88a 0 34%,transparent 36%),linear-gradient(160deg,#4b5d96,#2f3a56);flex:none}.nav-heading{margin:14px 8px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--nav-muted)}.nav-group{display:flex;flex-direction:column;gap:1px}.nav-link{color:var(--nav-text);padding:6px 10px;border-radius:6px}.nav-link:hover{background:var(--nav-active);text-decoration:none}.nav-link[aria-current=page]{background:var(--nav-active);color:#fff;box-shadow:inset 3px 0 0 var(--accent)}.nav-link[data-soon]:after{content:"·";margin-left:6px;color:var(--nav-muted)}.nav-foot{margin-top:auto;padding:12px 8px 0;font-size:11px;color:var(--nav-muted)}.main{display:flex;flex-direction:column;min-width:0;height:100vh}.top{display:flex;align-items:center;gap:16px;padding:10px 24px;background:var(--surface);border-bottom:1px solid var(--line);min-height:60px}.top-left{min-width:0;flex:1}.top-right{display:flex;align-items:center;gap:8px}.crumbs{font-size:12px;color:var(--muted);display:flex;gap:6px}.page-title{font-size:18px;margin:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.who{display:flex;align-items:center;gap:8px;padding:0 4px 0 8px}.avatar{width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:600}.who-name{font-weight:500}.content{flex:1;overflow:auto;padding:20px 24px 80px}.content:focus{outline:none}.page{display:flex;flex-direction:column;gap:16px;max-width:1600px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}.card-title{font-size:14px;margin:0 0 6px;font-weight:600}.card-sub{font-size:13px;margin:16px 0 6px}.card-head{display:flex;align-items:baseline;gap:12px;margin-bottom:8px}.btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:6px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap}.btn:hover:not(:disabled){background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}.btn.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}.btn.ghost{border-color:transparent;background:transparent}.btn.small{height:26px;padding:0 9px;font-size:12px}.btn .count,.status-chip .count{font-size:11px;padding:0 6px;border-radius:9px;background:var(--draft-soft);color:var(--muted)}input[type=text],input[type=search],input[type=number],input:not([type]),input[type=password],input[type=date],select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;height:30px;padding:0 8px;min-width:0}textarea{height:auto;padding:6px 8px;resize:vertical}input:disabled{background:var(--surface-2);color:var(--muted)}.badge{display:inline-block;font-size:11px;font-weight:600;padding:1px 8px;border-radius:10px;background:var(--draft-soft);color:var(--draft);white-space:nowrap}.badge.role{background:var(--accent-soft);color:var(--accent)}.chips{display:inline-flex;gap:4px;flex-wrap:wrap}.chip{font-size:11px;padding:1px 7px;border-radius:10px;border:1px solid var(--line-strong);background:var(--surface-2)}.chip.removable{display:inline-flex;gap:6px;align-items:center}.notice{border-radius:6px;padding:10px 12px;display:flex;flex-direction:column;gap:6px;border:1px solid transparent}.notice.error{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 30%,transparent)}.notice.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.notice.ok{background:var(--ok-soft)}.notice.info{background:var(--accent-soft)}.problem{color:var(--bad);font-size:12px}.problem code{margin-right:6px;color:var(--text)}.problem code.path{color:var(--muted)}.problem-list{display:flex;flex-direction:column;gap:2px}.state{padding:28px 16px;display:flex;flex-direction:column;gap:6px;align-items:center;text-align:center;color:var(--muted)}.state.error{color:var(--bad)}.spinner{width:18px;height:18px;border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{display:block;height:12px;border-radius:4px;background:linear-gradient(90deg,var(--line) 0%,var(--surface-2) 50%,var(--line) 100%);background-size:200% 100%;animation:shimmer 1.2s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.boot{height:100vh;display:flex;gap:10px;align-items:center;justify-content:center;flex-direction:column}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.toolbar .search{width:300px}.status-chips{display:flex;gap:6px;margin-bottom:10px}.status-chip{font:inherit;display:inline-flex;gap:8px;align-items:center;height:28px;padding:0 10px;border-radius:14px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);cursor:pointer}.status-chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:6px}.table-wrap.tall{max-height:62vh}table.grid{width:100%;border-collapse:collapse}.grid th{position:sticky;top:0;z-index:1;background:var(--surface-2);text-align:left;font-weight:600;font-size:12px;color:var(--muted);padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.grid td{padding:6px 10px;border-bottom:1px solid var(--line);vertical-align:middle}.grid.compact td{padding:5px 8px}.grid tbody tr:hover{background:var(--surface-2)}.grid .num{font-variant-numeric:tabular-nums}.grid th .sort{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;display:inline-flex;gap:4px}.sort.asc .arrow:after{content:"▲";font-size:9px}.sort.desc .arrow:after{content:"▼";font-size:9px}.pager{display:flex;gap:8px;align-items:center;padding-top:10px}.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:6px;overflow:hidden;flex-wrap:wrap}.seg-btn{font:inherit;font-size:12px;border:0;border-right:1px solid var(--line);background:var(--surface);color:var(--text);height:28px;padding:0 10px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.seg-btn:last-child{border-right:0}.seg-btn[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);padding:0 12px;margin-bottom:8px}.tab{font:inherit;border:0;background:none;color:var(--muted);padding:10px 12px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tab[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.tab-body{padding:8px 16px 16px}.field{display:flex;flex-direction:column;gap:3px;min-width:0}.field>label,.field>legend,.field>span{font-size:12px;font-weight:500;color:var(--muted)}.field.wide{grid-column:1 / -1}.actions{margin-top:10px}.note{font-size:12px;color:var(--muted)}.dialog{border:1px solid var(--line);border-radius:10px;padding:18px 20px;max-width:520px;width:92vw;background:var(--surface);color:var(--text);box-shadow:0 20px 50px #0a0e164d}.dialog::backdrop{background:#0f142073}.dialog h2{margin:0 0 8px;font-size:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:20;max-width:420px}.toast{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:8px;background:var(--nav);color:#fff;box-shadow:0 8px 24px #0a0e1640}.toast.ok{border-left:4px solid #5fd39a}.toast.error{border-left:4px solid #ff8a80}.toast-x{margin-left:auto;border:0;background:none;color:inherit;cursor:pointer;font-size:16px;line-height:1}.signin{min-height:100vh;display:grid;place-items:center;padding:20px}.signin-card{width:360px;display:flex;flex-direction:column;gap:10px}.signin-card h1{font-size:18px;margin:4px 0 0}.signin-form{display:flex;flex-direction:column;gap:10px}.badge.tone-ok{background:var(--ok-soft);color:var(--ok)}.badge.tone-bad{background:var(--bad-soft);color:var(--bad)}.badge.tone-warn{background:var(--warn-soft);color:var(--warn)}.badge.tone-accent{background:var(--accent-soft);color:var(--accent)}.chart{display:block;width:100%;height:auto;overflow:visible}.chart .grid-line{stroke:var(--line);stroke-width:1}.chart .axis{fill:var(--muted);font-size:9px}.chart .line{fill:none;stroke-width:1.6;stroke-linejoin:round}.chart .hit{fill:transparent}.chart .hit:hover{fill:var(--accent-soft);opacity:.5}.chart .s1{stroke:var(--accent);fill:var(--accent)}.chart .s2{stroke:var(--ok);fill:var(--ok)}.chart .s3{stroke:var(--warn);fill:var(--warn)}.chart .s4{stroke:var(--muted);fill:var(--muted)}.chart .line.s1,.chart .line.s2,.chart .line.s3,.chart .line.s4{fill:none}.chart .track{fill:var(--surface-2)}.chart .label{fill:var(--text);font-size:11px}.chart .value{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.chart.spark{width:96px;height:24px}.legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.legend .key:before{content:"";display:inline-block;width:10px;height:3px;border-radius:2px;margin-right:5px;vertical-align:middle;background:var(--accent)}.legend .key.s2:before{background:var(--ok)}.legend .key.s3:before{background:var(--warn)}.legend .key.s4:before{background:var(--muted)}.menu-btn,.nav-backdrop{display:none}@media(max-width:767px){.app{grid-template-columns:1fr}.nav{display:none}.app.nav-open .nav{display:flex;position:fixed;inset:0 auto 0 0;width:min(280px,86vw);z-index:20}.app.nav-open .nav-backdrop{display:block;position:fixed;inset:0;z-index:19;background:#0a0e1673}.menu-btn{display:inline-flex}.top{padding:8px 12px;flex-wrap:wrap;gap:8px}.top-right{flex-wrap:wrap}.who-name{display:none}.content{padding:14px 12px 60px}.toolbar .search{width:100%}table.grid{min-width:640px}}.status-draft{background:var(--draft-soft);color:var(--draft)}.status-live,.badge.v-new,.badge.a-done{background:var(--ok-soft);color:var(--ok)}.status-retired,.badge.v-refused,.badge.v-error,.badge.a-failed{background:var(--bad-soft);color:var(--bad)}.badge.v-change,.badge.a-running{background:var(--warn-soft);color:var(--warn)}.badge.origin-restore{background:var(--accent-soft);color:var(--accent)}.aff-wind{border-color:#7cc4b8}.aff-bloom{border-color:#e59ac0}.aff-storm{border-color:#8e8ce0}.aff-light{border-color:#e9c35b}.aff-frost{border-color:#8fc6ec}.aff-shadow{border-color:#7b7f93}.aff-dream{border-color:#c09be8}.aff-ember{border-color:#ef8f5d}.glow-none{color:var(--muted)}.glow-soft,.glow-bright,.glow-strong,.glow-radiant{color:var(--warn);font-weight:500}.yes{color:var(--ok)}.no{color:var(--bad)}.grid tr.selected{background:var(--accent-soft)}.grid tr.has-problem td{border-bottom-color:transparent}.grid .row-problems td{background:var(--bad-soft);padding:4px 10px 8px 46px}.grid .sel{width:34px}.grid .when small,.thing-link small{display:block;color:var(--muted);font-size:11px}.thing-link{font-weight:500}.c-number{width:56px}.bulk-bar{display:flex;gap:8px;align-items:center;padding:8px 10px;margin-bottom:10px;border-radius:6px;background:var(--accent-soft)}table.mini{border-collapse:collapse;margin-bottom:6px}.mini th{font-size:11px;color:var(--muted);text-align:left;padding:2px 6px}.mini td{padding:2px 6px}.mini input,.mini select{width:160px}.mini td.act,.mini th.act{width:1%}.thing-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.thing-meta{display:flex;gap:12px;align-items:center;flex-wrap:wrap;flex:1}.thing-actions{display:flex;gap:6px}.detail-grid{display:grid;grid-template-columns:minmax(380px,46%) 1fr;gap:16px;align-items:start}.detail-grid.single{grid-template-columns:1fr}.viewer-card{position:sticky;top:0;display:flex;flex-direction:column;gap:10px}.viewer-box{position:relative;height:min(58vh,560px);border-radius:6px;overflow:hidden;background:#1c2230}.viewer-stage{position:absolute;inset:0}.viewer-canvas{display:block;width:100%;height:100%}.viewer-overlay{position:absolute;inset:auto 10px 10px auto;padding:6px 10px;border-radius:6px;background:#0a0e16bf;color:#e6e9f0;font-size:12px}.viewer-overlay.error{color:#ff9c94}.viewer-controls{display:flex;flex-direction:column;gap:8px}.seg-btn.variant img{width:18px;height:18px;border-radius:3px;object-fit:cover}.clips{display:flex;gap:4px;flex-wrap:wrap}.clip{font:inherit;font-size:12px;height:26px;padding:0 9px;border-radius:13px;border:1px solid var(--line-strong);background:var(--surface);color:var(--text);cursor:pointer}.clip[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--accent-text)}.clip:disabled{opacity:.4;cursor:default}.viewer-foot{display:flex;flex-direction:column;gap:2px}.viewer-stats{font-variant-numeric:tabular-nums}.editor{padding:0;min-width:0}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 14px}.form-grid.nested{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}fieldset.field.plain{border:0;padding:0;margin:0;min-width:0}fieldset.field.plain>legend{padding:0;margin-bottom:3px}.tab-panel:focus-visible{outline-offset:-2px}fieldset.group{border:1px solid var(--line);border-radius:6px;padding:8px 10px 10px;margin:0}fieldset.group legend{font-size:12px;font-weight:600;color:var(--muted);padding:0 4px}.field.has-problem>input,.field.has-problem>select,.field.has-problem>textarea,td.has-problem input,td.has-problem select,.token.has-problem{border-color:var(--bad);background:var(--bad-soft)}fieldset.group.has-problem{border-color:var(--bad)}.form-problems{background:var(--bad-soft);border-radius:6px;padding:8px 10px;margin-bottom:10px}.checks{display:flex;flex-wrap:wrap;gap:4px 12px}.check{display:inline-flex;gap:5px;align-items:center}.tokens{display:flex;flex-wrap:wrap;gap:4px;align-items:center;border:1px solid var(--line-strong);border-radius:6px;padding:4px}.token{display:inline-flex;align-items:center;gap:2px;padding:1px 2px 1px 8px;border-radius:12px;background:var(--accent-soft);border:1px solid transparent;font:12px var(--mono)}.token-x{border:0;background:none;cursor:pointer;color:var(--muted);font-size:14px;padding:0 4px}.token-add{border:0!important;flex:1;min-width:120px}.map{display:flex;flex-wrap:wrap;gap:8px}.map-item{display:flex;flex-direction:column;font-size:11px;color:var(--muted)}.map-item input{width:90px}textarea.json{width:100%;min-height:60vh;font:12px / 1.5 var(--mono)}textarea.json.small{min-height:0}textarea.bad{border-color:var(--bad)}.save-bar{position:sticky;bottom:-80px;display:flex;gap:10px;align-items:center;padding:10px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 -2px 10px #141c2d0f}.save-bar.active{bottom:0;border-color:var(--accent)}.dirty-dot,.clean-dot{width:8px;height:8px;border-radius:50%;background:var(--warn)}.clean-dot{background:var(--line-strong)}.stale .row{margin-top:4px}.thumb{width:40px;height:40px;border-radius:4px;object-fit:cover;border:1px solid var(--line);background:var(--surface-2)}.thumb.large{width:96px;height:96px}.hash{color:var(--muted)}.history-grid{display:grid;grid-template-columns:minmax(560px,48%) 1fr;gap:16px;align-items:start}.grid td.when{white-space:nowrap}.grid tr.pick-a td:first-child{box-shadow:inset 3px 0 0 var(--muted)}.grid tr.pick-b td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.compare-head{display:flex;gap:12px;align-items:center;margin-bottom:10px}.diff td.before{color:var(--bad);font:12px var(--mono);word-break:break-word;max-width:360px}.diff td.after{color:var(--ok);font:12px var(--mono);word-break:break-word;max-width:360px}.op{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.file-preview{display:flex;flex-direction:column;gap:4px}.import-intro{display:grid;grid-template-columns:1fr 1fr;gap:16px}.drop{display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px;border:2px dashed var(--line-strong);border-radius:8px;cursor:pointer;text-align:center}.drop:hover,.drop.over{border-color:var(--accent);background:var(--accent-soft)}.import-work{display:flex;flex-direction:column;gap:16px}.kpis{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 10px}.kpi{display:flex;flex-direction:column;padding:8px 12px;border:1px solid var(--line);border-radius:6px;min-width:110px}.kpi-value{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}.kpi-label{font-size:11px;color:var(--muted)}.kpi.v-new .kpi-value,.kpi.v-done .kpi-value{color:var(--ok)}.kpi.v-change .kpi-value{color:var(--warn)}.kpi.v-refused .kpi-value,.kpi.v-error .kpi-value{color:var(--bad)}.progress-box{display:flex;flex-direction:column;gap:4px;margin:8px 0}progress.progress{width:100%;height:10px;accent-color:var(--accent)}.report td{vertical-align:top}.report td small{display:block}.detail-cell details summary{cursor:pointer;color:var(--muted)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.stat-card{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.stat-placeholder{align-self:stretch;height:90px;border-radius:6px;background:repeating-linear-gradient(135deg,var(--surface-2) 0 10px,var(--bg) 10px 20px);border:1px dashed var(--line-strong)}@media(max-width:1100px){.detail-grid,.history-grid,.import-intro{grid-template-columns:1fr}.viewer-card{position:static}}
