:root{color-scheme:light;--bg:#e8edf6;--bg-soft:#f4f6fb;--surface:rgba(255,255,255,.93);--surface-2:#ffffff;--surface-3:rgba(248,250,254,.95);--border:rgba(26,58,122,.10);--border-strong:rgba(26,58,122,.18);--text:#07122a;--muted:#526282;--muted-2:#8898b8;--primary:#1b3d8a;--primary-2:#0f2560;--accent:#c5832a;--accent-2:#e09a40;--gold:#c5832a;--success:#1a6b3c;--warning:#b45309;--danger:#b91c1c;--info:#1d4ed8;--shadow-xs:0 2px 8px rgba(7,18,42,.05),0 6px 18px rgba(7,18,42,.06);--shadow:0 8px 32px rgba(7,18,42,.10),0 20px 52px rgba(7,18,42,.08);--shadow-lg:0 18px 60px rgba(7,18,42,.16),0 40px 96px rgba(7,18,42,.12);--radius:20px;--radius-lg:28px;--ease:cubic-bezier(.2,.8,.2,1);}body[data-theme='dark']{color-scheme:dark;--bg:#060d1c;--bg-soft:#091526;--surface:rgba(10,20,44,.84);--surface-2:rgba(12,24,50,.97);--surface-3:rgba(6,12,28,.78);--border:rgba(148,172,220,.14);--border-strong:rgba(148,172,220,.26);--text:#ecf2fb;--muted:#90a6ca;--muted-2:#607596;--primary:#60a5fa;--primary-2:#93c5fd;--accent:#f6c353;--accent-2:#fbbf24;--gold:#f6c353;--success:#34d399;--warning:#fbbf24;--danger:#fb7185;--info:#60a5fa;--shadow-xs:0 8px 24px rgba(0,0,0,.28);--shadow:0 20px 64px rgba(0,0,0,.40);--shadow-lg:0 32px 100px rgba(0,0,0,.54);}*{box-sizing:border-box;}html{scroll-behavior:smooth;}body{margin:0;min-height:100vh;font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;line-height:1.6;color:var(--text);background:radial-gradient(ellipse at 12% -8%,rgba(27,61,138,.17),transparent 36rem),radial-gradient(ellipse at 94% 2%,rgba(197,131,42,.13),transparent 32rem),radial-gradient(ellipse at 50% 106%,rgba(27,61,138,.08),transparent 30rem),linear-gradient(160deg,var(--bg),var(--bg-soft) 52%,var(--bg));background-attachment:fixed;overflow-x:hidden;}body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(circle,rgba(100,120,180,.05) 1px,transparent 1px);background-size:28px 28px;mask-image:linear-gradient(to bottom,rgba(0,0,0,.65),transparent 78%);}button,select,input{font:inherit;}button,a,select{-webkit-tap-highlight-color:transparent;}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid rgba(96,165,250,.35);outline-offset:3px;}/* ── Loading ── */ .loading-overlay{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:20px;background:rgba(3,8,22,.82);backdrop-filter:blur(22px);}.loading-card{width:min(430px,calc(100vw - 32px));padding:38px;border-radius:30px;text-align:center;background:linear-gradient(160deg,rgba(10,22,52,.96),rgba(6,14,34,.90));border:1px solid rgba(148,172,220,.22);box-shadow:0 0 0 1px rgba(148,172,220,.07),var(--shadow-lg);}.spinner{width:52px;height:52px;margin:0 auto 18px;border-radius:999px;border:4px solid rgba(148,172,220,.16);border-top-color:#60a5fa;border-right-color:#f6c353;animation:spin .85s linear infinite;}@keyframes spin{to{transform:rotate(360deg);}}.loading-title{font-weight:800;font-size:1.1rem;letter-spacing:-.02em;margin-bottom:6px;color:#ecf2fb;}.loading-sub{color:#90a6ca;font-size:.92rem;}/* ── App Shell ── */ .app-shell{position:relative;z-index:1;display:grid;grid-template-columns:306px minmax(0,1fr);min-height:100vh;}/* ── Sidebar ── */ .sidebar{position:sticky;top:0;height:100vh;overflow:auto;overflow-x:hidden;padding:24px 18px;border-right:1px solid var(--border);background:linear-gradient(180deg,rgba(255,255,255,.76),rgba(255,255,255,.34)),rgba(255,255,255,.64);backdrop-filter:blur(28px) saturate(1.5);box-shadow:14px 0 48px rgba(7,18,42,.07);z-index:30;scrollbar-width:thin;transition:width .3s cubic-bezier(.4,0,.2,1),padding .3s cubic-bezier(.4,0,.2,1);width:306px;}/* ── Sidebar Collapsed ── */ body.sidebar-collapsed .sidebar{width:72px;padding:24px 10px;}/* Make sidebar flex column for bottom toggle */ .sidebar{display:flex;flex-direction:column;}body.sidebar-collapsed .sidebar .brand-title,body.sidebar-collapsed .sidebar .brand-sub,body.sidebar-collapsed .sidebar .nav a span,body.sidebar-collapsed .sidebar .sidebar-note{display:none;}body.sidebar-collapsed .sidebar .brand{justify-content:center;padding:10px;}body.sidebar-collapsed .sidebar .nav a{justify-content:center;padding:11px 8px;gap:0;}body.sidebar-collapsed .sidebar .nav a.active::after{right:50%;transform:translateX(50%);bottom:4px;top:auto;}body.sidebar-collapsed .sidebar .sidebar-toggle svg{transform:rotate(180deg);}body.sidebar-collapsed .app-shell{grid-template-columns:72px minmax(0,1fr);}/* ── Sidebar Toggle ── */ .sidebar-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 auto 12px;border-radius:10px;border:1px solid var(--border);background:rgba(148,163,184,.08);color:var(--muted);cursor:pointer;transition:background .2s,color .2s,transform .2s;}.sidebar-toggle:hover{background:rgba(27,61,138,.1);color:var(--primary);transform:scale(1.08);}.sidebar-toggle svg{width:18px;height:18px;transition:transform .3s cubic-bezier(.4,0,.2,1);}/* ── Data Update Badge ── */ .data-update-badge{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:12px;font-size:.82rem;font-weight:700;background:linear-gradient(135deg,rgba(27,61,138,.08),rgba(197,131,42,.06));border:1px solid var(--border);color:var(--text);white-space:nowrap;}.data-update-badge svg{width:15px;height:15px;color:var(--primary);flex:0 0 auto;}.data-update-badge .update-label{color:var(--muted);font-weight:600;}body[data-theme='dark'] .data-update-badge{background:linear-gradient(135deg,rgba(96,165,250,.12),rgba(246,195,83,.08));}body[data-theme='dark'] .sidebar{background:linear-gradient(180deg,rgba(10,20,46,.96),rgba(6,12,28,.76)),rgba(6,12,28,.72);box-shadow:18px 0 64px rgba(0,0,0,.32);border-right-color:rgba(148,172,220,.12);}/* ── Brand ── */ .brand{display:flex;gap:13px;align-items:center;margin-bottom:22px;padding:14px;border-radius:22px;border:1px solid var(--border);background:linear-gradient(135deg,rgba(255,255,255,.82),rgba(255,255,255,.22));box-shadow:var(--shadow-xs);}body[data-theme='dark'] .brand{background:linear-gradient(135deg,rgba(12,24,54,.88),rgba(8,18,42,.40));border-color:rgba(148,172,220,.18);}.brand-badge{width:50px;height:50px;flex:0 0 50px;border-radius:17px;display:grid;place-items:center;color:white;background:linear-gradient(135deg,rgba(255,255,255,.18),rgba(255,255,255,0)),linear-gradient(135deg,var(--primary),var(--primary-2));box-shadow:0 14px 32px rgba(27,61,138,.34),inset 0 1px 0 rgba(255,255,255,.28);}.brand-badge svg,.brand-badge i{width:25px;height:25px;}.brand-badge.brand-logo{width:58px;height:58px;flex:0 0 58px;padding:0;background:transparent !important;border:0 !important;box-shadow:none !important;color:var(--primary);overflow:visible;}.brand-badge.brand-logo img{width:58px;height:58px;object-fit:contain;display:block;background:transparent !important;border:0 !important;box-shadow:none !important;}.brand-title{font-size:.96rem;font-weight:800;line-height:1.2;letter-spacing:-.025em;}.brand-sub{font-size:.78rem;color:var(--muted);margin-top:4px;}/* ── Nav ── */ .nav{display:grid;gap:6px;margin:16px 0 20px;}.nav a{position:relative;display:flex;align-items:center;gap:11px;min-height:46px;padding:11px 13px;border-radius:16px;border:1px solid transparent;text-decoration:none;color:var(--muted);background:rgba(148,163,184,.07);transition:transform .22s var(--ease),background .22s var(--ease),border-color .22s var(--ease),color .22s var(--ease),box-shadow .22s var(--ease);font-size:.91rem;font-weight:700;}.nav a i,.nav a svg{width:18px;height:18px;flex:0 0 auto;}.nav a:hover{transform:translateX(4px);color:var(--text);border-color:var(--border-strong);background:rgba(27,61,138,.08);}.nav a.active{color:white;border-color:rgba(255,255,255,.14);background:linear-gradient(135deg,rgba(255,255,255,.18),rgba(255,255,255,0)),linear-gradient(135deg,var(--primary),var(--primary-2) 52%,#060d1c);box-shadow:0 14px 30px rgba(27,61,138,.28),inset 0 1px 0 rgba(255,255,255,.22);}.nav a.active::after{content:"";position:absolute;right:12px;width:7px;height:7px;border-radius:999px;background:var(--gold);box-shadow:0 0 16px rgba(197,131,42,.85);}.sidebar-note{margin-bottom:10px;padding:13px 14px;border:1px solid var(--border);border-radius:17px;color:var(--muted);background:linear-gradient(145deg,var(--surface),rgba(148,163,184,.05));box-shadow:var(--shadow-xs);font-size:.84rem;}.sidebar-note span{color:var(--text);font-weight:800;}.sidebar-note label{display:block;margin-bottom:7px;font-size:.74rem;color:var(--muted);font-weight:800;letter-spacing:.10em;text-transform:uppercase;}.main{min-width:0;min-height:100vh;padding:26px;display:flex;flex-direction:column;overflow:visible;}.topbar{position:relative;overflow:hidden;display:flex;justify-content:space-between;gap:20px;align-items:stretch;padding:22px;margin-bottom:16px;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:linear-gradient(135deg,rgba(255,255,255,.88),rgba(255,255,255,.46)),radial-gradient(circle at 86% 8%,rgba(27,61,138,.11),transparent 38%),radial-gradient(circle at 7% 90%,rgba(197,131,42,.07),transparent 32%),var(--surface);box-shadow:var(--shadow);backdrop-filter:blur(22px) saturate(1.5);}body[data-theme='dark'] .topbar{background:linear-gradient(135deg,rgba(10,20,46,.90),rgba(6,12,28,.62)),radial-gradient(circle at 84% 6%,rgba(96,165,250,.14),transparent 38%),radial-gradient(circle at 10% 94%,rgba(246,195,83,.07),transparent 32%),var(--surface);box-shadow:0 16px 42px rgba(0,0,0,.32);}.topbar::before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(27,61,138,.56),rgba(197,131,42,.38),transparent 54%);height:3px;}.topbar-left{display:flex;align-items:center;gap:16px;min-width:0;}.hero-icon{width:62px;height:62px;flex:0 0 62px;display:grid;place-items:center;border-radius:22px;color:#fff;background:linear-gradient(135deg,var(--primary),var(--primary-2));box-shadow:0 18px 42px rgba(27,61,138,.28),inset 0 1px 0 rgba(255,255,255,.30);}.hero-icon svg{width:30px;height:30px;}.hero-copy{min-width:0;}.eyebrow{display:inline-flex;align-items:center;gap:8px;margin-bottom:6px;color:var(--primary);font-size:.74rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;}.eyebrow svg{width:15px;height:15px;}.hero-copy h1{margin:0;font-size:clamp(1.45rem,2.4vw,2.25rem);line-height:1.04;letter-spacing:-.055em;font-weight:800;}.hero-copy p{margin:8px 0 0;color:var(--muted);max-width:72ch;line-height:1.5;}.hero-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px;}.hero-meta span,.exec-legend .legend-copy{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid var(--border);border-radius:999px;background:rgba(148,163,184,.08);color:var(--muted);font-size:.78rem;font-weight:700;}.hero-meta svg{width:15px;height:15px;}.topbar-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:flex-end;align-content:center;min-width:320px;margin-left:auto;}.update-pill{display:inline-flex;align-items:center;gap:9px;padding:10px 13px;min-height:42px;border-radius:999px;border:1px solid rgba(27,61,138,.24);background:linear-gradient(135deg,rgba(27,61,138,.12),rgba(197,131,42,.07));color:var(--primary);font-weight:800;font-size:.83rem;box-shadow:0 8px 22px rgba(27,61,138,.08),inset 0 1px 0 rgba(255,255,255,.16);white-space:nowrap;}.update-pill i,.update-pill svg{width:17px;height:17px;}.visually-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0,0,0,0) !important;white-space:nowrap !important;border:0 !important;}.topbar{position:relative;top:auto;z-index:2;align-items:center;justify-content:flex-end;min-height:70px;padding:12px 16px;margin-bottom:20px;border-radius:24px;background:linear-gradient(135deg,rgba(255,255,255,.88),rgba(248,250,252,.58)),radial-gradient(circle at 94% 0%,rgba(27,61,138,.10),transparent 34%),var(--surface);box-shadow:0 14px 36px rgba(7,18,42,.08);backdrop-filter:blur(18px);}body[data-theme='dark'] .topbar{background:linear-gradient(135deg,rgba(10,20,46,.90),rgba(6,12,28,.64)),radial-gradient(circle at 94% 0%,rgba(96,165,250,.14),transparent 34%),var(--surface);box-shadow:0 16px 42px rgba(0,0,0,.30);}.topbar::before{height:2px;background:linear-gradient(90deg,transparent,rgba(27,61,138,.72),rgba(197,131,42,.52),transparent);}.topbar-left{display:none !important;}.topbar-actions{width:100%;min-width:0;margin-left:0;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;}.date-control{display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:5px 6px 5px 13px;border:1px solid rgba(26,58,122,.13);border-radius:17px;background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(248,250,252,.80));box-shadow:0 6px 18px rgba(7,18,42,.06),inset 0 1px 0 rgba(255,255,255,.82);color:var(--text);transition:transform .18s var(--ease),border-color .18s var(--ease),box-shadow .18s var(--ease);}body[data-theme='dark'] .date-control{border-color:rgba(148,172,220,.20);background:linear-gradient(180deg,rgba(12,24,52,.97),rgba(6,12,28,.82));box-shadow:0 8px 24px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.05);}.date-control > svg,.date-control > i{width:16px;height:16px;color:var(--primary);flex:0 0 auto;}.date-control label{color:var(--muted);font-size:.73rem;font-weight:800;letter-spacing:.105em;text-transform:uppercase;line-height:1;white-space:nowrap;}.date-control .date-filter{min-width:150px;min-height:34px;padding:6px 34px 6px 11px;border:1px solid rgba(148,163,184,.18);border-radius:13px;background:var(--surface-2);box-shadow:none;color:var(--text);font-size:.83rem;font-weight:700;letter-spacing:-.01em;}.btn{min-height:44px;padding:0 14px;border-radius:17px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:.82rem;font-weight:800;letter-spacing:.005em;line-height:1;background:linear-gradient(180deg,rgba(255,255,255,.94),rgba(248,250,252,.78));border-color:rgba(26,58,122,.13);box-shadow:0 6px 18px rgba(7,18,42,.06),inset 0 1px 0 rgba(255,255,255,.76);}body[data-theme='dark'] .btn{background:linear-gradient(180deg,rgba(12,24,52,.97),rgba(6,12,28,.82));border-color:rgba(148,172,220,.20);box-shadow:0 8px 24px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.05);}.btn svg,.btn i{width:16px;height:16px;flex:0 0 auto;}.btn span{white-space:nowrap;}.btn-primary{background:linear-gradient(135deg,#234faa,#1b3d8a 56%,#0f2560);border-color:rgba(27,61,138,.30);color:#fff;box-shadow:0 12px 28px rgba(27,61,138,.24),inset 0 1px 0 rgba(255,255,255,.22);}body[data-theme='dark'] .btn-primary{background:linear-gradient(135deg,#3b82f6,#1d4ed8 58%,#0f2560);color:#edf2ff;box-shadow:0 12px 28px rgba(96,165,250,.20),inset 0 1px 0 rgba(255,255,255,.18);}.btn:hover,.date-control:hover{transform:translateY(-1px);border-color:rgba(27,61,138,.28);}select,.btn,.date-filter{border:1px solid var(--border-strong);background:linear-gradient(180deg,var(--surface-2),var(--surface-3));color:var(--text);border-radius:15px;box-shadow:var(--shadow-xs);font-size:.9rem;}select,.date-filter{padding:10px 13px;}.date-filter{width:100%;}.btn{position:relative;display:inline-flex;gap:9px;align-items:center;justify-content:center;min-height:42px;padding:10px 13px;cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease),background .2s var(--ease);font-weight:800;white-space:nowrap;}.btn svg,.btn i{width:17px;height:17px;}.btn:hover{transform:translateY(-2px);border-color:rgba(27,61,138,.30);box-shadow:0 16px 36px rgba(7,18,42,.12);}.btn:active{transform:translateY(0);}.btn-primary{color:white;border-color:transparent;background:linear-gradient(135deg,rgba(255,255,255,.22),rgba(255,255,255,0)),linear-gradient(135deg,var(--primary),var(--primary-2));box-shadow:0 14px 30px rgba(27,61,138,.26);}.btn.icon-only{width:44px;height:44px;padding:0;}.btn.icon-only span,.btn.icon-only .btn-text{display:none;}.exec-legend{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:12px 14px;margin-bottom:18px;border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:var(--shadow-xs);backdrop-filter:blur(14px);}.legend-item{display:inline-flex;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;color:var(--muted);background:rgba(148,163,184,.08);border:1px solid var(--border);font-weight:700;font-size:.78rem;}.legend-dot{width:10px;height:10px;border-radius:999px;display:inline-block;box-shadow:0 0 12px currentColor;}.legend-green{color:var(--success);background:var(--success);}.legend-yellow{color:var(--warning);background:var(--warning);}.legend-red{color:var(--danger);background:var(--danger);}.legend-spacer{flex:1 1 auto;}.section{display:none;animation:fadeUp .38s var(--ease) both;}.section.active{display:block;}body.print-mode .section{display:block !important;}@keyframes fadeUp{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}.section-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-end;margin:2px 0 16px;}.section h2{margin:0 0 4px;font-size:clamp(1.22rem,1.8vw,1.7rem);font-weight:800;letter-spacing:-.04em;}.section p{margin:0;color:var(--muted);font-size:.90rem;line-height:1.5;}.section-chip{display:inline-flex;align-items:center;gap:7px;max-width:50ch;padding:8px 12px;border-radius:999px;background:linear-gradient(135deg,rgba(27,61,138,.12),rgba(197,131,42,.08));color:var(--primary);font-weight:800;border:1px solid rgba(27,61,138,.18);font-size:.78rem;box-shadow:var(--shadow-xs);}.interactive-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;border:1px solid rgba(197,131,42,.30);background:rgba(197,131,42,.09);color:var(--gold);font-weight:800;box-shadow:0 0 0 1px rgba(197,131,42,.05),0 10px 28px rgba(197,131,42,.08);}.interactive-badge::before{content:"";width:8px;height:8px;border-radius:999px;background:var(--gold);box-shadow:0 0 12px rgba(197,131,42,.80);}.warnings{margin:0 0 18px;padding:14px 16px;border-radius:18px;background:rgba(185,28,28,.10);border:1px solid rgba(185,28,28,.24);color:var(--danger);white-space:pre-wrap;box-shadow:var(--shadow-xs);}.card-grid{display:grid;gap:18px;}.overview-grid{grid-template-columns:repeat(4,minmax(0,1fr));}.metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr));}.chart-grid.two-up{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin:15px 0;}.chart-grid.three-up{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin:15px 0;}.subsection-title,.stock-section-title{display:flex;align-items:center;gap:10px;margin:22px 0 11px;font-size:.82rem;font-weight:800;color:var(--text);letter-spacing:.12em;text-transform:uppercase;}.subsection-title::before,.stock-section-title::before{content:"";width:9px;height:9px;border-radius:999px;background:linear-gradient(135deg,var(--primary),var(--gold));box-shadow:0 0 16px rgba(27,61,138,.55);}.subsection-note{margin:0 0 8px;color:var(--muted);font-size:.84rem;}.panel,.metric-card,.overview-card,.silo-card{position:relative;overflow:hidden;border:1px solid rgba(148,172,220,.18);border-radius:18px;background:linear-gradient(150deg,rgba(255,255,255,.92),rgba(255,255,255,.56)),var(--surface);box-shadow:0 2px 8px rgba(0,0,0,.04),0 8px 32px rgba(0,0,0,.06),inset 0 1px 0 rgba(255,255,255,.6);backdrop-filter:blur(20px) saturate(1.8);transition:all 0.4s cubic-bezier(0.175,0.885,0.32,1.275);}body[data-theme='dark'] .panel,body[data-theme='dark'] .metric-card,body[data-theme='dark'] .overview-card,body[data-theme='dark'] .silo-card{background:linear-gradient(150deg,rgba(20,35,75,.92),rgba(10,20,50,.72)),var(--surface);border-color:rgba(148,172,220,.15);box-shadow:0 2px 8px rgba(0,0,0,.2),0 8px 32px rgba(0,0,0,.3),inset 0 1px 0 rgba(148,172,220,.1);}body[data-theme='dark'] .metric-card:hover,body[data-theme='dark'] .overview-card:hover{border-color:rgba(96,165,250,.3);box-shadow:0 4px 12px rgba(0,0,0,.3),0 16px 48px rgba(0,0,0,.4),0 0 0 1px rgba(96,165,250,.2),0 0 40px rgba(96,165,250,.1);}body[data-theme='dark'] .metric-value{color:#ecf2fb;}.panel::before,.metric-card::before,.overview-card::before,.silo-card::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,#3b82f6,#8b5cf6,#f59e0b,#10b981);background-size:300% 100%;animation:gradientShift 4s ease infinite;opacity:.9;z-index:1;}@keyframes gradientShift{0%,100%{background-position:0% 50%;}50%{background-position:100% 50%;}}.metric-card::after,.overview-card::after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(96,165,250,.08) 0%,transparent 60%);opacity:0;transition:opacity 0.4s ease;pointer-events:none;z-index:0;}.metric-card:hover::after,.overview-card:hover::after{opacity:1;}.panel{padding:18px;min-height:344px;}.panel h3{position:relative;margin:0 0 12px !important;color:var(--muted) !important;font-size:.87rem !important;font-weight:700 !important;letter-spacing:.02em;}.panel canvas{width:100% !important;height:300px !important;}.panel.chart-sheen{isolation:isolate;}.panel.chart-sheen::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.14) 44%,rgba(255,255,255,.34) 50%,rgba(255,255,255,.14) 56%,transparent 80%);transform:translateX(-135%);animation:chartSheenSweep 2.8s linear infinite;mix-blend-mode:screen;z-index:2;}@keyframes chartSheenSweep{0%{transform:translateX(-135%);opacity:.1;}18%{opacity:.42;}100%{transform:translateX(135%);opacity:.1;}}/* Card shimmer effect on hover */ .metric-card .metric-visual::before,.overview-card .metric-visual::before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);transition:left 0.6s ease;pointer-events:none;}.metric-card:hover .metric-visual::before,.overview-card:hover .metric-visual::before{left:100%;}.overview-radar-panel{margin-top:15px;min-height:360px;}.overview-radar-panel canvas{height:320px !important;}.metric-card,.overview-card{min-height:188px;padding:20px;cursor:pointer;}.overview-card{min-height:204px;}.metric-card:hover,.overview-card:hover,.silo-card:hover{transform:translateY(-8px) scale(1.02);border-color:rgba(96,165,250,.4);box-shadow:0 4px 12px rgba(0,0,0,.08),0 16px 48px rgba(0,0,0,.12),0 0 0 1px rgba(96,165,250,.2),0 0 40px rgba(96,165,250,.15);}.metric-card:active,.overview-card:active,.silo-card:active{transform:translateY(-4px) scale(1.01);transition-duration:0.1s;}.metric-card.no-popup{cursor:default;}.metric-card.no-popup:hover,.metric-card.no-popup:active{transform:none;box-shadow:var(--shadow-xs);border-color:var(--border);}.metric-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:11px;}.metric-label{color:var(--muted);font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;display:flex;align-items:center;gap:8px;}.metric-value{margin-top:6px;font-size:clamp(1.5rem,2.2vw,2.2rem);font-weight:900;line-height:1.04;letter-spacing:-.06em;font-variant-numeric:tabular-nums;color:var(--text);}.metric-sub{color:var(--muted);font-size:.82rem;margin-top:7px;min-height:19px;}.metric-minmax-date{margin-top:6px;font-size:.62rem;color:var(--muted);opacity:.9;line-height:1.2;font-weight:600;display:grid;gap:2px;}.metric-minmax-date .mm-line{display:block;}.metric-meta{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:12px;}.small-note{color:var(--muted);font-size:.76rem;font-weight:700;}.status-pill{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:6px 12px;border-radius:999px;font-size:.72rem;font-weight:800;border:1px solid rgba(148,172,220,.2);background:rgba(148,163,184,.06);color:var(--muted);white-space:nowrap;backdrop-filter:blur(8px);transition:all 0.2s ease;}.status-pill:hover{background:rgba(148,163,184,.12);border-color:rgba(148,172,220,.3);}.status-green{background:rgba(26,107,60,.12);color:var(--success);border-color:rgba(26,107,60,.28);}.status-yellow{background:rgba(180,83,9,.12);color:var(--warning);border-color:rgba(180,83,9,.30);}.status-red{background:rgba(185,28,28,.12);color:var(--danger);border-color:rgba(185,28,28,.30);}.status-grey{background:rgba(148,163,184,.10);color:var(--muted);border-color:var(--border);}.status-pill.dot-only{width:36px;min-width:36px;height:36px;padding:0;}.status-pill.status-badge{font-size:.62rem;padding:3px 7px;gap:4px;border-radius:10px;letter-spacing:.01em;}.status-badge .status-badge-icon{font-size:.72rem;line-height:1;}.status-dot{width:12px;height:12px;border-radius:999px;display:inline-block;background:currentColor;box-shadow:0 0 0 2px rgba(255,255,255,.30) inset,0 0 14px currentColor;}.metric-visual{margin-top:14px;height:76px;display:flex;align-items:center;justify-content:center;}.overview-card.has-overview-animation{min-height:244px;}.overview-card.has-overview-animation .metric-visual{height:auto;min-height:74px;align-items:stretch;}.overview-card.has-overview-animation .metric-meta{margin-top:10px;}.overview-count-up{display:inline-block;min-width:4.6ch;font-variant-numeric:tabular-nums;}.overview-animated-meter{width:100%;display:grid;gap:8px;align-self:stretch;}.overview-animated-track{position:relative;width:100%;height:27px;border-radius:999px;overflow:hidden;border:1px solid rgba(148,163,184,.20);background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,0)),rgba(148,163,184,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.16),inset 0 -8px 18px rgba(7,18,42,.10);}.overview-animated-fill{position:absolute;inset:0 auto 0 0;width:0%;min-width:0;border-radius:inherit;overflow:hidden;background:linear-gradient(90deg,#0891b2 0%,#14b8a6 52%,#22c55e 100%);box-shadow:0 0 18px rgba(20,184,166,.30),0 0 34px rgba(34,197,94,.18);transition:width 1.45s var(--ease);will-change:width;}.overview-animated-fill::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.58) 50%,transparent 100%);transform:translateX(-100%);animation:fill-sheen 2.6s linear infinite;opacity:.78;}.overview-animated-labels{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:.72rem;font-weight:800;font-variant-numeric:tabular-nums;}@keyframes fill-sheen{from{transform:translateX(-100%);}to{transform:translateX(100%);}}@media (prefers-reduced-motion:reduce){.overview-animated-fill{transition:none;}.overview-animated-fill::after{animation:none;}}.spark{width:100%;height:56px;filter:drop-shadow(0 8px 10px rgba(27,61,138,.14));}.spark polyline,.spark path{stroke-dasharray:240;stroke-dashoffset:240;animation:draw 1.15s var(--ease) forwards;}@keyframes draw{to{stroke-dashoffset:0;}}.gauge{width:100%;height:78px;overflow:visible;filter:drop-shadow(0 10px 14px rgba(27,61,138,.14));}.gauge text{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace;font-weight:800;}.overview-card.has-speedometer-animation,.metric-card.has-speedometer-animation{min-height:224px;}.overview-card.has-speedometer-animation .metric-visual,.metric-card.has-speedometer-animation .metric-visual{height:auto;min-height:92px;align-items:stretch;}.overview-speedometer{width:100%;display:grid;place-items:center;align-self:stretch;}.animated-gauge{width:100%;max-width:210px;height:96px;overflow:visible;}.animated-gauge-track{stroke:rgba(148,163,184,.24);}.animated-gauge-progress-clip{width:0px;transition:width 1.45s var(--ease);will-change:width;}.animated-gauge-progress-bg{filter:drop-shadow(0 0 12px rgba(20,184,166,.36));}.animated-gauge-sheen{opacity:.84;transform:translateX(-100%);animation:fill-sheen 2.6s linear infinite;}.animated-gauge-needle{transform-box:view-box;transform-origin:90px 80px;transform:rotate(0deg);transition:transform 1.45s var(--ease);filter:drop-shadow(0 2px 5px rgba(7,18,42,.22));}.animated-gauge-center{filter:drop-shadow(0 3px 7px rgba(7,18,42,.20));}.animated-gauge-number{font-variant-numeric:tabular-nums;}@media (prefers-reduced-motion:reduce){.animated-gauge-progress-clip,.animated-gauge-needle,.silo-fill,.cement-pile-fill{transition:none;}.animated-gauge-sheen,.silo-fill::after,.cement-pile-fill::after{animation:none;}}/* ── Kendala Packer PBR 1 & 2 ── */ .kendala-packer-block{display:grid;gap:15px;margin:12px 0 18px;}.kendala-packer-label{display:inline-flex;align-items:center;gap:8px;width:fit-content;margin:5px 0 -2px;padding:7px 11px;border-radius:999px;border:1px solid rgba(197,131,42,.24);background:rgba(197,131,42,.08);color:var(--gold);font-size:.76rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase;}.kendala-packer-label::before{content:"";width:8px;height:8px;border-radius:999px;background:var(--gold);box-shadow:0 0 12px rgba(197,131,42,.75);}.kendala-packer-block .panel{min-height:336px;}.kendala-packer-block .panel canvas{height:286px !important;}.kendala-packer-block canvas{cursor:pointer;}@media (max-width:760px){.kendala-packer-block .panel{min-height:310px;}.kendala-packer-block .panel canvas{height:260px !important;}}/* ── Packer PBR 1 & 2 MTD Summary ── */ .packer-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin:12px 0 18px;}.packer-summary-card{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface-2);box-shadow:var(--shadow-xs);backdrop-filter:blur(16px);}body[data-theme='dark'] .packer-summary-card{background:linear-gradient(150deg,rgba(16,30,64,.88),rgba(8,18,44,.70));border-color:rgba(148,172,220,.14);}.packer-summary-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--primary),var(--gold),transparent 82%);opacity:.82;}.packer-summary-title{padding:12px 16px 8px;color:var(--muted);font-size:.76rem;font-weight:900;letter-spacing:.10em;text-transform:uppercase;}.packer-summary-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;min-height:48px;padding:12px 16px;border-top:1px solid var(--border);}.packer-summary-label{color:var(--muted);font-size:.93rem;font-weight:500;}.packer-summary-value{color:var(--text);font-weight:900;font-variant-numeric:tabular-nums;white-space:nowrap;}.packer-achievement{display:grid;grid-template-columns:minmax(88px,1fr) auto;align-items:center;gap:12px;min-width:150px;}.packer-progress-track{height:8px;border-radius:999px;overflow:hidden;background:rgba(148,163,184,.22);}.packer-progress-fill{display:block;height:100%;width:0%;border-radius:inherit;transition:width 1.1s var(--ease);}.packer-progress-fill.status-red{background:#9f2d49;}.packer-progress-fill.status-yellow{background:#d09a00;}.packer-progress-fill.status-green{background:#1a6b3c;}.packer-progress-pct{min-width:42px;text-align:right;font-size:.86rem;font-weight:900;font-variant-numeric:tabular-nums;}.packer-progress-pct.status-red{color:var(--danger);}.packer-progress-pct.status-yellow{color:var(--warning);}.packer-progress-pct.status-green{color:var(--success);}.packer-empty-state{grid-column:1 / -1;padding:16px;border-radius:16px;border:1px dashed var(--border-strong);background:rgba(148,163,184,.06);color:var(--muted);text-align:center;font-weight:700;}.stock-warning{margin:0 0 14px;padding:13px 15px;border-radius:18px;background:linear-gradient(135deg,rgba(245,158,11,.16),rgba(212,167,44,.08));border:1px solid rgba(245,158,11,.32);color:var(--warning);font-size:.86rem;box-shadow:var(--shadow-xs);}/* ====== Stock Daily Chart per Subsection (Glassmorphism) ====== */ .stock-daily-chart-wrap{position:relative;margin:10px 0 22px;padding:14px 18px 16px;border-radius:18px;background:linear-gradient(135deg,rgba(255,255,255,.72) 0%,rgba(255,255,255,.38) 100%),linear-gradient(135deg,rgba(99,102,241,.06),rgba(168,85,247,.06));backdrop-filter:blur(24px) saturate(200%);-webkit-backdrop-filter:blur(24px) saturate(200%);border:1px solid rgba(255,255,255,.85);box-shadow:0 16px 48px rgba(15,23,42,.16),0 4px 12px rgba(15,23,42,.08),inset 0 1px 0 rgba(255,255,255,.95),inset 0 -2px 4px rgba(15,23,42,.05);overflow:hidden;}.stock-daily-chart-wrap::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 0% 0%,rgba(14,165,233,.16),transparent 50%),radial-gradient(circle at 100% 100%,rgba(139,92,246,.16),transparent 50%);pointer-events:none;z-index:0;}.stock-daily-chart-wrap > *{position:relative;z-index:1;}.stock-daily-chart-wrap h4{margin:0 0 10px;font-size:12px;font-weight:800;letter-spacing:.06em;color:var(--muted);text-transform:uppercase;display:flex;align-items:center;gap:8px;text-shadow:0 1px 0 rgba(255,255,255,.6);}.stock-daily-chart-wrap h4 i{color:var(--primary);filter:drop-shadow(0 1px 1px rgba(255,255,255,.5));}.stock-daily-chart-canvas{width:100% !important;height:200px !important;display:block;border-radius:12px;background:linear-gradient(135deg,rgba(255,255,255,.42),rgba(255,255,255,.15));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:inset 0 1px 0 rgba(255,255,255,.65),inset 0 -1px 0 rgba(15,23,42,.06),inset 0 0 0 1px rgba(255,255,255,.45);padding:6px 4px;}/* Dark theme glassmorphism */ body[data-theme="dark"] .stock-daily-chart-wrap{background:linear-gradient(135deg,rgba(30,41,59,.78) 0%,rgba(15,23,42,.55) 100%),linear-gradient(135deg,rgba(99,102,241,.10),rgba(168,85,247,.10));border-color:rgba(148,163,184,.32);box-shadow:0 16px 48px rgba(0,0,0,.55),0 4px 12px rgba(0,0,0,.35),inset 0 1px 0 rgba(148,163,184,.18),inset 0 -2px 4px rgba(0,0,0,.40);}body[data-theme="dark"] .stock-daily-chart-wrap::before{background:radial-gradient(circle at 0% 0%,rgba(59,130,246,.18),transparent 50%),radial-gradient(circle at 100% 100%,rgba(139,92,246,.18),transparent 50%);}body[data-theme="dark"] .stock-daily-chart-wrap h4{color:#cbd5e1;text-shadow:0 1px 0 rgba(0,0,0,.4);}body[data-theme="dark"] .stock-daily-chart-canvas{background:rgba(15,23,42,.32);box-shadow:inset 0 0 0 1px rgba(148,163,184,.12);}.stock-chart-grid{margin-top:15px;}.stock-empty{color:var(--muted);font-size:.84rem;border:1px dashed var(--border-strong);border-radius:16px;padding:16px;text-align:center;background:rgba(148,163,184,.06);}.silo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:13px;margin-bottom:14px;}.silo-card{min-height:302px;padding:15px;cursor:pointer;text-align:center;transition:transform .24s var(--ease),box-shadow .24s var(--ease),border-color .24s var(--ease);}.silo-type{margin-top:2px;margin-bottom:7px;font-size:.70rem;color:var(--muted);text-transform:uppercase;letter-spacing:.10em;font-weight:900;}.silo-name{min-height:36px;font-size:.88rem;color:var(--text);font-weight:900;line-height:1.28;}.silo-value{margin-top:9px;font-size:1.45rem;font-weight:950;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:-.04em;}.silo-cap{font-size:.80rem;color:var(--muted);margin-top:2px;}.silo-shell{position:relative;overflow:hidden;width:80px;height:132px;margin:14px auto 11px;border-radius:24px 24px 16px 16px;border:1px solid var(--border-strong);background:linear-gradient(90deg,rgba(255,255,255,.28),transparent 24%,rgba(255,255,255,.12) 52%,transparent 76%),linear-gradient(180deg,rgba(148,163,184,.18),rgba(148,163,184,.07));box-shadow:inset 0 10px 20px rgba(255,255,255,.07),inset 0 -14px 22px rgba(15,23,42,.12);}.silo-fill{position:absolute;left:0;right:0;bottom:0;height:0%;overflow:hidden;border-radius:20px 20px 14px 14px;transition:height 1.15s var(--ease),background .3s var(--ease);}.silo-fill::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.35),transparent 34%,rgba(255,255,255,.18));}.silo-fill::after{content:"";position:absolute;inset:0;transform:translateX(-120%);background:linear-gradient(100deg,rgba(255,255,255,0) 10%,rgba(255,255,255,.62) 50%,rgba(255,255,255,0) 90%);mix-blend-mode:screen;animation:fill-sheen 2.6s linear infinite;}.cement-pile-shell{position:relative;overflow:hidden;width:104px;height:132px;margin:14px auto 11px;border-radius:24px 24px 18px 18px;border:1px solid var(--border-strong);background:radial-gradient(ellipse at 50% 96%,rgba(148,163,184,.22),transparent 62%),linear-gradient(180deg,rgba(148,163,184,.10),rgba(148,163,184,.05));box-shadow:inset 0 10px 20px rgba(255,255,255,.06),inset 0 -14px 22px rgba(15,23,42,.12);}.cement-pile-fill{position:absolute;left:7px;right:7px;bottom:9px;height:0%;min-height:0;overflow:hidden;border-radius:22px 22px 16px 16px;clip-path:polygon(50% 0%,95% 36%,100% 100%,0 100%,5% 36%);transition:height 1.15s var(--ease),background .3s var(--ease);box-shadow:inset 0 8px 18px rgba(255,255,255,.18),inset 0 -14px 22px rgba(15,23,42,.15);}.cement-pile-fill::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 32% 44%,rgba(255,255,255,.34),transparent 30%),radial-gradient(ellipse at 68% 58%,rgba(255,255,255,.18),transparent 28%),linear-gradient(90deg,rgba(255,255,255,.20),transparent 36%,rgba(255,255,255,.15));}.cement-pile-fill::after{content:"";position:absolute;inset:0;transform:translateX(-120%);background:linear-gradient(100deg,rgba(255,255,255,0) 10%,rgba(255,255,255,.66) 50%,rgba(255,255,255,0) 90%);mix-blend-mode:screen;animation:fill-sheen 2.6s linear infinite;}.cement-pile-base{position:absolute;left:9px;right:9px;bottom:6px;height:16px;border-radius:999px;background:rgba(15,23,42,.12);box-shadow:inset 0 2px 8px rgba(0,0,0,.14);}.silo-overlay{position:absolute;inset:9px 7px auto;display:flex;justify-content:center;gap:4px;padding:3px 6px;border-radius:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace;font-size:.76rem;color:var(--text);background:rgba(255,255,255,.74);border:1px solid rgba(148,163,184,.34);}body[data-theme='dark'] .silo-overlay{background:rgba(15,23,42,.74);border-color:rgba(148,163,184,.28);color:#f8fafc;}.silo-perc{font-weight:950;color:var(--text);}body[data-theme='dark'] .silo-perc{color:#f8fafc;}.silo-status{margin-top:8px;}.sebaran-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.95fr);gap:16px;align-items:start;}.sebaran-radar-card{padding:21px;}.sebaran-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px;}.sebaran-card-head h3{margin:4px 0 6px;font-size:1.22rem;font-weight:950;letter-spacing:-.04em;}.sebaran-card-head p{margin:0;color:var(--muted);max-width:58ch;}.sebaran-chart-wrap{height:430px;position:relative;padding:10px 8px 6px;border:1px solid rgba(56,217,255,.16);border-radius:20px;background:linear-gradient(165deg,rgba(8,20,42,.70),rgba(10,30,58,.34));}.sebaran-chart-wrap canvas{width:100% !important;height:100% !important;}.sebaran-chart-legend{margin-top:10px;display:flex;justify-content:space-between;align-items:center;gap:10px;color:var(--muted);font-size:.78rem;font-weight:700;}.sebaran-chart-legend b{color:var(--text);font-weight:800;}.sebaran-hour-strip{margin-top:10px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;}.sebaran-hour-pill{display:inline-flex;justify-content:center;align-items:center;border-radius:10px;padding:5px 0;border:1px solid rgba(148,163,184,.26);background:rgba(148,163,184,.12);color:#d9e7ff;font-size:.72rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace;font-weight:700;}.sebaran-hour-pill.active{color:#04111f;border-color:rgba(56,217,255,.74);background:linear-gradient(135deg,#38D9FF,#7ce9ff);box-shadow:0 8px 18px rgba(56,217,255,.28);}.sebaran-bar-wrap{margin-top:12px;height:230px;padding:10px;border-radius:20px;border:1px solid var(--border);background:rgba(148,163,184,.06);}.sebaran-bar-wrap canvas{width:100% !important;height:100% !important;}.sebaran-side,.sebaran-kpi-stack{display:flex;flex-direction:column;gap:14px;}.sebaran-mtd-section{margin-top:22px;}.sebaran-mtd-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:15px;}.sebaran-mtd-panel{min-height:650px;}.sebaran-mtd-summary{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0;}.sebaran-mtd-summary span{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:rgba(148,163,184,.08);color:var(--muted);font-size:.76rem;font-weight:800;}@media (max-width:760px){.sebaran-mtd-panel{min-height:590px;}}.sebaran-kpi-card{padding:18px;min-height:132px;}.sebaran-kpi-card .metric-value{font-size:clamp(1.9rem,3vw,2.5rem);}.sebaran-ranking-card{min-height:226px;}.sebaran-ranking-list{display:grid;gap:10px;width:100%;margin-top:4px;}.sebaran-ranking-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px 12px;border-radius:16px;border:1px solid rgba(148,163,184,.16);background:rgba(148,163,184,.07);}.sebaran-ranking-item .rank-left{display:flex;align-items:center;gap:10px;min-width:0;overflow:hidden;}.sebaran-dot{width:10px;height:10px;border-radius:999px;box-shadow:0 0 14px currentColor;flex:0 0 auto;background:currentColor;}.sebaran-ranking-item strong{display:block;font-size:.98rem;}.sebaran-ranking-item span{color:var(--muted);font-size:.86rem;white-space:normal;word-break:break-word;}.sebaran-ranking-item .rank-value{font-weight:950;font-size:.8rem;letter-spacing:.04em;border-radius:999px;border:1px solid rgba(148,163,184,.28);padding:4px 8px;white-space:nowrap;}.sebaran-ranking-card .metric-visual{height:auto;align-items:stretch;justify-content:flex-start;margin-top:10px;}.sebaran-ranking-card .metric-meta{align-items:flex-start;flex-wrap:wrap;}.sebaran-ranking-card .small-note{line-height:1.3;}.sebaran-ranking-item .rank-left > div{min-width:0;}.sebaran-ranking-item.rank-green{border-color:rgba(34,197,94,.24);}.sebaran-ranking-item.rank-cyan{border-color:rgba(56,217,255,.24);}.sebaran-ranking-item.rank-yellow{border-color:rgba(250,204,21,.24);}.sebaran-ranking-item.rank-pink{border-color:rgba(236,72,153,.24);}body[data-theme='dark'] .sebaran-chart-wrap{background:linear-gradient(165deg,rgba(8,18,40,.86),rgba(6,14,30,.66));border-color:rgba(56,217,255,.25);}body[data-theme='dark'] .sebaran-hour-pill{background:rgba(15,23,42,.72);color:#c7d8f8;border-color:rgba(148,163,184,.28);}body[data-theme='dark'] .sebaran-hour-pill.active{color:#061221;}.modal{position:fixed;inset:0;z-index:10000;display:none;place-items:center;padding:18px;background:rgba(2,6,23,.74);backdrop-filter:blur(18px);}.modal.open{display:grid;}.modal-card{position:relative;width:min(1120px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;padding:20px;border-radius:30px;border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-lg);}.modal-card::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:linear-gradient(90deg,var(--primary),var(--accent),var(--gold));pointer-events:none;}.modal-close{position:fixed;top:24px;right:24px;z-index:10002;width:42px;height:42px;border-radius:999px;border:1px solid var(--border);background:rgba(148,163,184,.14);color:var(--text);font-size:1.45rem;cursor:pointer;box-shadow:var(--shadow-xs);display:grid;place-items:center;padding:0;pointer-events:auto;touch-action:manipulation;}.modal-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-right:64px;}.modal-kpi{font-size:1.35rem;font-weight:950;letter-spacing:-.04em;}.modal-meta{color:var(--muted);margin-top:4px;}.modal-body{margin-top:17px;display:grid;gap:14px;}.modal-stat-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;}.stat,.modal-range,.modal-note{padding:15px;border-radius:20px;border:1px solid var(--border);background:rgba(148,163,184,.08);}.stat span{display:block;font-size:.77rem;color:var(--muted);margin-bottom:6px;font-weight:850;text-transform:uppercase;letter-spacing:.07em;}.stat strong{font-size:1.22rem;font-weight:950;}.stat-subdate{display:block;margin-top:4px;font-size:.72rem;color:var(--muted);font-weight:600;}.modal-note{color:var(--muted);}#modalPlantBarPanel{margin-top:4px;padding:14px 18px 16px;border-radius:18px;}#modalPlantBarPanel h4{color:var(--text) !important;}body[data-theme='dark'] #modalPlantBarPanel h4{color:var(--text) !important;}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:20px;}.table-wrap + .table-wrap{margin-top:14px;}.table-wrap table{width:100%;border-collapse:collapse;}.table-wrap th,.table-wrap td{padding:11px 13px;border-bottom:1px solid var(--border);text-align:right;white-space:nowrap;}.table-wrap th:first-child,.table-wrap td:first-child{text-align:left;}.table-wrap th{background:rgba(148,163,184,.10);position:sticky;top:0;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;}@media (max-width:1360px){.overview-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.topbar-actions{justify-content:flex-end;}}@media (max-width:1120px){.app-shell{grid-template-columns:1fr;}.sidebar{position:relative;height:auto;display:block;padding:18px;}.nav{grid-template-columns:repeat(3,minmax(0,1fr));}.nav a{justify-content:center;}.sidebar-note{display:inline-block;width:calc(33.333% - 8px);vertical-align:top;margin-right:6px;}.main{padding:18px;}.sebaran-layout{grid-template-columns:1fr;}}@media (max-width:760px){body{font-size:13px;}.main{padding:14px;}.topbar,.section-head{flex-direction:column;align-items:stretch;}.topbar-actions{justify-content:stretch;align-items:stretch;gap:8px;}.date-control{width:100%;justify-content:space-between;}.date-control .date-filter{flex:1 1 auto;min-width:0;}.nav{grid-template-columns:1fr 1fr;}.sidebar-note{width:100%;margin-right:0;display:block;}.chart-grid.two-up,.chart-grid.three-up,.modal-stat-grid,.overview-grid,.metrics-grid,.silo-grid,.packer-summary-grid{grid-template-columns:1fr;}.panel{min-height:310px;}.panel canvas{height:270px !important;}.sebaran-chart-wrap{height:360px;}.sebaran-bar-wrap{height:205px;}.sebaran-hour-strip{grid-template-columns:repeat(8,minmax(0,1fr));}.btn{flex:1 1 auto;}.legend-spacer{display:none;}}@media print{@page{size:A4 landscape;margin:10mm;}*{animation:none !important;transition:none !important;filter:none !important;transform:none !important;}body{background:#ffffff !important;color:#0f172a !important;-webkit-print-color-adjust:exact;print-color-adjust:exact;}body::before,.sidebar,.topbar,.loading-overlay,.modal,.exec-legend{display:none !important;}.app-shell{display:block !important;}.main{padding:0 !important;min-height:auto !important;height:auto !important;overflow:visible !important;}.section{display:block !important;break-before:page;page-break-before:always;min-height:auto !important;}.section:first-of-type{break-before:auto;page-break-before:auto;}body[data-print-scope="overview"] .section,body[data-print-scope="sales"] .section,body[data-print-scope="produksi"] .section,body[data-print-scope="stock"] .section,body[data-print-scope="batubara"] .section,body[data-print-scope="sebaran"] .section{display:none !important;}body[data-print-scope="overview"] #overview.section,body[data-print-scope="sales"] #sales.section,body[data-print-scope="produksi"] #produksi.section,body[data-print-scope="stock"] #stock.section,body[data-print-scope="batubara"] #batubara.section,body[data-print-scope="sebaran"] #sebaran.section{display:block !important;break-before:auto !important;page-break-before:auto !important;}.section-head,.overview-grid,.metrics-grid,.chart-grid,.silo-grid,.panel,.metric-card,.overview-card,.silo-card,.packer-summary-card,.table-wrap{break-inside:avoid;page-break-inside:avoid;}.overview-grid{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}.metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}.chart-grid.two-up{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}.chart-grid.three-up{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}.panel,.metric-card,.overview-card,.silo-card{box-shadow:none !important;border-color:#cbd5e1 !important;background:#ffffff !important;}canvas{max-width:100% !important;height:230px !important;}}/* ── Admin Panel ── */ .nav-admin{margin-top:18px;padding-top:14px;border-top:1px solid var(--border);}.nav-admin a{background:linear-gradient(135deg,rgba(197,131,42,.13),rgba(27,61,138,.07));}.admin-tabs-wrap{display:none;}.admin-unlocked .admin-tabs-wrap{display:block;}.admin-tabs{display:flex;gap:4px;border-bottom:2px solid var(--border);margin-bottom:20px;padding-bottom:0;}.admin-tab{padding:10px 20px;background:none;border:none;border-bottom:3px solid transparent;color:var(--muted);font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;margin-bottom:-2px;border-radius:8px 8px 0 0;}.admin-tab:hover{color:var(--text);background:rgba(var(--primary-rgb,59,130,246),.08);}.admin-tab.active{color:var(--primary);border-bottom-color:var(--primary);background:rgba(var(--primary-rgb,59,130,246),.06);}.admin-tab-content{display:none;}.admin-tab-content.active{display:block;}.admin-grid{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(0,1.18fr);gap:16px;align-items:stretch;}.admin-card{position:relative;overflow:hidden;padding:20px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(150deg,rgba(255,255,255,.86),rgba(255,255,255,.44)),var(--surface);box-shadow:var(--shadow-xs);backdrop-filter:blur(18px);}body[data-theme='dark'] .admin-card{background:linear-gradient(150deg,rgba(16,30,64,.86),rgba(8,18,44,.64)),var(--surface);border-color:rgba(148,172,220,.12);}.admin-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--primary),var(--gold),transparent 84%);}.admin-card h3{margin:0 0 8px;font-size:1.02rem;font-weight:900;letter-spacing:-.025em;}.admin-card p{margin:0 0 14px;color:var(--muted);font-size:.88rem;}.admin-login-row{display:flex;gap:10px;align-items:stretch;margin-top:12px;}.admin-login-row input{flex:1 1 auto;min-height:44px;min-width:0;padding:10px 13px;border:1px solid var(--border-strong);border-radius:15px;color:var(--text);background:linear-gradient(180deg,var(--surface-2),var(--surface-3));box-shadow:var(--shadow-xs);}.admin-error{min-height:20px;margin-top:10px;color:var(--danger);font-size:.82rem;font-weight:800;}.admin-status{display:inline-flex;align-items:center;gap:8px;margin-top:4px;padding:7px 10px;border-radius:999px;color:var(--success);background:rgba(26,107,60,.12);border:1px solid rgba(26,107,60,.28);font-size:.78rem;font-weight:900;}.admin-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px;}.admin-action-btn{min-height:108px;justify-content:flex-start;align-items:flex-start;flex-direction:column;text-align:left;white-space:normal;padding:16px;border-radius:20px;}.admin-action-btn svg{width:24px;height:24px;}.admin-action-btn strong{display:block;font-size:.98rem;}.admin-action-btn small{display:block;margin-top:4px;color:var(--muted);line-height:1.35;font-weight:700;}.admin-db-source{margin:12px 0 14px;display:grid;grid-template-columns:220px minmax(0,1fr) auto;gap:10px;align-items:center;}.admin-db-source select,.admin-db-source input{width:100%;min-height:42px;border-radius:15px;border:1px solid var(--border-strong);padding:9px 12px;background:linear-gradient(180deg,var(--surface-2),var(--surface-3));color:var(--text);box-shadow:var(--shadow-xs);font-weight:700;}.admin-db-source input{font-size:.82rem;}.admin-db-save-btn{min-height:42px;padding:9px 14px;border-radius:15px;white-space:nowrap;}@media (max-width:760px){.admin-db-source{grid-template-columns:1fr;}}.admin-locked .admin-protected{display:none !important;}.admin-unlocked .admin-lockbox{display:none !important;}.admin-helper-list{display:grid;gap:10px;margin-top:14px;}.admin-helper-item{display:flex;gap:10px;padding:11px 12px;border-radius:16px;border:1px solid var(--border);background:rgba(148,163,184,.07);color:var(--muted);font-size:.84rem;}.admin-helper-item b{color:var(--text);}/* Upload zone styles (matching sales.pmsb.my.id) */ .upload-zone{border:2px dashed var(--border);border-radius:16px;padding:40px 20px;text-align:center;cursor:pointer;transition:all .25s;background:linear-gradient(135deg,rgba(27,61,138,.04),rgba(197,131,42,.03));}.upload-zone:hover{border-color:var(--primary);background:linear-gradient(135deg,rgba(27,61,138,.08),rgba(197,131,42,.06));transform:translateY(-2px);}body[data-theme='dark'] .upload-zone{background:linear-gradient(135deg,rgba(56,217,255,.06),rgba(197,131,42,.04));border-color:rgba(148,163,184,.2);}body[data-theme='dark'] .upload-zone:hover{border-color:rgba(56,217,255,.5);background:linear-gradient(135deg,rgba(56,217,255,.1),rgba(197,131,42,.06));}.upload-zone i,.upload-zone svg{font-size:2.2rem;color:var(--primary);margin-bottom:10px;opacity:.7;}.upload-zone p{margin:4px 0;font-size:.9rem;color:var(--text);font-weight:600;}.upload-zone small{font-size:.78rem;color:var(--muted);}.upload-progress-bar{height:8px;background:var(--border);border-radius:9px;overflow:hidden;margin-top:12px;}.upload-progress-bar .bar{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:9px;transition:width .4s;width:0%;}.upload-progress-bar .bar.success{background:linear-gradient(90deg,#22c55e,#16a34a);}.upload-progress-bar .bar.error{background:linear-gradient(90deg,#ef4444,#dc2626);}.upload-result{margin-top:10px;padding:10px 14px;border-radius:10px;font-size:.84rem;font-weight:600;}.upload-result.ok{background:rgba(34,197,94,.1);color:#16a34a;border:1px solid rgba(34,197,94,.25);}.upload-result.err{background:rgba(239,68,68,.1);color:#dc2626;border:1px solid rgba(239,68,68,.25);}@media (max-width:1120px){.admin-grid{grid-template-columns:1fr;}}@media (max-width:760px){.admin-actions{grid-template-columns:1fr;}.admin-login-row{flex-direction:column;}}@media print{#admin.section{display:none !important;}}/* ── Dashboard Access Lock ── */ body.requires-login{overflow:hidden;}body.requires-login .app-shell,body.requires-login #loadingOverlay{display:none !important;}.access-lock-overlay{position:fixed;inset:0;z-index:12000;display:none;place-items:center;padding:22px;background:radial-gradient(circle at 16% 8%,rgba(191,239,255,.92),transparent 30rem),radial-gradient(circle at 86% 18%,rgba(147,197,253,.60),transparent 28rem),linear-gradient(145deg,#dff6ff 0%,#c8ebff 42%,#b4def9 100%);backdrop-filter:blur(18px) saturate(1.08);}body.requires-login .access-lock-overlay{display:grid;}.access-lock-card{width:min(500px,calc(100vw - 34px));padding:36px;border-radius:30px;border:1px solid rgba(125,185,232,.42);background:linear-gradient(160deg,rgba(255,255,255,.93),rgba(232,247,255,.96));box-shadow:0 26px 70px rgba(63,120,167,.22),inset 0 1px 0 rgba(255,255,255,.82);color:#114b6d;text-align:center;}.access-lock-badge{width:62px;height:62px;border-radius:20px;display:grid;place-items:center;margin:0 auto 18px;color:#ffffff;background:linear-gradient(135deg,#8ed6f8,#5fbce9 56%,#3a9fd8);box-shadow:0 14px 34px rgba(74,144,183,.24),inset 0 1px 0 rgba(255,255,255,.52);font-size:1.55rem;}.access-lock-card h1{margin:0;font-size:clamp(1.5rem,4vw,2.05rem);line-height:1.08;letter-spacing:-.035em;font-weight:900;color:#0f4c75;}.access-lock-logo-wrap{margin:18px auto 12px;width:min(220px,68%);display:flex;justify-content:center;align-items:center;}.access-lock-logo-wrap img{display:block;width:100%;max-width:200px;height:auto;object-fit:contain;filter:drop-shadow(0 10px 24px rgba(54,120,168,.14));}.access-lock-card p{margin:8px 0 20px;color:#4f7fa1;font-size:.94rem;}.access-lock-field{display:grid;gap:8px;text-align:left;}.access-lock-field label{color:#3d6f90;font-size:.76rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;}.access-lock-input-row{display:flex;gap:9px;align-items:center;}.access-lock-field input{width:100%;min-height:48px;padding:11px 14px;border-radius:16px;border:1px solid rgba(143,201,238,.95);background:rgba(255,255,255,.88);color:#12415f;box-shadow:inset 0 1px 0 rgba(255,255,255,.75);outline:none;}.access-lock-field input::placeholder{color:#7aa8c3;}.access-lock-field input:focus{border-color:rgba(95,188,233,.92);box-shadow:0 0 0 4px rgba(142,214,248,.34),inset 0 1px 0 rgba(255,255,255,.7);}.access-lock-button{min-height:48px;padding:0 18px;border-radius:16px;border:1px solid rgba(95,188,233,.82);color:#ffffff;background:linear-gradient(135deg,#7ed3f7,#58bdea 58%,#319dd4);box-shadow:0 12px 28px rgba(88,189,234,.24),inset 0 1px 0 rgba(255,255,255,.30);font-weight:900;cursor:pointer;white-space:nowrap;}.access-lock-button:hover{transform:translateY(-1px);}.access-lock-error{display:none;margin-top:12px;padding:10px 12px;border-radius:14px;background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.28);color:#b42318;font-weight:750;font-size:.86rem;}.access-lock-error.show{display:block;}.access-lock-note{margin-top:18px;padding-top:16px;border-top:1px solid rgba(125,185,232,.22);color:#5f88a9;font-size:.78rem;}.access-lock-overlay::before,.access-lock-overlay::after{content:"";position:absolute;width:380px;height:380px;border-radius:999px;pointer-events:none;opacity:.42;filter:blur(4px);animation:access-orb-float 9s ease-in-out infinite;}.access-lock-overlay::before{left:-110px;bottom:-120px;background:radial-gradient(circle,rgba(255,255,255,.72),rgba(126,211,247,.22) 44%,transparent 70%);}.access-lock-overlay::after{right:-120px;top:-130px;background:radial-gradient(circle,rgba(255,255,255,.65),rgba(88,189,234,.20) 48%,transparent 72%);animation-delay:-3.5s;}body.requires-login .access-lock-overlay{animation:access-overlay-fade .52s ease-out both;}body.requires-login .access-lock-card{animation:access-card-enter .68s cubic-bezier(.2,.85,.2,1) both;}body.requires-login .access-lock-badge{animation:access-badge-pop .72s cubic-bezier(.2,.85,.2,1) .08s both,access-badge-pulse 2.8s ease-in-out 1.1s infinite;}body.requires-login .access-lock-card h1{animation:access-soft-rise .62s ease-out .14s both;}body.requires-login .access-lock-logo-wrap{animation:access-logo-enter .68s ease-out .22s both,access-logo-float 4.6s ease-in-out 1.05s infinite;}body.requires-login .access-lock-card p,body.requires-login .access-lock-field,body.requires-login .access-lock-note{animation:access-soft-rise .58s ease-out both;}body.requires-login .access-lock-card p{animation-delay:.30s;}body.requires-login .access-lock-field{animation-delay:.38s;}body.requires-login .access-lock-note{animation-delay:.46s;}.access-lock-button{position:relative;overflow:hidden;transition:transform .22s cubic-bezier(.2,.8,.2,1),box-shadow .22s cubic-bezier(.2,.8,.2,1),filter .22s cubic-bezier(.2,.8,.2,1);}.access-lock-button::after{content:"";position:absolute;inset:-40% auto -40% -55%;width:48%;transform:skewX(-18deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);opacity:0;}.access-lock-button:hover{transform:translateY(-2px);filter:saturate(1.08);box-shadow:0 16px 34px rgba(88,189,234,.30),inset 0 1px 0 rgba(255,255,255,.34);}.access-lock-button:hover::after{opacity:1;animation:access-button-sheen .85s ease-out;}.access-lock-field input{transition:border-color .22s ease,box-shadow .22s ease,transform .22s ease,background .22s ease;}.access-lock-field input:focus{transform:translateY(-1px);}@keyframes access-overlay-fade{from{opacity:0;}to{opacity:1;}}@keyframes access-card-enter{from{opacity:0;transform:translateY(18px) scale(.975);}to{opacity:1;transform:translateY(0) scale(1);}}@keyframes access-soft-rise{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}@keyframes access-logo-enter{from{opacity:0;transform:translateY(8px) scale(.94);}to{opacity:1;transform:translateY(0) scale(1);}}@keyframes access-logo-float{0%,100%{transform:translateY(0);}50%{transform:translateY(-5px);}}@keyframes access-badge-pop{0%{opacity:0;transform:translateY(8px) scale(.86) rotate(-4deg);}70%{opacity:1;transform:translateY(0) scale(1.04) rotate(1deg);}100%{opacity:1;transform:translateY(0) scale(1) rotate(0deg);}}@keyframes access-badge-pulse{0%,100%{box-shadow:0 14px 34px rgba(74,144,183,.24),inset 0 1px 0 rgba(255,255,255,.52);}50%{box-shadow:0 18px 44px rgba(74,144,183,.34),0 0 0 8px rgba(126,211,247,.12),inset 0 1px 0 rgba(255,255,255,.55);}}@keyframes access-orb-float{0%,100%{transform:translate3d(0,0,0) scale(1);}50%{transform:translate3d(18px,-14px,0) scale(1.05);}}@keyframes access-button-sheen{from{left:-55%;}to{left:115%;}}@media (prefers-reduced-motion:reduce){.access-lock-overlay,.access-lock-overlay::before,.access-lock-overlay::after,.access-lock-card,.access-lock-badge,.access-lock-card h1,.access-lock-logo-wrap,.access-lock-card p,.access-lock-field,.access-lock-note,.access-lock-button::after{animation:none !important;}.access-lock-button,.access-lock-field input{transition:none !important;}}@media (max-width:560px){.access-lock-card{padding:26px;}.access-lock-input-row{flex-direction:column;align-items:stretch;}.access-lock-button{width:100%;}.access-lock-logo-wrap{width:min(200px,80%);}}/* ───────────────────────────────────────────── RESPONSIVE ENHANCEMENT V15 Optimasi tampilan untuk HP,tablet,dan desktop. ───────────────────────────────────────────── */:root{--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);}img,svg,canvas,video{max-width:100%;}.table-wrap,.modal-card,.sidebar,.main{-webkit-overflow-scrolling:touch;}.panel canvas,.sebaran-chart-wrap canvas,.sebaran-bar-wrap canvas{max-width:100% !important;}@media (min-width:1600px){.main{padding:30px;}.overview-grid{grid-template-columns:repeat(4,minmax(0,1fr));}.metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr));}.silo-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));}.panel canvas{height:330px !important;}}@media (max-width:1360px){.app-shell{grid-template-columns:276px minmax(0,1fr);}.sidebar{padding:20px 14px;}.brand{padding:12px;}.main{padding:22px;}.topbar-actions{justify-content:flex-start;}}@media (max-width:1180px){.app-shell{grid-template-columns:1fr;}.sidebar{position:sticky;top:0;height:auto;max-height:none;overflow:visible;padding:calc(12px + var(--safe-top)) 14px 12px;border-right:0;border-bottom:1px solid var(--border);z-index:80;}.brand{margin-bottom:10px;}.brand-title{font-size:.9rem;}.brand-sub{font-size:.72rem;}.brand-badge.brand-logo,.brand-badge.brand-logo img{width:46px;height:46px;flex-basis:46px;}.nav{display:flex;gap:8px;margin:10px 0 8px;overflow-x:auto;overflow-y:hidden;padding:0 0 8px;scroll-snap-type:x proximity;scrollbar-width:thin;}.nav a{flex:0 0 auto;min-height:42px;padding:9px 12px;scroll-snap-align:start;white-space:nowrap;}.nav a:hover{transform:translateY(-1px);}.sidebar-note{display:none;}.main{padding:18px;}.topbar{position:sticky;top:var(--safe-top);z-index:70;margin-bottom:14px;}.topbar-actions{justify-content:flex-start;}.date-control{flex:1 1 230px;}.btn{flex:0 1 auto;}.overview-grid,.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.chart-grid.three-up{grid-template-columns:repeat(2,minmax(0,1fr));}.sebaran-layout{grid-template-columns:1fr;}.sebaran-side,.sebaran-kpi-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}.sebaran-ranking-card{grid-column:1 / -1;}}@media (max-width:900px){body{font-size:13.5px;}.main{padding:14px;}.topbar{border-radius:20px;padding:12px;}.topbar-actions{gap:8px;}.date-control{flex:1 1 100%;width:100%;}.date-control .date-filter{min-width:0;flex:1 1 auto;}.btn{min-height:42px;padding-inline:12px;}.section-head{align-items:flex-start;flex-direction:column;gap:10px;}.section-chip{max-width:100%;white-space:normal;}.overview-grid,.metrics-grid,.chart-grid.two-up,.chart-grid.three-up{grid-template-columns:1fr;}.panel{min-height:300px;padding:14px;}.panel canvas{height:270px !important;}.overview-radar-panel canvas{height:280px !important;}.silo-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.silo-card{min-height:270px;}.sebaran-chart-wrap{height:360px;}.sebaran-bar-wrap{height:220px;}.sebaran-hour-strip{grid-template-columns:repeat(8,minmax(0,1fr));}.sebaran-side,.sebaran-kpi-stack{grid-template-columns:1fr;}.modal{padding:10px;}.modal-card{width:calc(100vw - 20px);max-height:calc(100dvh - 20px);padding:16px;border-radius:22px;}.modal-head{flex-direction:column;padding-right:46px;}.modal-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.table-wrap{border-radius:16px;}.table-wrap th,.table-wrap td{padding:9px 10px;font-size:.82rem;}}@media (max-width:640px){html,body{width:100%;overflow-x:hidden;}body{font-size:13px;}.app-shell{min-height:100dvh;}.sidebar{padding:calc(10px + var(--safe-top)) 10px 8px;}.brand{gap:10px;margin-bottom:8px;border-radius:18px;}.brand-title{font-size:.84rem;}.brand-sub{display:none;}.brand-badge.brand-logo,.brand-badge.brand-logo img{width:40px;height:40px;flex-basis:40px;}.nav{gap:7px;margin:8px 0 4px;padding-bottom:7px;}.nav a{min-height:38px;padding:8px 10px;border-radius:14px;font-size:.8rem;}.nav a i,.nav a svg{width:16px;height:16px;}.main{padding:10px;}.topbar{top:var(--safe-top);padding:10px;border-radius:18px;}.topbar-actions{align-items:stretch;}.date-control{min-height:42px;padding:5px 6px 5px 10px;gap:7px;}.date-control label{font-size:.66rem;}.date-control .date-filter{min-height:32px;font-size:.78rem;padding:5px 28px 5px 9px;}.btn{flex:1 1 calc(50% - 6px);min-height:40px;border-radius:14px;font-size:.76rem;}.btn.icon-only{flex:0 0 40px;width:40px;height:40px;}.exec-legend{gap:7px;padding:10px;margin-bottom:12px;border-radius:16px;}.legend-item,.exec-legend .legend-copy{font-size:.70rem;padding:6px 8px;}.section h2{font-size:1.18rem;}.section p{font-size:.82rem;}.subsection-title,.stock-section-title{margin:18px 0 9px;font-size:.72rem;letter-spacing:.09em;}.card-grid{gap:10px;}.metric-card,.overview-card{min-height:168px;padding:14px;border-radius:18px;}.metric-label{font-size:.66rem;}.metric-value{font-size:clamp(1.28rem,8vw,1.82rem);}.metric-sub,.small-note{font-size:.74rem;}.status-pill{font-size:.68rem;padding:5px 8px;}.panel{min-height:278px;padding:12px;border-radius:18px;}.panel h3{font-size:.78rem !important;}.panel canvas{height:245px !important;}.overview-radar-panel{min-height:300px;}.overview-radar-panel canvas{height:255px !important;}.silo-grid{grid-template-columns:1fr;}.silo-card{min-height:250px;padding:13px;}.silo-shell,.cement-pile-shell{transform:scale(.92);margin-top:8px;margin-bottom:5px;}.sebaran-card-head{flex-direction:column;}.sebaran-card-head h3{font-size:1.05rem;}.sebaran-chart-wrap{height:315px;padding:8px;}.sebaran-bar-wrap{height:205px;padding:8px;}.sebaran-hour-strip{grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;}.sebaran-hour-pill{font-size:.66rem;padding:4px 0;}.sebaran-ranking-item{grid-template-columns:1fr;align-items:start;gap:7px;}.sebaran-ranking-item .rank-value{justify-self:start;}.modal-card{border-radius:20px;padding:14px;}.modal-close{top:10px;right:10px;width:38px;height:38px;}.modal-stat-grid{grid-template-columns:1fr;}.stat,.modal-range,.modal-note{padding:12px;border-radius:16px;}.table-wrap{margin-left:-2px;margin-right:-2px;}.table-wrap table{min-width:620px;}.access-lock-card{width:min(430px,calc(100vw - 22px));padding:24px;border-radius:24px;}.access-lock-badge{width:52px;height:52px;border-radius:17px;}.access-lock-card h1{font-size:1.42rem;}.access-lock-logo-wrap{width:min(176px,74%);margin:14px auto 10px;}.access-lock-card p{font-size:.84rem;}.access-lock-input-row{flex-direction:column;align-items:stretch;}.access-lock-button{width:100%;}}@media (max-width:390px){.main{padding:8px;}.nav a{font-size:.74rem;padding-inline:9px;}.btn{flex-basis:100%;}.date-control{flex-wrap:wrap;}.date-control .date-filter{width:100%;}.panel canvas{height:220px !important;}.sebaran-chart-wrap{height:285px;}.sebaran-hour-strip{grid-template-columns:repeat(4,minmax(0,1fr));}.access-lock-card{padding:20px;}}/* ───────────────────────────────────────────── LOGIN SHIMMER / SHEEN EFFECT V16 Efek kilau halus di tampilan awal password. ───────────────────────────────────────────── */ .access-lock-card{position:relative;overflow:hidden;isolation:isolate;}.access-lock-card::before{content:"";position:absolute;inset:-2px;z-index:-1;border-radius:inherit;background:linear-gradient( 115deg,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 24%,rgba(255,255,255,.62) 43%,rgba(255,255,255,.94) 50%,rgba(255,255,255,.62) 57%,rgba(255,255,255,0) 76%,rgba(255,255,255,0) 100% );transform:translateX(-130%);animation:access-card-shimmer 3.8s ease-in-out .65s infinite;opacity:.58;pointer-events:none;}.access-lock-card::after{content:"";position:absolute;inset:1px;border-radius:29px;z-index:-1;background:radial-gradient(circle at 22% 14%,rgba(255,255,255,.62),transparent 28%),linear-gradient(160deg,rgba(255,255,255,.93),rgba(232,247,255,.96));pointer-events:none;}.access-lock-logo-wrap{position:relative;}.access-lock-logo-wrap::after{content:"";position:absolute;inset:-8px;border-radius:24px;background:linear-gradient( 105deg,transparent 0%,transparent 35%,rgba(255,255,255,.70) 49%,transparent 64%,transparent 100% );transform:translateX(-115%);animation:access-logo-shimmer 4.2s ease-in-out 1.2s infinite;pointer-events:none;mix-blend-mode:screen;}.access-lock-field input{background:linear-gradient(180deg,rgba(255,255,255,.90),rgba(255,255,255,.82)),linear-gradient(110deg,transparent 0%,rgba(255,255,255,.70) 50%,transparent 100%);background-size:100% 100%,220% 100%;background-position:0 0,-120% 0;animation:access-input-soft-sheen 4.6s ease-in-out 1.55s infinite;}@keyframes access-card-shimmer{0%{transform:translateX(-135%) skewX(-14deg);opacity:0;}12%{opacity:.58;}36%{transform:translateX(135%) skewX(-14deg);opacity:.28;}100%{transform:translateX(135%) skewX(-14deg);opacity:0;}}@keyframes access-logo-shimmer{0%{transform:translateX(-120%) skewX(-16deg);opacity:0;}12%{opacity:.82;}34%{transform:translateX(120%) skewX(-16deg);opacity:.20;}100%{transform:translateX(120%) skewX(-16deg);opacity:0;}}@keyframes access-input-soft-sheen{0%,72%,100%{background-position:0 0,-120% 0;}86%{background-position:0 0,120% 0;}}@media (prefers-reduced-motion:reduce){.access-lock-card::before,.access-lock-logo-wrap::after,.access-lock-field input{animation:none !important;}}/* ───────────────────────────────────────────── PASSWORD EYE TOGGLE + FAST START V17 ───────────────────────────────────────────── */ .access-password-wrap{position:relative;width:100%;flex:1 1 auto;}.access-password-wrap input{padding-right:52px !important;}.access-password-toggle{position:absolute;top:50%;right:7px;width:38px;height:38px;transform:translateY(-50%);border:1px solid rgba(95,188,233,.42);border-radius:13px;background:rgba(255,255,255,.68);color:#2f7fa8;display:inline-grid;place-items:center;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.70);transition:transform .20s cubic-bezier(.2,.8,.2,1),background .20s ease,color .20s ease,border-color .20s ease;}.access-password-toggle:hover{transform:translateY(-50%) scale(1.04);background:rgba(255,255,255,.92);border-color:rgba(49,157,212,.70);color:#0f4c75;}.access-password-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;}.access-password-toggle .eye-closed{display:none;}.access-password-toggle.is-visible .eye-open{display:none;}.access-password-toggle.is-visible .eye-closed{display:block;}.access-password-wrap input[type="password"]::-ms-reveal,.access-password-wrap input[type="password"]::-ms-clear{display:none;}body.requires-login .app-shell,body.requires-login #loadingOverlay{content-visibility:hidden;}@media (max-width:640px){.access-password-wrap{width:100%;}}/* ───────────────────────────────────────────── GLOBAL ONLINE DATABASE MODE V19 ───────────────────────────────────────────── */ .admin-auto-online-row{display:flex;align-items:flex-start;gap:11px;margin:12px 0 4px;padding:12px 13px;border-radius:16px;border:1px solid var(--border);background:rgba(148,163,184,.08);color:var(--text);}.admin-auto-online-row input{width:18px;height:18px;margin-top:2px;accent-color:var(--primary);flex:0 0 auto;}.admin-auto-online-row strong{display:block;font-size:.86rem;line-height:1.25;}.admin-auto-online-row small{display:block;margin-top:3px;color:var(--muted);font-size:.76rem;line-height:1.35;}.admin-db-help{margin:8px 0 4px;padding:10px 12px;border-radius:14px;border:1px solid rgba(96,165,250,.22);background:rgba(96,165,250,.08);color:var(--muted);font-size:.78rem;line-height:1.45;}.admin-db-help b{color:var(--text);}/* ── AI Analysis Section ── */ .ai-analysis-box{margin-top:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}.ai-analysis-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);gap:12px;}.ai-analysis-header h3{font-size:.95rem;font-weight:800;color:var(--text);margin:0;display:flex;align-items:center;gap:8px;}.ai-analysis-body{padding:20px;min-height:80px;}.ai-analysis-result{font-size:.85rem;line-height:1.7;color:var(--text);}.ai-analysis-result p{margin:0 0 10px;}.ai-analysis-result strong{color:var(--primary);}.ai-analysis-loading{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:.85rem;}.ai-analysis-loading .spinner{width:18px;height:18px;border:2.5px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;}.ai-saved-list{margin-top:16px;border-top:1px solid var(--border);padding-top:12px;}.ai-saved-item{padding:10px 12px;border-radius:10px;background:var(--surface-3);margin-bottom:8px;font-size:.82rem;cursor:pointer;transition:background .15s;}.ai-saved-item:hover{background:var(--border);}.ai-saved-item .ai-date{font-weight:700;color:var(--primary);}.ai-saved-item .ai-preview{color:var(--muted);margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}/* ── Early Warning Panel ── */ .early-warning-panel{margin:12px 0;padding:16px;border-radius:14px;border:1px solid var(--border);background:var(--surface-3);}.early-warning-panel h4{font-size:.88rem;font-weight:800;color:var(--text);margin:0 0 12px;display:flex;align-items:center;gap:8px;}.ew-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;}.ew-item{padding:10px 12px;border-radius:10px;background:var(--surface);border:1px solid var(--border);text-align:center;}.ew-item .ew-label{font-size:.72rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;}.ew-item .ew-value{font-size:1.1rem;font-weight:800;color:var(--text);}.ew-item .ew-desc{font-size:.72rem;color:var(--muted);margin-top:2px;}.ew-item.ew-danger{border-color:rgba(185,28,28,.3);background:rgba(185,28,28,.06);}.ew-item.ew-danger .ew-value{color:var(--danger);}.ew-item.ew-warning{border-color:rgba(180,83,9,.3);background:rgba(180,83,9,.06);}.ew-item.ew-warning .ew-value{color:var(--warning);}.ew-item.ew-safe{border-color:rgba(26,107,60,.3);background:rgba(26,107,60,.06);}.ew-item.ew-safe .ew-value{color:var(--success);}.ew-summary{margin-top:10px;padding:10px 14px;border-radius:10px;font-size:.82rem;font-weight:600;line-height:1.5;}.ew-summary.ew-danger{background:rgba(185,28,28,.08);color:var(--danger);border:1px solid rgba(185,28,28,.2);}.ew-summary.ew-warning{background:rgba(180,83,9,.08);color:var(--warning);border:1px solid rgba(180,83,9,.2);}.ew-summary.ew-safe{background:rgba(26,107,60,.08);color:var(--success);border:1px solid rgba(26,107,60,.2);}@keyframes spin{to{transform:rotate(360deg);}}/* AI Analysis box:only visible on overview section */ #aiAnalysisBox{display:none;}body[data-active-page="overview"] #aiAnalysisBox,#aiAnalysisBox.visible-on-overview{display:block;}/* Stock chart fix:ensure canvas gets proper size */ #stock canvas{min-height:200px;}/* ── Modern Glass Card Upgrade ── */ .overview-card.opt-glass{background:linear-gradient(160deg,rgba(30,41,75,.92),rgba(15,23,50,.88));border:1px solid rgba(99,132,255,.12);backdrop-filter:blur(24px);position:relative;overflow:hidden;}.overview-card.opt-glass::before{content:'';position:absolute;inset:0;border-radius:20px;padding:1.5px;background:linear-gradient(135deg,rgba(99,132,255,.5),transparent 50%,rgba(251,191,36,.4));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .4s;z-index:3;pointer-events:none;}.overview-card.opt-glass:hover::before{opacity:1;}.overview-card.opt-glass:hover{background:linear-gradient(160deg,rgba(35,50,95,.96),rgba(20,30,65,.94));box-shadow:0 0 40px rgba(59,130,246,.12),0 24px 60px rgba(0,0,0,.3);border-color:rgba(99,132,255,.3);}.overview-card.opt-glass .metric-label{color:#94a3b8;}.overview-card.opt-glass .metric-value{color:#f1f5f9;}.overview-card.opt-glass .metric-sub{color:rgba(148,163,184,.7);}.overview-card.opt-glass .small-note{color:rgba(148,163,184,.6);}.overview-card.opt-glass .card-icon{width:42px;height:42px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.15rem;flex-shrink:0;background:linear-gradient(135deg,rgba(59,130,246,.2),rgba(139,92,246,.15));border:1px solid rgba(59,130,246,.2);}.overview-card.opt-glass .card-compare{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:.72rem;font-weight:700;}.overview-card.opt-glass .card-compare .arrow-up{color:#4ade80;}.overview-card.opt-glass .card-compare .arrow-down{color:#f87171;}.overview-card.opt-glass .card-compare .arrow-flat{color:#94a3b8;}.overview-card.opt-glass .spark-area{opacity:.9;}/* Dark theme adjustments for glass cards */ body[data-theme="dark"] .overview-card.opt-glass{background:linear-gradient(160deg,rgba(20,30,65,.95),rgba(10,18,44,.9));}/* ───────────────────────────────────────────── DATA UPDATE ANIMATION V23 ───────────────────────────────────────────── */ .data-update-overlay{position:fixed;inset:0;z-index:13000;display:none;place-items:center;padding:22px;background:radial-gradient(circle at 20% 12%,rgba(126,211,247,.22),transparent 30rem),radial-gradient(circle at 82% 18%,rgba(59,130,246,.18),transparent 28rem),rgba(3,8,22,.60);backdrop-filter:blur(14px) saturate(1.2);}.data-update-overlay.show{display:grid;animation:data-update-fade .22s ease-out both;}.data-update-card{width:min(430px,calc(100vw - 34px));padding:30px 28px;border-radius:28px;border:1px solid rgba(126,211,247,.34);background:linear-gradient(160deg,rgba(255,255,255,.96),rgba(232,247,255,.93));color:#0f4c75;text-align:center;box-shadow:0 30px 90px rgba(10,50,85,.26),inset 0 1px 0 rgba(255,255,255,.78);position:relative;overflow:hidden;animation:data-update-card-in .38s cubic-bezier(.2,.85,.2,1) both;}.data-update-card::before{content:"";position:absolute;inset:-40% auto -40% -55%;width:54%;transform:skewX(-18deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.78),transparent);animation:data-update-sheen 1.55s ease-in-out infinite;}.data-update-orbit{position:relative;width:78px;height:78px;margin:0 auto 16px;border-radius:999px;background:linear-gradient(135deg,rgba(126,211,247,.26),rgba(59,130,246,.10));box-shadow:inset 0 1px 0 rgba(255,255,255,.85),0 16px 32px rgba(49,157,212,.18);}.data-update-orbit::before{content:"";position:absolute;inset:10px;border-radius:inherit;border:4px solid rgba(49,157,212,.18);border-top-color:#38bdf8;border-right-color:#1d4ed8;animation:data-update-spin .82s linear infinite;}.data-update-orbit span{position:absolute;width:10px;height:10px;border-radius:999px;background:#38bdf8;box-shadow:0 0 18px rgba(56,189,248,.7);}.data-update-orbit span:nth-child(1){top:8px;left:50%;transform:translateX(-50%);}.data-update-orbit span:nth-child(2){bottom:15px;left:14px;background:#60a5fa;}.data-update-orbit span:nth-child(3){bottom:15px;right:14px;background:#93c5fd;}.data-update-title{position:relative;margin:0;font-size:1.12rem;line-height:1.2;font-weight:950;letter-spacing:-.025em;}.data-update-sub{position:relative;margin-top:7px;color:#4f7fa1;font-size:.88rem;line-height:1.45;}.data-update-progress{position:relative;height:9px;margin-top:18px;border-radius:999px;overflow:hidden;background:rgba(125,185,232,.20);border:1px solid rgba(125,185,232,.24);}.data-update-progress span{position:absolute;inset:0 auto 0 0;width:42%;border-radius:inherit;background:linear-gradient(90deg,#7dd3fc,#3b82f6,#93c5fd);animation:data-update-progress 1.18s ease-in-out infinite;box-shadow:0 0 18px rgba(59,130,246,.24);}.data-update-overlay.done .data-update-card{animation:data-update-done .35s ease-out both;}.data-update-overlay.done .data-update-orbit::before{border-color:rgba(34,197,94,.22);border-top-color:#22c55e;border-right-color:#16a34a;}@keyframes data-update-fade{from{opacity:0;}to{opacity:1;}}@keyframes data-update-card-in{from{opacity:0;transform:translateY(14px) scale(.98);}to{opacity:1;transform:translateY(0) scale(1);}}@keyframes data-update-spin{to{transform:rotate(360deg);}}@keyframes data-update-sheen{0%{left:-55%;opacity:0;}20%{opacity:.95;}62%{left:118%;opacity:.24;}100%{left:118%;opacity:0;}}@keyframes data-update-progress{0%{left:-44%;}55%{left:58%;}100%{left:104%;}}@keyframes data-update-done{0%{transform:scale(1);}50%{transform:scale(1.025);}100%{transform:scale(1);}}@media (prefers-reduced-motion:reduce){.data-update-overlay,.data-update-card,.data-update-card::before,.data-update-orbit::before,.data-update-progress span,.data-update-overlay.done .data-update-card{animation:none !important;}}/* ── SO Detail Modal ── */ #soDetailModal .modal-card{max-height:90vh;overflow-y:auto;}@keyframes soLoadingPulse{0%,100%{opacity:.3;}50%{opacity:1;}}.so-loading-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#60a5fa;animation:soLoadingPulse 0.8s ease-in-out infinite;box-shadow:14px 0 0 #60a5fa,28px 0 0 #60a5fa;margin-right:10px;}#soKemasanGrid .kemasan-card{padding:12px;border-radius:12px;border:1px solid var(--border);background:var(--surface);text-align:center;}#soKemasanGrid .kemasan-card .kemasan-value{font-size:1.2rem;font-weight:800;color:var(--text);margin-top:4px;}#soKemasanGrid .kemasan-card .kemasan-label{font-size:.78rem;color:var(--muted);font-weight:600;}