:root{--bg: #091723;--bg-soft: #0f2336;--panel: #10283d;--panel-alt: #15344e;--text: #e9f5ff;--muted: #96b8d4;--accent: #3ad3a8;--accent-2: #27a8d1;--danger: #f87171;--warning: #fbbf24;--ok: #22c55e;--border: rgba(233, 245, 255, .16);--shadow: 0 18px 40px rgba(0, 0, 0, .34);--radius: 12px;font-family:IBM Plex Sans,Segoe UI,Tahoma,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--text);background:radial-gradient(1200px 800px at 15% -10%,#184367 0%,transparent 55%),radial-gradient(1200px 800px at 120% 20%,#155a56 0%,transparent 48%),linear-gradient(180deg,#07131f 0%,var(--bg) 70%)}a{color:inherit}.app{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#10283df5,#091723d6);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px)}.topbar-right{display:flex;align-items:center;gap:10px}.brand{font-size:1.1rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.nav{display:flex;gap:12px}.nav a{padding:8px 10px;border-radius:8px;text-decoration:none}.nav a:hover{background:#ffffff17}.topbar-user{font-size:.84rem;color:var(--muted);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-logout{padding:6px 10px;font-size:.82rem}.main{flex:1;padding:16px;min-height:0;overflow:hidden}.card{background:linear-gradient(180deg,#10283df0,#0c1e2edb);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.muted{color:var(--muted)}.btn,.tab,.tree-btn{border:1px solid var(--border);background:#ffffff14;color:var(--text);border-radius:8px;padding:8px 12px;cursor:pointer;font-size:.9rem}.btn:disabled,.tab:disabled,.tree-btn:disabled{cursor:not-allowed;opacity:.55}.tab.active{background:linear-gradient(180deg,#3ad3a859,#27a8d159);border-color:#3ad3a8cc}.btn{background:linear-gradient(180deg,#3ad3a84d,#27a8d133)}.btn-link{color:var(--accent);text-decoration:none}.btn-link:hover{text-decoration:underline}.auth-shell{min-height:100%;display:grid;place-items:center;padding:24px}.auth-card{width:min(440px,100%);padding:18px;display:grid;gap:10px}.auth-card h2{margin:0}.auth-field{display:grid;gap:6px;font-size:.86rem;color:var(--muted)}.auth-field input{border:1px solid var(--border);border-radius:8px;background:#00000042;color:var(--text);padding:8px 10px}.upload-page{display:grid;grid-template-columns:1fr;gap:16px}.upload-controls,.upload-list{padding:16px}.upload-controls h2,.upload-list h3{margin-top:0}.mode-ribbon{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.dropzone{border:2px dashed rgba(233,245,255,.3);border-radius:12px;padding:18px;text-align:center;margin-bottom:12px;background:#ffffff08}.dropzone.active{border-color:var(--accent);background:#3ad3a814}.dropzone input[type=file]{margin-top:8px}.selected-files{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.file-pill{border:1px solid var(--border);border-radius:999px;padding:4px 10px;background:#ffffff14}.error{margin-top:8px;color:var(--danger)}.status-list{display:flex;flex-direction:column;gap:8px}.status-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(120px,160px) minmax(180px,1fr) auto;gap:10px;align-items:center;border:1px solid var(--border);border-radius:10px;padding:10px;background:#ffffff08}.badge{display:inline-block;border-radius:999px;padding:4px 8px;font-size:.78rem;font-weight:600;letter-spacing:.02em}.badge-running{background:#27a8d138}.badge-done{background:#22c55e38}.badge-failed{background:#f8717138}.workspace{display:flex;flex-direction:column;gap:12px;height:calc(100vh - 92px);min-height:0}.filters{padding:12px}.tab-row{display:flex;flex-wrap:wrap;gap:8px}.tab-row+.tab-row{margin-top:8px}.workspace-grid{flex:1;display:grid;gap:12px;grid-template-columns:260px 320px minmax(0,1fr);height:100%;min-height:0;overflow:hidden}.pane{padding:12px;min-height:0;display:flex;flex-direction:column;overflow:hidden}.pane h3{margin:0 0 10px}.scroll-list{overflow:auto;display:flex;flex-direction:column;gap:8px;flex:1;min-height:0}.list-item{width:100%;text-align:left;border:1px solid var(--border);border-radius:10px;padding:10px;background:#ffffff08;color:var(--text);cursor:pointer}.list-item.active{border-color:#3ad3a8b3;background:#3ad3a81f}.list-title{font-weight:600}.list-meta{font-size:.82rem;color:var(--muted);display:flex;gap:8px;align-items:center}.mode-review{background:#27a8d140}.mode-ready{background:#fbbf2440}.mode-reference{background:#22c55e40}.details-pane{display:flex;flex-direction:column;min-width:0;overflow:hidden}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px}.details-split{flex:1;min-height:0;display:grid;gap:10px;grid-template-columns:minmax(340px,48%) minmax(0,1fr);overflow:hidden}.tree-pane,.image-pane{min-height:0;border:1px solid var(--border);border-radius:10px;background:#ffffff08}.tree-pane{overflow:hidden;display:flex}.image-pane{overflow:auto;padding:10px;display:block;overscroll-behavior:contain}.tree-editor{padding:10px}.tree-editor-v2{display:flex;flex-direction:column;width:100%;height:100%;min-height:0;overflow:hidden}.tree-structure{flex:0 0 40%;min-height:0;overflow:auto;padding:10px;border-bottom:1px solid var(--border)}.tree-details{flex:0 0 60%;min-height:0;overflow:auto;padding:10px;background:#0000001f}.tree-node{margin-bottom:4px}.tree-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:8px}.tree-node-row{cursor:pointer;margin-bottom:3px}.tree-row.selected{background:#27a8d133}.tree-key{min-width:110px;font-size:.84rem;color:#cce9ff}.tree-meta{color:var(--muted);font-size:.8rem}.area-pill{font-size:.72rem;border-radius:999px;padding:2px 8px;border:1px solid transparent}.area-pill.set{background:#22c55e2e;border-color:#22c55e61;color:#b5f5c8}.area-pill.none{background:#f8717124;border-color:#f8717166;color:#fecaca}.tree-label{width:100%;display:flex;align-items:center;gap:8px}.tree-label input{flex:1;min-width:60px;border:1px solid var(--border);border-radius:6px;background:#00000038;color:var(--text);padding:6px}.tree-actions{margin-bottom:6px}.tree-btn{padding:4px 8px;font-size:.75rem}.tree-btn.danger{border-color:#f8717180;color:#fecaca}.detail-header{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--muted);margin-bottom:10px}.detail-header code{font-size:.8rem;color:#d7eeff;background:#0f172a8c;border:1px solid var(--border);border-radius:6px;padding:2px 6px}.detail-grid{display:grid;grid-template-columns:1fr;gap:8px}.detail-field{display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:#cae4f7}.detail-field input{border:1px solid var(--border);border-radius:6px;background:#00000042;color:var(--text);padding:6px}.detail-readonly{border:1px dashed var(--border);border-radius:6px;padding:6px;color:#d9ecfb;background:#020a1259}.detail-area{margin-top:12px;padding-top:10px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:10px}.tree-pane-stack{width:100%;min-height:0;display:flex;flex-direction:column;gap:8px}.analysis-panel{border:1px solid var(--border);border-radius:10px;background:#0003;padding:10px;display:flex;flex-direction:column;gap:8px;flex:0 0 auto}.analysis-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.analysis-head h4{margin:0;font-size:.92rem}.analysis-head-actions{display:inline-flex;align-items:center;gap:8px}.analysis-toggle{padding:4px 8px;font-size:.74rem}.analysis-ok{background:#22c55e3d}.analysis-warn{background:#fbbf243d}.analysis-error{background:#f871713d}.analysis-stats{display:flex;gap:8px;flex-wrap:wrap;font-size:.78rem}.analysis-stat{padding:3px 8px;border-radius:999px;border:1px solid var(--border)}.analysis-stat.err{color:#fecaca}.analysis-stat.warn{color:#fde68a}.analysis-stat.info{color:#bfdbfe}.analysis-summary{font-size:.8rem;color:var(--muted)}.analysis-collapsed{display:flex;flex-direction:column;gap:6px}.analysis-stats.compact{margin-top:2px}.analysis-list{max-height:150px;overflow:auto;display:flex;flex-direction:column;gap:6px}.analysis-issue{border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-size:.78rem}.analysis-issue-id{font-family:IBM Plex Mono,Consolas,monospace;color:#d5e9fb;margin-bottom:3px}.analysis-issue.severity-error{border-color:#f8717173}.analysis-issue.severity-warn{border-color:#fbbf2473}.analysis-issue.severity-info{border-color:#60a5fa73}.tree-editor-host{flex:1;min-height:0;overflow:hidden}.area-status{font-size:.84rem;color:var(--muted);display:flex;align-items:center;gap:8px}.btn.active-draw{border-color:#fbbf24bf;background:linear-gradient(180deg,#fbbf2457,#f59e0b3d)}.invoice-image-wrap{position:relative;display:block;width:min(100%,1200px);max-width:100%;min-width:320px}.invoice-image-wrap img{width:100%;height:auto;display:block;border-radius:8px;border:1px solid var(--border)}.invoice-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:all;touch-action:none;user-select:none;-webkit-user-select:none}.invoice-overlay.drawing{cursor:crosshair}.overlay-box-group{pointer-events:all;cursor:pointer}.overlay-box-group text{fill:#0f172a;font-size:39px;font-weight:700;paint-order:stroke;stroke:#ffffffd9;stroke-width:2px;pointer-events:none}.overlay-handle{fill:#f97316;stroke:#fff7ed;stroke-width:2px}.overlay-handle:hover{fill:#fb923c}.overlay-handle-nw,.overlay-handle-se{cursor:nwse-resize}.overlay-handle-ne,.overlay-handle-sw{cursor:nesw-resize}.overlay-preview{fill:#0ea5e92e;stroke:#0ea5e9;stroke-width:2px;stroke-dasharray:8 4}.toggle{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.86rem}@media (max-width: 1360px){.workspace-grid{grid-template-columns:220px 280px minmax(0,1fr)}}@media (max-width: 1080px){.workspace-grid,.details-split,.status-row{grid-template-columns:1fr}}
