:root{font-family:-apple-system,BlinkMacSystemFont,PingFang TC,Microsoft JhengHei,Noto Sans TC,sans-serif;color:#10243d;background:#fff;font-synthesis:none;text-rendering:optimizeLegibility;--navy: #17365d;--navy-deep: #0b2f55;--cyan: #00b0f0;--cyan-dark: #058bc2;--pale-blue: #ddebf7;--pale-yellow: #fff2cc;--pale-green: #e2f0d9;--green: #237b3f;--red: #c9362b;--orange: #ed8b00;--slate: #52657a;--border: #cdd9e7;--border-soft: #e2e8f0;--surface-soft: #f7fafc;--shadow: 0 8px 24px rgba(23, 54, 93, .08)}*{box-sizing:border-box}html{background:#fff}body{margin:0;min-width:320px;min-height:100vh;background:#fff}button,input,select,textarea{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #1261a7;outline-offset:1px}h1,h2,h3,p{margin:0}table{border-collapse:collapse;width:100%}th{text-align:left}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.topbar{position:sticky;top:0;z-index:30;min-height:68px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:stretch;gap:28px;padding:0 32px;color:#fff;background:var(--navy-deep);box-shadow:0 1px #ffffff1f}.brand{border:0;background:transparent;color:#fff;font-size:22px;font-weight:760;letter-spacing:.2px;cursor:pointer;white-space:nowrap}.brand span{font-weight:650}.main-nav{display:flex;align-items:stretch;gap:10px;overflow-x:auto;scrollbar-width:none}.main-nav::-webkit-scrollbar{display:none}.nav-item{position:relative;min-width:max-content;padding:0 18px;border:0;background:transparent;color:#dce7f2;font-size:15px;font-weight:600;cursor:pointer}.nav-item:after{content:"";position:absolute;left:18px;right:18px;bottom:0;height:3px;background:transparent}.nav-item:hover,.nav-item.active{color:#fff}.nav-item.active:after{background:var(--cyan)}.export-button{align-self:center;display:inline-flex;gap:8px;align-items:center;min-height:38px;padding:0 15px;border:1px solid rgba(255,255,255,.88);border-radius:7px;background:transparent;color:#fff;font-size:14px;font-weight:650;cursor:pointer}.export-button:hover{background:#ffffff1a}.export-button:disabled{opacity:.62;cursor:wait}.account-actions{display:flex;align-items:center;gap:10px}.account-name{display:grid;min-width:96px;line-height:1.15}.account-name strong{color:#fff;font-size:13px}.account-name small{margin-top:4px;max-width:150px;overflow:hidden;color:#bcd0e3;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.logout-button{width:36px;height:36px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.35);border-radius:5px;background:transparent;color:#fff;cursor:pointer}.logout-button:hover{background:#ffffff1a}.quarter-bar{position:sticky;top:68px;z-index:28;display:grid;grid-template-columns:auto minmax(440px,720px) auto;align-items:center;justify-content:center;gap:24px;min-height:74px;padding:10px 32px;border-bottom:1px solid var(--border);background:#fffffff7;box-shadow:0 5px 18px #17365d0f;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.quarter-title{display:grid;min-width:150px}.quarter-title strong{color:#102b4b;font-size:14px}.quarter-title span{margin-top:3px;color:var(--slate);font-size:11px}.quarter-timeline{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #b8c9db;border-radius:6px;overflow:hidden}.quarter-tab{position:relative;min-height:48px;display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;place-content:center;column-gap:7px;border:0;border-right:1px solid #cad7e4;background:#fff;color:#25415f;cursor:pointer}.quarter-tab:last-child{border-right:0}.quarter-tab span{font-size:14px;font-weight:760}.quarter-tab small{grid-column:1 / -1;margin-top:2px;color:#687b8f;font-size:10px}.quarter-tab svg{align-self:center;color:#b03a31}.quarter-tab:hover{background:#f4f9fd}.quarter-tab.active{background:var(--navy);color:#fff;box-shadow:inset 0 -3px var(--cyan)}.quarter-tab.active small{color:#d6e7f5}.quarter-tab.active svg{color:#ffd6d0}.lock-button,.quarter-state{min-width:140px;min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid #b34a40;border-radius:5px;background:#fff;color:#a22f27;font-size:12px;font-weight:700}.lock-button{cursor:pointer}.lock-button:hover{background:#fff5f3}.lock-button.unlock{border-color:#4a8a5c;color:#28703d}.quarter-state{border-color:#7aa987;color:#28703d}.quarter-state.locked{border-color:#c1847e;color:#a22f27}.locked-notice{margin-bottom:16px;padding:10px 14px;border:1px solid #e3b1aa;border-radius:5px;background:#fff4f2;color:#8e2c24;font-size:13px;font-weight:650}.page-container{width:min(1500px,calc(100% - 48px));margin:0 auto;padding:28px 0 86px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:14px}.page-header h1{color:#102b4b;font-size:clamp(25px,2.3vw,34px);line-height:1.18;letter-spacing:-.4px}.page-header p{margin-top:6px;color:var(--slate);font-size:15px}.page-header-action{display:flex;align-items:center;min-height:42px}.autosave-status{display:inline-flex;align-items:center;gap:7px;color:var(--green);font-size:14px;font-weight:600}.autosave-status.saving{color:#52657a}.autosave-status.error{color:var(--red)}.stat-strip{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #bcd2e5;background:linear-gradient(90deg,#eef7ff,#f6fbff);border-radius:6px;margin:12px 0 24px;overflow:hidden}.stat-item{min-width:0;padding:19px 22px;text-align:center;position:relative}.stat-item+.stat-item:before{content:"";position:absolute;left:0;top:18%;bottom:18%;width:1px;background:#bed0e2}.stat-item span{display:block;color:#45596f;font-size:14px;font-weight:600}.stat-item strong{display:block;margin-top:7px;color:#0b3158;font-size:clamp(22px,2vw,32px);font-variant-numeric:tabular-nums;letter-spacing:-.4px}.stat-item small{display:block;margin-top:5px;color:var(--slate)}.stat-strip.compact{grid-template-columns:1fr;border:0;background:transparent;margin:0;border-radius:0}.stat-strip.compact .stat-item{padding:14px 0;text-align:left}.stat-strip.compact .stat-item+.stat-item{border-top:1px solid var(--border-soft)}.stat-strip.compact .stat-item+.stat-item:before{display:none}.stat-strip.compact .stat-item strong{font-size:20px;margin-top:3px}.tone-negative,.negative-value{color:var(--red)!important}.tone-positive{color:var(--green)!important}.dashboard-grid,.department-editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}.dashboard-main,.department-editor-grid>*{min-width:0}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:3px 2px 10px}.section-heading h2{color:#102b4b;font-size:20px}.section-heading p{margin-top:4px;color:var(--slate);font-size:13px}.text-button{display:inline-flex;align-items:center;gap:3px;border:0;background:transparent;color:#0765ad;font-size:14px;font-weight:650;cursor:pointer}.text-button:hover{text-decoration:underline}.table-frame{border:1px solid var(--border);border-radius:6px;overflow:hidden;background:#fff}.table-frame table{min-width:760px}.table-frame thead{position:sticky;top:0;z-index:5}.table-frame th{padding:12px 14px;background:var(--cyan);color:#fff;font-size:13px;font-weight:700;white-space:nowrap}.table-frame td{padding:11px 14px;border-top:1px solid var(--border-soft);color:#1b2d42;font-size:13px;vertical-align:middle}.table-frame tr:hover>td{background-color:#fbfdff}.numeric{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.row-link{padding:0;border:0;background:none;color:#132d4d;font-weight:680;cursor:pointer}.row-link:hover{color:#0068ae;text-decoration:underline}.department-status-table{max-height:440px;overflow:auto}.progress-cell{display:grid;grid-template-columns:minmax(72px,1fr) auto;align-items:center;gap:10px}.progress-track{height:7px;overflow:hidden;background:#edf2f6}.progress-track i{display:block;height:100%;min-width:1px;background:#b7d9ad}.audit-rail,.department-audit{border:1px solid var(--border);border-radius:6px;padding:20px;background:#fff}.audit-rail h2,.department-audit h2{color:#102b4b;font-size:20px;margin-bottom:12px}.audit-list{display:grid}.audit-item{display:grid;grid-template-columns:28px minmax(0,1fr) 18px;align-items:center;gap:12px;padding:18px 0;border:0;border-top:1px solid var(--border-soft);background:#fff;text-align:left;cursor:pointer}.audit-item:first-child{border-top:0}.audit-item strong,.audit-item small{display:block}.audit-item strong{font-size:14px;line-height:1.4}.audit-item small{margin-top:3px;color:var(--slate);font-size:12px}.audit-item.error>svg{color:var(--red)}.audit-item.warning>svg{color:var(--orange)}.audit-item.info>svg{color:#1672bd}.audit-empty{display:flex;flex-direction:column;align-items:center;gap:7px;padding:32px 10px;text-align:center;color:var(--green)}.audit-empty span{color:var(--slate);font-size:13px}.trend-heading{margin-top:22px}.trend-panel{border:1px solid var(--border);border-radius:6px;padding:14px 14px 6px;overflow:hidden}.trend-legend{display:flex;justify-content:center;gap:24px;margin:2px 0 0;color:#42566c;font-size:12px;flex-wrap:wrap}.trend-legend span{display:inline-flex;align-items:center;gap:7px}.trend-legend i{width:22px;height:3px}.trend-panel svg{display:block;width:100%;height:auto;max-height:220px}.chart-axis{stroke:#98abc0;stroke-width:1;stroke-dasharray:4 4}.chart-grid{stroke:#e3eaf1;stroke-width:1}.chart-label,.chart-value-label{fill:#5c6d80;font-size:12px}.department-picker{display:inline-grid;grid-template-columns:auto 270px;align-items:center;gap:12px;margin-bottom:10px;color:#52657a;font-size:14px}.department-picker select,table select,table input:not([type=number]),.rent-table input{width:100%;min-height:36px;border:1px solid var(--border);border-radius:4px;background:#fff;padding:6px 9px;color:#172b42;font-size:13px}.budget-table{max-height:calc(100vh - 225px);overflow:auto}.budget-table table{min-width:1120px}.budget-table th:nth-child(1){width:100px}.budget-table th:nth-child(2){min-width:200px}.budget-table th:nth-child(n+3):nth-child(-n+5){width:132px}.budget-table th:last-child{min-width:220px}.budget-section-row td{padding:0;background:var(--navy);border-top:0;color:#fff}.budget-section-row button{width:100%;display:flex;align-items:center;gap:6px;padding:8px 13px;border:0;background:transparent;color:#fff;font-size:13px;font-weight:700;cursor:pointer;text-align:left}.budget-line-row{content-visibility:auto;contain-intrinsic-size:49px}.budget-line-row td:nth-child(2) strong{display:block;font-weight:620}.link-source{display:inline-flex;align-items:center;gap:3px;margin-top:2px;color:#0b6caf;font-size:11px}.numeric-control{position:relative;display:block;min-width:100px}.numeric-control input{width:100%;min-height:34px;padding:6px 9px;border:1px solid #d8cda9;border-radius:3px;background:var(--pale-yellow);color:#182a3f;text-align:right;font-variant-numeric:tabular-nums}.numeric-control input:focus{border-color:#1261a7;box-shadow:inset 0 0 0 1px #1261a7}.numeric-control input:disabled{background:var(--pale-green);border-color:#c7dcc0;opacity:1}.input-suffix{position:absolute;right:9px;top:8px;color:#607286;font-size:12px;pointer-events:none}.numeric-control:has(.input-suffix) input{padding-right:24px}.linked-value,.formula-cell{background:var(--pale-green);color:#245a31}.linked-value{display:block;min-height:34px;padding:8px 9px;border:1px solid #c8ddc1;border-radius:3px;text-align:right}.guidance-cell{max-width:260px;color:#5d6e80!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.budget-section-total td{background:linear-gradient(90deg,#eff7eb 0%,var(--pale-green) 100%);color:#245a31;font-weight:700}.budget-section-total td:first-child{text-align:center}.department-audit{position:sticky;top:88px}.department-check{width:100%;display:grid;grid-template-columns:24px 1fr 18px;align-items:center;gap:10px;padding:15px 0;border:0;border-top:1px solid var(--border-soft);background:#fff;text-align:left}button.department-check{cursor:pointer}.department-check strong,.department-check small{display:block}.department-check strong{font-size:13px}.department-check small{margin-top:3px;color:var(--slate);font-size:11px}.department-check.info>svg{color:#1672bd}.department-check.warning>svg{color:var(--orange)}.sticky-summary{position:sticky;bottom:14px;z-index:20;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-top:18px;padding:0 14px;border:1px solid #8dafce;border-radius:6px;background:#fffffff7;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.sticky-summary .stat-strip{grid-template-columns:repeat(4,1fr);display:grid}.sticky-summary .stat-strip.compact .stat-item{text-align:center;border-top:0}.sticky-summary .stat-strip.compact .stat-item+.stat-item{border-left:1px solid var(--border)}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:0 16px;border:1px solid var(--cyan-dark);border-radius:5px;background:var(--cyan);color:#fff;font-size:14px;font-weight:700;cursor:pointer}.primary-button:hover{background:#009dd8}.primary-button:disabled{opacity:.55;cursor:not-allowed}.wide-table{overflow:auto;max-height:calc(100vh - 245px)}.wide-table table{min-width:1700px}.wide-table td{padding:7px}.wide-table th{padding:10px 8px}.wide-table input:not([type=number]),.wide-table select{min-width:118px}.wide-table input[type=date]{min-width:140px}.wide-table .numeric-control{min-width:112px}.icon-button{width:34px;height:34px;display:inline-grid;place-items:center;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer}.icon-button.danger{color:var(--red)}.icon-button:hover{background:#f6f9fc}.empty-state{border:1px dashed #a9bed2;border-radius:6px;padding:64px 24px;text-align:center;background:#fbfdff}.empty-state strong{color:#123255;font-size:20px}.empty-state p{margin:8px auto 20px;max-width:560px;color:var(--slate);font-size:14px;line-height:1.65}.rent-company-inputs{border:1px solid var(--border);border-radius:6px;padding:18px;margin-bottom:24px}.rent-company-inputs h2{margin-bottom:14px;color:#102b4b;font-size:18px}.rent-input-grid{display:grid;grid-template-columns:minmax(180px,1.2fr) repeat(3,minmax(160px,1fr));gap:10px;align-items:center}.rent-input-label{color:#263a50;font-size:14px;font-weight:650}.allocation-status{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:700}.allocation-status.pass{color:var(--green)}.allocation-status.fail{color:var(--red)}.rent-table{max-height:calc(100vh - 375px);overflow:auto}.rent-table table{min-width:1100px}.rent-table .numeric-control{min-width:100px}.rent-table td:nth-child(3){color:var(--slate)}.toast{position:fixed;right:24px;bottom:24px;z-index:80;max-width:min(430px,calc(100vw - 48px));padding:13px 16px;border:1px solid #93abc2;border-radius:6px;background:#102f50;color:#fff;box-shadow:var(--shadow);font-size:14px}.app-loading{min-height:100vh;display:grid;place-items:center;color:#38546f;font-size:15px;font-weight:650}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px 20px;background:linear-gradient(145deg,#f2f8fd,#fff 48%,#edf6fc)}.login-panel{width:min(430px,100%);padding:38px 40px 42px;border:1px solid #b9ccde;border-radius:8px;background:#fff;box-shadow:0 22px 60px #0b2f5521}.login-brand{color:var(--navy-deep);font-size:22px;font-weight:780}.login-brand span{font-weight:650}.login-icon{width:50px;height:50px;display:grid;place-items:center;margin:34px 0 18px;border-radius:50%;background:var(--pale-blue);color:var(--navy)}.login-panel h1{color:#102b4b;font-size:25px;letter-spacing:-.3px}.login-panel>p{margin-top:8px;color:var(--slate);font-size:14px}.login-panel form{display:grid;gap:17px;margin-top:28px}.login-panel label{display:grid;gap:7px;color:#2d4158;font-size:13px;font-weight:650}.login-panel input{min-height:43px;padding:8px 11px;border:1px solid #bdcad8;border-radius:5px;background:#fff;color:#172b42}.login-panel .primary-button{width:100%;min-height:44px;margin-top:4px}.login-error{padding:9px 11px;border:1px solid #e1aaa4;border-radius:4px;background:#fff2f0;color:#9b2f27;font-size:12px}input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.78}@media(max-width:1100px){.topbar{grid-template-columns:auto 1fr;gap:14px;padding:0 18px}.export-button{grid-column:2;grid-row:1;justify-self:end}.main-nav{grid-column:1 / -1;grid-row:2;min-height:44px;margin:-10px 0 0}.topbar{padding-bottom:0}.nav-item{padding:0 12px}.nav-item:after{left:12px;right:12px}.dashboard-grid,.department-editor-grid{grid-template-columns:1fr}.audit-rail,.department-audit{position:static}.budget-table{max-height:680px}.quarter-bar{top:112px;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:10px 18px}.quarter-title{display:none}}@media(max-width:720px){.topbar{min-height:112px;padding:0 14px}.brand{font-size:18px}.brand span{display:none}.export-button{min-height:34px;padding:0 10px}.export-button{font-size:0;gap:0}.account-actions{gap:7px}.account-name{min-width:0;max-width:90px}.account-name small{display:none}.quarter-bar{position:sticky;top:112px;grid-template-columns:1fr;padding:8px 12px}.quarter-timeline{width:100%}.quarter-tab{min-height:44px}.quarter-tab small{font-size:9px}.lock-button,.quarter-state{width:100%;min-height:34px}.page-container{width:min(100% - 24px,1500px);padding-top:20px}.page-header{align-items:stretch;flex-direction:column;gap:12px}.page-header h1{font-size:26px}.page-header-action .primary-button{width:100%}.stat-strip{grid-template-columns:repeat(2,1fr)}.stat-item:nth-child(3):before{display:none}.stat-item{padding:15px 10px}.stat-item strong{font-size:22px}.section-heading{align-items:flex-start;flex-direction:column}.department-picker{display:grid;grid-template-columns:1fr;width:100%}.department-picker select{width:100%}.rent-input-grid{grid-template-columns:1fr}.rent-input-label:not(:first-child){margin-top:10px}.sticky-summary{position:static;grid-template-columns:1fr;padding:10px}.sticky-summary .stat-strip{grid-template-columns:repeat(2,1fr)}.sticky-summary .stat-strip.compact .stat-item+.stat-item{border-left:0}.sticky-summary .primary-button{width:100%}.trend-legend{gap:10px;justify-content:flex-start}.login-panel{padding:30px 24px 34px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
