@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-cyrillic-ext-wght-normal-BbRulJFC.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-cyrillic-wght-normal-se3OnFSl.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-vietnamese-wght-normal-DTJpi3oK.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-latin-ext-wght-normal-CeZZaleV.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Libre Franklin Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/libre-franklin-latin-wght-normal-CLTz0ja0.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--charcoal:#1c1f23;--charcoal-2:#2a2f35;--charcoal-3:#3a4047;--paper:#f3f4f5;--paper-2:#e8eaec;--paper-3:#dadee1;--ink:#16191c;--ink-soft:#5b646c;--line:#cdd2d6;--accent:#ed7d31;--accent-dark:#a9531a;--accent-light:#fce9dc;--ok:#1f8a4c;--ok-bg:#ddf2e5;--warn:#9a6a00;--warn-bg:#fcf0cf;--danger:#b23a2e;--danger-bg:#fadcd8;--info:#2b5c8a;--info-bg:#dce8f4;--muted-bg:#eceef0;--radius:10px;--shadow:0 1px 2px #14181c12, 0 4px 14px #14181c0d;--sidebar-w:232px}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;padding:0}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:Franklin Gothic Book,Franklin Gothic Medium,Franklin Gothic,Libre Franklin Variable,Libre Franklin,Segoe UI,system-ui,sans-serif;font-size:14px}a{color:var(--accent-dark)}h1,h2,h3{margin:0}.display{text-transform:uppercase;letter-spacing:.04em}.muted{color:var(--ink-soft)}.small{font-size:12.5px}.xsmall{font-size:11.5px}.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.error-text{color:var(--danger);margin-top:10px;font-size:12.5px}.nowrap{white-space:nowrap}.right{text-align:right}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.stack{flex-direction:column;gap:10px;display:flex}.grow{flex:1;min-width:0}.hide-desktop{display:none}#app{min-height:100vh;display:flex}#sidebar{width:var(--sidebar-w);background:var(--charcoal);color:#e6e9ec;flex-direction:column;flex:none;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}#sidebar .sb-brand{border-bottom:1px solid #ffffff14;padding:18px 18px 14px}#sidebar .sb-brand img{width:auto;height:38px;display:block}#sidebar .sb-brand .sub{letter-spacing:.08em;text-transform:uppercase;color:#98a2ab;margin-top:6px;font-size:10px}#sidebar nav{flex:1;padding:8px 0 16px}#sidebar .sb-group{letter-spacing:.1em;text-transform:uppercase;color:#8a949d;padding:14px 18px 6px;font-size:10px}#sidebar a{color:#d8dde1;border-left:3px solid #0000;align-items:center;gap:10px;padding:8px 18px;font-size:13px;text-decoration:none;display:flex}#sidebar a:hover{background:#ffffff0d}#sidebar a.active{border-left-color:var(--accent);color:#fff;background:#ed7d3133;font-weight:600}#sidebar a .count{background:var(--danger);color:#fff;border-radius:10px;margin-left:auto;padding:1px 7px;font-size:10.5px}#sidebar .sb-foot{color:#aab3bb;border-top:1px solid #ffffff14;padding:12px 18px 16px;font-size:11.5px}#content{flex-direction:column;flex:1;min-width:0;display:flex}#topbar{border-bottom:1px solid var(--line);z-index:30;background:#fff;align-items:center;gap:12px;padding:10px 22px;display:flex;position:sticky;top:0}#topbar .crumbs{min-width:0;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}#topbar .crumbs strong{color:var(--ink)}#topbar .mobile-logo{height:26px;display:none}.sync-badge{background:var(--muted-bg);border:1px solid var(--line);white-space:nowrap;border-radius:20px;align-items:center;gap:6px;padding:5px 10px;font-size:11.5px;display:flex}.sync-badge .dot{border-radius:50%;width:8px;height:8px}.dot.ok{background:#2fbf6b}.dot.pending{background:#e3a008}.dot.off{background:#9aa3ab}.account-btn{border:1px solid var(--line);font:inherit;cursor:pointer;color:var(--ink);background:0 0;border-radius:20px;padding:5px 11px;font-size:12px}#main{width:100%;max-width:1180px;padding:20px 22px 40px}#bottomnav{display:none}@media (width<=860px){#sidebar{display:none}#sidebar.open{z-index:90;width:80vw;max-width:300px;display:flex;position:fixed;inset:0 auto 0 0;box-shadow:0 0 40px #0006}.sidebar-scrim{z-index:85;background:#0006;position:fixed;inset:0}#topbar{background:var(--charcoal);color:#fff;border-bottom:none;padding:10px 14px}#topbar .crumbs{color:#c9d0d6}#topbar .crumbs strong{color:#fff}#topbar .mobile-logo{display:block}#topbar .sync-badge{color:#fff;background:#ffffff14;border-color:#ffffff2e}.account-btn{color:#fff;border-color:#ffffff40}#main{padding:14px 14px 96px}#bottomnav{z-index:40;background:var(--charcoal);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}#bottomnav a,#bottomnav button{color:#fffc;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:9px 2px 10px;font-family:inherit;font-size:10.5px;text-decoration:none;display:flex}#bottomnav a.active{color:#fff;background:#ffffff1a;font-weight:700}#bottomnav svg{width:21px;height:21px}.hide-mobile{display:none!important}.hide-desktop{display:initial}}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.page-head h1{font-size:20px;font-weight:600}.page-head .sub{color:var(--ink-soft);margin-top:3px;font-size:12.5px}.section-title{letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);justify-content:space-between;align-items:center;gap:8px;margin:22px 0 8px;font-size:11.5px;display:flex}.section-title:first-child{margin-top:0}.card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;margin-bottom:14px;padding:16px}.card.flush{padding:0;overflow:hidden}.card h2{margin-bottom:10px;font-size:14px;font-weight:700}.note{color:var(--ink-soft);background:var(--paper-2);border-radius:8px;margin-bottom:12px;padding:9px 11px;font-size:12px;line-height:1.45}.note.warn{background:var(--warn-bg);color:#5e4300}.note.danger{background:var(--danger-bg);color:#6e1e16}.note.info{background:var(--info-bg);color:#1d3f60}.grid{gap:14px;display:grid}.grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=860px){.grid.c3,.grid.c4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.grid.c2,.grid.c3{grid-template-columns:1fr}}.kpi{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);color:inherit;background:#fff;padding:13px 15px;text-decoration:none;display:block}.kpi .num{font-size:26px;font-weight:600;line-height:1.05}.kpi .lab{color:var(--ink-soft);margin-top:4px;font-size:11.5px}.kpi.danger .num{color:var(--danger)}.kpi.warn .num{color:var(--warn)}.kpi.ok .num{color:var(--ok)}.info-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px 18px;display:grid}.info-grid .k{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);font-size:10.5px}.info-grid .v{word-break:break-word;margin-top:2px;font-weight:600}.chip{background:var(--muted-bg);color:var(--ink-soft);white-space:nowrap;border-radius:20px;align-items:center;gap:5px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-flex}.chip.ok{background:var(--ok-bg);color:var(--ok)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.danger{background:var(--danger-bg);color:var(--danger)}.chip.info{background:var(--info-bg);color:var(--info)}.chip.accent{background:var(--accent-light);color:var(--accent-dark)}.chip.dark{background:var(--charcoal-2);color:#fff}.code{color:var(--accent-dark);font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:12.5px;font-weight:600}.code.provisional{color:var(--warn);font-style:italic}.btn{cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:10px 15px;font-family:inherit;font-size:13.5px;font-weight:600;line-height:1.1;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-dark)}.btn-dark{background:var(--charcoal);color:#fff}.btn-ghost{color:var(--accent-dark);border:1.5px solid var(--accent);background:#fff}.btn-plain{color:var(--accent-dark);background:0 0;padding:6px 8px}.btn-danger{color:var(--danger);background:#fff;border:1.5px solid #e2b4ac}.btn-ok{background:var(--ok);color:#fff}.btn:disabled{opacity:.5;cursor:default}.btn-sm{border-radius:7px;padding:6px 10px;font-size:12px}.btn-block{width:100%}.icon-btn{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 7px;font-size:16px}.icon-btn:hover{background:var(--paper-2)}.icon-btn.danger{color:var(--danger)}.field-row{margin-bottom:12px}label.lbl{color:var(--ink-soft);margin-bottom:5px;font-size:12px;font-weight:600;display:block}label.lbl .req{color:var(--danger)}.hint{color:var(--ink-soft);margin-top:4px;font-size:11.5px;line-height:1.4}input.field,select.field,textarea.field{border:1.5px solid var(--line);width:100%;font:inherit;color:var(--ink);background:#fff;border-radius:7px;min-height:40px;padding:9px 10px;font-size:14px}textarea.field{resize:vertical;min-height:70px;line-height:1.4}input.field:focus,select.field:focus,textarea.field:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}input.field:disabled,select.field:disabled,textarea.field:disabled{background:var(--paper);color:var(--ink-soft)}.field-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:0 14px;display:grid}.check-line{cursor:pointer;align-items:center;gap:8px;padding:4px 0;font-size:13.5px;display:flex}.check-line input{width:18px;height:18px;accent-color:var(--accent)}.cl-row{border-bottom:1px dashed var(--line);align-items:center;gap:10px;padding:9px 0;display:flex}.cl-row:last-child{border-bottom:none}.cl-row .cl-text{flex:1;font-size:13.5px;line-height:1.35}.seg{border:1.5px solid var(--line);border-radius:8px;flex:none;display:inline-flex;overflow:hidden}.seg button{font:inherit;color:var(--ink-soft);cursor:pointer;background:#fff;border:none;min-width:44px;padding:8px 12px;font-size:12.5px;font-weight:600}.seg button+button{border-left:1.5px solid var(--line)}.seg button.on-yes{background:var(--ok);color:#fff}.seg button.on-no{background:var(--danger);color:#fff}.seg button.on-na{color:#fff;background:#8a949d}.seg button.on{background:var(--accent);color:#fff}.seg:has(button:disabled){opacity:.75}.form-section{margin-bottom:14px}.form-section>.fs-head{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--line);border-radius:var(--radius);background:#fff;align-items:center;gap:10px;padding:12px 14px;display:flex}.form-section.open>.fs-head{border-radius:var(--radius) var(--radius) 0 0;border-bottom-color:var(--paper-3)}.fs-head .fs-title{flex:1;font-size:13.5px;font-weight:700}.fs-head .fs-meta{color:var(--ink-soft);font-size:11.5px}.form-section>.fs-body{border:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);background:#fff;border-top:none;padding:14px}.table-wrap{overflow-x:auto}table.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl th{text-align:left;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);border-bottom:1px solid var(--line);white-space:nowrap;background:var(--paper);padding:9px 12px;font-size:10.5px}.tbl td{border-bottom:1px solid var(--paper-2);vertical-align:top;padding:10px 12px}.tbl tr.click{cursor:pointer}.tbl tr.click:hover td{background:#f8fafb}.tbl tr:last-child td{border-bottom:none}.tbl .sub{color:var(--ink-soft);margin-top:2px;font-size:11.5px}.tbl input.field,.tbl select.field{min-height:34px;padding:6px 8px;font-size:13px}.list-row{color:inherit;border-bottom:1px solid var(--paper-2);align-items:center;gap:12px;padding:12px 14px;text-decoration:none;display:flex}.list-row:last-child{border-bottom:none}.list-row:hover{background:#f8fafb}.list-row .t{font-size:13.5px;font-weight:700}.list-row .s{color:var(--ink-soft);margin-top:2px;font-size:11.5px}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.toolbar input.field{flex:1;min-width:180px}.toolbar select.field{width:auto;min-width:140px}.tabs{border-bottom:1px solid var(--line);gap:2px;margin-bottom:16px;display:flex;overflow-x:auto}.tabs a,.tabs button{font:inherit;color:var(--ink-soft);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2.5px solid #0000;padding:9px 14px;font-size:13px;text-decoration:none}.tabs a.active,.tabs button.active{color:var(--ink);border-bottom-color:var(--accent);font-weight:700}.empty{text-align:center;color:var(--ink-soft);padding:34px 16px}.empty h3{color:var(--ink);margin-bottom:6px;font-size:14px}.empty p{margin:0 0 12px;font-size:12.5px}.modal-backdrop{z-index:100;background:#0f12168c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;width:100%;max-width:620px;max-height:90vh;padding:18px 20px 20px;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.modal.wide{max-width:900px}.modal-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.modal-head h2{font-size:16px}.modal-foot{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;display:flex}@media (width<=560px){.modal-backdrop{align-items:flex-end;padding:0}.modal{border-radius:16px 16px 0 0;max-height:92vh}}.toast{background:var(--charcoal);color:#fff;z-index:200;opacity:0;pointer-events:none;text-align:center;border-radius:22px;max-width:90vw;padding:10px 18px;font-size:13px;transition:opacity .2s;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #00000040}.toast.show{opacity:1}.toast.error{background:var(--danger)}@media (width<=860px){.toast{bottom:84px}}.att-list{flex-direction:column;gap:6px;display:flex}.att{border:1px solid var(--line);background:var(--paper);border-radius:8px;align-items:center;gap:9px;padding:7px 10px;font-size:12.5px;display:flex}.att .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.att .st{color:var(--ink-soft);font-size:11px}.drop{border:1.5px dashed var(--line);color:var(--ink-soft);cursor:pointer;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:10px;font-size:12.5px;display:flex}.drop input{display:none}.sig-pad{border:1.5px solid var(--line);touch-action:none;background:#fff;border-radius:8px;width:100%;height:150px;display:block}.sig-img{max-width:200px;max-height:60px;display:block}.signoff{border:1px solid var(--line);background:#fff;border-radius:9px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;display:flex}.signoff.signed{background:#f3faf6;border-color:#b9dec8}.signoff .so-role{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);font-size:10.5px}.signoff .so-name{font-size:13.5px;font-weight:700}.stages{gap:0;margin:4px 0 16px;display:flex;overflow-x:auto}.stage{text-align:center;min-width:110px;color:var(--ink-soft);flex:1;padding-top:26px;font-size:11.5px;position:relative}.stage:before{content:"";background:var(--paper-3);height:3px;position:absolute;top:10px;left:0;right:0}.stage:first-child:before{left:50%}.stage:last-child:before{right:50%}.stage .pt{border:3px solid var(--paper-3);z-index:1;background:#fff;border-radius:50%;width:17px;height:17px;position:absolute;top:3px;left:50%;transform:translate(-50%)}.stage.done .pt{background:var(--ok);border-color:var(--ok)}.stage.done:before{background:var(--ok)}.stage.current .pt{border-color:var(--accent);background:var(--accent-light)}.stage.current{color:var(--ink);font-weight:700}.timeline{border-left:2px solid var(--paper-3);margin-left:6px;padding-left:16px}.timeline .ev{padding-bottom:14px;position:relative}.timeline .ev:before{content:"";background:var(--accent);border-radius:50%;width:10px;height:10px;position:absolute;top:4px;left:-22px}.timeline .ev .when{color:var(--ink-soft);font-size:11.5px}.bar{background:var(--paper-3);border-radius:5px;height:8px;overflow:hidden}.bar>span{background:var(--accent);height:100%;display:block}.spark{align-items:flex-end;gap:3px;height:60px;display:flex}.spark span{background:var(--accent);border-radius:3px 3px 0 0;flex:1;min-height:2px}.spark-labels{gap:3px;display:flex}.spark-labels span{text-align:center;color:var(--ink-soft);flex:1;font-size:9.5px}.login-wrap{background:var(--paper);justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.login-card{text-align:center;width:360px;padding:28px}.login-logo{width:210px;height:auto;margin:0 auto 14px;display:block}.login-foot{border-top:1px solid var(--line);margin-top:22px;padding-top:14px}@media print{#sidebar,#topbar,#bottomnav,.no-print{display:none!important}#main{max-width:none;padding:0}.card{box-shadow:none;break-inside:avoid}body{background:#fff}}
