*{box-sizing:border-box}body{margin:0;min-width:320px;background:#f5f7fb}.app-shell{min-height:100vh;background:linear-gradient(180deg,#1769e014,#f5f7fb00 360px),#f5f7fb}.admin-shell{min-height:100vh;background:#f5f7fb}.admin-sider{min-height:100vh;background:#102033!important}.admin-brand{height:64px;padding:0 18px;display:flex;align-items:center;gap:10px;color:#fff;font-size:18px;font-weight:800;border-bottom:1px solid rgba(255,255,255,.08)}.admin-topbar{height:auto;min-height:88px;padding:18px 24px;background:#fffffff5;border-bottom:1px solid #dce4ef;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.admin-topbar h3{margin:0 0 4px;color:#102033}.admin-content{width:min(1680px,100%);margin:0 auto;padding:20px 24px 32px}.admin-domain-select{min-width:190px}.admin-stat{min-height:128px;position:relative;overflow:hidden}.admin-stat:after{content:"";position:absolute;inset:auto -28px -34px auto;width:110px;height:110px;border-radius:50%;background:#1769e01a}.admin-stat-warn:after{background:#d9871424}.admin-stat-risk:after{background:#d84d4d24}.admin-stat-icon{margin-bottom:10px;color:#1769e0;font-size:22px}.admin-stat-warn .admin-stat-icon{color:#d98714}.admin-stat-risk .admin-stat-icon{color:#d84d4d}.admin-help{margin:0;color:#42526b}.ledger-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px;padding:12px;border:1px solid #dce4ef;border-radius:8px;background:#f8fbff}.governance-rule{padding:12px;border:1px solid #dce4ef;border-radius:8px;background:#f8fbff}.governance-rule>div:first-child{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px}.governance-rule span,.governance-rule p{color:#6b7788}.governance-rule p{margin:8px 0 0;font-size:12px}.role-card{min-height:156px}.role-card h5{margin:0}.role-lock{color:#d84d4d}.role-ok{color:#2f9e44}.drawer-alert{margin-bottom:16px}.topbar{height:auto;min-height:88px;padding:18px 24px;background:#fffffff0;border-bottom:1px solid #dce4ef;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.topbar h3{margin:0 0 4px;color:#102033}.dept-select{min-width:150px}.version-tag{height:32px;margin-inline-end:0;display:inline-flex;align-items:center;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px}.content{width:min(1680px,100%);margin:0 auto;padding:20px 24px 32px}.section-row{margin-top:16px;align-items:flex-start}.kpi-card{min-height:142px}.kpi-value{margin:12px 0;color:#102033;font-size:clamp(26px,3vw,38px);line-height:1.1;font-weight:800}.completion-card{min-height:252px}.completion-table{display:grid;gap:10px}.completion-head,.completion-row{display:grid;grid-template-columns:minmax(100px,1.1fr) minmax(100px,1fr) minmax(94px,1fr) minmax(88px,.85fr) minmax(72px,.7fr);align-items:center;column-gap:12px}.completion-head{color:#6b7788;font-size:12px}.completion-row{min-height:42px;padding:8px 10px;border:1px solid #e4ebf5;border-radius:8px;background:#fbfdff}.completion-row strong{color:#102033}.positive{color:#2f9e44}.negative{color:#d9480f}.chart{width:100%;height:380px}.chart-note{display:block;margin-bottom:8px}.full-width{width:100%}.summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.summary-item{min-height:66px;padding:10px 12px;border:1px solid #dce4ef;border-radius:8px;background:#f8fbff}.summary-item>span{display:block;margin-bottom:6px;color:#6b7788;font-size:12px}.summary-item>strong{color:#102033;font-size:20px;line-height:1.2}.field-label{display:inline-flex;align-items:center;gap:4px;min-width:0}.field-info{color:#6b7788;font-size:12px;cursor:help}.opp-row{width:100%;padding:12px;border:1px solid #dce4ef;border-radius:8px;background:#f8fbff;color:inherit;cursor:pointer;text-align:left;transition:border-color .2s ease,background .2s ease,transform .2s ease}.opp-row:hover,.opp-row:focus-visible{border-color:#1769e0;background:#f2f7ff;outline:none;transform:translateY(-1px)}.opp-row>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.opp-list-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.muted{color:#6b7788;font-size:12px}.opp-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px;padding:12px;border:1px solid #dce4ef;border-radius:8px;background:#fff}.opp-summary-grid .ant-statistic-title{margin-bottom:2px;color:#6b7788;font-size:12px}.opp-summary-grid .ant-statistic-content{color:#102033;font-size:18px;font-weight:700}.forecast-breakdown{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.forecast-breakdown-item{min-height:86px;padding:12px;border:1px solid #dce4ef;border-radius:8px;background:#f8fbff}.forecast-breakdown-item span,.forecast-breakdown-item em{display:block;color:#6b7788;font-size:12px;font-style:normal}.forecast-breakdown-item strong{display:block;margin:4px 0;color:#102033;font-size:20px}.alert-button{width:100%;padding:0;border:0;background:transparent;cursor:pointer;text-align:left}.risk-scroll-panel{max-height:520px;overflow-y:auto;padding-right:4px}.risk-card .ant-collapse-content-box{padding:10px}.risk-card .ant-alert{padding:10px 12px}.risk-card .ant-alert-message{font-weight:700}.risk-summary{min-width:0}.risk-summary-meta{margin-bottom:2px;color:#42526b;font-size:12px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.risk-summary-text{color:#42526b;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alert-button .ant-alert{transition:transform .2s ease,box-shadow .2s ease}.alert-button:hover .ant-alert,.alert-button:focus-visible .ant-alert{transform:translateY(-1px);box-shadow:0 6px 16px #1020331f}.risk-suggestion{margin-top:6px;color:#42526b}.link-button{height:auto;padding:0;white-space:normal;text-align:left}.metric-box{min-height:78px;padding:12px;border:1px solid #dce4ef;border-radius:8px;background:#f8fbff}.metric-box span{display:block;margin-bottom:8px;color:#6b7788;font-size:12px}.metric-box strong{color:#102033;font-size:18px}.drawer-stat-row{margin-bottom:16px}.forecast-control-panel,.forecast-result-panel{min-height:520px;padding:14px;border:1px solid #dce4ef;border-radius:8px;background:#fff}.forecast-panel-head,.forecast-run-head,.forecast-param-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.forecast-panel-head{margin-bottom:14px}.forecast-run-head{margin-bottom:12px}.forecast-run-head h4{margin:0 0 4px}.control-label{display:block;margin-bottom:6px;color:#6b7788;font-size:12px}.date-input,.readonly-value{width:100%;min-height:32px;padding:4px 11px;border:1px solid #d9d9d9;border-radius:6px;background:#fff;color:#102033;font-size:14px}.readonly-value{display:flex;align-items:center;background:#f8fbff}.compact-divider{margin:4px 0}.forecast-param-grid{display:grid;gap:10px}.forecast-param{padding:10px 12px 4px;border:1px solid #e4ebf5;border-radius:8px;background:#f8fbff}.forecast-param .ant-slider{margin:8px 6px 4px}.forecast-param .ant-input-number-group-wrapper{width:96px}.forecast-method-alert{margin-bottom:12px}.forecast-metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:12px}.forecast-metric{min-height:92px;padding:12px;border:1px solid #dce4ef;border-radius:8px;background:#f8fbff}.forecast-metric span{display:block;margin-bottom:4px;color:#6b7788;font-size:12px}.forecast-metric strong{display:block;margin-bottom:8px;color:#102033;font-size:20px;line-height:1.15}.forecast-assumptions{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.forecast-drawer-chart .chart{height:300px}@media (max-width: 760px){.admin-topbar{padding:14px 12px}.admin-content{padding:14px 12px 24px}.ledger-summary{grid-template-columns:1fr}.topbar{padding:14px 12px}.content{padding:14px 12px 24px}.chart{height:280px}.completion-head,.completion-row{grid-template-columns:minmax(86px,1.2fr) minmax(88px,1fr) minmax(78px,.9fr) minmax(72px,.8fr) minmax(62px,.7fr);column-gap:8px}.risk-scroll-panel{max-height:none;overflow:visible;padding-right:0}.forecast-breakdown{grid-template-columns:1fr}.summary-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.opp-list-grid{grid-template-columns:1fr}.forecast-control-panel,.forecast-result-panel{min-height:0}.forecast-metric-grid{grid-template-columns:1fr}.forecast-panel-head,.forecast-run-head,.forecast-param-head{align-items:flex-start;flex-direction:column}.forecast-param .ant-input-number-group-wrapper{width:100%}}
