:root{
  --bg:#091018;--panel:#101923;--panel2:#141f2b;--line:#223244;--text:#f5f7fa;--muted:#8fa2b5;
  --accent:#ffcc33;--accent2:#f4b400;--danger:#ff5d67;--ok:#42d392;--warn:#ffb84d;--info:#63a7ff;
  --shadow:0 22px 70px rgba(0,0,0,.28);--radius:22px;--radius-sm:14px;
}
*{box-sizing:border-box} html,body{margin:0;min-height:100%;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 15% 0%,#152639 0,#091018 38%),var(--bg);color:var(--text)}
body{min-height:100vh}.hidden{display:none!important}.muted{color:var(--muted)}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(460px,100%);background:rgba(16,25,35,.92);border:1px solid rgba(255,255,255,.08);border-radius:30px;padding:34px;box-shadow:var(--shadow);backdrop-filter:blur(18px)}
.brand-mark{display:flex;align-items:baseline;gap:10px}.brand-mark span{font-size:34px;line-height:1;font-weight:900;letter-spacing:-.06em;color:var(--accent)}.brand-mark small{font-size:11px;font-weight:800;letter-spacing:.12em;color:#fff}.brand-mark.compact span{font-size:25px}.brand-mark.compact small{font-size:9px}
.eyebrow{font-size:11px;font-weight:800;letter-spacing:.14em;color:var(--accent);margin:22px 0 8px}.login-card h1{font-size:clamp(32px,7vw,52px);line-height:.98;margin:0 0 14px;letter-spacing:-.05em}.login-foot{margin-top:26px;padding-top:20px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}
.stack-lg{display:grid;gap:16px;margin-top:28px}.field{display:grid;gap:8px}.field span{font-size:12px;font-weight:700;color:#cbd6e1}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:#0b141d;color:var(--text);border-radius:14px;padding:14px 15px;font:inherit;outline:none}.field textarea{min-height:120px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,204,51,.1)}
.btn{border:0;border-radius:13px;padding:12px 16px;font:inherit;font-weight:800;cursor:pointer;transition:.18s transform,.18s opacity,.18s background}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.primary{background:var(--accent);color:#111}.btn.ghost{background:#172330;color:#eaf0f6;border:1px solid #283b4f}.btn.danger{background:rgba(255,93,103,.12);color:#ff8790;border:1px solid rgba(255,93,103,.35)}.btn.small{padding:9px 12px;font-size:12px}.btn.full{width:100%;padding:15px}.btn-row{display:flex;gap:10px;flex-wrap:wrap}
.app-shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 22px;background:rgba(9,16,24,.88);border-bottom:1px solid rgba(255,255,255,.07);backdrop-filter:blur(20px)}.topbar-brand{display:flex;align-items:center;gap:24px}.topbar-brand .eyebrow{margin:0 0 3px}.topbar-actions{display:flex;gap:10px;align-items:center}.icon-btn{width:38px;height:38px;border-radius:11px;border:1px solid var(--line);background:#111c27;color:#fff;font-size:21px;cursor:pointer}.role-badge{font-size:11px;font-weight:800;letter-spacing:.06em;background:#162330;border:1px solid #2b4157;border-radius:999px;padding:9px 12px;color:#d9e4ee}
.nav-tabs{display:flex;gap:8px;overflow:auto;padding:14px 22px 0;max-width:1500px;margin:auto}.nav-tabs button{white-space:nowrap;border:1px solid var(--line);background:#0f1923;color:#91a4b7;border-radius:999px;padding:10px 14px;font-weight:800;cursor:pointer}.nav-tabs button.active{background:var(--accent);border-color:var(--accent);color:#111}.content{max-width:1500px;margin:auto;padding:22px}
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.kpi{background:linear-gradient(145deg,#111c27,#0f1822);border:1px solid var(--line);border-radius:18px;padding:18px}.kpi .label{font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.08em}.kpi .value{font-size:32px;font-weight:900;letter-spacing:-.04em;margin-top:6px}.kpi .sub{font-size:11px;color:var(--muted);margin-top:4px}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px;flex-wrap:wrap}.toolbar-left,.toolbar-right{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.search{min-width:260px;border:1px solid var(--line);background:#0e1822;color:#fff;border-radius:13px;padding:11px 14px;font:inherit}.select-compact{border:1px solid var(--line);background:#0e1822;color:#fff;border-radius:13px;padding:11px 14px;font:inherit}
.layout-with-news{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.object-card{position:relative;overflow:hidden;border:1px solid var(--line);background:var(--panel);border-radius:20px;min-height:290px;display:flex;flex-direction:column}.object-card.overdue{border-color:rgba(255,93,103,.6);box-shadow:inset 0 0 0 1px rgba(255,93,103,.18)}.object-card.recent{border-color:rgba(66,211,146,.35)}.object-image{height:125px;background:linear-gradient(135deg,#203348,#101821);background-size:cover;background-position:center;display:flex;align-items:flex-end;padding:12px}.status-pill{font-size:10px;font-weight:900;padding:7px 9px;border-radius:999px;background:rgba(9,16,24,.84);backdrop-filter:blur(10px)}.status-pill.overdue{color:#ff9ca3}.status-pill.ok{color:#79e7b1}.status-pill.unknown{color:#d3dce5}.object-body{padding:16px;display:flex;flex:1;flex-direction:column}.object-title{font-size:16px;font-weight:900;line-height:1.2;margin-bottom:7px}.object-desc{font-size:12px;line-height:1.55;color:#a7b7c7;flex:1}.object-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.meta-box{background:#0b141d;border:1px solid #1d2b3a;border-radius:12px;padding:10px}.meta-box span{display:block;font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:800;letter-spacing:.08em}.meta-box strong{display:block;margin-top:3px;font-size:12px}
.news-panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:16px;height:fit-content;position:sticky;top:92px}.news-panel h3{margin:0 0 12px}.news-item{border-top:1px solid var(--line);padding:14px 0}.news-item:first-of-type{border-top:0}.news-item .news-head{display:flex;justify-content:space-between;gap:8px;align-items:start}.news-item strong{font-size:13px}.news-item p{font-size:12px;line-height:1.5;color:#afbdca;margin:7px 0 0}.priority{font-size:9px;font-weight:900;padding:5px 7px;border-radius:999px}.priority.high{background:rgba(255,93,103,.15);color:#ff8f97}.priority.normal{background:rgba(99,167,255,.12);color:#89bbff}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:18px;margin-bottom:16px}.panel h2,.panel h3{margin:0 0 6px}.panel-head{display:flex;align-items:start;justify-content:space-between;gap:14px;margin-bottom:16px}.panel-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.upload-box{border:1px dashed #36506b;border-radius:16px;padding:16px;background:#0c1620}.upload-box textarea{min-height:180px}.hint{font-size:11px;line-height:1.45;color:var(--muted)}.warning-box{border:1px solid rgba(255,184,77,.3);background:rgba(255,184,77,.07);color:#ffd28a;border-radius:14px;padding:12px 14px;font-size:12px}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px}.data-table{width:100%;border-collapse:collapse;min-width:820px}.data-table th,.data-table td{text-align:left;border-bottom:1px solid #1e2d3c;padding:12px 13px;font-size:12px;vertical-align:top}.data-table th{position:sticky;top:0;background:#111c27;color:#8fa2b5;font-size:10px;text-transform:uppercase;letter-spacing:.07em}.data-table tr:last-child td{border-bottom:0}.tag{display:inline-block;font-size:10px;padding:5px 7px;border-radius:999px;background:#172637;border:1px solid #29415a;color:#dce7f1}.tag.danger{background:rgba(255,93,103,.1);border-color:rgba(255,93,103,.35);color:#ff9ba3}.tag.ok{background:rgba(66,211,146,.1);border-color:rgba(66,211,146,.3);color:#78e8b1}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid .span-2{grid-column:1/-1}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.68);z-index:50;display:grid;place-items:center;padding:20px}.modal{width:min(720px,100%);max-height:90vh;overflow:auto;background:#101923;border:1px solid #2b3c4f;border-radius:22px;padding:20px;box-shadow:var(--shadow)}
.empty{padding:32px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:16px}.toast{position:fixed;z-index:100;right:20px;bottom:20px;max-width:380px;background:#162330;color:#fff;border:1px solid #2d445b;border-radius:14px;padding:12px 14px;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.toast.error{border-color:rgba(255,93,103,.5)}
.spinner{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:1100px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.layout-with-news{grid-template-columns:1fr}.news-panel{position:static}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.topbar{padding:12px 14px}.topbar-brand{gap:12px}.topbar-brand>div:last-child{display:none}.role-badge{display:none}.content{padding:14px}.nav-tabs{padding:12px 14px 0}.cards,.panel-grid,.form-grid,.kpi-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.login-card{padding:26px}.search{min-width:0;width:100%}.toolbar-left,.toolbar-right{width:100%}.toolbar-left>*{flex:1}.object-card{min-height:260px}}
