.gridscroll{overflow:auto;max-height:calc(100vh - 300px);min-height:240px;overscroll-behavior:contain}.compgrid{border-collapse:separate;border-spacing:0;font-size:12.5px;width:max-content;min-width:100%;background:var(--card)}.compgrid th,.compgrid td{border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);padding:0}.compgrid thead th{position:sticky;top:0;z-index:3;background:var(--card-sunk);border-bottom:1px solid var(--line);padding:7px 9px;font-size:11.5px;font-weight:650;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-muted);text-align:left;white-space:nowrap}.compgrid thead th.subj{color:var(--ink);background:var(--coral-wash);border-bottom-color:var(--coral)}.compgrid .rowlabel{position:sticky;left:0;z-index:2;background:var(--card-sunk);border-right:1px solid var(--line);padding:5px 10px;text-align:left;font-weight:600;font-size:12px;color:var(--ink);white-space:nowrap;min-width:132px}.compgrid thead th.rowlabel{z-index:4}.compgrid td{background:var(--card)}.compgrid td.subjcell{background:#fffdf8}.cellwrap{position:relative;display:flex;align-items:stretch}.cellinput,.cellarea{width:100%;min-width:132px;font:inherit;font-size:12.5px;color:var(--ink);background:transparent;border:none;padding:5px 9px;border-radius:0}.cellinput:focus,.cellarea:focus{outline:2px solid var(--coral);outline-offset:-2px;background:#fff;position:relative;z-index:1}.cellarea{min-width:240px;min-height:54px;resize:vertical;line-height:1.35}.compgrid td.flagged{background:var(--coral-wash);box-shadow:inset 3px 0 0 var(--coral)}.compgrid td.flagged.subjcell{background:var(--coral-wash)}.compgrid td.edited{background:var(--edited-wash)}.compgrid td.edited .cellinput{font-weight:600;color:var(--edited)}.compgrid td.flagged.edited{background:var(--edited-wash)}.clearedit{flex-shrink:0;background:none;border:none;color:var(--edited);cursor:pointer;font-size:13px;line-height:1;padding:0 6px;opacity:.65}.clearedit:hover{opacity:1}.compgrid .empty{display:block;padding:5px 9px;color:var(--ink-faint)}.compgrid tr.remarks td{vertical-align:top}.flagbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px var(--pad);background:var(--coral-wash);border:1px solid var(--coral-wash-deep);border-left:3px solid var(--coral);border-radius:var(--radius-sm)}.flagbar .count{font-weight:700;color:var(--coral-ink);font-variant-numeric:tabular-nums}.flagbar .reason{color:var(--ink);font-size:12.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--ink-muted);align-items:center}.legend .swatch{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}:root{--cream: #E7DFC9;--page: #E7DFC9;--card: #FCFBF7;--card-sunk: #F4F1E8;--line: #DED7C4;--line-soft: #EDE9DC;--ink: #222222;--ink-muted: #6B6B6B;--ink-faint: #9A958A;--coral: #C65A1E;--coral-ink: #9E4212;--coral-fill: #B04E15;--coral-wash: #F7E8DC;--coral-wash-deep: #F0D6C2;--ok: #2F6B4F;--ok-wash: #E4EFE8;--warn: #8A6212;--warn-wash: #F6EEDA;--edited: #2C5D8A;--edited-wash: #E5EEF6;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--pad: 16px;--pad-sm: 10px;--pad-xs: 6px;--radius: 6px;--radius-sm: 4px;--shadow: 0 1px 2px rgba(34, 34, 34, .06), 0 4px 12px rgba(34, 34, 34, .05);--shadow-lift: 0 2px 6px rgba(34, 34, 34, .1), 0 12px 28px rgba(34, 34, 34, .1)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--page);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.01em}h1{font-size:22px}h2{font-size:17px}h3{font-size:14px}a{color:var(--coral-ink);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--coral);outline-offset:2px;border-radius:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.app{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:20px;padding:0 20px;height:52px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40}.topbar .brand{display:flex;align-items:baseline;gap:8px;font-weight:700;font-size:15px;letter-spacing:-.02em;color:var(--ink)}.topbar .brand .mark{display:inline-block;width:9px;height:9px;border-radius:2px;background:var(--coral);transform:rotate(45deg)}.topbar nav{display:flex;gap:2px;margin-left:8px}.topbar nav a{padding:6px 10px;border-radius:var(--radius-sm);color:var(--ink-muted);font-weight:500;font-size:13px}.topbar nav a:hover{background:var(--card-sunk);color:var(--ink);text-decoration:none}.topbar nav a.active{color:var(--ink);background:var(--coral-wash)}.topbar .spacer{flex:1}.topbar .who{font-size:12.5px;color:var(--ink-muted);text-align:right;line-height:1.25}.topbar .who strong{display:block;color:var(--ink);font-weight:600}.page{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:22px 20px 72px}.page.wide{max-width:none;padding-left:16px;padding-right:16px}.page-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:18px;padding-bottom:12px;border-bottom:2px solid var(--coral)}.page-head .titles{flex:1;min-width:0}.page-head .sub{color:var(--ink-muted);font-size:13px;margin-top:3px}.page-head .actions{display:flex;gap:8px;align-items:center;flex-shrink:0}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:10px}.grow{flex:1;min-width:0}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card>.card-head{display:flex;align-items:center;gap:10px;padding:11px var(--pad);border-bottom:1px solid var(--line-soft)}.card>.card-head h2,.card>.card-head h3{flex:1;min-width:0}.card>.card-body{padding:var(--pad)}.card>.card-body.tight{padding:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font:inherit;font-size:13px;font-weight:600;line-height:1;padding:9px 14px;border-radius:var(--radius-sm);border:1px solid transparent;background:var(--coral-fill);color:#fff;cursor:pointer;white-space:nowrap;transition:background .12s ease,border-color .12s ease,color .12s ease}.btn:hover:not(:disabled){background:#9c450f}.btn:active:not(:disabled){background:#8b3d0d}.btn.secondary{background:var(--card);color:var(--ink);border-color:var(--line)}.btn.secondary:hover:not(:disabled){background:var(--card-sunk);border-color:var(--ink-faint)}.btn.ghost{background:transparent;color:var(--ink-muted);border-color:transparent}.btn.ghost:hover:not(:disabled){background:var(--card-sunk);color:var(--ink)}.btn.danger{background:#9b2c1f}.btn.danger:hover:not(:disabled){background:#832418}.btn.sm{padding:6px 10px;font-size:12px}.btn.block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed}.linkbtn{background:none;border:none;padding:0;font:inherit;font-size:13px;color:var(--coral-ink);cursor:pointer;text-decoration:underline}.linkbtn:hover{color:#82360e}.linkbtn.quiet{color:var(--ink-muted)}.linkbtn.quiet:hover{color:var(--ink)}.field{display:block;margin-bottom:13px}.field>.label{display:block;font-size:12px;font-weight:600;color:var(--ink-muted);margin-bottom:4px;letter-spacing:.01em}.field .hint{font-size:12px;color:var(--ink-muted);margin-top:4px}.field .err{font-size:12px;color:var(--coral-ink);margin-top:4px;font-weight:500}.input,.select,.textarea{width:100%;font:inherit;font-size:14px;color:var(--ink);padding:8px 10px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm)}.input:hover,.select:hover,.textarea:hover{border-color:var(--ink-faint)}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--coral)}.input::placeholder{color:var(--ink-faint)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:650;letter-spacing:.02em;padding:3px 8px;border-radius:999px;white-space:nowrap;background:var(--card-sunk);color:var(--ink-muted);border:1px solid var(--line-soft)}.badge.coral{background:var(--coral-wash);color:var(--coral-ink);border-color:var(--coral-wash-deep)}.badge.ok{background:var(--ok-wash);color:var(--ok);border-color:#cfe1d6}.badge.warn{background:var(--warn-wash);color:var(--warn);border-color:#e8dcbc}.badge.edit{background:var(--edited-wash);color:var(--edited);border-color:#cfdeec}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-size:11.5px;font-weight:650;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-muted);padding:8px var(--pad);border-bottom:1px solid var(--line);background:var(--card-sunk);white-space:nowrap}.table td{padding:9px var(--pad);border-bottom:1px solid var(--line-soft)}.table tbody tr:last-child td{border-bottom:none}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover{background:var(--card-sunk)}.num{font-variant-numeric:tabular-nums}.state{text-align:center;padding:40px 24px;color:var(--ink-muted)}.state .state-title{font-size:15px;font-weight:650;color:var(--ink);margin-bottom:5px}.state .state-body{font-size:13px;max-width:460px;margin:0 auto 14px}.state .state-icon{width:34px;height:34px;margin:0 auto 12px;border-radius:8px;background:var(--coral-wash);border:1px solid var(--coral-wash-deep);display:flex;align-items:center;justify-content:center;color:var(--coral-ink);font-size:17px;font-weight:700}.errorbox{background:var(--coral-wash);border:1px solid var(--coral-wash-deep);border-left:3px solid var(--coral);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;color:var(--ink)}.errorbox .what{font-weight:650;color:var(--coral-ink)}.errorbox .next{margin-top:4px;color:var(--ink-muted)}.skel{background:linear-gradient(90deg,var(--card-sunk) 25%,#EAE6DA 37%,var(--card-sunk) 63%);background-size:400% 100%;animation:skel 1.3s ease infinite;border-radius:var(--radius-sm)}@keyframes skel{0%{background-position:100% 50%}to{background-position:0 50%}}@keyframes spin{to{transform:rotate(360deg)}}.savestate{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ink-muted);white-space:nowrap}.savestate .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.savestate.saving{color:var(--warn)}.savestate.saved{color:var(--ok)}.savestate.failed{color:var(--coral-ink)}.toasts{position:fixed;right:16px;bottom:16px;z-index:100;display:flex;flex-direction:column;gap:8px;max-width:380px}.toast{background:var(--ink);color:#fff;border-radius:var(--radius);padding:10px 13px;font-size:13px;box-shadow:var(--shadow-lift);display:flex;gap:10px;align-items:flex-start}.toast.err{background:#7e2a1b}.toast .close{background:none;border:none;color:inherit;opacity:.7;cursor:pointer;font-size:15px;line-height:1;padding:0}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#2222226b;display:flex;align-items:center;justify-content:center;z-index:90;padding:20px}.dialog{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-lift);max-width:440px;width:100%;padding:20px}.dialog h2{margin-bottom:8px}.dialog p{color:var(--ink-muted);font-size:13px;margin:0 0 16px}.dialog .row{justify-content:flex-end}
