:root{--ink:#16202B;--muted:#56606B;--line:#E1E5EA;--line2:#EEF0F3;--bg:#F4F5F7;--brand:#1F4E79;--brand-d:#163A5A;--ok:#1E5B2E;--warn:#9A3412;--side:#142233;--side-it:#1A1D22}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:400 15px/1.5 'Be Vietnam Pro',system-ui,sans-serif}
a{color:var(--brand)}a:hover{color:var(--brand-d)}
h1{margin:0;font-size:26px;font-weight:700;line-height:1.25}
h2{margin:0;font-size:16px;font-weight:600}
.shell{display:flex;min-height:100vh}
.side{width:232px;flex-shrink:0;background:var(--side);padding:24px 16px;display:flex;flex-direction:column;gap:28px}
.side.it{background:var(--side-it)}
.brand{padding:0 6px}.brand .logo{display:block;background:#fff;border-radius:10px;padding:8px 10px;margin-bottom:8px}.brand .logo img{display:block;height:58px;width:auto;margin:0 auto}.field label.row input{width:auto;min-height:0;margin:0}.brand b{display:block;color:#fff;font-size:17px}.brand span{color:#8FA1B5;font-size:12px}
.side.it .brand span{color:#E8A15C;font-weight:600}
.nav{display:flex;flex-direction:column;gap:4px}
.nav a{display:block;padding:10px 14px;border-radius:8px;color:#C9D3DE;text-decoration:none;font-size:14px}
.nav a:hover{background:#1E3148;color:#fff}.side.it .nav a:hover{background:#262A31}
.nav a.on{background:#24384F;color:#fff;font-weight:600}.side.it .nav a.on{background:#2B2F36}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:12px}
.hot{padding:12px;border-radius:8px;background:#1B2D42;color:#C9D3DE;font-size:13px}.hot b{color:#fff;display:block}
.me{display:flex;flex-direction:column;gap:2px;padding:0 6px;color:#C9D3DE;font-size:13px}.me b{color:#fff;font-size:14px}
.me a{color:#8FA1B5;font-size:12px}
.main{flex-grow:1;padding:32px 40px;display:flex;flex-direction:column;gap:20px;max-width:1240px;min-width:0}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}
.lbl{font-size:13px;color:var(--muted);font-weight:500}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px}
.card.flush{padding:8px 8px 4px}.card.flush>h2{padding:12px 12px 4px}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
.split{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px;align-items:start}
.split-r{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}.grid3>*,.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}.grid3>*,.grid4>*,.grid2>*,.split>*,.split-r>*{min-width:0}
.stack{display:flex;flex-direction:column;gap:12px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.between{display:flex;justify-content:space-between;align-items:center;gap:12px}
.stat .v{font-size:24px;font-weight:700;margin-top:4px}
.stat.alert{border-color:#F0B7A0;background:#FFF5F0}.stat.alert .lbl{color:#8A2A0A}.stat.alert .v{color:#9A2A0A}
.stat.amber{border-color:#F0C79E;background:#FFF8F1}.stat.amber .lbl{color:#8A3B0A}.stat.amber .v{color:var(--warn)}
.bar{height:8px;background:#E8ECF0;border-radius:4px}.bar i{display:block;height:8px;background:var(--brand);border-radius:4px}
.btn{white-space:nowrap;font:600 14px 'Be Vietnam Pro',sans-serif;border-radius:8px;padding:10px 16px;min-height:44px;cursor:pointer;border:1px solid #CBD2DA;background:#fff;color:var(--ink);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn:hover{background:#F4F6F8;color:var(--ink)}
.btn.pri{background:var(--brand);border-color:var(--brand);color:#fff}.btn.pri:hover{background:var(--brand-d)}
.btn.go{background:#1E6B3A;border-color:#1E6B3A;color:#fff}.btn.go:hover{background:#185A30}
.btn.sm{min-height:36px;padding:6px 12px;font-size:13px}
.btn.block{width:100%}
.chip{font:600 13px 'Be Vietnam Pro',sans-serif;border-radius:999px;padding:8px 14px;border:1px solid #CBD2DA;background:#fff;color:var(--ink);text-decoration:none}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.pill{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:3px 10px;white-space:nowrap}
.p-new{background:#FDF1D8;color:#7A4B00}.p-in_progress{background:#E3EEF8;color:var(--brand)}.p-waiting{background:#EFE7FA;color:#4C2A85}.p-done{background:#E2F2E6;color:var(--ok)}
.p-urgent{background:#FCE2D6;color:#8A2A0A}.p-normal{background:#E3EEF8;color:var(--brand)}.p-request{background:#EEF0F3;color:#39424C}
.p-pending{background:#FDF1D8;color:#7A4B00}.p-approved{background:#E2F2E6;color:var(--ok)}.p-rejected{background:#F3E3E3;color:#8B1E1E}
.sla-breached{color:#B42318;font-weight:700}.sla-warning{color:#9A2A0A;font-weight:700}.sla-ok{color:var(--ink)}.sla-none{color:var(--muted)}
table{border-collapse:collapse;width:100%}
th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:10px 12px;border-bottom:1px solid var(--line)}
td{font-size:14px;padding:12px;border-bottom:1px solid var(--line2);vertical-align:middle}
tr:last-child td{border-bottom:0}
tr.hot-row{background:#FFF8F4}
tr.off td{color:#8A939D}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:13px}
.kv{display:flex;justify-content:space-between;gap:12px;font-size:14px;padding:9px 0;border-bottom:1px solid var(--line2)}.kv:last-child{border-bottom:0}.kv b{font-weight:600;text-align:right}
.inp,form input:not([type=checkbox]):not([type=radio]):not([type=file]),form select,form textarea{font:400 14px 'Be Vietnam Pro',sans-serif;border:1px solid #CBD2DA;border-radius:8px;padding:11px 12px;min-height:44px;width:100%;color:var(--ink);background:#fff}
form textarea{resize:vertical}
.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:14px;font-weight:600}
.help{font-size:12px;color:var(--muted)}
.errorlist{margin:0;padding:0;list-style:none;color:#B42318;font-size:13px}
.flash{padding:12px 16px;border-radius:10px;font-size:14px;border:1px solid}
.flash.success{background:#E9F6EC;border-color:#BFE3C8;color:#1E5B2E}.flash.error{background:#FDECEC;border-color:#F3C2C2;color:#8B1E1E}.flash.warning{background:#FFF6E5;border-color:#F3D9A4;color:#7A4B00}.flash.info{background:#EEF4FA;border-color:#CFE0F0;color:#24384F}
.levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.levels label{border:1px solid #CBD2DA;border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;cursor:pointer;background:#fff}
.levels input{position:absolute;opacity:0}
.levels label:has(input:checked){border:2px solid var(--brand);background:#F1F6FB}
.levels label:has(input:focus-visible){outline:2px solid var(--brand);outline-offset:2px}
.levels b{font-size:14px}.levels small{font-size:12px;color:var(--muted)}
.msg{display:flex;gap:12px}.av{width:36px;height:36px;border-radius:50%;background:#DCE7F2;color:var(--brand);font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.av.it{background:#E8A15C;color:#1A1D22}
.msg .body{white-space:pre-line;font-size:14px}
.msg.internal .bubble{background:#FFF9E6;border:1px dashed #E8C66A;border-radius:8px;padding:8px 12px}
.sys{padding:8px 12px;background:#F7F8FA;border-radius:8px;font-size:13px;color:var(--muted)}
.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.tabs a{font-weight:600;font-size:14px;padding:12px 2px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent}
.tabs a.on{color:var(--ink);border-bottom-color:var(--ink)}
.file{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:10px}
.file .ic{width:40px;height:48px;border-radius:6px;background:#FDECEC;color:#A61B1B;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.empty{padding:28px;text-align:center;color:var(--muted);font-size:14px}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.login .card{width:100%;max-width:400px;padding:32px}
@media (max-width:900px){
  .shell{flex-direction:column}.side{width:auto;gap:12px;padding:14px 16px}.nav{flex-direction:row;overflow-x:auto}.nav a{white-space:nowrap}.side-foot{display:none}
  .main{padding:20px 16px}.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid2,.grid3,.split,.split-r,.levels{grid-template-columns:1fr}
  .tbl-wrap{overflow-x:auto}
  .brand{display:flex;align-items:center;gap:12px}.brand .logo{margin:0;padding:5px 8px}.brand .logo img{height:32px}
}
.preview-frame{width:100%;height:760px;border:1px solid var(--line);border-radius:12px;background:#EEF0F3}
.logo-box{background:#fff;border:1px dashed #CBD2DA;border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:center}.logo-box img{max-height:120px;max-width:100%}

.icon-x{color:#B42318;border-color:#F0C4C0;min-width:44px;font-size:16px}.icon-x:hover{background:#FDECEA;color:#8B1E1E}
.scan-up{margin-top:8px}
.drop{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1.5px dashed #B9C3CE;border-radius:12px;background:#FAFBFC;cursor:pointer;transition:border-color .15s,background .15s;position:relative}
.drop:hover,.drop.over{border-color:var(--brand);background:#F1F6FB}
.drop:focus-within{outline:2px solid var(--brand);outline-offset:2px}
.drop input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.drop-ic{width:42px;height:42px;border-radius:10px;background:#E3EEF8;color:var(--brand);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.drop-txt{display:flex;flex-direction:column;gap:2px;font-size:14px;min-width:0}.drop-txt span{font-size:12px;color:var(--muted);word-break:break-all}
.drop.busy{opacity:.7;cursor:progress;pointer-events:none}
.pl-item{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}
.calc td{padding:8px 0}.calc .tot{font-size:20px;font-weight:700;color:var(--brand)}
.my-pc{display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:#F7FAFD;border-radius:10px;padding:10px 12px}
.steps-ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:12px;font-size:15px;line-height:1.55}
.guide h3{font-size:15px;margin:6px 0 0}.guide ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:14px;line-height:1.55}.guide p{margin:0;font-size:14px;line-height:1.55}
