
:root{
  --navy:#061a31;
  --navy-2:#0a2747;
  --blue:#1268e8;
  --blue-2:#0a4db7;
  --cyan:#1fd0d8;
  --bg:#f4f7fb;
  --panel:#ffffff;
  --text:#152941;
  --muted:#74839a;
  --line:#e5ebf3;
  --soft:#f7f9fc;
  --green:#12a66a;
  --red:#e35f50;
  --amber:#d69b16;
  --shadow:0 14px 40px rgba(20,45,80,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);transition:.25s;background-image:radial-gradient(circle at 90% 0%,rgba(18,104,232,.06),transparent 32%)}
button,input,select{font:inherit}
a{text-decoration:none;color:inherit}

/* LOGIN */
.login-page{min-height:100vh;background:#061529;display:flex;align-items:center;justify-content:center;padding:30px;overflow:hidden}
.login-shell{width:min(1220px,100%);min-height:700px;display:grid;grid-template-columns:1.18fr .82fr;border-radius:30px;overflow:hidden;border:1px solid rgba(255,255,255,.12);box-shadow:0 35px 110px rgba(0,0,0,.45)}
.login-hero{position:relative;padding:70px;background:
linear-gradient(135deg,rgba(8,83,179,.96),rgba(4,31,66,.90)),
radial-gradient(circle at 75% 20%,#25d7df55,transparent 25%),
linear-gradient(160deg,#0b6be7,#061b36);color:white;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.login-hero:after{content:"";position:absolute;width:700px;height:700px;border:1px solid rgba(255,255,255,.12);border-radius:50%;right:-300px;bottom:-350px;box-shadow:0 0 0 80px rgba(255,255,255,.025),0 0 0 160px rgba(255,255,255,.02)}
.hero-orbit{position:absolute;right:100px;top:90px;width:210px;height:210px;border:1px solid rgba(93,227,232,.25);border-radius:50%}
.brand-lockup{display:flex;align-items:center;gap:13px;position:relative;z-index:2}
.brand-lockup strong{display:block;font-size:19px;letter-spacing:.04em}
.brand-lockup small{display:block;font-size:10px;color:#b9d4ef}
.brand-mark{width:48px;height:48px;border-radius:14px;background:#fff;color:var(--blue);display:grid;place-items:center;font-size:26px;font-weight:950;box-shadow:0 10px 30px #001b3a55}
.eyebrow{font-size:10px;letter-spacing:.2em;font-weight:900;color:#75859b;margin-bottom:9px}
.login-hero .eyebrow{color:#b8d4f2;margin-top:55px}
.login-hero h1{font-size:58px;line-height:1.01;letter-spacing:-.04em;margin:0;position:relative;z-index:2}
.login-hero h1 span{color:#60e2e8}
.login-hero p{max-width:650px;color:#d7e9fb;line-height:1.75;font-size:15px;position:relative;z-index:2}
.login-stats{display:flex;gap:42px;margin-top:30px;position:relative;z-index:2}
.login-stats strong{font-size:21px;display:block}
.login-stats small{font-size:9px;color:#aac7e4}
.mini-flow{display:flex;gap:16px;align-items:center;margin-top:38px;font-size:10px;font-weight:900;letter-spacing:.14em;position:relative;z-index:2}
.mini-flow i{font-style:normal;color:#65e5e8}
.login-card{background:#fff;padding:60px 65px;display:flex;flex-direction:column;justify-content:center}
.login-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}
.pill{font-size:9px;font-weight:900;letter-spacing:.08em;background:#eaf8f1;color:#078558;border-radius:30px;padding:7px 10px}
.login-time{font-size:10px;color:#8a98aa;font-weight:800}
.logo-title{font-weight:950;font-size:23px;color:var(--text)}
.logo-title small{display:block;font-size:9px;letter-spacing:.13em;color:var(--muted);margin-top:3px}
.login-card h2{font-size:33px;letter-spacing:-.03em;margin:35px 0 5px}
.muted{color:var(--muted)}
.login-card form{margin-top:20px}
label{display:block;font-size:11px;font-weight:850;margin:17px 0 8px}
input{width:100%;border:1px solid var(--line);border-radius:11px;padding:14px 13px;background:#f9fbfd;outline:none;color:var(--text);transition:.2s}
input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(18,104,232,.10)}
.row{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin:15px 0 22px}
.row a{color:var(--blue);font-weight:700}
.check{display:flex;gap:7px;align-items:center;font-weight:600;margin:0}
.check input{width:auto}
.login-card form button,.primary-btn{width:100%;padding:14px;border:0;border-radius:11px;background:linear-gradient(135deg,#176ff0,#0c58c9);color:#fff;font-weight:850;cursor:pointer;box-shadow:0 9px 22px rgba(18,104,232,.2)}
.demo-access{margin-top:16px;border:1px dashed #d9e2ee;background:#f8fafc;border-radius:10px;padding:10px 12px;display:flex;gap:13px;align-items:center;font-size:10px;color:#7b899a}
.demo-access span{margin-left:auto}
.demo-access strong{color:#17304f}
.secure{text-align:center;color:#9ba7b6;font-size:9px;margin-top:20px}

/* SIDEBAR */
.sidebar{position:fixed;left:0;top:0;bottom:0;width:275px;background:linear-gradient(180deg,#061a31,#071d35);color:#fff;padding:25px 16px;display:flex;flex-direction:column;z-index:20;box-shadow:8px 0 30px rgba(4,22,42,.08)}
.brand{display:flex;align-items:center;gap:11px;padding:0 12px}
.brand-mark{width:42px;height:42px;border-radius:13px;background:#fff;color:var(--blue);display:grid;place-items:center;font-size:23px;font-weight:950}
.brand strong{display:block;font-size:17px}
.brand small{display:block;font-size:9px;color:#8ea5c0;margin-top:2px}
.profile{margin:31px 6px 17px;padding:14px;border-radius:15px;background:linear-gradient(135deg,rgba(255,255,255,.10),rgba(255,255,255,.04));border:1px solid rgba(255,255,255,.05);display:flex;gap:11px;align-items:center}
.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#def2ff;color:#0861bd;font-weight:900;font-size:11px}
.profile b{font-size:12px}
.profile small{display:block;color:#7e96b3;font-size:9px;margin-top:3px}
.sidebar nav{display:flex;flex-direction:column;gap:3px;overflow:auto;padding-right:3px}
.sidebar nav a{padding:10px 12px;border-radius:10px;color:#8fa5c0;font-size:11px;display:flex;align-items:center;gap:10px;transition:.18s}
.sidebar nav a span{width:17px;text-align:center;font-size:12px}
.sidebar nav a em{font-style:normal}
.sidebar nav a.active,.sidebar nav a:hover{background:linear-gradient(90deg,#1168e9,#0e5ed4);color:#fff;box-shadow:0 7px 20px rgba(18,104,232,.18)}
.side-foot{margin-top:auto;font-size:9px;color:#6e88a5;padding:12px 9px 2px}
.side-foot>div{margin-bottom:10px}
.side-foot b{color:#39d98a;float:right}
.logout{display:block;border:1px solid rgba(255,255,255,.10);border-radius:9px;padding:9px 10px;text-align:center;color:#a8bad0!important}
.logout:hover{background:#ffffff0b}

/* MAIN */
main{margin-left:275px;padding:30px 36px 50px;min-height:100vh}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.topbar h1{font-size:28px;letter-spacing:-.035em;margin:2px 0 7px}
.live-line{font-size:10px;color:#8795a8;display:flex;gap:6px;align-items:center}
.live-line span:first-child{color:#0da66a;font-weight:900}
.live-line strong{color:#61728a}
.live-line i{font-style:normal;color:#a5afbb}
.head-actions{display:flex;gap:9px;align-items:center}
.head-btn{background:var(--panel);border:1px solid var(--line);padding:10px 13px;border-radius:10px;font-size:10px;font-weight:800;color:var(--text);cursor:pointer;box-shadow:0 4px 12px rgba(20,45,80,.03)}
.head-btn:hover{border-color:#b9c9dc;transform:translateY(-1px)}
.icon-btn{font-size:15px;width:40px}
.filters{display:flex;gap:10px;margin:24px 0 14px}
.filters select,.filters button{border:1px solid var(--line);background:var(--panel);padding:11px 13px;border-radius:9px;font-size:10px;color:var(--text)}
.filters button{margin-left:auto;cursor:pointer}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:19px;position:relative;box-shadow:var(--shadow)}
.kpi span,.kpi small{display:block;color:var(--muted);font-size:9px}
.kpi strong{display:block;font-size:30px;letter-spacing:-.04em;margin:6px 0}
.kpi em{position:absolute;right:18px;top:21px;font-size:9px;font-style:normal}
.up{color:#08a56a}.down{color:#e35f50}
.grid{display:grid;gap:15px;margin-top:15px}.two{grid-template-columns:1.55fr 1fr}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:var(--shadow)}
.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}
.panel h2{font-size:15px;margin:0;letter-spacing:-.01em}.panel p{font-size:10px;color:var(--muted);margin:6px 0 0}
.legend{font-size:9px;color:var(--muted);display:flex;gap:10px;white-space:nowrap}
.chart-wrap{height:175px;display:flex;justify-content:center;margin-top:6px}
.commodity-list>div{display:grid;grid-template-columns:1fr auto 45px;padding:8px 0;border-bottom:1px solid #f0f3f7;font-size:10px}
.commodity-list i{display:inline-block;width:6px;height:6px;background:var(--blue);border-radius:50%;margin-right:7px}.commodity-list small{text-align:right;color:var(--muted)}
table{width:100%;border-collapse:collapse;margin-top:14px;font-size:10px}
th{text-align:left;color:#8997a9;font-weight:750;padding:9px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:11px 9px;border-bottom:1px solid #f0f3f7;color:#46566b;white-space:nowrap}
td b{color:var(--text)}
.bar{display:inline-block;width:75px;height:5px;background:#edf1f5;border-radius:5px;vertical-align:middle;margin-right:7px}.bar i{display:block;height:100%;background:linear-gradient(90deg,#16a89f,#31c8a0);border-radius:5px}
.status{padding:5px 8px;border-radius:15px;font-size:8px;background:#eaf8f1;color:#078558}.status.waspada{background:#fff6df;color:#b27a00}.status.kritis{background:#ffe8e5;color:#d34e3e}.status.review{background:#fff6df;color:#b27a00}.status.selesai{background:#eaf8f1;color:#078558}
.link{border:0;background:none;color:var(--blue);font-size:10px;font-weight:750;cursor:pointer}
.blue{color:var(--blue)!important}.mode{font-size:9px;background:#f0f5fa;padding:4px 7px;border-radius:5px}
.alert-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #f0f3f7}.alert-row>div{flex:1}.alert-row b{font-size:10px}.alert-row p{margin:3px 0;font-size:9px}.alert-row small{color:#9aa4b2;font-size:8px}.alert-row>strong{color:#a7b0bb}.alert-dot{width:8px;height:8px;border-radius:50%;background:#2fbf87}.alert-dot.kritis{background:#ed6a58}.alert-dot.waspada{background:#f1b83b}
footer{text-align:center;color:#9ba7b6;font-size:9px;padding:28px}

/* PREMIUM MAP */
.map-image{position:relative;margin-top:16px;border-radius:12px;overflow:hidden;background:#092a4c;aspect-ratio:2/1;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.map-image>img,.full-map>img{width:100%;height:100%;display:block;object-fit:cover}
.map-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(2,24,50,.04),rgba(2,24,50,.18));pointer-events:none}
.map-stat{position:absolute;top:14px;background:rgba(255,255,255,.96);border:1px solid #dce7f2;border-radius:9px;padding:7px 11px;text-align:center;box-shadow:0 8px 20px rgba(0,20,50,.14);color:var(--blue)}
.map-stat b{display:block;font-size:15px}.map-stat small{font-size:8px;color:#6f7e91}.s1{left:14px}.s2{left:104px}.s3{right:14px;color:#df604f}
.office-dot{position:absolute;width:9px;height:9px;border-radius:50%;border:2px solid white;background:#18d4dc;box-shadow:0 0 0 4px rgba(24,212,220,.22),0 2px 8px rgba(0,0,0,.3);padding:0;cursor:pointer;z-index:3;transform:translate(-50%,-50%);transition:.15s}
.office-dot:hover{transform:translate(-50%,-50%) scale(1.65);background:#fff;border-color:#1268e8}
.office-0{left:3.7%;top:25%}.office-1{left:9%;top:34%}.office-2{left:14%;top:42%}.office-3{left:11%;top:48%}.office-4{left:18%;top:51%}.office-5{left:20%;top:61%}.office-6{left:22%;top:73%}.office-7{left:28%;top:68%}.office-8{left:29%;top:72%}.office-9{left:34%;top:73%}.office-10{left:39%;top:78%}.office-11{left:42%;top:83%}.office-12{left:48%;top:83%}.office-13{left:57%;top:87%}.office-14{left:59%;top:90%}.office-15{left:67%;top:95%}.office-16{left:39%;top:36%}.office-17{left:45%;top:49%}.office-18{left:50%;top:57%}.office-19{left:55%;top:48%}.office-20{left:53%;top:32%}.office-21{left:68%;top:43%}.office-22{left:65%;top:48%}.office-23{left:62%;top:56%}.office-24{left:64%;top:63%}.office-25{left:70%;top:57%}.office-26{left:76%;top:57%}.office-27{left:81%;top:45%}.office-28{left:85%;top:50%}.office-29{left:91%;top:55%}
.office-info{position:absolute;left:50%;bottom:12px;transform:translateX(-50%) translateY(8px);opacity:0;min-width:190px;background:rgba(5,22,43,.94);color:#fff;padding:8px 12px;border-radius:9px;text-align:center;font-size:9px;z-index:5;transition:.2s;pointer-events:none}
.office-info.show{opacity:1;transform:translateX(-50%) translateY(0)}
.office-info b{display:block;font-size:10px}.office-info span{color:#a9c0da;display:block;margin-top:2px}
.map-footer{display:flex;justify-content:space-between;align-items:center;padding-top:10px;font-size:9px;color:#8997a9}.map-footer a{color:var(--blue);font-weight:800}
.large-map-page{padding:22px}.full-map{position:relative;margin-top:18px;border-radius:14px;overflow:hidden;aspect-ratio:2/1;background:#062449}.full-map .office-dot{width:11px;height:11px}
.office-full-0{left:4%;top:24%}.office-full-1{left:9%;top:33%}.office-full-2{left:14%;top:42%}.office-full-3{left:11%;top:48%}.office-full-4{left:18%;top:51%}.office-full-5{left:20%;top:61%}.office-full-6{left:22%;top:73%}.office-full-7{left:28%;top:68%}.office-full-8{left:29%;top:72%}.office-full-9{left:34%;top:73%}.office-full-10{left:39%;top:78%}.office-full-11{left:42%;top:83%}.office-full-12{left:48%;top:83%}.office-full-13{left:57%;top:87%}.office-full-14{left:59%;top:90%}.office-full-15{left:67%;top:95%}.office-full-16{left:39%;top:36%}.office-full-17{left:45%;top:49%}.office-full-18{left:50%;top:57%}.office-full-19{left:55%;top:48%}.office-full-20{left:53%;top:32%}.office-full-21{left:68%;top:43%}.office-full-22{left:65%;top:48%}.office-full-23{left:62%;top:56%}.office-full-24{left:64%;top:63%}.office-full-25{left:70%;top:57%}.office-full-26{left:76%;top:57%}.office-full-27{left:81%;top:45%}.office-full-28{left:85%;top:50%}.office-full-29{left:91%;top:55%}

/* MODULES */
.page-banner{margin:20px 0 15px;padding:19px 20px;border-radius:15px;background:linear-gradient(135deg,#092b51,#0a467f);color:white;display:flex;justify-content:space-between;align-items:center;box-shadow:0 15px 35px rgba(4,38,73,.15)}
.page-banner .eyebrow{color:#9fc1e4;margin:0 0 4px}.page-banner h2{margin:0;font-size:22px}.page-banner p{margin:5px 0 0;color:#bad1e8;font-size:10px}.page-actions{display:flex;gap:8px}.page-actions .head-btn{background:#ffffff12;border-color:#ffffff22;color:white}.page-actions .primary-btn{width:auto;padding:10px 14px}
.module-hero{background:linear-gradient(135deg,#fff,#f2f8ff);min-height:220px}.module-hero h2{font-size:25px;margin:14px 0 7px}.module-hero p{max-width:650px;line-height:1.7}.module-cards{display:flex;gap:10px;margin-top:24px}.module-cards div{background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px 14px;min-width:125px}.module-cards b,.module-cards small{display:block}.module-cards b{font-size:10px}.module-cards small{font-size:8px;color:var(--muted);margin-top:4px}
.snapshot{display:flex;justify-content:space-between;padding:15px 0;border-bottom:1px solid var(--line);font-size:10px}.snapshot b{font-size:14px}.red{color:var(--red)}
.row-btn{border:1px solid var(--line);background:var(--soft);border-radius:7px;padding:6px 9px;font-size:9px;cursor:pointer;color:var(--blue)}
.toast{position:fixed;right:24px;bottom:24px;background:#071d35;color:#fff;padding:12px 16px;border-radius:10px;font-size:10px;box-shadow:0 12px 35px rgba(0,0,0,.2);opacity:0;transform:translateY(10px);transition:.2s;z-index:100}.toast.show{opacity:1;transform:translateY(0)}

/* DARK MODE */
body.dark{--bg:#071321;--panel:#0d1e31;--text:#e8f0f9;--muted:#91a2b7;--line:#203349;--soft:#10253a;--shadow:0 14px 35px rgba(0,0,0,.22);background-image:radial-gradient(circle at 90% 0%,rgba(18,104,232,.12),transparent 32%)}
body.dark .head-btn,body.dark .filters select,body.dark .filters button{background:#0d1e31;color:#e8f0f9;border-color:#203349}
body.dark .kpi,body.dark .panel{box-shadow:var(--shadow)}
body.dark td{color:#aab9ca;border-color:#1a2d42}
body.dark th{border-color:#203349}
body.dark .commodity-list>div{border-color:#1a2d42}
body.dark .map-image{box-shadow:inset 0 0 0 1px #28415e}
body.dark .module-hero{background:linear-gradient(135deg,#0d1e31,#0a2747)}
body.dark .demo-access{background:#0c1d2f;border-color:#294158}
body.dark .demo-access strong{color:#e8f0f9}

/* RESPONSIVE */
@media(max-width:1100px){
  .sidebar{width:82px}.sidebar .brand>div:not(.brand-mark),.profile>div:not(.avatar),.sidebar nav a em,.side-foot>div{display:none}
  .sidebar nav a{justify-content:center;padding:11px}.sidebar nav a span{width:auto}
  main{margin-left:82px}.kpis{grid-template-columns:repeat(2,1fr)}.two{grid-template-columns:1fr}
}
@media(max-width:760px){
  .login-shell{grid-template-columns:1fr}.login-hero{display:none}.login-card{padding:42px 28px}.demo-access{display:block}.demo-access span{display:block;margin:5px 0 0}
  main{padding:20px 15px}.topbar{display:block}.head-actions{margin-top:15px}.filters{overflow:auto}.filters select{min-width:170px}.filters button{margin-left:0;min-width:130px}
  .kpis{grid-template-columns:1fr}.panel{overflow:auto}.map-image,.full-map{min-width:650px}.page-banner{display:block}.page-actions{margin-top:15px}
}
