:root{--bg:#f3f6fa;--surface:#fff;--surface-2:#eef3f8;--ink:#111827;--muted:#667085;--border:#d7e0ea;--navy:#082f63;--blue:#1e64c8;--green:#169b62;--amber:#f08a00;--red:#dc2626;--cyan:#0d9488;--shadow:0 8px 22px #0f172a0f}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--ink);margin:0;font-family:Arial,Malgun Gothic,sans-serif}body{overflow-x:hidden}.dashboard{width:min(1920px,100%);margin:0 auto;padding:14px 16px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:10px;display:flex}.titleBlock{align-items:center;gap:14px;min-width:0;display:flex}.titleIcon{width:42px;height:42px;color:var(--ink);flex:none}h1{letter-spacing:0;margin:0;font-size:clamp(30px,2.45vw,46px);font-weight:900;line-height:1.05}.titleBlock p{color:#42526a;margin:6px 0 0;font-size:14px;font-weight:700}.timeBlock{text-align:right;color:#123c82;flex:none;gap:4px;display:grid}.timeBlock strong{font-size:22px}.timeBlock span{color:var(--muted);font-size:13px;font-weight:700}.reportPeriod{color:var(--muted);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;font-size:12px;font-weight:800;display:flex}.reportPeriod select,.reportPeriod input{border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;border-radius:6px;padding:6px 8px}.reportPeriod strong{color:var(--navy);white-space:nowrap}.periodNav{border:1px solid var(--border);background:var(--surface);width:30px;height:30px;color:var(--navy);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.periodNav svg{width:16px;height:16px}.periodNav:disabled{cursor:not-allowed;opacity:.4}.kpiGrid{grid-template-columns:repeat(6,minmax(160px,1fr));gap:10px;margin-bottom:12px;display:grid}.kpiCard,.panel,.commentStrip{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow)}.kpiCard{border-radius:8px;align-content:space-between;gap:12px;min-height:138px;padding:16px 16px 13px;display:grid}.kpiLabel{color:#1f2937;white-space:nowrap;align-items:center;gap:10px;font-size:16px;font-weight:900;display:flex}.kpiLabel svg{width:27px;height:27px;color:var(--blue)}.kpiCard.red .kpiLabel svg,.kpiCard.red .kpiValue strong{color:var(--red)}.kpiCard.amber .kpiLabel svg,.kpiCard.amber .kpiValue strong{color:var(--amber)}.kpiCard.pending .kpiLabel svg,.kpiCard.pending .kpiValue strong{color:#64748b}.kpiValue{align-items:baseline;gap:9px;min-width:0;display:flex}.kpiValue strong{font-size:clamp(26px,2vw,42px);font-weight:900;line-height:1}.kpiValue span{color:#111827;white-space:nowrap;font-size:17px;font-weight:800}.delta{width:fit-content;color:var(--green);background:#e9f8f0;border-radius:999px;padding:5px 10px;font-size:13px;font-weight:900}.delta.down{color:var(--red);background:#fff1f2}.kpiFoot{flex-wrap:wrap;align-items:center;gap:7px;min-height:26px;display:flex}.kpiFoot small{color:var(--muted);font-size:12px;font-weight:800;line-height:1.3}.mainGrid{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;display:grid}.panel{border-radius:8px;min-width:0;overflow:hidden}.panel.col1,.panel.col2{grid-column:span 2}.panel.col3{grid-column:span 3}.panel.col6{grid-column:span 6}.panelTitle{background:var(--navy);color:#fff;justify-content:space-between;align-items:center;gap:12px;min-height:40px;padding:7px 13px;display:flex}.panelTitle h2{margin:0;font-size:17px;font-weight:900;line-height:1.15}.panelTitle span{white-space:nowrap;background:#ffffff24;border-radius:4px;padding:4px 8px;font-size:12px;font-weight:800}.tableWrap{padding:9px;overflow-x:auto}table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:520px}.warehouseTable{min-width:720px}.warehouseTable .warehouseSiteCol{width:14%}.warehouseTable .warehouseQtyCol{width:22%}.warehouseTable .warehouseBarCol{width:64%}.channelTable{min-width:760px}th,td{text-align:center;vertical-align:middle;border:1px solid #e0e7ef;padding:8px 9px;font-size:14px}th{color:#2d3748;background:#f6f8fb;font-weight:900}td{font-weight:700}.drillCell{color:var(--navy);min-width:72px;font:inherit;cursor:pointer;background:#eef4fc;border:0;border-radius:6px;padding:5px 8px;font-weight:900}.drillCell:hover:not(:disabled){background:#dbeafe}.drillCell:disabled{color:inherit;cursor:default;background:0 0}.strong{color:#111827;font-weight:900}.barCell{color:#fff;background:#e5e7eb;border-radius:5px;align-items:center;min-height:28px;display:grid;position:relative;overflow:hidden}.stockCell{color:#10233f;background:#edf2f7;border-radius:5px;align-items:center;min-height:28px;display:grid;position:relative;overflow:hidden}.stockCell span{opacity:.92;background:linear-gradient(90deg,#0b376d,#2b7de0);position:absolute;inset:0 auto 0 0}.stockCell b{z-index:1;color:#fff;text-shadow:0 1px 2px #00000047;position:relative}.barCell span{background:linear-gradient(90deg, var(--navy), var(--blue));position:absolute;inset:0 auto 0 0}.barCell b{z-index:1;text-shadow:0 1px 2px #00000040;position:relative}.statusPill,.sourceBadge{border-radius:999px;justify-content:center;align-items:center;min-width:70px;padding:5px 9px;font-size:12px;font-weight:900;display:inline-flex}.statusPill.ok,.sourceBadge.live{color:#087447;background:#ddf8e9}.statusPill.warn,.sourceBadge.sample,.sourceBadge.pending{color:#a15c00;background:#fff3d6}.statusPill.bad,.sourceBadge.error{color:#be123c;background:#ffe4e6}.legendRow{color:var(--muted);flex-wrap:wrap;align-items:center;gap:9px;padding:0 12px 12px;font-size:13px;font-weight:800;display:flex}.legend{border-radius:3px;width:16px;height:10px;display:inline-block}.legend.available{background:var(--green)}.legend.near{background:var(--amber)}.legend.blocked{background:var(--red)}.legend.order{background:#c3d2e6}.legend.ship{background:var(--blue)}.trendWrap{padding:12px 12px 4px}.trendEmpty{text-align:center;padding:28px 16px;font-weight:800}.trendSvg{width:100%;height:auto;display:block}.trendSvg .orderRect{fill:#c3d2e6}.trendSvg .shipRect{fill:var(--blue)}.trendSvg .rateLine{fill:none;stroke:var(--amber);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}.trendSvg .rateDot{fill:#fff;stroke:var(--amber);stroke-width:2px}.trendSvg .rateDot.low{fill:var(--amber);stroke:var(--red)}.trendSvg .targetLine{stroke:var(--green);stroke-width:1.5px;stroke-dasharray:5 4}.trendSvg .axisText{fill:var(--muted);font-size:9px;font-weight:800}.trendSvg .axisText.target{fill:var(--green)}.trendSvg .dateText{fill:var(--muted);font-size:9px;font-weight:800}.legend.rate{background:var(--amber)}.kpiTrendWrap{padding:14px 18px 8px}.kpiTrendHead{color:#253044;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px;font-size:14px;font-weight:800;display:flex}.kpiTrendHead strong{color:var(--navy);font-size:22px;font-weight:900}.kpiTrendDiff{color:var(--green);background:#e9f8f0;border-radius:999px;padding:4px 11px;font-size:13px;font-weight:900}.kpiTrendDiff.down{color:var(--red);background:#fff1f2}.kpiTrendSvg{width:100%;height:auto;display:block}.kpiTrendSvg .trendLine{fill:none;stroke:var(--blue);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}.kpiTrendSvg .trendArea{fill:#1e64c81a;stroke:none}.kpiTrendSvg .weekendBand{stroke:none}.kpiTrendSvg .weekendBand.sat{fill:#0891b21a}.kpiTrendSvg .weekendBand.sun{fill:#ef444417}.kpiTrendSvg .trendDot{fill:var(--blue);stroke:#fff;stroke-width:1px}.kpiTrendSvg .trendDot.last{fill:#fff;stroke:var(--blue);stroke-width:3px}.kpiTrendSvg .trendDot.weekend.sat{fill:#0891b2}.kpiTrendSvg .trendDot.weekend.sun{fill:#ef4444}.kpiTrendSvg .trendDot.last.weekend.sat{fill:#fff;stroke:#0891b2}.kpiTrendSvg .trendDot.last.weekend.sun{fill:#fff;stroke:#ef4444}.kpiTrendSvg .avgLine{stroke:var(--amber);stroke-width:1.5px;stroke-dasharray:5 4}.kpiTrendSvg .avgText{fill:var(--amber);font-size:11px;font-weight:800}.kpiTrendSvg .dateText{fill:var(--muted);font-size:10px;font-weight:800}.kpiTrendSvg .dateText.weekend.sat{fill:#0e7490}.kpiTrendSvg .dateText.weekend.sun{fill:#dc2626}.kpiTrendSvg .valueText{fill:var(--blue);stroke:#fff;stroke-width:3px;stroke-linejoin:round;paint-order:stroke;font-size:10px;font-weight:900}.kpiTrendSvg .valueText.last{fill:var(--navy)}.kpiTrendSvg .valueText.weekend{fill:#b91c1c}.legend.trendLineLegend{background:var(--blue)}.legend.avgLegend{background:repeating-linear-gradient(90deg, var(--amber) 0 4px, transparent 4px 7px)}.legend.todayLegend{box-shadow:inset 0 0 0 2px var(--blue);background:#fff}.legend.weekendLegend{background:linear-gradient(90deg,#0891b2d9 0 50%,#ef4444d9 50% 100%)}.totalRow td{background:#eef4fc;font-weight:900}.compBar{background:#edf2f7;border-radius:5px;width:100%;min-width:360px;height:26px;display:flex;overflow:hidden}.compBar .seg{color:#fff;text-shadow:0 1px 2px #00000040;white-space:nowrap;cursor:pointer;border:0;justify-content:center;align-items:center;min-width:10px;height:100%;font-family:inherit;font-size:11px;font-weight:900;transition:filter .15s;display:flex;overflow:hidden}.compBar .seg:hover{filter:brightness(1.08)}.seg-available{background:var(--green)}.seg-near{background:var(--amber)}.seg-expired{background:var(--red)}.seg-inspect{background:var(--cyan)}.seg-hold{background:#64748b}.seg-unrated{color:#334155;text-shadow:none;background:#cbd5e1}.legend.seg-unrated{background:#cbd5e1}.legend.seg-available,.legend.seg-near,.legend.seg-expired,.legend.seg-inspect,.legend.seg-hold,.legend.seg-unrated{width:16px;height:10px}.modalHeadActions{align-items:center;gap:8px;display:flex}.modalDownload{color:#fff;cursor:pointer;background:#ffffff29;border:0;border-radius:7px;align-items:center;gap:6px;padding:6px 11px;font-size:12px;font-weight:900;transition:background .15s;display:inline-flex}.modalDownload:hover{background:#ffffff47}.modalDownload svg{width:15px;height:15px}.matBlock{gap:13px;padding:13px;display:grid}.matRow{gap:6px;display:grid}.matHead{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.matHead strong{color:var(--navy);font-size:16px;font-weight:900}.matHead span{color:var(--muted);font-size:12px;font-weight:800}.matBar{background:#edf2f7;border-radius:6px;width:100%;height:34px;display:flex;overflow:hidden}.matSeg{color:#fff;cursor:pointer;text-shadow:0 1px 2px #00000040;border:0;justify-content:center;align-items:center;min-width:12px;height:100%;font-size:12px;font-weight:900;transition:filter .15s;display:flex}.matSeg:hover{filter:brightness(1.08)}.mat-run{background:var(--green)}.mat-slow{background:var(--amber)}.mat-none{background:var(--red)}.legend.mat-run{background:var(--green)}.legend.mat-slow{background:var(--amber)}.legend.mat-none{background:var(--red)}.plantTabs{flex-wrap:wrap;gap:6px;display:flex}.plantTab{border:1px solid var(--border);color:#475467;cursor:pointer;background:#fff;border-radius:999px;padding:6px 15px;font-size:13px;font-weight:900;transition:background .15s,color .15s,border-color .15s}.plantTab:hover{border-color:#b9c9dd}.plantTab.active{background:var(--navy);border-color:var(--navy);color:#fff}.matEmpty{color:var(--muted);padding:8px 2px;font-size:13px;font-weight:800}.imsUtilSvg{width:100%;height:auto;display:block}.imsUtilSvg .gridLine{stroke:var(--border);stroke-width:1px}.imsUtilSvg .axisText,.imsUtilSvg .dateText{fill:var(--muted);font-size:9px;font-weight:800}.imsUtilSvg .zoneLine{fill:none;stroke-width:2.2px;stroke-linejoin:round;stroke-linecap:round}.imsUtilSvg .zoneDot{stroke:var(--surface);stroke-width:1.2px}.imsChips{flex-wrap:wrap;gap:6px;display:flex}.imsChip{border:1px solid var(--border);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:4px 11px;font-size:12px;font-weight:900;display:inline-flex}.imsChip:hover{border-color:#b9c9dd}.imsChip.off{opacity:.42}.imsChip i{border-radius:50%;width:10px;height:10px;display:inline-block}.imsChip b{color:var(--muted);font-weight:900}.fbhStats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.fbhStat{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;gap:4px;padding:11px 13px;display:grid}.fbhStat.warn{background:#f08a0014;border-color:#f08a0066}.fbhStat.danger{background:#dc262612;border-color:#dc262666}.fbhStatLabel{color:var(--muted);font-size:12px;font-weight:800}.fbhStatValue{color:var(--navy);font-size:22px;font-weight:900;line-height:1.1}.fbhStat.warn .fbhStatValue{color:var(--amber)}.fbhStat.danger .fbhStatValue{color:var(--red)}.fbhStat.zoneFrozen{background:#1e64c812;border-color:#1e64c859}.fbhStat.zoneFrozen .fbhStatValue{color:var(--blue)}.fbhStat.zoneChilled{background:#0d948812;border-color:#0d948859}.fbhStat.zoneChilled .fbhStatValue{color:var(--cyan)}.fbhStat.zoneAmbient{background:#f08a0012;border-color:#f08a0059}.fbhStat.zoneAmbient .fbhStatValue{color:var(--amber)}.fbhStatValue em{color:var(--muted);margin-left:3px;font-size:12px;font-style:normal;font-weight:800}.legendItem{align-items:center;gap:5px;display:inline-flex}.fbh-danger{background:var(--red)}.fbh-warn{background:var(--amber)}.fbh-watch{background:var(--green)}.legend.fbh-danger{background:var(--red)}.legend.fbh-warn{background:var(--amber)}.legend.fbh-watch{background:var(--green)}.modalTable td.fbhOverdue{color:var(--red);font-weight:900}@media (max-width:720px){.fbhStats{grid-template-columns:repeat(2,1fr)}}.csRank{gap:6px;display:grid}.csRankRow{cursor:pointer;background:0 0;border:0;border-radius:6px;grid-template-columns:128px 1fr 42px;align-items:center;gap:10px;padding:3px 4px;transition:background .15s;display:grid}.csRankRow:hover{background:var(--surface-2)}.csRankLabel{color:#334155;text-align:left;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800;overflow:hidden}.csRankTrack{background:#edf2f7;border-radius:5px;height:18px;overflow:hidden}.csRankFill{background:linear-gradient(90deg, var(--blue), var(--navy));border-radius:5px;height:100%;display:block}.csRankCount{color:var(--navy);text-align:right;font-size:13px;font-weight:900}.oddSvg{width:100%;height:auto;display:block}.oddBarGroup{cursor:pointer}.oddBarGroup:hover .oddBar{filter:brightness(1.12)}.oddBarGroup:hover .oddTimeDot{r:5}.oddHitArea{fill:#0000}.oddBar{fill:var(--blue)}.oddTimeLine{fill:none;stroke:var(--navy);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.oddTimeDot{fill:var(--navy);stroke:var(--surface);stroke-width:1.5px}.oddTimeDot.afterMidnight{fill:var(--red);stroke:#fff;stroke-width:2.5px;filter:drop-shadow(0 1px 2px #dc26268c)}.oddTimeText{fill:var(--navy);pointer-events:none;font-size:9px;font-weight:800}.oddTimeText.afterMidnight{fill:var(--red);font-size:11px;font-weight:900}.oddMidnightLine{stroke:var(--red);stroke-width:1.25px;stroke-dasharray:5 4;opacity:.6}.oddMidnightText{fill:var(--red);opacity:.85;font-size:10px;font-weight:800}.oddIssueDot{fill:var(--red)}.oddAvgLine{stroke:var(--navy);stroke-width:1.5px;stroke-dasharray:5 4;opacity:.55}.oddAvgText{fill:var(--navy);opacity:.75;font-size:11px;font-weight:800}.oddDateText{fill:var(--muted);font-size:10px;font-weight:800}.oddCountText{fill:var(--ink);pointer-events:none;font-size:10px;font-weight:800}.legend.oddLegendBar{background:var(--blue)}.legend.oddLegendLine{background:var(--navy)}.legend.oddLegendIssue{background:var(--red);border-radius:50%;width:10px;height:10px}.oddActions{gap:6px;margin-left:auto;display:inline-flex}.oddGhostButton{border:1px solid var(--border);color:var(--navy);cursor:pointer;background:#fff;border-radius:999px;padding:5px 13px;font-size:12px;font-weight:900;transition:background .15s,border-color .15s}.oddGhostButton:hover{background:var(--surface-2);border-color:#b9c9dd}.oddDayDetail{gap:12px;display:grid}.oddTimeGrid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.oddTimeCell{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;gap:4px;padding:10px 12px;display:grid}.oddTimeLabel{color:var(--muted);font-size:12px;font-weight:800}.oddTimeLabel em{opacity:.7;font-style:normal;font-weight:700}.oddTimeValue{color:var(--navy);font-size:20px;font-weight:900;line-height:1.1}.oddIssueList{gap:8px;display:grid}.oddIssueRow{border:1px solid var(--border);background:var(--surface-2);border-radius:10px;grid-template-columns:88px 1fr;align-items:start;gap:12px;padding:11px 13px;display:grid}.oddIssueTag{color:var(--muted);background:var(--surface);border:1px solid var(--border);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:4px 8px;font-size:12px;font-weight:800;display:inline-flex}.oddIssueTag.bad{color:var(--red);background:#dc262614;border-color:#dc262666}.oddIssueTag.warn{color:var(--amber);background:#f08a0017;border-color:#f08a0066}.oddIssueText{color:var(--ink);word-break:break-word;margin:0;font-size:13px;font-weight:600;line-height:1.5}.oddIssueRow--none .oddIssueText{color:var(--muted);font-weight:500}@media (max-width:640px){.oddTimeGrid{grid-template-columns:repeat(2,1fr)}}.modalTable table{table-layout:auto}.modalTable td.matName,.modalTable td.truncate{text-align:left;white-space:normal;text-overflow:clip;min-width:240px;line-height:1.4;overflow:visible}.legend.targetLegend{background:repeating-linear-gradient(90deg, var(--green) 0 4px, transparent 4px 7px)}.reliList{gap:8px;padding:10px;display:grid}.reliRow{background:#fbfdff;border:1px solid #e0e7ef;border-radius:8px;padding:10px 12px}.reliHead{align-items:center;gap:8px;margin-bottom:6px;display:flex}.reliHead svg{width:18px;height:18px;color:var(--green);flex:none}.reliHead strong{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:14px;font-weight:900;overflow:hidden}.reliMeta{color:#344054;flex-wrap:wrap;gap:4px 10px;margin-bottom:5px;font-size:12px;font-weight:800;display:flex}.reliRow small{color:var(--muted);font-size:12px;font-weight:700;line-height:1.35}.topbarRight{flex-wrap:wrap;flex:auto;justify-content:flex-end;align-items:center;gap:10px 12px;display:flex}.kpiCard.clickable{font:inherit;text-align:left;cursor:pointer;transition:transform .18s,box-shadow .18s,border-color .18s}.kpiCard.clickable:hover{border-color:#b9c9dd;transform:translateY(-3px);box-shadow:0 12px 26px #0f172a1f}.adminButton{border:1px solid var(--border);background:var(--surface);color:var(--navy);cursor:pointer;box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:7px;padding:9px 13px;font-size:13px;font-weight:900;transition:transform .18s,background .18s;display:inline-flex}.adminButton:hover{background:#f4f8ff;transform:translateY(-2px)}.adminButton svg{width:17px;height:17px}.modalOverlay{z-index:60;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0914267a;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modalCard{border:1px solid var(--border);background:var(--surface);border-radius:12px;width:min(720px,100%);max-height:min(80vh,640px);animation:.22s modalUp;overflow-y:auto;box-shadow:0 24px 60px #0914264d}@keyframes modalUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.modalHead{background:var(--navy);color:#fff;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex;position:sticky;top:0}.modalHead strong{font-size:17px;font-weight:900}.modalClose{color:#fff;cursor:pointer;background:#ffffff24;border:0;border-radius:7px;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.modalClose svg{width:17px;height:17px}.modalGuide{color:#334155;background:#f4f8ff;border-bottom:1px solid #e5edf5;margin:0;padding:13px 18px;font-size:13px;font-weight:700;line-height:1.5}.modalTable{padding:12px}.modalTable table{min-width:100%}.modalEmpty{text-align:center;padding:26px;font-weight:800}.adminCard{width:min(560px,100%)}.adminFields{gap:10px;padding:14px 18px;display:grid}.adminField{grid-template-columns:1fr 130px;align-items:center;gap:10px;display:grid}.adminLabel{color:#1f2937;align-items:center;gap:6px;font-size:14px;font-weight:800;display:inline-flex}.adminInput{align-items:center;gap:7px;display:inline-flex}.adminInput input{border:1px solid var(--border);text-align:right;width:84px;color:var(--navy);border-radius:7px;padding:8px 10px;font-size:15px;font-weight:900}.adminInput em{color:var(--muted);font-size:13px;font-style:normal;font-weight:800}.adminActions{justify-content:flex-end;gap:9px;padding:6px 18px 18px;display:flex}.primaryButton,.ghostButton{cursor:pointer;border-radius:8px;align-items:center;gap:7px;padding:10px 15px;font-size:13px;font-weight:900;transition:transform .15s,opacity .15s;display:inline-flex}.primaryButton{background:var(--navy);color:#fff;border:0}.ghostButton{border:1px solid var(--border);color:#475467;background:#fff}.ghostButton svg{width:15px;height:15px}.primaryButton:hover,.ghostButton:hover{transform:translateY(-1px)}.primaryButton:disabled,.ghostButton:disabled{opacity:.6;cursor:default;transform:none}.tip{color:#94a3b8;display:inline-flex;position:relative}.tip svg{width:15px;height:15px}.tip .tipBody{z-index:30;color:#e6eefb;background:#10233f;border-radius:8px;width:240px;padding:9px 11px;font-size:12px;font-weight:700;line-height:1.45;display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 10px 24px #09142659}.tip:hover .tipBody,.tip:focus-within .tipBody{display:block}.riskList{padding:10px}.riskRow{border-bottom:1px solid #e5edf5;grid-template-columns:32px minmax(0,1fr) 60px 72px;align-items:center;gap:8px;min-height:40px;font-size:15px;display:grid}.riskRow span{text-align:center;font-weight:900}.riskRow strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.riskRow small{color:var(--muted);font-weight:800}.risk{font-size:12px;font-style:normal;font-weight:900}.risk.high{color:var(--red)}.risk.mid{color:var(--amber)}.risk.low{color:#64748b}.decisionBox{background:#f4f8ff;border:1px solid #c8d7ed;border-radius:8px;gap:10px;margin-top:10px;padding:12px;display:flex}.decisionBox svg{width:28px;height:28px;color:var(--navy);flex:none}.decisionBox strong{color:var(--navy);margin-bottom:5px;font-size:15px;display:block}.decisionBox p{color:#334155;margin:0;font-size:13px;font-weight:700;line-height:1.45}.progressLine{background:#dbe3ec;border-radius:999px;min-width:96px;height:12px;overflow:hidden}.progressLine span{background:linear-gradient(90deg, var(--blue), var(--cyan));height:100%;display:block}.miniGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:9px;display:grid}.miniTile{background:#fbfdff;border:1px solid #e0e7ef;border-radius:8px;min-height:104px;padding:12px}.miniTile div{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px;display:flex}.miniTile strong{font-size:15px;font-weight:900}.miniTile p{color:#344054;margin:0 0 8px;font-size:13px;font-weight:800;line-height:1.35}.miniTile small{color:var(--muted);font-size:12px;font-weight:700;line-height:1.35}.rawBlock{padding:9px}.materialSummary{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px;display:grid}.materialCard{background:#fbfdff;border:1px solid #dfe8f2;border-radius:8px;min-width:0;padding:10px}.materialCard strong{color:var(--navy);margin-bottom:8px;font-size:16px;font-weight:900;display:block}.materialCard div{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.materialCard span{border-radius:999px;padding:4px 7px;font-size:12px;font-weight:900}.materialCard .ok{color:#087447;background:#e4f8ed}.materialCard .warn{color:#a15c00;background:#fff3d6}.materialCard .bad{color:#be123c;background:#ffe4e6}.materialCard small{color:#475467;font-size:12px;font-weight:800}.metric{background:#fbfdff;border:1px solid #e0e7ef;border-radius:8px;grid-template-columns:28px 1fr;align-items:center;gap:2px 8px;padding:10px;display:grid}.metric span{color:var(--blue);grid-row:span 2}.metric svg{width:24px;height:24px}.metric small{color:var(--muted);font-size:12px;font-weight:800}.metric strong{font-size:20px;font-weight:900}.compact{padding:0}.truncate{text-overflow:ellipsis;white-space:nowrap;text-align:left;overflow:hidden}.empty{color:var(--muted);padding:20px}.deliveryList{gap:8px;padding:10px;display:grid}.deliveryItem{background:#fbfdff;border:1px solid #e0e7ef;border-radius:8px;grid-template-columns:30px 1fr auto;align-items:center;gap:10px;padding:11px 12px;display:grid}.deliveryItem svg{color:var(--blue)}.deliveryItem strong,.deliveryItem span{display:block}.deliveryItem strong{font-size:15px;font-weight:900}.deliveryItem span{color:var(--muted);margin-top:3px;font-size:12px;font-weight:800}.deliveryItem em{color:var(--amber);white-space:nowrap;font-size:13px;font-style:normal;font-weight:900}.commentStrip{border-radius:8px;grid-template-columns:280px repeat(3,1fr);align-items:center;gap:0;margin-top:12px;display:grid;overflow:hidden}.commentTitle,.commentStrip p{border-right:1px solid var(--border);align-items:center;gap:12px;min-height:90px;margin:0;padding:18px 22px;display:flex}.commentTitle{color:var(--navy);font-size:23px;font-weight:900}.commentTitle svg{width:42px;height:42px}.commentStrip p{color:#253044;font-size:16px;font-weight:800;line-height:1.5}.commentStrip p svg{width:22px;height:22px;color:var(--blue);flex:none}@media (max-width:1500px){.kpiGrid{grid-template-columns:repeat(3,minmax(160px,1fr))}.mainGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel.col1,.panel.col2,.panel.col3{grid-column:span 1}.panel.col6{grid-column:span 2}}@media (max-width:860px){.dashboard{padding:12px}.topbar{display:grid}.timeBlock{text-align:left}.kpiGrid,.mainGrid,.miniGrid,.materialSummary{grid-template-columns:1fr}.panel.col1,.panel.col2,.panel.col3,.panel.col6{grid-column:span 1}.titleIcon{width:34px;height:34px}h1{font-size:28px}}.loginWrap{background:linear-gradient(160deg,#0a2350,#123c82 60%,#1e64c8);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.loginCard{background:var(--surface);border-radius:16px;width:min(400px,100%);padding:30px 28px 24px;box-shadow:0 20px 60px #030c1e66}.loginBrand{align-items:center;gap:12px;margin-bottom:22px;display:flex}.loginBrand svg{width:40px;height:40px;color:var(--blue);flex:none}.loginBrand h1{color:var(--ink);margin:0;font-size:22px;font-weight:900}.loginBrand p{color:var(--muted);margin:4px 0 0;font-size:13px;font-weight:700}.loginForm{gap:8px;display:grid}.loginLabel{color:var(--muted);font-size:13px;font-weight:800}.loginInput{border:1px solid var(--border);letter-spacing:8px;text-align:center;width:100%;color:var(--ink);background:var(--surface);border-radius:10px;padding:14px 16px;font-size:24px;font-weight:800}.loginInput:focus{outline:2px solid var(--blue);border-color:var(--blue)}.loginError{color:var(--red);margin:2px 0 0;font-size:13px;font-weight:800}.loginButton{background:var(--navy);color:#fff;cursor:pointer;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;margin-top:6px;padding:13px;font-size:15px;font-weight:900;transition:transform .15s,opacity .15s;display:inline-flex}.loginButton:hover:not(:disabled){transform:translateY(-1px)}.loginButton:disabled{opacity:.5;cursor:default}.loginButton svg{width:18px;height:18px}.loginHint{color:var(--muted);text-align:center;margin:16px 0 0;font-size:12px;font-weight:700}.topControls{align-items:center;gap:8px;display:inline-flex}.greeting{color:var(--navy);white-space:nowrap;margin-right:2px;font-size:13px;font-weight:800}.greeting strong{color:var(--blue)}.chromeBtn{border:1px solid var(--border);background:var(--surface);width:38px;height:38px;color:var(--navy);cursor:pointer;box-shadow:var(--shadow);border-radius:8px;justify-content:center;align-items:center;transition:transform .18s,background .18s;display:inline-flex}.chromeBtn:hover{background:var(--surface-2);transform:translateY(-2px)}.chromeBtn.on{background:var(--navy);color:#fff;border-color:var(--navy)}.chromeBtn svg{width:18px;height:18px}.chromeBtn .spin{animation:2s linear infinite chromeSpin}@keyframes chromeSpin{to{transform:rotate(360deg)}}.memberAddRow{grid-template-columns:1fr 1fr 130px 92px;gap:8px;margin:10px 0 4px;display:grid}.memberInput{border:1px solid var(--border);color:var(--ink);background:var(--surface);border-radius:8px;padding:10px 11px;font-size:14px;font-weight:700}.memberInput:focus{outline:2px solid var(--blue);border-color:var(--blue)}.memberList{margin-top:12px}.memberTable{min-width:0}.memberTable td,.memberTable th{text-align:left}.memberTable .pinCell{font-variant-numeric:tabular-nums;letter-spacing:2px}.memberTable .alignRight{text-align:right}.roleTag{border-radius:4px;padding:3px 8px;font-size:12px;font-weight:900;display:inline-block}.roleTag.admin{color:var(--blue);background:#1e64c824}.roleTag.user{color:var(--muted);background:#66708529}.iconDelete{border:1px solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--red);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;display:inline-flex}.iconDelete:hover:not(:disabled){background:#dc262614}.iconDelete:disabled{opacity:.5;cursor:default}.iconDelete svg{width:15px;height:15px}.memberEmpty{color:var(--muted);text-align:center;padding:16px 0;font-size:13px;font-weight:700}@media (max-width:640px){.memberAddRow{grid-template-columns:1fr 1fr}}.panelTitleRight{align-items:center;gap:8px;display:flex}.panelIconBtn{color:#fff;cursor:pointer;background:#ffffff24;border:0;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;transition:background .15s,transform .15s;display:inline-flex}.panelIconBtn:hover{background:#ffffff47}.panelIconBtn svg{width:15px;height:15px}.panelIconBtn.active{color:var(--navy);background:#fff}.panel.isCollapsed .panelIconBtn:last-child svg{transform:rotate(-90deg)}.panel.isFav{box-shadow:0 0 0 2px var(--amber), var(--shadow)}[data-theme=dark]{--bg:#0b1220;--surface:#141d30;--surface-2:#1c2740;--ink:#e7edf6;--muted:#9aa8bd;--border:#2a3651;--navy:#12294c;--shadow:0 8px 22px #00000073}[data-theme=dark] th,[data-theme=dark] td{border-color:var(--border)}[data-theme=dark] th{background:var(--surface-2);color:var(--ink)}[data-theme=dark] .strong,[data-theme=dark] .kpiLabel,[data-theme=dark] .kpiValue strong,[data-theme=dark] .kpiValue span,[data-theme=dark] .adminLabel,[data-theme=dark] .modalHead strong,[data-theme=dark] .modalGuide,[data-theme=dark] .greeting{color:var(--ink)}[data-theme=dark] .titleBlock p,[data-theme=dark] .timeBlock{color:var(--muted)}[data-theme=dark] .ghostButton,[data-theme=dark] .adminButton,[data-theme=dark] .memberInput,[data-theme=dark] .loginInput,[data-theme=dark] .iconDelete{background:var(--surface-2);color:var(--ink)}[data-theme=dark] .adminButton{color:var(--ink)}[data-theme=dark] .barCell,[data-theme=dark] .stockCell,[data-theme=dark] .adminButton:hover,[data-theme=dark] .chromeBtn:hover{background:#24304a}[data-theme=dark] .kpiTrendHead strong,[data-theme=dark] .matHead strong,[data-theme=dark] .fbhStatValue,[data-theme=dark] .oddTimeValue,[data-theme=dark] .csRankCount,[data-theme=dark] .csRankLabel,[data-theme=dark] .decisionBox strong,[data-theme=dark] .decisionBox p,[data-theme=dark] .materialCard strong,[data-theme=dark] .commentTitle,[data-theme=dark] .chromeBtn{color:var(--ink)}[data-theme=dark] .decisionBox svg{color:var(--blue)}[data-theme=dark] .csRankTrack{background:var(--surface-2)}[data-theme=dark] .oddGhostButton,[data-theme=dark] .modalGuide{background:var(--surface-2);color:var(--ink)}[data-theme=dark] .modalGuide{color:var(--muted);border-bottom-color:var(--border)}@media print{.topControls,.adminButton,.panelIconBtn{display:none!important}.panel.isCollapsed .panelBody{display:block!important}.dashboard{width:100%;padding:0}.panel{break-inside:avoid;box-shadow:none;order:0!important}.kpiCard{break-inside:avoid}body{background:#fff}}
