:root{--ground: #f1f2ef;--surface: #ffffff;--surface-2: #e9ebe6;--ink: #16211c;--ink-2: #4a574f;--ink-3: #7b877f;--rule: #d3d8d0;--rule-strong: #b6beb4;--accent: #1f5d4c;--accent-ink: #ffffff;--accent-soft: #dce9e2;--brass: #a9762f;--brass-soft: #f0e5d2;--flag: #b4432b;--flag-soft: #f5dfd8;--ok: #2f7d5c;--ok-soft: #dff0e6;--series-1: #0f8a62;--series-2: #c2851f;--grid: #e4e7e1;--f-ui: "Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--f-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Consolas, monospace;--r: 4px;--rail: 226px;--shadow: 0 1px 2px rgba(22, 33, 28, .06), 0 6px 20px rgba(22, 33, 28, .07)}@media (prefers-color-scheme: dark){:root{--ground: #111512;--surface: #191e1a;--surface-2: #212822;--ink: #e4e8e2;--ink-2: #aeb8af;--ink-3: #818c83;--rule: #2c342d;--rule-strong: #3e4840;--accent: #63bc99;--accent-ink: #0d1512;--accent-soft: #1d2c25;--brass: #d2a25e;--brass-soft: #2c2519;--flag: #e0765c;--flag-soft: #2e1d18;--ok: #6fbf9a;--ok-soft: #16281f;--series-1: #28996c;--series-2: #bc8a33;--grid: #2c342d;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 6px 20px rgba(0, 0, 0, .3)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--f-ui);font-size:14.5px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}input,select,textarea,button{font:inherit;color:inherit}a{color:var(--accent)}.app{display:flex;min-height:100%}.rail{width:var(--rail);flex:none;background:var(--surface);border-right:1px solid var(--rule);position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;padding-bottom:12px}.rail-brand{padding:16px 16px 14px;border-bottom:1px solid var(--rule);font-weight:700;font-size:18px;letter-spacing:-.02em;display:flex;align-items:baseline;gap:7px}.rail-brand span{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.rail-group{padding:14px 10px 2px}.rail-group>.h{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3);padding:0 8px 6px}.rail a{display:flex;align-items:center;gap:9px;padding:8px 10px;margin-bottom:1px;border-radius:var(--r);color:var(--ink-2);text-decoration:none;font-size:14px;font-weight:500}.rail a:hover{background:var(--surface-2);color:var(--ink)}.rail a.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.rail a .badge{margin-left:auto;font-family:var(--f-mono);font-size:10px;background:var(--flag);color:#fff;border-radius:9px;padding:1px 6px}.rail a.soon{opacity:.45;pointer-events:none}.rail a.soon:after{content:"soon";margin-left:auto;font-family:var(--f-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.rail-foot{margin-top:auto;padding:12px 16px 0;border-top:1px solid var(--rule)}.rail-foot .who{font-size:12.5px;font-weight:600}.rail-foot .role{font-family:var(--f-mono);font-size:10px;color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase}.content{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:none}main{flex:1;padding:20px;max-width:1320px;width:100%}@media (max-width: 900px){.rail{position:fixed;z-index:120;left:0;top:0;bottom:0;transform:translate(-100%);transition:transform .18s ease;box-shadow:var(--shadow)}.rail.open{transform:none}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a100d73;z-index:119}.topbar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:60;background:var(--surface);border-bottom:1px solid var(--rule);padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top))}.topbar .brand{font-weight:700;font-size:16px;letter-spacing:-.02em}.topbar .spacer{flex:1}main{padding:14px 14px 40px}}h1{font-size:20px;font-weight:700;letter-spacing:-.02em;margin:0 0 2px}h2{font-size:14.5px;font-weight:600;margin:0 0 9px}.sub{color:var(--ink-3);font-size:12.5px;margin:0 0 16px}.page-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px;flex-wrap:wrap}.page-head .spacer{flex:1}p{margin:0 0 10px}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);margin-bottom:12px;overflow:hidden}.card-head{padding:9px 13px;border-bottom:1px solid var(--rule);background:var(--surface-2);font-size:10.5px;font-family:var(--f-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:10px}.card-head .spacer{flex:1}.card-body{padding:13px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(138px,1fr));gap:9px;margin-bottom:14px}.tile{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);padding:11px 13px}.tile .label{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}.tile .value{font-size:20px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}.tile .foot{font-size:11.5px;color:var(--ink-3);margin-top:3px}.tile.alert{border-color:var(--flag)}.tile.alert .value{color:var(--flag)}.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font-family:var(--f-mono);font-size:9.5px;font-weight:500;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);padding:8px 12px;border-bottom:1px solid var(--rule);white-space:nowrap;position:sticky;top:0;background:var(--surface);z-index:1}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--accent)}td{padding:8px 12px;border-bottom:1px solid var(--rule);vertical-align:middle}tr:last-child td{border-bottom:0}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:var(--surface-2)}.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--f-mono);white-space:nowrap}.mono{font-family:var(--f-mono);font-size:11.5px}.muted{color:var(--ink-3)}.strong{font-weight:600}.tight{line-height:1.3}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid var(--rule);background:var(--surface)}.toolbar .search{flex:1 1 200px;min-width:160px;position:relative}.toolbar .search input{width:100%;padding:7px 10px;min-height:36px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--ground);font-size:16px}.toolbar select{padding:7px 9px;min-height:36px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface);font-size:13.5px;max-width:190px}.toolbar .count{font-family:var(--f-mono);font-size:11px;color:var(--ink-3);white-space:nowrap}.pager{display:flex;align-items:center;gap:10px;justify-content:flex-end;padding:9px 12px;border-top:1px solid var(--rule);font-family:var(--f-mono);font-size:11.5px;color:var(--ink-3)}.pager .spacer{flex:1}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip-btn{padding:5px 10px;min-height:30px;border-radius:14px;border:1px solid var(--rule-strong);background:var(--surface);font-size:12.5px;cursor:pointer;white-space:nowrap}.chip-btn.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:500}.tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--rule);margin-bottom:14px}.tabs::-webkit-scrollbar{display:none}.tabs button{flex:none;padding:9px 13px;background:none;border:0;border-bottom:2px solid transparent;color:var(--ink-2);font-size:13.5px;font-weight:500;cursor:pointer;white-space:nowrap}.tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.pill{display:inline-block;font-family:var(--f-mono);font-size:9.5px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:2px 6px;border-radius:2px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.pill.accent{background:var(--accent-soft);color:var(--accent)}.pill.brass{background:var(--brass-soft);color:var(--brass)}.pill.flag{background:var(--flag-soft);color:var(--flag)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 13px;min-height:38px;border-radius:var(--r);border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink);font-size:13.5px;font-weight:500;cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.sm{padding:4px 9px;min-height:30px;font-size:12.5px}.btn-row{display:flex;gap:7px;flex-wrap:wrap}.btn.icon{padding:6px 9px;min-height:34px}.field{margin-bottom:11px}.field label{display:block;font-family:var(--f-mono);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin-bottom:4px}.field input,.field select,.field textarea{width:100%;padding:9px 10px;min-height:40px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface);font-size:16px}.field input:focus,.field select:focus,.field textarea:focus,.toolbar input:focus,.toolbar select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:var(--accent)}.field .hint{font-size:11.5px;color:var(--ink-3);margin-top:3px}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 11px}.banner{padding:10px 12px;border-radius:var(--r);font-size:13px;margin-bottom:12px}.banner.err{background:var(--flag-soft);color:var(--flag)}.banner.ok{background:var(--ok-soft);color:var(--ok)}.banner.info{background:var(--accent-soft);color:var(--accent)}.empty{padding:30px 16px;text-align:center;color:var(--ink-3);font-size:13.5px}.loading{padding:30px 16px;text-align:center;color:var(--ink-3);font-family:var(--f-mono);font-size:11.5px}.flagline{display:flex;gap:9px;align-items:flex-start;padding:10px 12px;border-bottom:1px solid var(--rule)}.flagline:last-child{border-bottom:0}.flagline .dot{width:6px;height:6px;border-radius:50%;background:var(--flag);margin-top:6px;flex:none}.flagline .dot.warn{background:var(--brass)}.flagline .txt{flex:1;font-size:13px}.flagline .age{font-family:var(--f-mono);font-size:10.5px;color:var(--ink-3);white-space:nowrap}.bar{height:4px;background:var(--surface-2);border-radius:3px;overflow:hidden;min-width:54px}.bar>i{display:block;height:100%;background:var(--accent)}.bar>i.short{background:var(--flag)}.checkline{display:flex;gap:10px;align-items:flex-start;padding:8px 12px;border-bottom:1px solid var(--rule)}.checkline:last-child{border-bottom:0}.checkline input[type=checkbox]{width:18px;height:18px;margin-top:2px;flex:none;accent-color:var(--accent)}.checkline .lbl{flex:1;font-size:13.5px}.checkline.done .lbl{color:var(--ink-3);text-decoration:line-through}.login-wrap{min-height:100%;display:grid;place-items:center;padding:24px}.login{width:100%;max-width:356px;background:var(--surface);border:1px solid var(--rule);border-radius:6px;padding:26px;box-shadow:var(--shadow)}.login .brand{font-size:24px;font-weight:700;letter-spacing:-.02em;margin-bottom:3px}.login .brand span{font-family:var(--f-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.login .tag{color:var(--ink-3);font-size:13px;margin-bottom:20px}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a100d80;z-index:200;display:flex;align-items:flex-end;justify-content:center}@media (min-width: 640px){.modal-bg{align-items:center;padding:24px}}.modal{background:var(--surface);border:1px solid var(--rule);border-radius:10px 10px 0 0;width:100%;max-width:540px;max-height:92vh;overflow-y:auto;box-shadow:var(--shadow)}@media (min-width: 640px){.modal{border-radius:6px}}.modal-head{display:flex;align-items:center;gap:10px;padding:13px 15px;border-bottom:1px solid var(--rule);position:sticky;top:0;background:var(--surface);z-index:2}.modal-head h2{margin:0;flex:1;font-size:15.5px}.modal-body{padding:15px}.modal-foot{display:flex;gap:8px;justify-content:flex-end;padding:13px 15px;border-top:1px solid var(--rule);position:sticky;bottom:0;background:var(--surface);padding-bottom:max(13px,env(safe-area-inset-bottom))}@media (prefers-reduced-motion: no-preference){.btn,.rail a,.tabs button,.chip-btn{transition:background .13s ease,color .13s ease}}.chart{position:relative}.chart svg{display:block;width:100%;height:auto}.chart .grid-line{stroke:var(--grid);stroke-width:1}.chart .axis-text{font-family:var(--f-mono);font-size:9px;fill:var(--ink-3)}.chart .value-label{font-family:var(--f-mono);font-size:9.5px;font-weight:600;fill:var(--ink-2)}.chart .hit{fill:transparent;cursor:pointer}.chart .hit:hover~.band,.chart .band.on{fill:var(--surface-2)}.chart .band{fill:transparent}.legend{display:flex;gap:14px;flex-wrap:wrap;padding:0 13px 10px}.legend span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2)}.legend i{width:10px;height:10px;border-radius:2px;display:inline-block}.tip{position:absolute;z-index:5;pointer-events:none;background:var(--ink);color:var(--ground);border-radius:4px;padding:7px 9px;font-size:12px;line-height:1.45;box-shadow:var(--shadow);white-space:nowrap;transform:translate(-50%,-100%)}.tip .t{font-family:var(--f-mono);font-size:10px;opacity:.7;letter-spacing:.08em;text-transform:uppercase}.tip .r{display:flex;gap:8px;align-items:center;justify-content:space-between}.tip .r i{width:8px;height:8px;border-radius:2px}.tip .r b{font-variant-numeric:tabular-nums}.check,.field label.check{display:inline-flex;align-items:center;gap:7px;width:auto;font-family:var(--f-ui);font-size:13px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--ink-2);cursor:pointer;margin-bottom:0;padding:6px 10px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface);min-height:36px;white-space:nowrap}.check input[type=checkbox],.field .check input[type=checkbox]{width:17px;height:17px;min-height:0;padding:0;margin:0;accent-color:var(--accent);flex:none}.linkish{background:none;border:0;padding:0;font:inherit;color:var(--accent);cursor:pointer;text-align:left;text-decoration:none}.linkish:hover{text-decoration:underline}.btn.ghost{border-color:transparent;color:var(--ink-3)}.btn.ghost:hover{color:var(--flag);background:var(--flag-soft)}.thumb-cell{width:44px}.thumb{width:34px;height:34px;border-radius:3px;object-fit:cover;border:1px solid var(--rule);display:block;background:var(--surface-2)}.thumb.blank{display:grid;place-items:center;color:var(--ink-3);font-size:15px}.image-row{display:flex;gap:13px;align-items:flex-start;margin-bottom:13px}.image-slot{width:104px;height:104px;flex:none;border-radius:var(--r);border:1px dashed var(--rule-strong);background:var(--surface-2);display:grid;place-items:center;cursor:pointer;overflow:hidden;font-size:12px;color:var(--ink-3);text-align:center}.image-slot:hover{border-color:var(--accent)}.image-slot img{width:100%;height:100%;object-fit:cover}.attach{border-top:1px solid var(--rule);margin-top:14px;padding-top:12px}.attach-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:9px}.attach-head select{padding:4px 8px;min-height:30px;font-size:12.5px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface)}.attach-link{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px}.attach-link input{flex:1 1 220px;padding:7px 9px;min-height:34px;font-size:14px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface)}.doc-list{list-style:none;margin:0;padding:0}.doc-list li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--rule)}.doc-list li:last-child{border-bottom:0}.doc-open{display:flex;align-items:center;gap:9px;flex:1;min-width:0;background:none;border:0;padding:0;font:inherit;cursor:pointer;text-align:left}.doc-open img{width:32px;height:32px;border-radius:3px;object-fit:cover;border:1px solid var(--rule);flex:none}.doc-icon{width:32px;height:32px;border-radius:3px;flex:none;display:grid;place-items:center;background:var(--surface-2);color:var(--ink-3)}.doc-meta{min-width:0}.doc-meta .n{display:block;font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.doc-meta .s{display:block;font-size:11px;color:var(--ink-3)}.doc-list.compact .doc-open img,.doc-list.compact .doc-icon{width:26px;height:26px}.inline-form{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px}.inline-form input,.inline-form select{flex:1 1 150px;padding:7px 9px;min-height:34px;font-size:14px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface)}table.mini{width:100%;border-collapse:collapse}table.mini th{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);text-align:left;padding:5px 7px;border-bottom:1px solid var(--rule)}table.mini td{padding:6px 7px;border-bottom:1px solid var(--rule);font-size:13px}table.mini tr:last-child td{border-bottom:0}.sub-block{border-top:1px solid var(--rule);margin-top:14px;padding-top:12px}.req-list{display:flex;flex-direction:column}.req{padding:12px 13px;border-bottom:1px solid var(--rule)}.req:last-child{border-bottom:0}.req.open{border-left:3px solid var(--brass)}.req-top{display:flex;align-items:flex-start;gap:9px;margin-bottom:8px}.req-facts{display:flex;flex-wrap:wrap;gap:6px 16px;margin-bottom:9px}.req-facts span{display:inline-flex;flex-direction:column;font-size:13px;font-variant-numeric:tabular-nums;color:var(--ink)}.req-facts i{font-family:var(--f-mono);font-style:normal;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.req-foot{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.log{display:flex;flex-direction:column}.log-day{font-family:var(--f-mono);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);padding:11px 13px 5px;background:var(--surface-2);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.log-row{display:flex;align-items:baseline;gap:9px;padding:8px 13px;border-bottom:1px solid var(--rule);font-size:13px}.log-row:last-child{border-bottom:0}.log-row .t{flex:none;width:58px;font-size:11.5px}.log-row .b{flex:1;min-width:0}.daterange{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.daterange input{padding:6px 8px;min-height:34px;font-size:13px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface);color:var(--ink)}.gate-list{list-style:none;margin:6px 0 0;padding:0}.gate-list li{font-size:12.5px;padding:2px 0;opacity:.75}.gate-list li.done{opacity:1;font-weight:500}.lines table.mini input,.lines table.mini select{width:100%;padding:5px 7px;min-height:30px;font-size:13px;border:1px solid var(--rule-strong);border-radius:var(--r);background:var(--surface)}.lines table.mini td{vertical-align:top}
