@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:wght@400;450;500;550;600;650;700;750;800&display=swap');
:root{--ink:#173239;--muted:#718187;--bg:#f5f7f8;--line:#e7ecee;--green:#246b56;--lime:#c4ed96;--accent:#86ba59;--amber:#b77729;--white:#fff;--side:232px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'Be Vietnam Pro',Arial,sans-serif;font-size:13px;line-height:1.65}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #94bf62;outline-offset:3px}button:disabled{opacity:.45;cursor:not-allowed}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--side);background:#102f36;color:#d4e0e1;padding:35px 20px;z-index:20;display:flex;flex-direction:column}.brand{color:#fff;display:flex;align-items:center;gap:12px;font-size:25px;font-weight:800;letter-spacing:1px;padding:0 8px}.brand:hover{text-decoration:none}.brand-mark{width:42px;height:48px;background:var(--lime);color:#102f36;border-radius:11px;font-size:39px;line-height:44px;text-align:center}.brand-sub{display:block;color:#b7ccce;font-size:10px;letter-spacing:2.1px;font-weight:500;margin-top:-4px}.sidebar-label{font-size:8px;letter-spacing:1.6px;color:#86a6ad;margin:42px 12px 18px}.nav-item{display:flex;align-items:center;gap:13px;color:#a9c1c5;padding:12px 14px;margin:4px 0;border-radius:8px;font-size:12px;transition:background .15s}.nav-item:hover{background:#1a4149;text-decoration:none;color:#fff}.nav-item.active{background:var(--lime);color:#173239;font-weight:650}.nav-item svg{width:18px;height:18px;flex-shrink:0}.nav-item .nav-num{margin-left:auto;font-size:9px;color:inherit;opacity:.6}.sidebar-bottom{margin-top:auto;border-top:1px solid #325057;padding:24px 12px 2px;font-size:11px}.sidebar-bottom strong{color:#bed4d7;font-weight:500;font-size:10px}.sidebar-bottom p{font-size:17px;color:#e5edef;line-height:1.55;font-weight:500;margin:13px 0}.sidebar-bottom small{color:#829fa6;font-size:10px}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--lime);display:inline-block;margin-right:6px}.workspace{margin-left:var(--side)}.topbar{height:78px;border-bottom:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 38px;gap:20px}.breadcrumb{font-size:11px;color:var(--muted)}.breadcrumb span{padding:0 12px;color:#bac6c9}.breadcrumb b{color:#3c565e;font-weight:500}.top-actions{display:flex;align-items:center;gap:10px}.avatar{height:32px;width:32px;background:#f0f3e9;border-radius:50%;display:grid;place-items:center;font-size:10px;color:#536c3a;font-weight:700;margin-left:9px}.data-status{font-size:10px;white-space:nowrap;border:1px solid #e2e8d2;background:#f7faef;color:#677a43;border-radius:5px;padding:4px 8px}.data-status.real{background:#edf5f2;color:var(--green);border-color:#d6e9e0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #dce4e6;background:#fff;color:var(--ink);padding:9px 14px;border-radius:7px;font-size:11px;line-height:1.5;font-weight:500;white-space:nowrap}.btn:hover{background:#f3f6f5;border-color:#b9c9c4;text-decoration:none}.btn svg{width:15px;height:15px}.btn.primary{background:#1e5d4b;border-color:#1e5d4b;color:#fff}.btn.primary:hover{background:#164b3c}.btn.lime{background:var(--lime);border-color:var(--lime);color:#18352a}.btn.small{padding:6px 10px;font-size:10px}.btn.danger{color:#aa483b}.icon-btn{border:0;background:transparent;font-size:18px;color:var(--ink)}.mobile-menu{display:none}main{max-width:1550px;margin:auto;padding:32px 38px 20px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.eyebrow{color:var(--green);font-size:9px;letter-spacing:1.9px;font-weight:650;text-transform:uppercase;margin:0 0 7px}h1{font-size:27px;line-height:1.35;margin:0 0 7px;font-weight:650;letter-spacing:-.8px}h2{font-size:16px;line-height:1.5;margin:0;font-weight:600;letter-spacing:-.2px}h3{font-size:13px;margin:0 0 5px;font-weight:600}p{margin:6px 0 14px}.subtitle{color:var(--muted);font-size:11px;margin:0;max-width:700px}.heading-actions{display:flex;gap:9px;flex-shrink:0}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;background:#eaf1e8;border:1px solid #dfe9da;border-radius:10px;padding:18px 22px;margin-bottom:22px}.intro strong{font-size:12px;font-weight:600}.intro p{font-size:10px;color:#62725e;margin:3px 0 0}.intro-icon{background:#d7e7cd;color:#416834;border-radius:9px;padding:10px;display:flex}.intro-icon svg{width:23px;height:23px}.intro-left{display:flex;align-items:center;gap:15px}.intro .label{font-size:9px;padding:5px 9px;border-radius:4px;background:#dce9d4;color:#52703e;white-space:nowrap}.filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:22px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:10px;color:#687c82;font-weight:500}.field input,.field select,.field textarea{border:1px solid #dbe4e5;background:#fff;color:var(--ink);border-radius:6px;padding:9px 11px;min-width:0;width:100%;font-size:11px}.field textarea{min-height:85px;resize:vertical}.filters .field{min-width:142px}.filters .field.meter-filter{min-width:205px}.filters .filter-note{margin-left:auto;align-self:center;color:var(--muted);font-size:10px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.metric{border:1px solid var(--line);border-radius:10px;background:#fff;padding:20px 22px}.metric-top{display:flex;justify-content:space-between;align-items:center;color:#74868b;font-size:10px}.metric-icon{background:#f1f5f3;color:#759086;border-radius:6px;padding:6px;height:29px;display:flex}.metric-icon svg{width:16px;height:16px}.metric-value{font-size:28px;letter-spacing:-1px;font-weight:600;line-height:1.5;margin:10px 0 6px}.metric-value small{font-size:11px;color:#77868a;letter-spacing:0;font-weight:400;margin-left:5px}.metric-foot{font-size:9px;color:var(--muted)}.metric-foot .trend{color:var(--green)}.metric.highlight{background:#153d37;color:#fff;border-color:#153d37}.metric.highlight .metric-top,.metric.highlight .metric-value small{color:#b5c9c3}.metric.highlight .metric-icon{background:#2b514b;color:#d5e9c5}.metric.highlight .metric-foot{color:#a6c9b4}.grid{display:grid;gap:20px}.grid.two{grid-template-columns:minmax(0,1.8fr) minmax(0,1fr)}.grid.equal{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;min-width:0;margin-bottom:20px}.card .card{margin-bottom:0}.card-header{padding:20px 22px 12px;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.card-header p{font-size:10px;color:var(--muted);margin:3px 0}.card-body{padding:8px 22px 22px}.pill{display:inline-flex;align-items:center;gap:5px;background:#f2f6f3;border:1px solid #e5eee6;border-radius:5px;font-size:9px;padding:3px 7px;white-space:nowrap;color:#5c7a63}.pill.amber{background:#fcf6eb;color:#986b26;border-color:#f0e5d0}.pill.red{background:#fdf0ef;color:#a75648;border-color:#f5dfdc}.pill.blue{background:#eff4f7;color:#57778f;border-color:#dce7ed}.legend{display:flex;align-items:center;gap:16px;font-size:9px;color:var(--muted);flex-wrap:wrap}.legend i{display:inline-block;width:7px;height:7px;border-radius:2px;background:var(--green);margin-right:5px}.chart{width:100%;height:235px;display:block;overflow:visible}.chart text{font-family:inherit;fill:#8a999e;font-size:9px}.chart-wrap{padding:8px 0 0}.chart-summary{display:flex;gap:24px;border-top:1px solid var(--line);padding-top:13px;margin-top:14px}.chart-summary span{color:var(--muted);font-size:9px}.chart-summary strong{display:block;color:var(--ink);font-size:13px;font-weight:550}.donut-layout{display:flex;align-items:center;gap:24px;padding:16px 0}.donut{height:148px;width:148px;flex-shrink:0}.donut text{font-family:inherit}.donut-legend{flex:1;font-size:10px}.donut-legend div{display:flex;align-items:center;gap:7px;margin:14px 0}.donut-legend i{height:7px;width:7px;border-radius:2px;flex-shrink:0}.donut-legend b{margin-left:auto;font-weight:600}.note{background:#f6f8f6;border-radius:6px;padding:12px 14px;font-size:10px;color:#768177;line-height:1.75}.note strong{color:#46634e;font-weight:600}.note.warn{background:#fbf7ee;color:#977841}.note.error{background:#fdf1ef;color:#9b5549}.section-top{margin:25px 0 15px;display:flex;align-items:center;justify-content:space-between;gap:15px}.section-top p{font-size:10px;color:var(--muted);margin:3px 0}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:normal}th{background:#fafbfc;color:#87979c;font-size:9px;font-weight:500;padding:11px 22px;border-block:1px solid var(--line)}td{font-size:11px;padding:14px 22px;border-bottom:1px solid #f0f3f4;vertical-align:middle}tr:last-child td{border-bottom:0}td strong{font-weight:550}td small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.row-icon{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:7px;background:#eff4f2;color:#618071;margin-right:12px;vertical-align:middle}.row-icon svg{height:16px;width:16px}.bar-bg{width:96px;height:4px;background:#eff3f0;border-radius:2px;display:inline-block;margin-right:9px}.bar-fill{height:4px;background:#80ae71;border-radius:2px}.alert-item{display:flex;gap:12px;align-items:flex-start;padding:13px 0;border-bottom:1px solid var(--line)}.alert-item:last-child{border:0}.alert-icon{width:27px;height:27px;border-radius:7px;background:#fbf2e2;color:#b4873e;display:grid;place-items:center;flex-shrink:0}.alert-icon svg{width:15px;height:15px}.alert-item p{font-size:10px;color:var(--muted);margin:4px 0 0}.alert-item strong{font-size:11px;font-weight:550}.alert-item .pill{margin-left:auto}.recommend{padding:23px;background:#173e37;color:#fff;border-radius:10px;margin-bottom:20px;position:relative;overflow:hidden}.recommend::after{content:'↗';position:absolute;right:20px;top:8px;font-size:94px;line-height:1;color:#2d594b;pointer-events:none}.recommend .eyebrow{color:#bce395;font-size:8px}.recommend h2{font-size:19px;color:#e6f1e4;max-width:240px;position:relative;z-index:1}.recommend p{color:#a7c3b6;font-size:10px;max-width:270px;margin:9px 0 19px}.recommend .btn{position:relative;z-index:1}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:10px 0 18px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.span-all{grid-column:1/-1}.range-field{padding:16px 0 10px}.range-header{display:flex;justify-content:space-between;font-size:11px}.range-header strong{font-size:25px;color:var(--green);line-height:1}input[type=range]{width:100%;accent-color:#27694e;margin:20px 0 8px}.range-ticks{display:flex;justify-content:space-between;color:var(--muted);font-size:9px}.preset-buttons{display:flex;gap:8px;margin:12px 0}.scenario-bars{height:150px;display:flex;align-items:flex-end;gap:20px;padding:5px 12px 0;margin-bottom:20px}.scenario-bar{flex:1;text-align:center;color:var(--muted);font-size:9px}.scenario-bar .column{width:100%;background:#e5eedf;border-radius:5px 5px 0 0;min-height:4px;margin:6px 0}.scenario-bar.selected .column{background:#4e8260}.scenario-bar b{color:var(--ink);font-size:11px}.result-list{margin:10px 0}.result-row{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:12px 0;font-size:11px}.result-row span{color:var(--muted)}.result-row strong{font-weight:600;text-align:right}.result-row.total{font-size:16px;border-bottom:0;color:var(--green)}.stack{display:flex;flex-direction:column;gap:10px}.arch-node{border:1px solid #dfe9e2;background:#f6f9f5;border-radius:8px;padding:14px 18px;display:flex;gap:12px;align-items:center}.arch-node svg{width:20px;height:20px;color:#688367}.arch-node strong{font-size:11px;font-weight:550}.arch-node small{display:block;font-size:9px;color:var(--muted)}.arch-arrow{text-align:center;color:#9bae98;font-size:20px;line-height:1}.architecture{margin-top:10px}.compare-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.compare-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:24px;position:relative}.compare-card.chosen{border:2px solid #79a56e;padding:23px}.compare-card .rank{font-size:32px;color:#e0e8e1;font-weight:600;margin-bottom:9px}.compare-card.chosen .rank{color:#86ad74}.compare-card .pill{position:absolute;right:18px;top:22px}.compare-card h2{font-size:16px;margin-bottom:8px}.compare-card p{font-size:10px;color:var(--muted);min-height:45px}.compare-card .result-row{font-size:10px}.model-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.model-item{border:1px solid var(--line);border-radius:8px;padding:20px}.model-item p{font-size:11px;color:var(--muted);margin:8px 0 12px}.model-item a{font-size:10px}.source-item{border-bottom:1px solid var(--line);padding:18px 0;display:flex;gap:15px}.source-item:last-child{border:0}.source-index{flex-shrink:0;width:30px;height:35px;border:1px solid var(--line);border-radius:5px;display:grid;place-items:center;font-size:10px;color:#6b8279}.source-item strong{font-size:11px;font-weight:550;display:block}.source-item p{font-size:10px;color:var(--muted);margin:4px 0}.source-item small{font-size:9px;color:var(--green)}.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:12px 0}.step{border-left:2px solid #dce7d7;padding:4px 14px}.step span{font-size:10px;color:var(--green);font-weight:600}.step h3{margin-top:8px}.step p{font-size:10px;color:var(--muted);margin-bottom:0}.checks label{display:flex;align-items:flex-start;gap:10px;padding:10px 0;font-size:11px;border-bottom:1px solid #f0f3f4}.checks label:last-child{border:0}.checks input{accent-color:var(--green);margin-top:4px;flex-shrink:0}.check-progress{height:5px;border-radius:3px;background:#eaf0e7;margin:15px 0}.check-progress div{height:100%;border-radius:3px;background:#82ab6a}.heatmap{display:grid;grid-template-columns:45px repeat(24,minmax(0,1fr));gap:4px;align-items:center;min-width:500px;margin:12px 0}.heatmap .cell{height:25px;border-radius:3px}.heatmap .cell:hover{outline:2px solid #3c7655;outline-offset:1px}.heatmap span{font-size:8px;color:var(--muted)}.heat-wrap{overflow-x:auto}.empty{text-align:center;padding:40px 20px;color:var(--muted);font-size:12px}.empty svg{width:35px;height:35px;color:#94ac9c;margin-bottom:10px}footer{max-width:1550px;margin:auto;padding:0 38px 24px;color:#a3afb3;font-size:9px}footer span{padding:0 8px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%) translateY(20px);background:#173e37;color:#fff;padding:12px 22px;border-radius:8px;box-shadow:0 6px 25px #0002;font-size:12px;max-width:90vw;opacity:0;pointer-events:none;z-index:99;transition:.2s}#toast.show{opacity:1;transform:translateX(-50%)}#toast.error{background:#884b3e}dialog{border:0;border-radius:12px;padding:25px;width:min(620px,calc(100vw - 32px));color:var(--ink);box-shadow:0 20px 80px #0003}dialog::backdrop{background:#122d3a66}dialog .dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.checkbox-field{display:flex;align-items:center;gap:9px;font-size:11px;color:#6c8086}.checkbox-field input{accent-color:var(--green)}.report{max-width:1000px;margin:auto}.report-title{padding:28px;border-bottom:1px solid var(--line)}.report-title h2{font-size:24px}.report-body{padding:24px 28px}.report-body h3{margin-top:24px}.report-body p{font-size:11px;color:#72818a}.report-body li{font-size:11px;margin:6px 0}.report table td,.report table th{padding:12px}.meter-col{min-width:200px}.close-button{border:0;background:#f3f5f4;border-radius:6px;width:28px;height:28px;color:#6a7b72}.tip{color:var(--muted);font-size:10px;margin-top:8px}.radio-toggles{display:flex;gap:7px;flex-wrap:wrap}.callout-value{font-size:37px;font-weight:600;color:var(--green);letter-spacing:-1px;line-height:1.4}.mono{font-variant-numeric:tabular-nums}.file-note{background:#f4f7f6;border:1px dashed #ccdcd1;border-radius:8px;padding:24px;text-align:center}.file-note p{font-size:10px;color:var(--muted)}.file-note svg{width:32px;height:32px;color:#669071}.source-date{font-size:9px;color:var(--muted)}.danger-text{color:#ad5d4b}.subtle{color:var(--muted)}.table-note{padding:12px 22px;font-size:9px;color:var(--muted);border-top:1px solid var(--line)}.divider{height:1px;background:var(--line);margin:18px 0}.hidden{display:none}.point-actions{display:flex;gap:5px}.validation-message{font-size:11px;color:#a45242;margin:10px 0}.loading{padding:80px;text-align:center;color:var(--muted)}
.grid>*{min-width:0}.workspace{min-width:0}main{width:100%}
@media(min-width:1550px){main{padding-top:38px}.metric{padding:22px 24px}.metric-value{font-size:32px}.chart{height:260px}}
@media(max-width:1200px){:root{--side:205px}.sidebar{padding:28px 14px}.topbar{padding:0 24px}main{padding:26px 24px 18px}.metrics{gap:12px}.metric{padding:16px}.metric-value{font-size:24px}.grid.two{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.donut-layout{gap:12px;flex-direction:column}.donut-legend{width:100%}.donut-legend div{margin:8px 0}th,td{padding:12px 15px}.top-actions .avatar{display:none}footer{padding-inline:24px}}
@media(max-width:950px){:root{--side:180px}.sidebar{padding:26px 10px}.sidebar-label{font-size:7px;margin-inline:8px}.nav-item{padding:11px 10px;font-size:10px;gap:9px}.brand{font-size:21px;gap:8px}.brand-mark{width:35px;height:42px;font-size:33px;line-height:39px}.brand-sub{font-size:8px}.sidebar-bottom p{font-size:14px}.breadcrumb{display:none}.topbar{justify-content:flex-end;height:64px}.metrics{grid-template-columns:repeat(2,1fr)}.grid.two,.grid.equal{grid-template-columns:1fr}.donut-layout{flex-direction:row}.donut-legend{width:auto}.compare-grid{grid-template-columns:1fr}.compare-card p{min-height:0}.grid.three{grid-template-columns:1fr}.page-heading{align-items:flex-start}.heading-actions{flex-wrap:wrap;justify-content:flex-end}.steps{grid-template-columns:repeat(2,1fr)}.model-list{grid-template-columns:1fr}.form-grid.three{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){:root{--side:0px}.sidebar{width:232px;transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0);box-shadow:0 0 0 100vw #102f3650}.mobile-menu{display:block}.topbar{justify-content:space-between;padding:0 16px;gap:5px;position:sticky;top:0;z-index:10}.top-actions{gap:6px}.top-actions .btn{padding:7px 8px;font-size:9px}.data-status{font-size:8px;padding:4px 6px}main{padding:22px 16px 18px}.page-heading{display:block;margin-bottom:19px}h1{font-size:24px}.heading-actions{justify-content:flex-start;margin-top:16px}.intro{padding:15px;gap:12px}.intro .label{display:none}.intro strong{font-size:11px}.intro p{font-size:9px}.intro-icon{padding:8px}.filters{gap:9px}.filters .field{min-width:0;flex:1}.filters .field.meter-filter{flex-basis:100%}.filters .filter-note{display:none}.metric{padding:14px}.metric-value{font-size:23px}.metric-value small{font-size:9px}.metric-top{font-size:9px}.metric-icon{display:none}.metric-foot{font-size:8px}.metrics{gap:10px}.card-header{padding:18px 17px 10px}.card-body{padding:8px 17px 18px}h2{font-size:14px}.chart{height:220px}.chart-summary{gap:20px}.donut{width:135px;height:135px}.donut-layout{gap:18px}.form-grid,.form-grid.three{grid-template-columns:1fr}.report-title,.report-body{padding:20px}.report-title h2{font-size:20px}.steps{gap:14px}.step{padding-inline:10px}.model-item{padding:17px}footer{padding-inline:16px;font-size:8px}.heatmap .cell{height:20px}.intro-left{gap:10px}.card-header .legend{gap:9px}.section-top{align-items:flex-start}.table-scroll table{min-width:600px}.report .table-scroll table{min-width:420px}.compare-card{padding:20px}.compare-card.chosen{padding:19px}.filters .btn{padding:9px 11px}.scenario-bars{gap:12px}.sidebar-label{font-size:8px}.nav-item{font-size:12px}.brand-sub{font-size:10px}.sidebar-bottom p{font-size:17px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media print{body{background:#fff;font-size:11px}.sidebar,.topbar,footer,.page-heading,.no-print,#toast,dialog{display:none!important}.workspace{margin:0}main{padding:0}.card{border:0;box-shadow:none}.report{max-width:none}.report-title{padding:0 0 20px}.report-body{padding:0}.report-body h3{break-after:avoid}.report table{break-inside:auto}.report tr{break-inside:avoid}.note{border:1px solid #ddd}.grid{display:block}a{color:inherit}.table-scroll{overflow:visible}.report .table-scroll table{min-width:0} @page{size:A4;margin:16mm}}
