:root{--font-body: "Roboto", system-ui, -apple-system, "Segoe UI", sans-serif;--font-head: "Montserrat", "Roboto", system-ui, sans-serif;--red: #e63138;--red-dark: #c4262c;--red-tint: #fdecec;--navy: #0b4365;--navy-dark: #082f47;--navy-tint: #e8eef4;--ink: #16161d;--ink-2: #33373d;--muted: #666666;--muted-2: #76768b;--bg: #f2f2f2;--panel: #ffffff;--line: #e2e2e8;--soft: #f0f0f5;--ok: #178a4c;--ok-tint: #e7f5ec;--warn: #a8690f;--warn-tint: #fff4dc;--err: #b91c1c;--err-tint: #fde8e8;--radius-btn: 5px 50px 50px 50px;font-family:var(--font-body);color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:14px;line-height:1.45}h1,h2,h3{font-family:var(--font-head);color:var(--ink)}.layout{display:grid;grid-template-columns:340px 1fr;grid-template-rows:64px 1fr;grid-template-areas:"header header" "aside main";height:100vh}header{grid-area:header;display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:var(--panel);border-top:4px solid var(--red);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:14px}.brand img{height:30px;width:auto;display:block}.brand-sep{width:1px;height:26px;background:var(--line)}header h1{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--navy);margin:0}.status{display:flex;gap:8px}.pill{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink-2)}.pill.ok{border-color:var(--ok);color:var(--ok)}.pill.off{color:var(--muted-2);text-decoration:line-through}.pill.dry{background:var(--warn-tint);border-color:var(--warn);color:var(--warn)}.pill.live{background:var(--red);border-color:var(--red);color:#fff}aside{grid-area:aside;overflow-y:auto;padding:16px;background:var(--panel);border-right:1px solid var(--line)}main{grid-area:main;overflow-y:auto;padding:20px}.dropzone{border:2px dashed #c9c9d2;border-radius:10px;padding:24px 16px;text-align:center;cursor:pointer;display:flex;flex-direction:column;gap:4px;background:#fafafa;margin-bottom:14px;transition:border-color .15s,background .15s}.dropzone strong{font-family:var(--font-head);font-weight:700;color:var(--ink)}.dropzone span{font-size:12px;color:var(--muted)}.dropzone.over{border-color:var(--red);background:var(--red-tint)}.dropzone.busy{opacity:.6;pointer-events:none}.queue h3{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--red);margin:16px 0 6px;display:flex;align-items:center;gap:8px}.queue .count{background:var(--soft);color:var(--ink-2);border-radius:999px;padding:0 7px;font-size:11px;font-family:var(--font-body);letter-spacing:0}.queue ul{list-style:none;margin:0;padding:0}.queue li{padding:10px 12px;border-radius:8px;cursor:pointer;border:1px solid transparent}.queue li:hover{background:var(--soft)}.queue li.selected{background:var(--navy-tint);border-color:#c7d6e3}.queue .title{font-weight:500;font-size:14px;color:var(--ink)}.queue .sub{font-size:12px;color:var(--muted);margin-top:2px}.badges{display:flex;gap:6px;margin-top:6px}.badge{font-size:11px;padding:1px 7px;border-radius:999px}.badge.err{background:var(--err-tint);color:var(--err)}.badge.warn{background:var(--warn-tint);color:var(--warn)}.status-extracting .title:after,.status-queued .title:after{content:" …";color:var(--muted)}.empty{color:var(--muted);padding:60px 0;text-align:center;font-family:var(--font-head)}.muted{color:var(--muted)}.debug{font-size:12px;background:var(--panel);padding:12px;border-radius:8px;border:1px solid var(--line)}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:8px;font-size:13px;cursor:pointer;max-width:80vw}.review{display:grid;grid-template-columns:minmax(360px,42%) 1fr;gap:16px;align-items:start}.doc{position:sticky;top:0}.doc iframe,.doc img{width:100%;height:calc(100vh - 104px);border:1px solid var(--line);border-radius:8px;background:#fff;object-fit:contain}.form{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px 20px;min-width:0}.form-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.form-head h2{font-size:15px;font-weight:700;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.form h3{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--navy);margin:18px 0 8px}.status-pill{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--soft);color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.s-review{background:var(--navy-tint);color:var(--navy)}.s-submitted{background:var(--ok-tint);color:var(--ok)}.s-rejected{background:var(--soft);color:var(--muted)}.s-error{background:var(--err-tint);color:var(--err)}.flags{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:4px}.flag{font-size:13px;padding:7px 10px;border-radius:6px;border-left:3px solid}.flag.error{background:var(--err-tint);border-color:var(--err)}.flag.warn{background:var(--warn-tint);border-color:var(--warn)}.flag.info{background:var(--navy-tint);border-color:var(--navy);color:var(--navy-dark)}.flag.ok{background:var(--ok-tint);border-color:var(--ok);color:var(--ok);margin-bottom:12px}.flag .link{margin-left:8px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field.span2{grid-column:span 2}.field label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.field small{font-size:11px;color:var(--muted)}.field label.check{display:flex;gap:6px;align-items:center;font-size:12px;font-weight:400;text-transform:none;letter-spacing:0;color:var(--ink-2);margin-top:2px}.field label.check input{width:auto}input,select,textarea{font:inherit;font-size:13px;padding:7px 9px;border:1px solid #cfcfd6;border-radius:6px;background:#fff;width:100%;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid var(--navy-tint);border-color:var(--navy)}input:disabled,select:disabled,textarea:disabled{background:var(--soft);color:#555}textarea{resize:vertical}.combo{position:relative}.combo.invalid input{border-color:var(--red);background:#fff7f7}.combo-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:16px;line-height:1;padding:0 4px}.combo-list{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 2px);max-height:260px;overflow-y:auto;margin:0;padding:4px 0;list-style:none;background:#fff;border:1px solid var(--line);border-radius:6px;box-shadow:0 8px 24px #0000001a}.combo-list li{display:flex;gap:8px;align-items:baseline;padding:6px 10px;font-size:13px;cursor:pointer}.combo-list li:hover,.combo-list li.current{background:var(--navy-tint)}.combo-list .label{flex:0 1 auto}.combo-list .detail{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}.combo-list .score{color:var(--ok);font-size:11px;font-variant-numeric:tabular-nums}.combo-list .none{color:var(--muted);cursor:default}.lines-wrap{overflow-x:auto}table.lines{width:100%;border-collapse:collapse;font-size:13px}table.lines th{text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:4px 6px;border-bottom:2px solid var(--line)}table.lines td{padding:6px;vertical-align:top;border-bottom:1px solid #ececf1}table.lines td.idx{color:var(--muted);width:24px;padding-top:12px}table.lines th.num,table.lines td.num{width:92px}table.lines td.num input{text-align:right}table.lines tr.flagged td{background:#fffaf0}table.lines td:nth-child(2){min-width:200px}table.lines td:nth-child(3){min-width:200px}table.lines td:nth-child(4){min-width:150px}.line-notes{font-size:11px;color:var(--muted);margin-top:3px}.conf{font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;white-space:nowrap}.conf.good{background:var(--ok-tint);color:var(--ok)}.conf.mid{background:var(--warn-tint);color:var(--warn)}.conf.bad{background:var(--err-tint);color:var(--err)}.totals{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px;padding:12px;background:var(--soft);border-radius:8px}.totals>div{display:flex;flex-direction:column;gap:4px}.totals span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.totals strong{font-family:var(--font-head);font-size:16px;font-variant-numeric:tabular-nums}.totals small{font-size:11px;color:var(--muted)}.totals .off strong{color:var(--err)}.totals .ok strong{color:var(--ok)}button{font:inherit;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:9px 18px;border-radius:var(--radius-btn);border:1px solid #cfcfd6;background:#fff;color:var(--ink-2);cursor:pointer;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:var(--soft);border-color:#b8b8c2}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--red);border-color:var(--red);color:#fff}button.primary:hover:not(:disabled){background:var(--red-dark);border-color:var(--red-dark)}button.danger{color:var(--err);margin-left:auto}button.link{border:0;background:transparent;color:var(--navy);padding:4px 0;border-radius:0;text-transform:none;letter-spacing:0;font-weight:500;font-size:13px}button.link:hover:not(:disabled){background:transparent;text-decoration:underline}button.icon{border:0;background:transparent;color:var(--muted);font-size:16px;padding:4px 6px;border-radius:4px;text-transform:none;letter-spacing:0}.actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}.result{margin-top:16px;padding:12px;border-radius:8px}.result.dry{background:var(--warn-tint);border:1px solid #ead9a8}.result.live{background:var(--ok-tint);border:1px solid #b9e0c6}.result h3{margin:0 0 8px;color:inherit;text-transform:none;letter-spacing:0;font-size:13px}.result a{color:var(--navy);font-weight:700}.result pre,.ai pre{font-size:11px;background:#fff;padding:10px;border-radius:6px;border:1px solid var(--line);overflow-x:auto;max-height:360px}.ai{margin-top:14px}.ai .muted{font-size:12px;margin:6px 0}.issues{font-size:13px;margin:6px 0;padding-left:18px}code{font-size:12px;background:var(--soft);padding:1px 5px;border-radius:4px}.syncbar{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.syncbar small{font-size:11px}@media(max-width:1100px){.review{grid-template-columns:1fr}.doc{position:static}.doc iframe,.doc img{height:60vh}}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login{width:360px;background:var(--panel);border:1px solid var(--line);border-top:4px solid var(--red);border-radius:10px;padding:28px;display:flex;flex-direction:column;gap:10px}.login img{height:36px;width:auto;align-self:flex-start;margin-bottom:4px}.login h1{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--navy);margin:0 0 8px}.login label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.login button{margin-top:6px;align-self:flex-start}.status .link{padding:4px 6px;font-size:12px}.login .gsi{min-height:44px}.login .or{text-align:center;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:2px 0}.login .pwform{display:flex;flex-direction:column;gap:8px}nav.tabs{display:flex;gap:2px;margin-left:12px}nav.tabs button{border:0;background:transparent;border-radius:0;padding:8px 12px;border-bottom:2px solid transparent;color:var(--muted);font-size:12px}nav.tabs button:hover:not(:disabled){background:transparent;color:var(--ink)}nav.tabs button.active{color:var(--red);border-bottom-color:var(--red)}.status{align-items:center}.status .user{font-size:12px;color:var(--muted);margin-left:8px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layout-admin{grid-template-columns:1fr;grid-template-areas:"header" "main"}.admin{max-width:920px;margin:0 auto}.admin-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.admin-head h2{margin:0;font-size:18px}.admin-head .actions{margin-top:0}.small{font-size:12px}.admin-group{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-top:14px}.admin-group-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px}.admin-group h3{margin:0}.testrow{display:flex;align-items:center;gap:10px;font-size:12px}.testres.ok{color:var(--ok)}.testres.bad{color:var(--err)}.setting{display:grid;grid-template-columns:240px 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--soft);align-items:start}.setting-label{display:flex;flex-direction:column;gap:2px}.setting-label label{font-size:13px;font-weight:500;color:var(--ink)}.src{font-size:11px;color:var(--muted)}.src-db{color:var(--navy)}.setting-control{display:flex;flex-direction:column;gap:4px}.setting-control .help{font-size:11px;color:var(--muted)}.secret-row{display:flex;gap:8px;align-items:center}.secret-row .mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:var(--muted-2);white-space:nowrap;min-width:96px}.secret-row input{flex:1}.setting-control label.check{display:flex;gap:6px;align-items:center;font-size:13px}.setting-control label.check input{width:auto}table.users{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:10px}table.users th{text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:4px 6px;border-bottom:2px solid var(--line)}table.users td{padding:6px;border-bottom:1px solid #ececf1;vertical-align:middle}table.users select{width:auto}.you{color:var(--muted);font-size:12px}.adduser{display:flex;gap:8px;align-items:center}.adduser input{max-width:300px}.adduser select{width:auto}@media(max-width:760px){.setting{grid-template-columns:1fr}}.login.wide{width:520px}.setup{display:flex;flex-direction:column;gap:8px}.setup h2{font-size:15px;margin:4px 0 0}.setup p,.setup li{font-size:13px;line-height:1.5}.setup ol{margin:0;padding-left:20px}.setup code{word-break:break-all}.setup a{color:var(--navy);font-weight:500}.pwchange{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.pwchange input{max-width:260px}table.users td .link{margin-left:6px;font-size:12px;padding:0}.offline{position:fixed;top:64px;left:0;right:0;text-align:center;background:var(--warn-tint);color:var(--warn);font-size:12px;font-weight:700;padding:4px;border-bottom:1px solid #ead9a8;z-index:30}
