:root{--bg:#f4f5f7;--surface:#fff;--surface-2:#f8f9fa;--text:#1f2933;--muted:#65717c;--line:#d9dee3;--line-dark:#bcc5cd;--accent:#1769d2;--accent-soft:#e8f1fc;--good:#167647;--good-soft:#e7f5ed;--warn:#a85b00;--warn-soft:#fff3df;--danger:#b42318;--danger-soft:#fff0ee;--weight:#3f4b57;--kv:#2c7a7b;--runtime:#d17b16;--reserve:#cbd2d8;--mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;--sans:"Helvetica Neue",Helvetica,Arial,sans-serif}
*{box-sizing:border-box}html{font-size:14px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.4}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.app-header{height:58px;background:#202a33;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 20px;position:sticky;top:0;z-index:20;border-bottom:1px solid #101820}.product-id,.header-actions{display:flex;align-items:center}.product-id{gap:10px}.product-mark{width:30px;height:30px;display:grid;place-items:center;background:var(--accent);font:700 12px var(--mono)}.product-id>div{display:flex;gap:10px;align-items:baseline}.product-id strong{font-size:15px}.product-id small{color:#b8c0c7;font-size:12px}.header-actions{gap:8px}.status-dot{font-size:12px;color:#cbd2d8;margin-right:8px}.status-dot i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#49c782;margin-right:6px}.header-link{color:#d8e2ea;font-size:12px;text-decoration:none;padding:7px 5px}.header-link:hover,.header-link:visited{color:#fff;text-decoration:underline}.btn{height:34px;border:1px solid var(--line-dark);background:var(--surface);padding:0 12px;border-radius:3px;font-weight:600;font-size:12px}.app-header .btn{background:#303d48;border-color:#4a5864;color:#fff}.btn:hover{border-color:#7d8994;background:#f6f7f8}.app-header .btn:hover{background:#3b4955}.btn.primary{background:var(--accent);border-color:var(--accent);color:white}.btn.primary:hover{background:#0f59b8}.app-shell{display:grid;grid-template-columns:380px minmax(0,1fr);max-width:1600px;margin:0 auto;min-height:calc(100vh - 58px);background:var(--surface);border-left:1px solid var(--line);border-right:1px solid var(--line)}.config-pane{background:var(--surface-2);border-right:1px solid var(--line);min-width:0}.pane-section{padding:17px 18px;border-bottom:1px solid var(--line)}.section-title,.panel-title,.results-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.section-title h2,.panel-title h2{font-size:13px;margin:0;font-weight:700}.section-title>span,.panel-title>span{font-size:11px;color:var(--muted)}.text-btn{padding:0;border:0;background:none;color:var(--accent);font-size:12px}.text-btn:hover{text-decoration:underline}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>span{font-size:11px;font-weight:600;color:#4e5a64}.field small{font-size:10px;color:var(--muted);margin-top:-2px}.field.full{grid-column:1/-1}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}select,input{width:100%;height:34px;padding:0 9px;border:1px solid var(--line-dark);border-radius:3px;background:#fff;outline:none;font-size:12px}select:focus,input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(23,105,210,.14)}button:focus-visible,summary:focus-visible,.header-link:focus-visible{outline:2px solid #78b3ff;outline-offset:2px}.model-section>.field{margin-top:12px}.model-summary{display:grid;grid-template-columns:repeat(3,1fr);margin-top:8px;background:#fff;border:1px solid var(--line)}.model-summary div{padding:8px;border-right:1px solid var(--line);min-width:0}.model-summary div:last-child{border-right:0}.model-summary b{display:block;font:600 11px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model-summary span{font-size:9px;color:var(--muted);text-transform:uppercase}.registry-row{margin-top:13px;padding-top:13px;border-top:1px solid var(--line)}.input-action{display:flex}.input-action input{border-radius:3px 0 0 3px}.input-action button{width:58px;border:1px solid var(--accent);background:var(--accent);color:white;border-radius:0 3px 3px 0;font-size:11px;font-weight:700}.registry-row p{margin:5px 0 0;color:var(--muted);font-size:10px}.preset-row{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:11px}.preset{height:29px;background:#fff;border:1px solid var(--line-dark);border-radius:3px;font-size:10px}.preset:hover,.preset.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.results-pane{padding:22px;min-width:0;background:var(--surface)}.results-header{margin-bottom:14px}.results-header h1{font-size:20px;margin:2px 0 0;letter-spacing:-.02em}.kicker{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:700;letter-spacing:.05em}.results-actions{display:flex;align-items:center;gap:8px}.confidence{font:600 10px var(--mono);padding:5px 8px;background:var(--warn-soft);color:var(--warn);border:1px solid #e9c891}.confidence.exact{background:var(--good-soft);color:var(--good);border-color:#a8d8bc}.deployment-summary{border:1px solid var(--line-dark);display:grid;grid-template-columns:minmax(280px,.8fr) minmax(360px,1.2fr);background:#fff}.recommendation-main{padding:18px 20px;border-right:1px solid var(--line);background:#f9fbfd}.recommendation-main>span{font-size:11px;color:var(--muted)}.recommendation-main>div{display:flex;align-items:baseline;gap:12px;margin-top:4px}.recommendation-main>div>strong{font:700 34px var(--mono);color:var(--accent)}.recommendation-main h2{font-size:19px;margin:0}.recommendation-main p{font:11px var(--mono);color:var(--muted);margin:5px 0 0}.capacity-status{padding:17px 20px}.capacity-status>div:first-child{display:flex;justify-content:space-between;font-size:11px}.capacity-status>div:first-child strong{font:600 11px var(--mono)}.progress{height:9px;background:#e7ebee;margin:8px 0 14px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:var(--good);transition:width .2s}.capacity-status dl{display:grid;grid-template-columns:1fr 1fr;margin:0;gap:16px}.capacity-status dl div{display:flex;flex-direction:column}.capacity-status dt{font-size:10px;color:var(--muted)}.capacity-status dd{margin:2px 0 0;font:600 11px var(--mono)}.key-metrics{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-top:0}.key-metrics>div{padding:13px 15px;border-right:1px solid var(--line);display:flex;flex-direction:column}.key-metrics>div:last-child{border-right:0}.key-metrics span{font-size:10px;color:var(--muted);text-transform:uppercase}.key-metrics strong{font:600 19px var(--mono);margin:2px 0}.key-metrics small{font-size:10px;color:var(--muted)}.results-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:12px;margin-top:12px}.tool-panel{border:1px solid var(--line);padding:15px;background:#fff}.stacked-bar{height:22px;background:#e9edf0;display:flex;margin-top:18px}.stacked-bar i{display:block;height:100%}.legend{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.legend div{font-size:10px;color:var(--muted)}.legend div span{display:block}.legend div span:before{content:"";display:inline-block;width:7px;height:7px;background:var(--c);margin-right:5px}.legend div b{font:600 10px var(--mono);color:var(--text)}.formula{display:block;background:var(--surface-2);border:1px solid var(--line);padding:8px;margin-top:12px;font:10px/1.45 var(--mono);white-space:normal}.limit-row{display:flex;justify-content:space-between;font-size:11px;margin-top:16px}.limit-row strong{font:600 11px var(--mono)}.thin-meter{height:6px;background:#e9edf0;margin-top:6px}.thin-meter i{display:block;height:100%;background:#58697a}.thin-meter.bandwidth i{background:#248486}.throughput-panel p{font-size:11px;color:var(--muted);margin:14px 0 0}.recommendations,.scenarios-panel,.assumptions{margin-top:12px}.rec-grid{display:grid;grid-template-columns:48px minmax(210px,1.4fr) 1fr 1fr 70px;align-items:center;gap:12px}.table-header{margin-top:12px;padding:7px 0;border-bottom:1px solid var(--line);font-size:9px;color:var(--muted);text-transform:uppercase;font-weight:700}.recommendation{display:grid;grid-template-columns:48px minmax(210px,1.4fr) 1fr 1fr 70px;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #e8ebee}.recommendation:last-child{border-bottom:0}.rank{font:11px var(--mono);color:var(--muted)}.rec-name strong,.rec-stat strong{display:block;font-size:12px}.rec-name span,.rec-stat span{font-size:10px;color:var(--muted)}.rec-stat strong{font-family:var(--mono)}.score{font:600 11px var(--mono);text-align:right}.score i{display:block;height:3px;background:var(--accent);margin-top:3px}.empty-state{padding:18px 0 4px;color:var(--muted);font-size:11px}.scenario-table{overflow-x:auto}.scenario-row{display:grid;grid-template-columns:minmax(190px,1.5fr) 100px 120px 90px 90px 32px;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line);font-size:11px;min-width:650px}.scenario-row.header{font-size:9px;text-transform:uppercase;color:var(--muted);font-weight:700}.scenario-row strong{font-size:11px}.scenario-row code{font:10px var(--mono)}.remove-scenario{border:0;background:none;color:var(--danger);font-size:17px}.detail-table{display:grid;grid-template-columns:1fr 1fr;column-gap:28px;margin-top:10px}.detail-table div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid #e7eaed;font-size:11px}.detail-table span{color:var(--muted)}.detail-table code{font:10px var(--mono);text-align:right}.warnings{margin-top:10px}.warning{padding:9px 10px;background:var(--warn-soft);border:1px solid #ecd2a7;color:#71420b;font-size:11px;margin-top:6px}.warning.info{background:var(--accent-soft);border-color:#bcd4f1;color:#244e80}.method-note{border-top:1px solid var(--line);margin-top:13px;padding-top:10px}.method-note summary{font-size:11px;color:var(--accent);cursor:pointer}.method-note p{font-size:11px;color:var(--muted);max-width:900px}dialog{width:min(620px,calc(100vw - 30px));border:1px solid var(--line-dark);border-radius:4px;padding:0;box-shadow:0 18px 60px rgba(20,30,40,.22)}dialog::backdrop{background:rgba(23,31,38,.5)}.dialog-header{display:flex;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}.dialog-header h2{font-size:16px;margin:0}.dialog-header p{font-size:11px;color:var(--muted);margin:3px 0 0}.close-btn{border:0;background:none;font-size:22px;color:var(--muted)}.dialog-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;padding:20px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:13px 20px;border-top:1px solid var(--line);background:var(--surface-2)}.toast{position:fixed;right:18px;bottom:18px;background:#202a33;color:white;padding:10px 13px;border-radius:3px;font-size:11px;transform:translateY(70px);opacity:0;transition:transform .2s,opacity .2s;z-index:50}.toast.show{transform:none;opacity:1}
@media(max-width:1050px){.app-shell{grid-template-columns:330px 1fr}.results-grid{grid-template-columns:1fr}.deployment-summary{grid-template-columns:1fr}.recommendation-main{border-right:0;border-bottom:1px solid var(--line)}.key-metrics{grid-template-columns:repeat(2,1fr)}.key-metrics>div:nth-child(2){border-right:0}.key-metrics>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.legend{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app-header{padding:0 12px}.product-id small,.status-dot{display:none}.app-shell{display:block}.config-pane{border-right:0}.results-pane{padding:14px}.results-header{align-items:flex-start}.results-actions{flex-direction:column;align-items:flex-end}.deployment-summary{display:block}.key-metrics{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr 1fr}.rec-grid,.recommendation{grid-template-columns:32px 1.5fr 1fr}.rec-grid>*:nth-child(4),.rec-grid>*:nth-child(5),.recommendation>*:nth-child(4),.recommendation>*:nth-child(5){display:none}.detail-table{grid-template-columns:1fr}.dialog-grid{grid-template-columns:1fr}select,input,.btn,.preset{min-height:44px}.text-btn{min-height:44px;padding:0 8px}}
@media(max-width:460px){.header-actions .btn:first-of-type{display:none}.product-id>div{display:block}.form-grid{grid-template-columns:1fr}.preset-row{grid-template-columns:1fr 1fr}.capacity-status dl{grid-template-columns:1fr}.key-metrics{grid-template-columns:1fr}.key-metrics>div{border-right:0;border-bottom:1px solid var(--line)}.key-metrics>div:last-child{border-bottom:0}.legend{grid-template-columns:1fr 1fr}}
