*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root,[data-theme=dark]{--bg:#14100c;--surface:#1b1611;--surface2:#241d16;--surface3:#2c2419;--accent:#d9a441;--accent2:#b8862c;--accent-soft:#d9a4411a;--accent-line:#d9a4413d;--copper:#df6f27;--gold:#d9a441;--silver:#b3bcc4;--red:#e05a5a;--green:#4caf7d;--orange:#df6f27;--blue:#7aa7d9;--text:#f3ece2;--text2:#b7a893;--text3:#7e7161;--border:#ffffff12;--card:#ffffff09;--card2:#ffffff0e;--hover-row:#ffffff06;--row-border:#ffffff17;--zebra-row:#fff1;--grid-hover:#d9a44117;--col-edge:#ffffff29;--select-bg:var(--surface2);--menu-bg:#2a221a;--menu-bg-hover:#362c21;--menu-border:#ffffff21;--navy:var(--bg);--navy2:var(--surface);--navy3:var(--surface2);--navy4:var(--surface3);--teal:var(--accent);--teal2:var(--accent2);--ratio-border:var(--row-border)}[data-theme=light]{--bg:#f6f4f0;--surface:#fff;--surface2:#ece7df;--surface3:#f2eee7;--accent:#8a5a12;--accent2:#6d460b;--accent-soft:#8a5a1212;--accent-line:#8a5a1233;--copper:#b8551a;--gold:#8a5a12;--silver:#64748b;--red:#c0392b;--green:#16794a;--orange:#b8551a;--blue:#2b5f96;--text:#1c1712;--text2:#4b4239;--text3:#7d7264;--border:#00000017;--card:#fff;--card2:#faf8f5;--hover-row:#00000006;--row-border:#ddd5c8;--zebra-row:#f5f1ea;--grid-hover:#8a5a1214;--col-edge:#cfc5b5;--select-bg:#fff;--menu-bg:#fff;--menu-bg-hover:#f2eee7;--menu-border:#0000001f}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:DM Sans,Noto Sans Thai,system-ui,sans-serif;font-size:14px}.app{height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;width:232px;min-width:232px;transition:width .3s;display:flex;overflow-y:auto}.sidebar.collapsed{width:60px;min-width:60px}.sidebar-logo{border-bottom:1px solid var(--border);cursor:pointer;flex-shrink:0;align-items:center;gap:10px;padding:16px 14px;display:flex}.sidebar-logo img{flex-shrink:0;width:34px;height:auto}.logo-text{color:var(--text);white-space:nowrap;letter-spacing:.2px;font-family:Space Grotesk,Noto Sans Thai,sans-serif;font-size:13px;font-weight:700;line-height:1.25;overflow:hidden}.logo-sub{color:var(--text3);letter-spacing:1.4px;text-transform:uppercase;white-space:nowrap;margin-top:2px;font-size:8px}.nav-section{padding:14px 0 4px}.nav-section-label{letter-spacing:1.6px;text-transform:uppercase;color:var(--text3);white-space:nowrap;padding:0 14px 8px;font-size:9px;font-weight:600;overflow:hidden}.nav-item{cursor:pointer;color:var(--text2);white-space:nowrap;text-align:left;background:0 0;border:none;border-left:2px solid #0000;align-items:center;gap:11px;width:100%;padding:9px 14px;font-family:inherit;font-size:13px;transition:background .15s,color .15s,border-color .15s;display:flex;overflow:hidden}.nav-item:hover{background:var(--card);color:var(--text)}.nav-item.active{border-left-color:var(--accent);color:var(--accent);background:var(--accent-soft);font-weight:600}.nav-icon{text-align:center;flex-shrink:0;width:22px;font-size:15px;line-height:1}.nav-label{text-overflow:ellipsis;overflow:hidden}.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-section-label,.sidebar.collapsed .logo-text,.sidebar.collapsed .theme-toggle-label{display:none}.sidebar.collapsed .nav-item{justify-content:center;gap:0;padding:9px 0}.sidebar.collapsed .nav-icon{width:auto;font-size:17px}.sidebar.collapsed .sidebar-logo{justify-content:center;padding:16px 6px}.sidebar-foot{border-top:1px solid var(--border);margin-top:auto}.conn-chip{color:var(--text3);white-space:nowrap;align-items:center;gap:8px;padding:11px 14px;font-size:11px;display:flex;overflow:hidden}.theme-toggle{border-top:1px solid var(--border);cursor:pointer;color:var(--text3);white-space:nowrap;text-align:left;background:0 0;border-bottom:none;border-left:none;border-right:none;align-items:center;gap:10px;width:100%;padding:11px 14px;font-family:inherit;font-size:12px;transition:background .15s,color .15s;display:flex;overflow:hidden}.theme-toggle:hover{color:var(--text);background:var(--hover-row)}.theme-toggle-track{background:var(--border);border-radius:10px;flex-shrink:0;width:34px;height:19px;transition:background .2s;position:relative}.theme-toggle-track.active{background:var(--accent)}.theme-toggle-thumb{background:var(--text);border-radius:50%;width:15px;height:15px;transition:transform .2s;position:absolute;top:2px;left:2px}.theme-toggle-track.active .theme-toggle-thumb{transform:translate(15px)}.main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.topbar{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:12px;padding:10px 20px;display:flex}.topbar-breadcrumb{color:var(--text3);flex:1;align-items:center;gap:6px;min-width:0;font-size:11px;display:flex}.topbar-breadcrumb .crumb-page{color:var(--text);font-weight:600}.filter-group{align-items:center;gap:8px;display:flex}.filter-pill{background:var(--surface3);border:1px solid var(--border);color:var(--text2);border-radius:8px;align-items:center;gap:6px;padding:5px 10px;font-size:12px;display:flex}.filter-label{color:var(--text3);text-transform:uppercase;letter-spacing:.8px;font-size:10px}.refresh-btn{background:var(--surface3);border:1px solid var(--border);color:var(--text2);cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:6px 13px;font-family:inherit;font-size:12px;transition:all .15s;display:flex}.refresh-btn:hover{border-color:var(--accent);color:var(--accent)}.refresh-btn.loading{opacity:.55;pointer-events:none}.data-tag{background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent);letter-spacing:.4px;white-space:nowrap;border-radius:6px;padding:4px 9px;font-size:10px}.data-tag.live{color:var(--green);background:#4caf7d1a;border-color:#4caf7d47}.data-tag.down{color:var(--red);background:#e05a5a1a;border-color:#e05a5a4d}.content{background:var(--bg);flex:1;min-width:0;padding:22px;overflow-y:auto}.page-header{background:linear-gradient(135deg, var(--surface2) 0%, var(--surface3) 100%);border:1px solid var(--border);border-radius:14px;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:18px;padding:22px 26px;display:flex}.page-header-left .eyebrow{letter-spacing:2px;text-transform:uppercase;color:var(--accent);margin-bottom:7px;font-size:9px;font-weight:600}.page-header-left h1{color:var(--text);font-family:Space Grotesk,Noto Sans Thai,sans-serif;font-size:25px;font-weight:700}.page-header-left p{color:var(--text2);margin-top:5px;font-size:12px}.page-header-right{gap:26px;display:flex}.header-kpi{text-align:right}.header-kpi-val{color:var(--accent);font-variant-numeric:tabular-nums;font-family:Space Grotesk,Noto Sans Thai,sans-serif;font-size:20px;font-weight:700}.header-kpi-label{color:var(--text3);text-transform:uppercase;letter-spacing:.8px;margin-top:3px;font-size:10px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px;display:grid}.grid-4{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px;display:grid}.grid-5{grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:16px;display:grid}.grid-6{grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:16px;display:grid}.col-span-2{grid-column:span 2}.col-span-3{grid-column:span 3}.grid-2.wide-left{grid-template-columns:1.45fr 1fr}.grid-2.wide-left-sm{grid-template-columns:1.15fr 1fr}.pct-inline{display:none}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:18px}.card-title{text-transform:uppercase;letter-spacing:1.2px;color:var(--text3);justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;font-size:10px;font-weight:600;display:flex}.card:fullscreen,.card.card-filled{background:var(--bg);border:none;border-radius:0;padding:24px 28px;overflow:auto}.card.card-filled{z-index:1000;position:fixed;inset:0;margin:0!important}.card:fullscreen .table-scroll,.card.card-filled .table-scroll{overflow:visible}.card-title span.note{color:var(--text3);text-transform:none;letter-spacing:0;font-size:10px;font-weight:400}.kpi-card{background:var(--card2);border:1px solid var(--border);border-radius:12px;padding:17px 19px}.kpi-label{text-transform:uppercase;letter-spacing:1px;color:var(--text3);margin-bottom:9px;font-size:10px;font-weight:600}.kpi-value{color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;font-family:Space Grotesk,Noto Sans Thai,sans-serif;font-size:23px;font-weight:700;line-height:1.15;overflow:hidden}.kpi-sub{color:var(--text3);margin-top:6px;font-size:11px}.kpi-delta-line{margin-top:5px;font-size:11px}.tbl{border-collapse:collapse;width:100%;font-size:12px}.tbl th{text-align:left;letter-spacing:1px;text-transform:uppercase;color:var(--text3);border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 12px;font-size:9px;font-weight:600}.tbl th.right{text-align:right}.tbl td{border-bottom:1px solid var(--row-border);color:var(--text2);padding:9px 12px}.tbl td.right{text-align:right;font-variant-numeric:tabular-nums}.tbl td.bold{color:var(--text);font-weight:600}.tbl:where(:not(.paired)) tbody tr:where(:nth-child(2n)) td,.tbl tbody tr:where(.band) td{background:var(--zebra-row)}.tbl.paired tbody tr:nth-child(2n) td{border-bottom-color:var(--col-edge)}.tbl.compact th,.tbl.compact td{padding-left:7px;padding-right:7px}.tbl tr:hover td{background:var(--grid-hover)}.tbl tr.section-header td{background:var(--accent-soft);color:var(--accent);letter-spacing:1.5px;text-transform:uppercase;padding:6px 12px;font-size:9px;font-weight:600}.tbl tr.total-row td{background:var(--accent-soft);color:var(--text);border-top:1px solid var(--accent-line);font-weight:700}.tbl tr.subtotal-row td{color:var(--text);border-top:1px solid var(--border);font-weight:600}.tbl tfoot td{border-bottom:none}.fin-tbl{border-collapse:collapse;width:100%;font-size:12px}.fin-tbl thead th{white-space:nowrap;text-align:right;background:var(--surface2);color:var(--text);border-bottom:2px solid var(--border);text-transform:uppercase;letter-spacing:.5px;padding:8px 10px;font-size:10px;font-weight:700}.fin-tbl thead th.left{text-align:left}.fin-tbl tbody td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--row-border);color:var(--text2);font-variant-numeric:tabular-nums;padding:6px 10px;font-size:12px}.fin-tbl tbody td.left{text-align:left}.fin-tbl tbody tr:where(:nth-child(2n)) td{background:var(--zebra-row)}.fin-tbl tbody tr:hover td{background:var(--grid-hover)}.fin-tbl tfoot td{text-align:right;white-space:nowrap;color:var(--text);background:var(--surface2);border-top:2px solid var(--accent-line);font-variant-numeric:tabular-nums;padding:8px 10px;font-size:12px;font-weight:700}.fin-tbl tfoot td.left{text-align:left}.neg{color:var(--red)!important}.pos{color:var(--green)!important}.muted{color:var(--text3)}.num{font-variant-numeric:tabular-nums}.table-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;overflow-x:auto}.bar-track{background:var(--border);border-radius:4px;flex:1;height:6px;overflow:hidden}.bar-fill{border-radius:4px;height:100%;transition:width .6s cubic-bezier(.16,1,.3,1)}.badge{border-radius:100px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-block}.badge.accent{background:var(--accent-soft);color:var(--accent)}.badge.gold{color:var(--gold);background:#d9a4411f}.badge.red{color:var(--red);background:#e05a5a21}.badge.green{color:var(--green);background:#4caf7d21}.badge.orange{color:var(--orange);background:#df6f2721}.badge.gray{background:var(--border);color:var(--text3)}.status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.status-dot.green{background:var(--green)}.status-dot.orange{background:var(--orange)}.status-dot.red{background:var(--red)}.prog-row{align-items:center;gap:10px;margin-bottom:11px;display:flex}.prog-label{color:var(--text2);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;width:150px;font-size:12px;overflow:hidden}.prog-val{color:var(--text);text-align:right;font-variant-numeric:tabular-nums;flex-shrink:0;width:108px;font-size:12px;font-weight:600}.prog-pct{color:var(--text3);text-align:right;flex-shrink:0;width:42px;font-size:11px}.legend-item{color:var(--text2);align-items:center;gap:7px;margin-bottom:7px;font-size:11px;display:flex}.legend-dot{border-radius:3px;flex-shrink:0;width:9px;height:9px}.loading-state{min-height:200px;color:var(--text3);flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-state{background:#e05a5a0f;border:1px solid #e05a5a47;border-radius:12px;max-width:640px;padding:22px 24px}.error-state h3{color:var(--red);margin-bottom:8px;font-family:Space Grotesk,Noto Sans Thai,sans-serif;font-size:15px;font-weight:700}.error-state p{color:var(--text2);font-size:13px;line-height:1.6}.error-state .error-ref{color:var(--text3);margin-top:10px;font-size:11px}.skeleton{background:linear-gradient(90deg, var(--border) 25%, #ffffff17 50%, var(--border) 75%);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}[data-theme=light] .skeleton{background:linear-gradient(90deg,#e7e2da 25%,#f4f1ec 50%,#e7e2da 75%) 0 0/200% 100%}.footnote{border-left:2px solid var(--border);background:var(--card);color:var(--text3);border-radius:0 8px 8px 0;margin-top:4px;padding:14px 16px;font-size:11px;line-height:1.7}.footnote strong{color:var(--text2);font-weight:600}.input{background:var(--card);border:1px solid var(--border);width:100%;color:var(--text);border-radius:7px;outline:none;padding:7px 10px;font-family:inherit;font-size:12px;transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--text3)}.input:hover{border-color:var(--text3)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}select.input{cursor:pointer}select.input option{background:var(--select-bg);color:var(--text)}.search-field{background:var(--card);border:1px solid var(--border);border-radius:7px;align-items:center;gap:7px;height:32px;padding:0 9px;transition:border-color .15s,box-shadow .15s;display:flex}.search-field:hover{border-color:var(--text3)}.search-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search-field input{min-width:0;height:100%;color:var(--text);background:0 0;border:none;outline:none;flex:1;padding:0;font-family:inherit;font-size:12px}.search-field input::placeholder{color:var(--text3)}::-webkit-scrollbar{width:5px;height:7px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text3)}.page-fade-in{animation:.28s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}body,.sidebar,.topbar,.content,.card,.kpi-card,.filter-pill,.page-header,.nav-item,.tbl td,.tbl th,.fin-tbl td,.fin-tbl th{transition:background-color .2s,border-color .2s,color .2s}[data-theme=light] .card,[data-theme=light] .kpi-card{box-shadow:0 1px 3px #0000000d}[data-theme=light] .sidebar{box-shadow:1px 0 4px #0000000a}.nav-toggle,.nav-backdrop{display:none}@media (max-width:1023px){.grid-3,.grid-4,.grid-5{grid-template-columns:1fr 1fr}.grid-6{grid-template-columns:repeat(3,1fr)}.col-span-3{grid-column:span 2}.grid-2>*,.grid-3>*,.grid-4>*,.grid-5>*,.grid-6>*{min-width:0}.pct-col{display:none}.pct-inline{font-variant-numeric:tabular-nums;margin-top:1px;font-size:10px;display:block}.app{height:100dvh}.sidebar{z-index:1200;width:268px;min-width:268px;padding-bottom:env(safe-area-inset-bottom);transition:transform .25s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:2px 0 24px #0000006b}.sidebar.mobile-open{transform:translate(0)}.sidebar.collapsed{width:268px;min-width:268px}.sidebar.collapsed .nav-label,.sidebar.collapsed .nav-section-label,.sidebar.collapsed .logo-text,.sidebar.collapsed .theme-toggle-label{display:block}.sidebar.collapsed .nav-item{justify-content:flex-start;gap:11px;padding:12px 16px}.sidebar.collapsed .nav-icon{width:22px;font-size:15px}.sidebar.collapsed .sidebar-logo{justify-content:flex-start;padding:16px 14px}.nav-backdrop{z-index:1100;opacity:0;pointer-events:none;background:#00000080;transition:opacity .25s;display:block;position:fixed;inset:0}.nav-backdrop.show{opacity:1;pointer-events:auto}.nav-toggle{width:44px;height:44px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin-left:-6px;font-size:19px;line-height:1;display:inline-flex}.nav-toggle:active{background:var(--card2)}.nav-item{min-height:44px;padding:12px 16px;font-size:14px}.topbar{flex-wrap:wrap;gap:8px;padding:8px 12px}.topbar-breadcrumb{flex:auto;min-width:0;font-size:10px}.filter-group{flex-wrap:wrap;gap:6px;width:100%}.content{padding:12px}.grid-2,.grid-3,.grid-4,.grid-5,.grid-6{gap:12px}.page-header{border-radius:12px;flex-direction:column;align-items:flex-start;gap:14px;padding:16px 18px}.page-header-left h1{font-size:20px}.page-header-right{flex-wrap:wrap;gap:18px;width:100%}.header-kpi{text-align:left}.header-kpi-val{font-size:17px}.card{padding:14px}.kpi-card{padding:14px 16px}.kpi-value{font-size:19px}.tbl th,.tbl td{padding:8px}}@media (max-width:639px){.grid-2,.grid-3,.grid-4,.grid-5,.grid-6,.grid-2.wide-left,.grid-2.wide-left-sm{grid-template-columns:1fr}.col-span-2,.col-span-3{grid-column:span 1}.content{padding:10px 8px}.page-header{padding:14px}.page-header-left h1{font-size:18px}.page-header-right{flex-direction:column;gap:10px}.card{border-radius:10px;padding:12px}.kpi-card{grid-template-columns:minmax(0,1fr) auto;align-items:baseline;column-gap:12px;padding:12px 14px;display:grid}.kpi-label{grid-area:1/1;margin-bottom:0}.kpi-value{text-align:right;grid-area:1/2;font-size:17px}.kpi-sub{grid-area:2/1/auto/-1;margin-top:3px}.card,.page-header{max-width:100%}.kpi-card{max-width:100%;overflow:hidden}.page-header-left{min-width:0}.page-header-left p{overflow-wrap:anywhere}.prog-label{width:100px}.prog-val{width:92px}}button.filter-pill{cursor:pointer;font-family:inherit;transition:all .15s}button.filter-pill:hover{border-color:var(--accent);color:var(--text)}.filter-pill.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}[data-density=compact] .tbl th{padding:5px 8px;font-size:9px}[data-density=compact] .tbl td{padding:5px 8px;font-size:11px}[data-density=compact] .fin-tbl thead th{padding:5px 8px;font-size:9px}[data-density=compact] .fin-tbl tbody td,[data-density=compact] .fin-tbl tfoot td{padding:4px 8px;font-size:11px}[data-density=compact] .card{padding:12px}[data-density=compact] .kpi-card{padding:12px 14px}[data-density=compact] .kpi-value{font-size:20px}[data-density=compact] .kpi-label{margin-bottom:4px}[data-density=compact] .page-header{margin-bottom:12px;padding:16px 22px}[data-density=compact] .page-header-left h1{font-size:20px}[data-density=compact] .header-kpi-val{font-size:18px}[data-density=compact] .grid-2,[data-density=compact] .grid-3,[data-density=compact] .grid-4{gap:10px;margin-bottom:12px}[data-density=compact] .topbar{padding:7px 18px}[data-density=compact] .filter-pill{padding:4px 9px}@media (min-width:1024px){[data-density=compact] .nav-item{padding:7px 14px;font-size:12px}[data-density=compact] .content{padding:16px}}.fin-tbl tr.pnl-section td{letter-spacing:1.4px;text-transform:uppercase;color:var(--accent);border-bottom:1px solid var(--accent-line);padding-top:16px;padding-bottom:6px;font-size:10.5px;font-weight:700}.fin-tbl tr.pnl-section:hover td{background:var(--surface)}.fin-tbl tr.pnl-group td{color:var(--text);font-weight:600}.fin-tbl tr.pnl-group td.left{text-transform:uppercase;letter-spacing:.9px;font-size:11px}.fin-tbl tr.pnl-account td.left{color:var(--text2)}.pnl-chevron{width:14px;color:var(--accent);margin-left:-14px;font-size:10px;display:inline-block}.fin-tbl tr.pnl-total td{background:var(--surface2);color:var(--text);text-transform:uppercase;letter-spacing:.5px;border-top:1px solid var(--accent-line);font-weight:700}.fin-tbl tr.pnl-computed td{color:var(--text);padding-top:11px;padding-bottom:11px;font-weight:700}.fin-tbl tr.pnl-net td{background:var(--surface2);color:var(--text);text-transform:uppercase;letter-spacing:.5px;border-top:2px solid var(--accent);font-size:13px;font-weight:700}.fin-tbl td.pnl-current{color:var(--text)}.fin-tbl tbody td.neg{color:var(--red)}.fin-tbl td.drillable,.tbl td.drillable{cursor:pointer}.fin-tbl td.drillable:hover,.tbl td.drillable:hover{background:var(--accent-soft);box-shadow:inset 0 -1px 0 var(--accent)}.kpi-card[role=button]:hover{border-color:var(--accent-line);background:var(--card2)}
