:root{--cobalt: #0e3a8a;--cobalt-deep: #0a2c6b;--ink: #eaf2ff;--muted: #a9c4f5;--amber: #ffd166;--mint: #7cf2b0;--red: #ff8a8a;--line: rgba(255, 255, 255, .92);--line-soft: rgba(255, 255, 255, .35);--grid: rgba(255, 255, 255, .09);--paper: #ffffff;--paper-ink: #0b2559;--paper-muted: #5b6b8a;--paper-line: #d6def0;--ui: "Space Grotesk", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--ink);background-color:var(--cobalt);background-image:linear-gradient(to right,var(--grid) 1px,transparent 1px),linear-gradient(to bottom,var(--grid) 1px,transparent 1px);background-size:26px 26px;font-family:var(--ui);font-size:16px;line-height:1.35;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}a{color:inherit}button,input,textarea,select{font:inherit;color:inherit}img{display:block;max-width:100%}.mono,.label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em}.label{font-size:11px;font-weight:600}.muted{color:var(--muted)}.amber{color:var(--amber)}.mint{color:var(--mint)}.red{color:var(--red)}.num{font-family:var(--ui);font-weight:700;font-size:44px;line-height:1;letter-spacing:-.02em}.num-sm{font-family:var(--ui);font-weight:700;font-size:28px;line-height:1;letter-spacing:-.02em}h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.01em}h1{font-size:24px}h2{font-size:18px}h3{font-size:15px}p{margin:0}.row{display:flex;align-items:center;gap:10px}.between{display:flex;align-items:center;justify-content:space-between;gap:10px}.stack{display:flex;flex-direction:column;gap:12px}.grow{flex:1;min-width:0}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.phone{max-width:520px;margin:0 auto;min-height:100vh;min-height:100dvh;padding:calc(14px + var(--safe-t)) 16px calc(100px + var(--safe-b));display:flex;flex-direction:column;gap:16px}.phone.no-nav{padding-bottom:calc(24px + var(--safe-b))}.sheet-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.sheet-head .title{font-size:20px;font-weight:700;line-height:1.15;margin-top:4px}.panel{position:relative;border:1.5px solid var(--line);padding:18px 14px 14px;margin-top:8px}.panel>.tab{position:absolute;top:-8px;left:10px;padding:0 6px;background:var(--cobalt);font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);line-height:14px}.panel.soft{border-color:var(--line-soft)}.panel.amber{border-color:var(--amber)}.panel.amber>.tab{color:var(--amber)}.panel.mint{border-color:var(--mint)}.panel.mint>.tab{color:var(--mint)}.stats{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat .sub{margin-top:8px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 18px;border:1.5px solid var(--line);background:transparent;color:var(--ink);font-family:var(--ui);font-weight:600;font-size:16px;cursor:pointer;border-radius:0;text-decoration:none;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:#fff;color:var(--cobalt);border-color:#fff}.btn.primary:active:not(:disabled){background:var(--ink)}.btn.secondary:active:not(:disabled){background:#ffffff1a}.btn.amber{border-color:var(--amber);color:var(--amber)}.btn.mint{border-color:var(--mint);color:var(--mint)}.btn.red{border-color:var(--red);color:var(--red)}.btn.sm{min-height:44px;font-size:14px;padding:0 14px}.btn.block{width:100%}.btn.icon{padding:0;width:44px;min-width:44px}.btn svg{flex:none}.actions{display:flex;gap:10px}.actions .btn{flex:1}.icon-btn{background:none;border:0;padding:0;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:inherit}.field{display:flex;flex-direction:column;gap:6px}.field>.label{color:var(--muted)}.input,.textarea,.select{width:100%;min-height:48px;padding:10px 12px;border:1.5px solid var(--line-soft);background:#0000002e;color:var(--ink);border-radius:0;outline:none}.input:focus,.textarea:focus,.select:focus{border-color:var(--line)}.input.mono{text-transform:none;letter-spacing:.04em}.textarea{min-height:96px;resize:vertical}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.help{font-size:13px;color:var(--muted)}.error{color:var(--amber);font-size:14px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{min-height:44px;padding:8px 14px;border:1.5px solid var(--line-soft);background:transparent;color:var(--ink);font-family:var(--ui);font-weight:500;font-size:14px;cursor:pointer;border-radius:0;display:inline-flex;align-items:center;gap:8px;max-width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere;text-align:left}.chip.on{background:#fff;color:var(--cobalt);border-color:#fff}.chip.amber{border-color:var(--amber)}.chip .k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;opacity:.8}.tag{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;padding:3px 6px;border:1px solid currentColor;line-height:1}.tag.ok{color:var(--mint)}.tag.q{color:var(--amber)}.tag.fill{background:currentColor}.tag.fill span{color:var(--cobalt)}.status-pending{color:var(--amber)}.status-approved{color:var(--mint)}.status-denied{color:var(--red)}.status-draft{color:var(--muted)}.status-submitted{color:var(--amber)}.status-stamped{color:var(--mint)}.online-dot{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase}.online-dot i{width:8px;height:8px;display:inline-block;background:var(--mint)}.online-dot.off i{background:var(--amber)}.log{display:flex;flex-direction:column}.log-item{display:grid;grid-template-columns:56px 1fr auto;gap:10px;align-items:baseline;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.14)}.log-item:last-child{border-bottom:0}.log-item .t{font-family:var(--mono);font-size:12px;color:var(--muted)}.log-item .d{font-size:14px}.log-item .d small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.empty{padding:18px 0;color:var(--muted);text-align:center;font-size:14px}.area-h{margin:6px 0 8px;display:flex;justify-content:space-between;align-items:baseline}.pgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.thumb{position:relative;aspect-ratio:1;background:var(--cobalt-deep);border:1.5px solid var(--line-soft);overflow:hidden;padding:0;cursor:pointer}.thumb img{width:100%;height:100%;object-fit:cover}.thumb.sel{border-color:var(--amber);box-shadow:inset 0 0 0 2px var(--amber)}.thumb .meta{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;align-items:center;padding:4px 5px;background:linear-gradient(transparent,#051437d9);font-family:var(--mono);font-size:10px;letter-spacing:.06em}.thumb .queued{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--amber);font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;background:#0e3a8a59}.preview{width:100%;aspect-ratio:4/3;background:var(--cobalt-deep);border:1.5px solid var(--line);overflow:hidden;display:grid;place-items:center}.preview img{width:100%;height:100%;object-fit:contain}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:13px}.kv dt{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding-top:3px}.kv dd{margin:0;word-break:break-word}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);background:var(--cobalt-deep);border-top:1.5px solid var(--line-soft);padding-bottom:var(--safe-b);z-index:20}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:58px;text-decoration:none;color:var(--muted);font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase}.bottom-nav a.active{color:#fff}.bottom-nav a svg{width:22px;height:22px}.frame{width:100%;background:#fff;border:1.5px solid var(--line)}.frame.tall{height:70vh}.report-review .pdf-frame{height:calc(100vh - 230px);min-height:480px;display:block}@media (max-width: 900px){.report-review .pdf-frame{height:70vh;min-height:0}}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#04102cc7;display:grid;place-items:center;padding:16px;z-index:50}.modal{width:100%;max-width:520px;background:var(--cobalt);border:1.5px solid var(--line);padding:20px 16px 16px;position:relative;max-height:92vh;overflow:auto}.modal .tab{position:absolute;top:-8px;left:10px;padding:0 6px;background:var(--cobalt);font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase}.stamp-box{border:2px solid var(--amber);padding:12px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;line-height:1.6;color:var(--amber);white-space:pre-wrap}.toast{position:fixed;left:50%;bottom:calc(80px + var(--safe-b));transform:translate(-50%);background:#fff;color:var(--cobalt);font-weight:600;padding:10px 14px;z-index:60;border:1.5px solid var(--cobalt);max-width:calc(100% - 32px)}.toast.err{background:var(--amber)}.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px 16px}.login .panel{width:100%;max-width:400px;padding:24px 18px 18px}.brand{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;font-size:12px}.brand b{font-family:var(--ui);font-size:30px;letter-spacing:-.02em;display:block;text-transform:none}.eng{min-height:100vh;display:flex;flex-direction:column}.topnav{display:flex;align-items:center;gap:4px;padding:10px 24px;border-bottom:1.5px solid var(--line-soft);background:var(--cobalt-deep);position:sticky;top:0;z-index:10}.topnav .brand{margin-right:18px}.topnav .brand b{font-size:18px;display:inline;margin-left:8px}.topnav a{padding:0 12px;min-height:44px;display:inline-flex;align-items:center;text-decoration:none;color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;border-bottom:2px solid transparent}.topnav a.active{color:#fff;border-bottom-color:var(--amber)}.topnav .spacer{flex:1}.eng-main{padding:22px 24px calc(24px + var(--safe-b));display:flex;flex-direction:column;gap:18px;max-width:1480px;width:100%;margin:0 auto}.eng-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.cols{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.cols.wide-left{grid-template-columns:1.4fr 1fr}.cols.wide-right{grid-template-columns:1fr 1.6fr}.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}@media (max-width: 900px){.cols,.cols.wide-left,.cols.wide-right,.cols3{grid-template-columns:1fr}}.paper{background:var(--paper);color:var(--paper-ink);border:1.5px solid #fff;padding:16px;position:relative;margin-top:8px}.paper>.tab{position:absolute;top:-8px;left:10px;padding:0 6px;background:#fff;color:var(--paper-ink);font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;line-height:14px}.paper .muted{color:var(--paper-muted)}.paper .input,.paper .textarea,.paper .select{background:#f5f8ff;color:var(--paper-ink);border-color:var(--paper-line)}.paper .input:focus,.paper .textarea:focus{border-color:var(--cobalt)}.paper .btn{border-color:var(--cobalt);color:var(--cobalt)}.paper .btn.primary{background:var(--cobalt);color:#fff}.paper .btn.mint{border-color:#11925c;color:#11925c}.paper .btn.red{border-color:#c23b3b;color:#c23b3b}.paper .btn.amber{border-color:#b97e00;color:#b97e00}.paper .chip{border-color:var(--paper-line);color:var(--paper-ink)}.paper .chip.on{background:var(--cobalt);color:#fff;border-color:var(--cobalt)}.paper .status-pending{color:#b97e00}.paper .status-approved{color:#11925c}.paper .status-denied{color:#c23b3b}.paper .status-draft{color:var(--paper-muted)}.paper .status-submitted{color:#b97e00}.paper .status-stamped,.paper .tag.ok{color:#11925c}.paper .tag.q{color:#b97e00}.paper .thumb{border-color:var(--paper-line);background:#e9eef9}.paper .kv dt,.paper .empty{color:var(--paper-muted)}.paper .stamp-box{color:#8a5d00;border-color:#b97e00}table.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{text-align:left;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--paper-muted);padding:8px 10px;border-bottom:1.5px solid var(--paper-line)}.tbl td{padding:10px;border-bottom:1px solid var(--paper-line);vertical-align:top}.tbl tr.click{cursor:pointer}.tbl tr.click:hover{background:#f0f4ff}.tbl tr.sel{background:#e8eefc}.tbl .mono{font-size:12px}.queue-list{display:flex;flex-direction:column}.queue-item{display:flex;flex-direction:column;gap:4px;padding:12px 10px;border-bottom:1px solid var(--paper-line);cursor:pointer}.queue-item:hover{background:#f0f4ff}.queue-item.sel{background:#e8eefc;box-shadow:inset 3px 0 0 var(--cobalt)}.queue-item .t{font-weight:600}.queue-item .m{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--paper-muted);display:flex;gap:12px}.stream{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.tpl-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--paper-line)}.tpl-row .k{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;flex:1}.check{display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-size:14px}.check input{width:20px;height:20px;margin:0;accent-color:var(--cobalt)}.seg{display:inline-flex;border:1.5px solid var(--cobalt)}.seg button{min-width:48px;min-height:44px;border:0;background:transparent;color:var(--cobalt);font-weight:600;cursor:pointer}.seg button.on{background:var(--cobalt);color:#fff}.panel.red{border-color:var(--red)}.panel.red>.tab{color:var(--red)}.error-panel{word-break:break-word}.error-panel h2{font-size:18px}.error-panel .error-msg{font-size:15px;font-weight:600;color:var(--amber);white-space:pre-wrap}.error-host{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#04102cd9;display:grid;place-items:start center;padding:calc(24px + var(--safe-t)) 16px calc(24px + var(--safe-b));overflow:auto}.error-host .error-panel{width:100%;max-width:560px;background:var(--cobalt)}.stack-trace{margin:0;padding:10px;max-height:240px;overflow:auto;font-family:var(--mono);font-size:11px;line-height:1.45;white-space:pre-wrap;word-break:break-word;background:#00000040;border:1px solid var(--line-soft);color:var(--ink);text-transform:none;letter-spacing:0}.paper .stack-trace{background:#f5f8ff;border-color:var(--paper-line);color:var(--paper-ink)}details>summary{cursor:pointer;list-style:none}details>summary::-webkit-details-marker{display:none}details>summary:before{content:"▸ "}details[open]>summary:before{content:"▾ "}.error-meta,.toast-meta{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:none;opacity:.8}.toast{display:flex;flex-direction:column;gap:2px;align-items:flex-start}.toast .toast-meta{color:var(--cobalt-deep)}.link-btn{background:none;border:0;padding:0 0 0 10px;min-height:0;color:var(--ink);font:inherit;font-size:14px;font-weight:600;text-decoration:underline;cursor:pointer}.paper .link-btn{color:var(--cobalt)}.field-error{display:block;color:var(--amber);font-size:13px;margin-top:2px}.paper .field-error{color:#b97e00}.input.invalid,.textarea.invalid{border-color:var(--amber)}.paper .input.invalid,.paper .textarea.invalid{border-color:#b97e00}.note{padding:10px 12px;border:1.5px solid var(--line-soft);font-size:13px;line-height:1.4}.note.amber{border-color:var(--amber);color:var(--amber)}.note.amber a{color:inherit}.paper .note.amber{color:#8a5d00}.img-missing{display:grid;place-items:center;align-content:center;gap:4px;width:100%;height:100%;min-height:56px;aspect-ratio:inherit;background:var(--cobalt-deep);color:var(--muted);font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;text-align:center}.preview .img-missing{aspect-ratio:auto}.paper .img-missing{background:#e9eef9;color:var(--paper-muted)}.thumb.failed{border-color:var(--red)}.thumb .queued.err{color:var(--red);background:#5a0a0a59}.tag.red{color:var(--red)}.paper .tag.red{color:#c23b3b}.frame-fallback{display:grid;place-items:center;background:var(--cobalt-deep);color:var(--ink);overflow:auto}.paper .frame-fallback{background:#f5f8ff;color:var(--paper-ink)}.tbl-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.login-foot{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:18px;text-align:center}.login-foot .seed{font-size:12px;color:var(--muted);line-height:1.5}.login-foot .seed b{color:var(--ink);font-weight:600}.login-foot .seed button{background:none;border:0;padding:0;color:var(--ink);font:inherit;text-decoration:underline;cursor:pointer;min-height:32px}.login{display:flex;flex-direction:column;align-items:center;justify-content:center}.login .brand b{font-size:28px}.login .panel{max-width:400px}.sign-out{color:var(--muted)}.sign-out:active{color:var(--ink)}.diag h1{font-size:22px}.diag .log-item{align-items:start}.diag .log-item .d{word-break:break-word;min-width:0}.diag .kv{grid-template-columns:minmax(80px,auto) 1fr}.diag .kv dd{min-width:0;overflow-wrap:anywhere}.phone,.phone>*,.panel,.modal,.log-item,.kv dd,.sheet-head .title,.stat .sub{min-width:0;max-width:100%}.sheet-head .title,.log-item .d,.stats .sub,.help{overflow-wrap:anywhere}.toast{max-width:calc(100vw - 32px)}.stats .num{font-size:40px}@media (max-width: 380px){.stats .num{font-size:34px}.btn{font-size:15px;padding:0 14px}.actions{flex-wrap:wrap}.actions .btn{flex:1 1 140px}.pgrid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 640px){.eng-main{padding:16px}.topnav{padding:6px 10px;overflow-x:auto}.tbl-wrap .tbl{min-width:640px}}.update-banner{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top));background:var(--amber);color:var(--cobalt);font-weight:500;font-size:14px}.update-banner .btn{flex:none}
