:root{--navy:#17365d;--navy2:#0f2b4d;--blue:#2563eb;--bg:#f3f6fb;--card:#fff;--text:#172033;--muted:#6b7280;--line:#e4e9f2;--green:#16855b;--red:#cf3c4f;--orange:#e17619;--yellow:#b68400;--purple:#7448c8;--cyan:#1687a7;--slate:#65748b;--shadow:0 8px 30px rgba(19,43,77,.08)}
*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--text);background:var(--bg);font-size:14px}a{color:#1c63c7;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}input,select,textarea{width:100%;border:1px solid #d7dfeb;border-radius:9px;padding:10px 11px;background:#fff;color:var(--text);outline:none;transition:.15s}input:focus,select:focus,textarea:focus{border-color:#6a9ee8;box-shadow:0 0 0 3px rgba(37,99,235,.1)}textarea{resize:vertical}label{display:flex;flex-direction:column;gap:6px;font-weight:600;color:#3b465a}.hint,.helper{font-size:12px;color:var(--muted);font-weight:400}.muted{color:var(--muted)}
.login-body{min-height:100vh;background:linear-gradient(135deg,#0d2948 0%,#17365d 48%,#25588f 100%);display:grid;place-items:center;padding:28px}.login-shell{width:min(980px,100%);display:grid;grid-template-columns:1.05fr .95fr;border-radius:24px;overflow:hidden;box-shadow:0 28px 80px rgba(0,0,0,.25);background:#fff}.login-brand{padding:56px;background:linear-gradient(145deg,#102b4b,#1a4777);color:#fff;display:flex;align-items:center;gap:20px}.login-brand h1{margin:0 0 8px;font-size:32px}.login-brand p{margin:0;color:#d6e4f4;font-size:16px}.logo-mark{width:74px;height:74px;border-radius:20px;background:linear-gradient(135deg,#ff8e2b,#ffb560);display:grid;place-items:center;color:#17365d;font-weight:900;font-size:28px;box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}.logo-mark.small{width:42px;height:42px;border-radius:12px;font-size:16px;flex:0 0 auto}.login-card{padding:46px}.login-card h2{font-size:28px;margin:0 0 6px}.stack{display:flex;flex-direction:column;gap:14px}.password-wrap{display:flex;gap:8px}.password-wrap input{flex:1}.icon-btn{border:1px solid var(--line);background:#f8fafc;border-radius:9px;padding:0 13px;cursor:pointer}.demo-note{margin-top:18px;padding:12px 14px;background:#f4f7fb;border-radius:10px;color:#4c5a70;font-size:12px}.demo-note span{color:#7b8799}
.app-shell{min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:248px;background:var(--navy2);color:#fff;display:flex;flex-direction:column;z-index:30;transition:.25s}.brand{padding:18px 17px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(255,255,255,.09)}.brand strong{display:block;font-size:14px;line-height:1.25}.brand span{font-size:11px;color:#aabbd0}.sidebar nav{padding:12px 10px;display:flex;flex-direction:column;gap:4px}.sidebar nav a{color:#d9e4f2;padding:10px 12px;border-radius:9px;display:flex;align-items:center;gap:10px;font-weight:600;text-decoration:none}.sidebar nav a span{width:20px;text-align:center}.sidebar nav a:hover,.sidebar nav a.active{background:#244d79;color:#fff}.sidebar-foot{margin-top:auto;padding:14px;border-top:1px solid rgba(255,255,255,.09)}.user-mini{display:flex;align-items:center;gap:9px}.avatar{width:36px;height:36px;border-radius:50%;background:#f39b3c;color:#17365d;display:grid;place-items:center;font-weight:900}.user-mini strong,.user-mini span{display:block}.user-mini span{font-size:11px;color:#aabbd0;margin-top:2px}.logout{display:block;margin-top:10px;color:#dbe7f4;font-size:12px}.main{margin-left:248px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:66px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:20}.menu-btn{display:none;background:none;border:0;font-size:23px}.top-title strong,.top-title span{display:block}.top-title span{font-size:11px;color:var(--muted);margin-top:3px}.top-actions{display:flex;gap:10px;align-items:center}.profile-chip{padding:8px 12px;border:1px solid var(--line);border-radius:9px;color:#3d4a60;font-weight:600}.content{padding:24px;flex:1;max-width:1600px;width:100%;margin:0 auto}.footer{padding:14px 24px;border-top:1px solid var(--line);background:#fff;color:var(--muted);font-size:11px;display:flex;justify-content:space-between}
.page-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:18px}.page-head h1{margin:0 0 5px;font-size:25px;letter-spacing:-.4px}.page-head p{margin:0;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:1px;font-size:11px;color:#718096;font-weight:700;margin-bottom:4px}.head-actions{display:flex;gap:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid #d5deea;background:#fff;border-radius:9px;padding:9px 13px;color:#28384f;font-weight:700;cursor:pointer;text-decoration:none}.btn:hover{text-decoration:none;background:#f8fafc}.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn-primary:hover{background:#1f56c3}.btn-light{background:#f7f9fc}.btn-lg{padding:11px 16px}.alert{padding:12px 14px;border-radius:10px;margin-bottom:14px;border:1px solid}.alert-success{background:#eefaf5;border-color:#c6ebdc;color:#166f4d}.alert-error{background:#fff0f2;border-color:#f2c7ce;color:#aa2839}.alert-warning{background:#fff8e7;border-color:#efd89c;color:#866000}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:18px;margin-bottom:18px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.card-head h3{margin:0;font-size:16px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px;box-shadow:var(--shadow);border-top:3px solid #5a86c4}.kpi span,.kpi small,.kpi strong{display:block}.kpi span{color:#65748b;font-weight:700;font-size:12px}.kpi strong{font-size:30px;line-height:1;margin:10px 0 8px}.kpi small{color:#8b96a8}.kpi.danger{border-top-color:var(--red)}.kpi.warn{border-top-color:var(--orange)}.kpi.success{border-top-color:var(--green)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.grid-side{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px}.narrow{max-width:680px}.side-form{align-self:start;position:sticky;top:84px}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{padding:11px 10px;text-align:left;border-bottom:1px solid #edf0f5;vertical-align:top}th{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:#778397;background:#f8fafc}td{font-size:13px}td strong,td small{display:block}td small{color:#7b8798;margin-top:4px;line-height:1.35}.limit{max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-overdue{background:#fff9fa}.ticket-link{font-weight:800}.empty{text-align:center;color:#8c98aa;padding:24px!important}.danger-text{color:var(--red);font-weight:800}.metric-line{display:flex;align-items:center;justify-content:space-between;padding:11px 3px;border-bottom:1px solid #edf0f5}.status-bars{display:flex;flex-direction:column;gap:10px}.status-row{display:grid;grid-template-columns:130px 1fr 30px;gap:10px;align-items:center}.bar{height:8px;background:#edf1f6;border-radius:999px;overflow:hidden}.bar i{display:block;height:100%;background:#4c80c6;border-radius:999px}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:800;white-space:nowrap}.b-blue{background:#eaf2ff;color:#255eb0}.b-indigo{background:#eeecff;color:#5148a6}.b-orange{background:#fff0e2;color:#a65a12}.b-yellow{background:#fff7d9;color:#8a6900}.b-green{background:#e8f7f0;color:#15724e}.b-red{background:#fdecef;color:#b72d40}.b-slate{background:#edf1f6;color:#59677c}.b-purple{background:#f1eafd;color:#7040b2}.b-cyan{background:#e5f7fb;color:#176f87}
.filter-bar{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;gap:9px;align-items:end;margin-bottom:16px;box-shadow:var(--shadow)}.filter-bar>input{min-width:220px;flex:1}.filter-bar select{width:auto;min-width:130px}.report-filter label{font-size:11px;min-width:135px}.mini-search{width:min(320px,100%)}.form-card{padding:0;overflow:hidden}.form-section{padding:20px;border-bottom:1px solid var(--line)}.form-section h3{margin:0 0 14px}.form-grid{display:grid;gap:14px}.form-grid.cols-2{grid-template-columns:repeat(2,1fr)}.form-grid.cols-3{grid-template-columns:repeat(3,1fr)}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.form-actions{padding:16px 20px;display:flex;justify-content:flex-end;gap:8px;background:#f9fbfd}.check{flex-direction:row;align-items:center}.check input{width:auto}.inline-form{display:grid;grid-template-columns:2fr .55fr .75fr auto;gap:8px;margin-top:12px}.helper{margin-top:10px;padding:9px 11px;background:#f5f8fc;border-radius:8px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.detail-grid span,.detail-grid strong{display:block}.detail-grid span{font-size:11px;color:#7b8798;margin-bottom:4px}.problem-box{font-size:15px;line-height:1.6;padding:4px 0}.resolution{margin-top:15px;padding:14px;background:#eefaf5;border-left:4px solid var(--green);border-radius:9px}.resolution p{margin:6px 0 0}.ticket-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px}.sticky{position:sticky;top:84px}.side-kv{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px}.side-kv span{color:#7b8798;font-size:11px}.side-kv strong{text-align:right;font-size:12px}.timeline{position:relative}.timeline-item{display:grid;grid-template-columns:18px 1fr;gap:10px;padding-bottom:18px;position:relative}.timeline-item:before{content:"";position:absolute;left:6px;top:12px;bottom:-2px;width:2px;background:#e4e9f1}.timeline-item:last-child:before{display:none}.timeline-item i{width:14px;height:14px;border-radius:50%;background:#3976c4;border:3px solid #dfeafb;position:relative;z-index:1}.timeline-top{display:flex;justify-content:space-between;gap:10px}.timeline-top span{color:#8792a4;font-size:11px}.timeline-item p{margin:7px 0 0;color:#48566b;line-height:1.5}.link-danger{border:0;background:none;color:var(--red);cursor:pointer}.print-title,.print-only{display:none}.signature-row{grid-template-columns:repeat(3,1fr);gap:25px;margin-top:40px}.signature-row div{padding-top:35px;border-top:1px solid #444;text-align:center;font-size:11px}
@media(max-width:1150px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.grid-side{grid-template-columns:1fr}.side-form{position:static}.ticket-layout{grid-template-columns:1fr}.sticky{position:static}.filter-bar{flex-wrap:wrap}.grid-2{grid-template-columns:1fr}}
@media(max-width:800px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.menu-btn{display:block}.topbar{padding:0 14px}.top-title span{display:none}.top-actions .btn{display:none}.profile-chip{font-size:11px}.content{padding:15px}.page-head{flex-direction:column}.kpi-grid{grid-template-columns:1fr 1fr}.form-grid.cols-2,.form-grid.cols-3{grid-template-columns:1fr}.span-2,.span-3{grid-column:span 1}.inline-form{grid-template-columns:1fr 1fr}.inline-form input:first-of-type{grid-column:span 2}.footer{flex-direction:column;gap:4px}.login-shell{grid-template-columns:1fr}.login-brand{padding:30px}.login-card{padding:30px}.status-row{grid-template-columns:100px 1fr 24px}}
@media(max-width:480px){.kpi-grid{grid-template-columns:1fr}.login-brand h1{font-size:24px}.login-brand{align-items:flex-start}.logo-mark{width:58px;height:58px;font-size:21px}.filter-bar>*{width:100%!important}.inline-form{grid-template-columns:1fr}.inline-form input:first-of-type{grid-column:span 1}.detail-grid{grid-template-columns:1fr}.top-title strong{font-size:12px}}
@media print{body{background:#fff;font-size:11px}.sidebar,.topbar,.footer,.no-print{display:none!important}.main{margin:0}.content{padding:0;max-width:none}.card{box-shadow:none;border:1px solid #bbb;border-radius:5px;margin-bottom:10px;padding:12px}.ticket-layout{display:block}.ticket-side{margin-top:10px}.sticky{position:static}.print-title{display:block;text-align:center;margin-bottom:14px}.print-title h1{font-size:20px;margin:0}.print-title h2{font-size:14px;margin:5px}.print-only{display:grid}.table-wrap{overflow:visible}table{min-width:0}th,td{padding:6px}.timeline-item{padding-bottom:10px}.badge{border:1px solid #bbb;background:#fff!important;color:#222!important}.signature-row{display:grid!important}.page-head{display:none}}
.company-logo{max-width:160px;max-height:58px;object-fit:contain}.company-logo.small{width:42px;height:42px;object-fit:contain;border-radius:10px;background:#fff;padding:3px}.label-stage{display:flex;justify-content:center;padding:24px}.warranty-label{width:50mm;height:25mm;border:1px solid #222;background:#fff;color:#000;display:flex;box-sizing:border-box;padding:1.3mm;font-family:Arial,sans-serif;overflow:hidden}.wl-text{width:36mm;display:flex;flex-direction:column;justify-content:center;gap:.35mm;line-height:1.05}.wl-text strong{font-size:8pt}.wl-text b{font-size:7.2pt}.wl-text span{font-size:6.4pt;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wl-qr{width:12mm;height:12mm;margin-left:auto;align-self:center}.wl-qr img{width:12mm;height:12mm;display:block}@media print{@page{size:50mm 25mm;margin:0}body *{visibility:hidden!important}.warranty-label,.warranty-label *{visibility:visible!important}.warranty-label{position:absolute;left:0;top:0;border:0}.sidebar,.topbar,.footer,.no-print{display:none!important}}
