:root{font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#17241f;background:#f4f6f4;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button{cursor:pointer;border:1px solid #b8c5be;border-radius:6px;background:#fff;color:#274c3c;padding:8px 12px;font-size:12px}button:hover{background:#eaf3ee}button:disabled{opacity:.5;cursor:wait}button:focus-visible,[tabindex]:focus-visible,select:focus-visible{outline:2px solid #125d43;outline-offset:2px}h1,h2,p{margin:0}.board{display:flex;flex-direction:column;height:100vh;min-height:540px;padding:14px 12px 8px;gap:10px}.board>header{display:flex;justify-content:space-between;align-items:center;gap:14px}.eyebrow,.message>span{font-size:10px;font-weight:700;letter-spacing:.12em;color:#73867b}h1{font-size:23px;margin-top:4px}.tools{display:flex;align-items:center;gap:12px}.meta,.time{font-size:11px;color:#718176}.years{display:flex;padding:3px;gap:2px;border-radius:7px;border:1px solid #b8c5be;background:#e8eeea}.years button{border:0;background:transparent;padding:6px 11px}.years button.active{background:#173e32;color:white}.legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;color:#64746a}.legend i{width:90px;height:7px;border-radius:4px;background:linear-gradient(90deg,#e4efeb,#2b9e67)}.divider{height:13px;border-left:1px solid #c9d3cd;margin:0 5px}.time{margin-left:auto}.columns{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(206px,1fr);gap:8px;flex:1;min-height:0;overflow:auto;padding-bottom:4px}.dimension{display:flex;flex-direction:column;min-width:206px;height:100%;border:1px solid #ccd5ce;border-radius:6px;background:#e9eeeb;overflow:hidden}.dimension-title{height:43px;flex-shrink:0;display:flex;align-items:center;gap:9px;padding:0 10px;background:#fff;border-bottom:1px solid #ccd5ce}.dimension-title>span{font-size:10px;color:#77887e}.dimension h2{font-size:15px;white-space:nowrap}.dimension-cells,.children{display:flex;flex-direction:column;gap:5px;min-height:0}.dimension-cells{flex:1;padding:5px;overflow:auto}.cell{flex:var(--weight) 1 var(--min);min-height:var(--min);position:relative;display:flex;flex-direction:column;padding:7px 7px 6px;background:var(--fill);color:var(--ink);border:2px solid #9daea3;border-radius:5px;cursor:pointer;outline:none;transition:filter .12s}.cell:hover{filter:brightness(1.025);border-color:#3d7053}.cell.selected{outline:2px solid #174c35;outline-offset:-2px}.cell.parent{background:#eef2ee;color:#24382a;padding:5px}.cell-head{display:flex;align-items:flex-start;justify-content:space-between;gap:5px}.cell-head strong{font-size:12px;line-height:1.45;overflow-wrap:anywhere}.cell-head small{color:#748179;font-size:9px;white-space:nowrap}.cell-numbers{display:flex;align-items:flex-end;justify-content:space-between;gap:4px;margin-top:auto;padding-top:10px;font-size:9px;font-variant-numeric:tabular-nums}.cell.parent>.cell-numbers{padding:3px 0 5px;margin-top:0;font-size:9px;color:#5b7060}.children{flex:1}.cell.parent>.children>.cell{border-width:1px}footer{display:flex;justify-content:space-between;gap:10px;color:#738178;font-size:10px;line-height:1.4}.detail{position:fixed;right:0;top:0;bottom:0;width:min(430px,100vw);background:#fbfcfa;border-left:1px solid #bdcbbf;box-shadow:-12px 0 40px #1b332426;z-index:10;display:flex;flex-direction:column}.detail>header{display:flex;justify-content:space-between;gap:12px;padding:20px;border-bottom:1px solid #d9e2da;background:#eef4ee}.detail header span{font-size:11px;color:#738578}.detail h2{font-size:19px;margin-top:5px}.detail header button{font-size:24px;line-height:1;padding:6px 11px;align-self:flex-start}.detail-body{padding:18px 20px;overflow:auto}.definition{font-size:12px;line-height:1.8;color:#536b59;margin-bottom:14px}.note{padding:10px;border:1px solid #ccdacd;border-radius:6px;background:#f0f6ef;color:#4c6b50;font-size:12px;line-height:1.6}.metric{border-bottom:1px solid #dce5dc;padding:17px 0}.metric label{display:block;font-size:12px;color:#657768}.metric label small{margin-left:8px;color:#8a9a8c}.metric>b{display:block;font-size:23px;margin:7px 0;font-variant-numeric:tabular-nums}.metric p{font-size:12px;line-height:1.7;color:#536756;white-space:pre-wrap}.metric-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:8px;font-size:11px;color:#7b8b7e}.metric-bottom button{font-size:11px;padding:6px 9px}details{font-size:11px;margin-top:11px;color:#7d8b7b}details p{margin-top:7px}.board-record{margin-top:18px}.error,#config-error{color:#a33d2b;font-size:12px;margin-top:12px;line-height:1.5}.message{max-width:560px;margin:9vh auto;padding:28px}.message p{font-size:14px;line-height:1.7;margin:18px 0;color:#6d7f70}.config label{display:block;font-size:13px;margin:16px 0;color:#45634e}.config select{display:block;width:100%;padding:10px;margin-top:7px;border:1px solid #b9c8bb;border-radius:6px;background:white;color:#244c32}@media(max-width:800px){.meta{display:none}.board{padding:10px}.legend .time{display:none}.legend{font-size:10px}footer span{display:none}h1{font-size:20px}.tools{gap:6px}}
/* Fit the whole nine-column board inside its actual Feishu iframe. */
html,body,#app{width:100%;height:100%;min-width:0;min-height:0;overflow:hidden}
[hidden]{display:none!important}.board{height:100%;height:100dvh;min-height:0;padding:10px 8px 6px;gap:7px;overflow:hidden}
.board>header{flex:none;min-width:0}.board h1{font-size:clamp(16px,1.5vw,23px)}.tools{gap:7px;flex-shrink:0}.tools>button{white-space:nowrap}.legend{flex:none;min-width:0;white-space:nowrap;flex-wrap:nowrap;font-size:clamp(8px,.78vw,11px)}.legend i{width:clamp(25px,5vw,90px);flex-shrink:0}.legend .time{font-size:inherit}
.columns{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:repeat(9,minmax(0,1fr));width:100%;min-width:0;gap:clamp(2px,.45vw,8px);overflow:hidden;padding:0}
.dimension{width:100%;min-width:0;min-height:0;overflow:hidden}.dimension-title{height:clamp(25px,3.1vh,38px);padding:0 clamp(3px,.45vw,8px);gap:4px;overflow:hidden}.dimension-title>span{font-size:9px}.dimension-title h2{font-size:clamp(9px,.93vw,14px);overflow:hidden;text-overflow:ellipsis}.dimension-cells{padding:3px;gap:2px;overflow:hidden}.cell{min-width:0;min-height:0;overflow:hidden;flex:var(--weight) 1 var(--min);padding:3px 4px;border-width:1px;border-radius:3px}.cell.parent{min-height:0;padding:2px;background:#eef2ee}.cell-head{flex:none;min-width:0;gap:2px;align-items:center}.cell-head strong{font-size:clamp(8px,.75vw,11px);line-height:1.4;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:normal}.cell-head small{display:none}.cell-numbers{display:flex;flex-direction:column;align-items:flex-start;gap:1px;flex:none;padding-top:2px;line-height:1.15;font-size:clamp(7px,.64vw,9px);width:100%;min-width:0}.cell-numbers span{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell.parent>.cell-numbers{display:none}.cell.parent>.cell-head{margin-bottom:2px}.children{gap:2px;min-height:0;overflow:hidden}.cell.compact:not(.parent) .cell-numbers{flex-direction:row;gap:2px;justify-content:space-between}.cell.compact:not(.parent) .cell-numbers span:nth-child(2){display:none}.cell.tiny:not(.parent) .cell-numbers{display:none}.cell.tiny:not(.parent){padding-top:1px;padding-bottom:1px}.cell.tiny:not(.parent) .cell-head strong{font-size:clamp(7px,.7vw,10px);line-height:1.2}
footer{flex:none;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:clamp(8px,.65vw,10px)}footer span{flex-shrink:0}
:fullscreen{background:#f4f6f4}:fullscreen .board{padding:14px 12px 8px;gap:10px}
@media(max-width:1100px){.legend .time{display:none}.dimension-title>span{display:none}.meta{display:none}footer span{display:none}.eyebrow{font-size:8px}.board h1{margin-top:1px}}
@media(max-width:700px){.board{padding:6px 3px 3px;gap:4px}.legend{gap:4px;font-size:8px}.legend>.divider,.legend .time{display:none}.legend>span:nth-last-of-type(2){max-width:36%;overflow:hidden;text-overflow:ellipsis}.board>header{gap:5px}.tools{gap:3px}.tools button{padding:5px 7px;font-size:10px}.years{padding:2px}.dimension-cells{padding:2px}.cell{padding-left:2px;padding-right:2px}.dimension-title{padding:0 2px}.dimension-title h2{font-size:8px}.cell-head strong{font-size:8px}.cell-numbers{font-size:7px}footer{font-size:7px}}
@media(max-height:560px){.board{padding-top:6px;gap:5px}.board .eyebrow{display:none}.board h1{font-size:17px;margin:0}.tools>button,.years button{padding:5px 8px}.legend{font-size:9px}.dimension-title{height:25px}.dimension-cells{padding:2px}.cell.parent>.cell-head{margin-bottom:1px}.cell.parent{padding:1px}footer{font-size:8px}}
