:root{--bg-0:#e8eee9;--bg-1:#d5dfd8;--bg-panel:#f6f9f7eb;--bg-toolbar:#1c2a24f0;--ink:#1a2420;--ink-muted:#5a6b62;--line:#9aada2;--grid-major:#28463724;--grid-minor:#2846370f;--accent:#0f7a6c;--accent-bright:#17a392;--accent-soft:#0f7a6c24;--node:#24312c;--node-selected:#0f7a6c;--pipe:#0f7a6c;--pipe-selected:#c45c26;--warn:#a65d1e;--danger:#a33b3b;--shadow:0 10px 40px #14231c1f;--radius:10px;--font-ui:"IBM Plex Sans", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--font-display:"Syne", "IBM Plex Sans", sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{width:100%;height:100%;font-family:var(--font-ui);color:var(--ink);background:radial-gradient(1200px 700px at 10% -10%, #f4faf6 0%, transparent 55%), radial-gradient(900px 600px at 100% 0%, #dce8e1 0%, transparent 50%), linear-gradient(160deg, var(--bg-0), var(--bg-1));margin:0;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}.app-shell{grid-template:"toolbar toolbar""plan props"1fr/1fr 300px;gap:0;height:100%;display:grid}.toolbar{background:var(--bg-toolbar);color:#eef5f1;box-shadow:var(--shadow);z-index:3;grid-area:toolbar;justify-content:space-between;align-items:center;gap:10px;padding:8px 14px;display:flex;position:relative}.toolbar-cluster{align-items:center;gap:8px;min-width:0;display:flex}.toolbar-cluster--main{flex-wrap:wrap;flex:1;justify-content:center}.toolbar-cluster--right{flex-shrink:0;justify-content:flex-end;position:relative}.toolbar-menu{position:relative}.toolbar-dropdown{z-index:20;background:#1c2a24;border:1px solid #ffffff24;border-radius:10px;flex-direction:column;gap:2px;min-width:200px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 12px 28px #00000059}.toolbar-dropdown--right{left:auto;right:0}.toolbar-dropdown-item{color:#eef5f1;width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;text-decoration:none;display:flex}.toolbar-dropdown-item:hover{background:#9fe0d424}.toolbar-dropdown-item:disabled{opacity:.45;cursor:not-allowed}.toolbar-dropdown-item--danger{color:#f0b4a6}.toolbar-dropdown-sep{background:#ffffff1f;height:1px;margin:4px 2px}.editor-action-bar{color:#eef5f1;z-index:2;background:#1c2a24;border-bottom:1px solid #ffffff14;flex-shrink:0;align-items:center;gap:4px;padding:6px 10px;display:flex}.editor-action-btn{color:#e8f2ed;box-sizing:border-box;justify-content:center;align-items:center;width:34px;height:34px;padding:0;text-decoration:none;display:inline-flex}.editor-action-btn:hover{background:#ffffff1a}.editor-action-btn.active{color:#9fe0d4;background:#0f7a6c59;border-color:#9fe0d466}.editor-action-btn.is-saved{color:#9fe0d4}.editor-action-btn.is-error{color:#f0b4a6}.editor-action-sep{background:#ffffff29;width:1px;height:22px;margin:0 6px}.editor-action-menu{position:relative}.editor-action-menu--end{margin-left:auto}.editor-action-dropdown{min-width:180px}.editor-action-error{color:#f0b4a6;white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:11px;overflow:hidden}.plan-legend{color:#2a3a34;z-index:2;background:#fafcfbf5;border-top:1px solid #2846371f;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:10px;padding:6px 12px;font-size:12px;display:flex}.plan-legend-tool{color:#1f3d36;white-space:nowrap;background:#0f7a6c1a;border-radius:6px;align-items:center;padding:2px 8px;font-weight:600;display:inline-flex}.plan-legend-sep{background:#28463729;width:1px;height:16px}.plan-legend-items{flex-wrap:wrap;align-items:center;gap:12px;margin:0;padding:0;list-style:none;display:flex}.plan-legend-items li{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.plan-legend-swatch{border-radius:2px;flex-shrink:0;width:12px;height:12px}.plan-legend-swatch--dash{border-radius:1px;height:3px}.plan-legend-swatch--ring{box-sizing:border-box;background:0 0;border:2px solid #c45c26}.plan-legend-meta{white-space:nowrap}.plan-legend-spacer{flex:1;min-width:8px}.plan-legend-chains{align-items:center;gap:8px;display:inline-flex}.plan-legend-show-btn{color:#1f3d36;background:#fff;border:1px solid #28463738;padding:4px 10px;font-size:12px}.plan-legend-show-btn:hover{background:#0f7a6c14;border-color:#0f7a6c59}.checklist-focus-btn{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:inline}.checklist-focus-btn:hover strong{color:var(--accent,#0f7a6c);text-decoration:underline}.shortcuts-modal{width:min(440px,100%)}.shortcuts-modal-body{flex-direction:column;gap:16px;padding:12px 16px 20px;display:flex}.shortcuts-group h3{letter-spacing:.04em;text-transform:uppercase;color:#5a6b62;margin:0 0 8px;font-size:12px;font-weight:700}.shortcuts-list{flex-direction:column;gap:4px;margin:0;display:flex}.shortcuts-row{grid-template-columns:110px 1fr;align-items:center;gap:10px;font-size:13px;display:grid}.shortcuts-row dt{margin:0}.shortcuts-row dd{color:#2a3a34;margin:0}.shortcuts-row kbd{min-width:2.2em;font-family:var(--font-mono,monospace);text-align:center;background:#fff;border:1px solid #28463733;border-radius:5px;padding:2px 7px;font-size:11px;display:inline-block}.chains-modal-backdrop{align-items:center;padding:24px 16px}.chains-modal{width:min(960px,100%);max-height:min(86vh,900px)}.chains-modal-body{flex-direction:column;min-height:0;display:flex}.chains-modal-body .profile-panel{background:0 0;border-top:none;grid-template-rows:auto minmax(200px,1fr) auto;height:auto;max-height:min(70vh,720px)}.editor-tool-rail-flyout{flex-direction:column;align-items:center;display:flex;position:relative}.editor-rail-popover{z-index:15;color:#eef5f1;background:#1c2a24;border:1px solid #ffffff24;border-radius:10px;flex-direction:column;gap:6px;width:220px;padding:10px;display:flex;position:absolute;top:0;left:calc(100% + 8px);box-shadow:0 12px 28px #00000059}.editor-rail-popover-title{letter-spacing:.04em;text-transform:uppercase;color:#9fe0d4;margin:4px 0 0;font-size:11px;font-weight:700}.editor-rail-check{cursor:pointer;align-items:flex-start;gap:8px;font-size:12px;line-height:1.35;display:flex}.editor-rail-check input{margin-top:2px}.brand{font-family:var(--font-mono);letter-spacing:.04em;color:#9fe0d4;flex-shrink:0;font-weight:600}.toolbar-group{align-items:center;gap:4px;display:flex}.toolbar-sep{background:#ffffff2e;width:1px;height:24px;margin:0 6px}.toolbar-settings-btn{white-space:nowrap;background:#ffffff0f;border:1px solid #ffffff2e;align-items:center;gap:8px;font-size:13px;display:inline-flex}.toolbar-settings-btn:hover{background:#ffffff1f;border-color:#9fe0d466}.toolbar-save-btn.is-saved{color:#9fe0d4;border-color:#9fe0d48c}.toolbar-save-btn.is-error{color:#f0b4a6;border-color:#e88c78a6}.toolbar-save-error{color:#f0b4a6;white-space:nowrap;text-overflow:ellipsis;max-width:280px;margin-left:4px;font-size:12px;line-height:1.3;overflow:hidden}.settings-modal-backdrop{z-index:40;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#121c188c;justify-content:center;align-items:flex-start;padding:48px 16px 24px;display:flex;position:fixed;inset:0}.settings-modal{background:var(--bg-panel,#f4f7f5);width:min(520px,100%);max-height:calc(100vh - 72px);color:var(--ink);border-radius:12px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 18px 48px #00000047}.settings-modal-header{background:#fff;border-bottom:1px solid #2846371f;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.settings-modal-header h2{margin:0;font-size:16px;font-weight:600}.settings-modal-close{color:var(--ink);border-color:#28463729}.settings-modal-body{flex:1;min-height:0;overflow:auto}.settings-modal-body .panel-body{padding-top:12px}.settings-modal-body .panel-body>h2:first-child{display:none}.tool-btn{color:#e8f2ed;background:0 0;border:1px solid #0000;border-radius:8px;padding:6px 10px;transition:background .15s,border-color .15s,transform .12s}.tool-btn:hover{background:#ffffff14}.tool-btn.active{background:var(--accent-soft);color:#9fe0d4;border-color:#9fe0d473}.tool-btn:active{transform:translateY(1px)}.tool-btn:disabled{opacity:.4;cursor:not-allowed}.workspace{border-right:1px solid #2846371f;grid-area:plan;min-width:0;min-height:0;display:flex;position:relative}.workspace-main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.editor-tool-rail{color:#e8f2ed;z-index:2;background:#1c2a24eb;border-right:1px solid #ffffff14;flex-direction:column;flex-shrink:0;align-items:center;gap:4px;width:48px;padding:8px 4px;display:flex;overflow-y:auto}.editor-tool-rail-group{flex-direction:column;align-items:center;gap:2px;display:flex}.editor-tool-rail-sep{background:#ffffff29;flex-shrink:0;width:28px;height:1px;margin:6px 0}.editor-tool-rail .icon-btn{color:#d7e8e1;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:inline-flex}.editor-tool-rail .icon-btn:hover{color:#fff;background:#ffffff1a}.editor-tool-rail .icon-btn.active{color:#9fe0d4;background:#0f7a6c59;border-color:#9fe0d48c}.layer-chip{letter-spacing:.02em;justify-content:center;align-items:center;min-width:28px;font-family:IBM Plex Sans,system-ui,sans-serif;font-size:10px;font-weight:700;display:inline-flex}.layer-chip-baseline{color:#8a9a92}.layer-chip-recommended{color:#c45c26}.editor-tool-rail .layer-baseline.active .layer-chip-baseline{color:#c5d0ca}.editor-tool-rail .layer-recommended.active .layer-chip-recommended{color:#f0b89a}.plan-wrap{flex:1;width:100%;min-height:0;position:relative}.plan-hint{z-index:2;background:var(--bg-panel);color:var(--ink-muted);pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid #2846371f;border-radius:8px;padding:6px 10px;font-size:12px;position:absolute;bottom:12px;left:12px}.plan-scale-bar{z-index:2;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fafcfbf0;border:1px solid #28463724;border-radius:8px;flex-direction:column;align-items:stretch;gap:4px;padding:6px 10px 8px;display:flex;position:absolute;bottom:12px;right:12px}.plan-scale-bar-line{box-sizing:border-box;border-bottom:3px solid #1f3d36;border-left:2px solid #1f3d36;border-right:2px solid #1f3d36;min-width:24px;max-width:420px;height:0}.plan-scale-bar-label{color:#2a3a34;text-align:center;white-space:nowrap;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px}.boundary-length-pop{z-index:5;background:var(--bg-panel);pointer-events:auto;border:1px solid #8a5a1273;border-radius:8px;flex-direction:column;gap:4px;min-width:180px;padding:10px 12px;display:flex;position:absolute;bottom:52px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #14231c2e}.boundary-length-pop label{color:var(--ink-muted);font-size:11px}.boundary-length-pop input{box-sizing:border-box;width:100%;color:var(--ink);background:#fff;border:1px solid #28463747;border-radius:6px;padding:6px 10px;font-family:IBM Plex Sans,sans-serif;font-size:16px;font-weight:600}.boundary-length-pop input:focus{border-color:var(--accent);outline:2px solid #0f7a6c73}.boundary-length-hint{color:var(--ink-muted);font-size:11px}.props-panel{background:var(--bg-panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-left:1px solid #2846371a;flex-direction:column;grid-area:props;min-height:0;padding:0;display:flex;overflow:auto}.panel-tabs{border-bottom:1px solid #2846371f;flex-shrink:0;grid-template-columns:1fr 1fr;gap:0;display:grid}.panel-tab{color:var(--ink-muted);cursor:pointer;font-weight:500;font:inherit;background:0 0;border:none;border-bottom:2px solid #0000;justify-content:center;align-items:center;gap:6px;padding:12px 10px;display:inline-flex}.panel-tab.active{color:var(--accent);border-bottom-color:var(--accent);background:#0f7a6c0f}.panel-tab-kbd{font-size:10px;font-family:var(--font-mono);color:var(--ink-muted);background:#2846371a;border-radius:4px;padding:1px 5px;font-weight:600}.panel-tab.active .panel-tab-kbd{color:var(--accent);background:#0f7a6c24}.panel-tab-badge{text-align:center;border-radius:999px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:700;line-height:18px}.panel-tab-badge--error{color:#a3451c;background:#c45c262e}.panel-tab-badge--warn{color:#8a6a12;background:#c4962633}.panel-tab-badge--ok{color:#0f7a6c;background:#0f7a6c24}.panel-project-name{color:var(--ink-muted);font-size:11px;font-family:var(--font-mono);white-space:nowrap;text-overflow:ellipsis;padding:8px 16px 0;overflow:hidden}.settings-toc{z-index:2;background:#0f7a6c0a;border-bottom:1px solid #2846371a;flex-wrap:wrap;gap:6px;padding:10px 16px 4px;display:flex;position:sticky;top:0}.settings-toc a{color:#1f3d36;background:#ffffffb3;border:1px solid #2846371f;border-radius:999px;padding:4px 10px;font-size:12px;text-decoration:none;display:inline-flex}.settings-toc a:hover{color:#0f7a6c;border-color:#0f7a6c73}.panel-body{padding:12px 16px 20px;overflow:auto}.panel-body h2{margin:0 0 12px;font-size:15px;font-weight:600}.panel-body h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin:18px 0 8px;font-size:12px}.props-panel h2{margin:0 0 12px;font-size:15px;font-weight:600}.props-panel h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin:18px 0 8px;font-size:12px}.info-box{color:var(--ink);background:#0f7a6c14;border:1px solid #0f7a6c2e;border-radius:8px;margin:8px 0 12px;padding:8px 10px;font-size:12px;line-height:1.45}.manhole-geom-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.tap-list{flex-direction:column;gap:8px;margin:0 0 12px;padding:0;list-style:none;display:flex}.tap-item{background:#ffffffb8;border:1px solid #28463724;border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.4}.tap-item-head{justify-content:space-between;gap:8px;font-weight:600;display:flex}.tap-item-meta{color:var(--ink-muted);margin-top:2px;font-size:11px}.tap-item-elevs{font-family:var(--font-mono);flex-direction:column;gap:2px;margin-top:6px;font-size:11px;display:flex}.link-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.toolbar-project{text-overflow:ellipsis;white-space:nowrap;color:#eef5f1bf;max-width:160px;font-size:12px;overflow:hidden}.project-switcher{align-items:center;display:flex}.project-select{color:#eef5f1;background:#ffffff14;border:1px solid #fff3;border-radius:8px;min-width:160px;max-width:280px;padding:6px 8px}.project-select option{color:#1a2420;background:#fff}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.project-list{gap:4px;margin:0 0 10px;padding:0;list-style:none;display:grid}.project-list-row{align-items:stretch;gap:4px;display:flex}.project-list-row .project-list-item{flex:1;min-width:0}.project-delete-btn{flex-shrink:0;align-self:stretch;padding:6px 8px;font-size:12px}.project-list-item{text-align:left;width:100%;color:var(--ink);background:#fff;border:1px solid #28463724;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;display:flex}.project-list-item.active{border-color:var(--accent);background:#0f7a6c14}.button-row{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.dark-btn{color:var(--ink);background:#fff;border:1px solid #28463738;border-radius:8px;padding:6px 10px}.danger-btn{color:var(--danger);background:#a33b3b14;border:1px solid #a33b3b59;border-radius:8px;padding:6px 10px}.danger-btn:disabled{opacity:.4;cursor:not-allowed}.field{gap:4px;margin-bottom:10px;display:grid}.field label{color:var(--ink-muted);font-size:12px}.field input,.field select{color:var(--ink);background:#fff;border:1px solid #28463738;border-radius:8px;padding:7px 9px}.field input:focus,.field select:focus{border-color:var(--accent);outline:2px solid #0f7a6c59}.muted{color:var(--ink-muted);font-size:13px;line-height:1.4}.warn-box{color:var(--warn);background:#a65d1e1a;border:1px solid #a65d1e40;border-radius:8px;margin-top:12px;padding:8px 10px;font-size:12px}.view3d-panel{background:#e4ece7;flex:1;grid-template-rows:auto 1fr;width:100%;min-height:0;display:grid;position:relative}.view3d-loading{justify-content:center;align-items:center;display:flex}.view3d-header{z-index:2;background:#fafcfbf2;border-bottom:1px solid #28463714;justify-content:space-between;align-items:center;gap:12px;padding:8px 14px;font-size:13px;display:flex}.view3d-canvas{width:100%;height:100%;min-height:0;position:relative}.view3d-canvas>canvas{display:block;width:100%!important;height:100%!important}.view3d-hint{z-index:2;background:var(--bg-panel);color:var(--ink-muted);pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid #2846371f;border-radius:8px;margin:0;padding:6px 10px;font-size:12px;position:absolute;bottom:12px;left:12px}.view3d-label{color:var(--ink);font-size:11px;font-family:var(--font-mono);white-space:nowrap;-webkit-user-select:none;user-select:none;background:#f6f9f7eb;border:1px solid #2846372e;border-radius:6px;flex-direction:column;align-items:center;gap:2px;padding:3px 7px;display:flex;box-shadow:0 2px 8px #14231c1a}.view3d-label.lowest{color:#8a3d14;background:#fff7f0f2;border-color:#c45c268c;font-weight:600}.view3d-label-sub{color:#a65d1e;font-size:10px;font-weight:500}.view3d-ground-tag{color:#eef5f1;font-size:11px;font-family:var(--font-mono);white-space:nowrap;-webkit-user-select:none;user-select:none;background:#1c2a24c7;border-radius:6px;padding:3px 8px}.profile-panel{background:#fafcfbf2;border-top:1px solid #28463724;grid-template-rows:auto 1fr auto;height:320px;min-height:0;display:grid}.profile-panel--embedded{height:100%;max-height:inherit}.profile-field-tables{border-top:1px solid #28463714;max-height:110px;overflow:auto}.profile-field-scroll{padding:0 12px 8px;overflow:auto}.profile-field-table{border-collapse:collapse;width:100%;font-size:11px;font-family:var(--font-mono,monospace)}.profile-field-table th,.profile-field-table td{text-align:right;border-bottom:1px solid #28463714;padding:2px 6px}.profile-field-table th:nth-child(2),.profile-field-table td:nth-child(2){text-align:left}.profile-header{border-bottom:1px solid #28463714;justify-content:space-between;align-items:center;padding:8px 14px;font-size:13px;display:flex}.profile-canvas{width:100%;height:100%;min-height:0}.profile-canvas--chains{overflow:auto}.profile-chain-block{border-bottom:1px solid #28463714}.profile-chain-block:last-child{border-bottom:none}.profile-chain-label{color:#1a2420;align-items:center;gap:8px;padding:6px 14px 2px;font-size:12px;font-weight:600;display:flex}.profile-chain-label .muted{margin-left:auto;font-weight:400}.profile-chain-swatch{border-radius:2px;flex-shrink:0;width:10px;height:10px}.profile-chain-legend{gap:14px;padding:0 14px 4px;font-size:11px;display:flex}.profile-chain-legend span{align-items:center;gap:5px;display:inline-flex}.profile-chain-legend i{border-radius:1px;width:12px;height:3px;display:inline-block}.profile-chain-canvas{width:100%;min-height:0}.chain-controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chain-controls input{border:1px solid #28463738;border-radius:6px;width:72px;padding:5px 7px}.primary-btn{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:6px 12px}.primary-btn:hover{background:var(--accent-bright)}.toolbar-changelog-link{margin-left:auto;text-decoration:none}.changelog-page{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.changelog-topbar{background:var(--bg-toolbar);color:#eef5f1;box-shadow:var(--shadow);flex-shrink:0;align-items:center;gap:14px;padding:8px 14px;display:flex}.changelog-title{color:#eef5f1;margin:0;font-size:15px;font-weight:600}.changelog-back{margin-left:auto;text-decoration:none}.changelog-main{flex:1;width:100%;max-width:760px;min-height:0;margin:0 auto;padding:24px 20px 40px;overflow:auto}.changelog-intro{margin:0 0 20px}.changelog-code{font-family:var(--font-mono);background:#0f7a6c1a;border-radius:4px;padding:2px 6px;font-size:12px}.changelog-list{flex-direction:column;gap:16px;display:flex}.changelog-entry{background:var(--bg-panel);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid #2846371f;padding:16px 18px}.changelog-entry-header{margin-bottom:12px}.changelog-entry-header time{color:var(--ink-muted);font-size:12px;font-family:var(--font-mono);margin-bottom:4px;display:block}.changelog-entry-header h2{margin:0;font-size:16px;font-weight:600}.changelog-section{margin-top:10px}.changelog-section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin:0 0 6px;font-size:11px}.changelog-section ul{flex-direction:column;gap:4px;margin:0;padding-left:18px;display:flex}.changelog-section li{font-size:13px;line-height:1.45}.changelog-section--added h3{color:var(--accent)}.changelog-section--changed h3{color:var(--warn)}.changelog-section--deleted h3{color:var(--danger)}@media (width<=900px){.app-shell{grid-template:"toolbar""plan"1fr"props"/1fr}.props-panel{border-top:1px solid #2846371a;border-left:none;max-height:220px}.plan-legend-items{gap:8px}.chains-modal{width:100%;max-height:92vh}.changelog-topbar{flex-wrap:wrap}.toolbar-changelog-link span,.toolbar-changelog-link{font-size:12px}}.toolbar-brand-link{color:inherit;text-decoration:none}.app-nav-link.is-current{opacity:.85;pointer-events:none;color:#9fe0d4;background:#0f7a6c47;border-color:#9fe0d473}.toolbar-project-name{white-space:nowrap;text-overflow:ellipsis;color:#eef5f1;max-width:220px;font-size:14px;font-weight:600;overflow:hidden}.dashboard-page,.settings-page{background:radial-gradient(1200px 600px at 10% -10%, #0f7a6c2e, transparent 55%), radial-gradient(900px 500px at 90% 0%, #c45c261a, transparent 50%), var(--bg-app,#e8eee9);flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.dashboard-topbar,.settings-page-topbar{background:var(--bg-toolbar);color:#eef5f1;box-shadow:var(--shadow);flex-shrink:0;align-items:center;gap:14px;padding:8px 14px;display:flex}.dashboard-title,.settings-page-title{flex:1;margin:0;font-size:16px;font-weight:600}.settings-page-nav{flex-wrap:wrap;gap:8px;display:flex}.dashboard-main,.settings-page-main{flex:1;min-height:0;padding:20px 24px 28px;overflow:auto}.settings-page-main{width:100%;max-width:min(1200px,100%);margin:0 auto}.settings-page-main .settings-form{box-shadow:none;background:0 0;border:none;border-radius:0;padding:0;overflow:visible}.settings-form--page{flex-direction:column;gap:14px;display:flex}.settings-form-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.settings-form-lead{color:#2a3832;max-width:62ch;margin:0;font-size:15px;line-height:1.45}.settings-form-status{color:#0f7a6c;margin:0;font-size:14px;font-weight:600}.settings-sections-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:14px;display:grid}.settings-section{background:#ffffffe6;border:1px solid #1428201a;border-radius:12px;flex-direction:column;gap:12px;padding:16px 18px;display:flex;box-shadow:0 6px 18px #1428200b}.settings-section--wide{grid-column:1/-1}.settings-section--actions{flex-flow:wrap;justify-content:space-between;align-items:center;gap:12px 16px;padding:12px 16px}.settings-section--actions .settings-section-head{flex:200px;min-width:0}.settings-section-head h2{color:#14352c;letter-spacing:.01em;text-transform:none;margin:0 0 4px;font-size:1.05rem;font-weight:700}.settings-section-head .muted,.settings-section-note{margin:0;font-size:13px;line-height:1.4}.settings-actions-row{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.settings-fields-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;display:grid}.settings-fields-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.settings-field--span{grid-column:1/-1}.settings-field--readonly{flex-direction:column;justify-content:flex-end;gap:4px;display:flex}.field-label-like{color:var(--text-muted,#5a6b62);font-size:12px;font-weight:600}.settings-eq-value{min-height:38px;font-family:var(--font-mono,"IBM Plex Mono", monospace);color:#2a3832;align-items:center;margin:0;padding:0 2px;font-size:13px;display:flex}.settings-subheading{color:#2a3832;margin:0 0 8px;font-size:13px;font-weight:600}.settings-slope-range{border-top:1px solid #14282014;grid-template-columns:1fr auto;align-items:end;gap:10px 16px;padding-top:10px;display:grid}.settings-slope-range .settings-subheading,.settings-slope-range .settings-section-note{grid-column:1/-1}.settings-slope-range .settings-fields-grid{grid-column:1}.settings-slope-range .primary-btn{white-space:nowrap;grid-column:2;justify-self:end}.settings-pipe-info{margin:0;padding:8px 10px;font-size:13px;line-height:1.35}.settings-pipe-info>div+div{margin-top:2px}.dashboard-hero{max-width:920px;margin-bottom:28px}.dashboard-lead{color:#2a3832;max-width:54ch;margin:0 0 16px;font-size:15px;line-height:1.5}.dashboard-actions{flex-wrap:wrap}.dashboard-empty{margin-top:24px}.dashboard-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;max-width:1100px;margin:0;padding:0;list-style:none;display:grid}.dashboard-card{background:#ffffffc7;border:1px solid #1428201a;border-radius:14px;flex-direction:column;gap:10px;padding:16px;display:flex;box-shadow:0 8px 24px #1428200f}.dashboard-card-main{text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:6px;padding:0;display:flex}.dashboard-card-name{color:#1a2420;font-size:17px;font-weight:650}.dashboard-card-actions{flex-wrap:wrap;gap:8px;display:flex}.dashboard-card-actions a{text-decoration:none}.auth-boot{place-items:center;height:100%;padding:24px;display:grid}.auth-page{background:radial-gradient(900px 500px at 8% 0,#f2f8f4 0%,#0000 55%),radial-gradient(700px 480px at 100% 20%,#c5d8ce 0%,#0000 50%),linear-gradient(155deg,#dfe8e2,#c9d6ce 55%,#b7c8be);place-items:center;height:100%;min-height:100%;padding:24px;display:grid;overflow:auto}.auth-shell{background:#f7faf8;border:1px solid #1428201a;border-radius:18px;grid-template-columns:1.05fr .95fr;width:min(920px,100%);min-height:420px;display:grid;overflow:hidden;box-shadow:0 24px 60px #1428202e}.auth-hero{color:#eef5f1;background:linear-gradient(160deg,#0f7a6ceb,#24312cf5),url("data:image/svg+xml,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 30h60M30 0v60' stroke='%23ffffff14' stroke-width='1'/%3E%3C/svg%3E");flex-direction:column;justify-content:flex-end;gap:12px;padding:40px 36px;display:flex;position:relative}.auth-hero-glow{pointer-events:none;background:radial-gradient(circle,#9fe0d459,#0000 70%);height:180px;position:absolute;inset:auto -20% 10% -10%}.auth-brand{letter-spacing:.04em;margin:0;font-size:clamp(2.4rem,5vw,3.4rem);font-weight:700;line-height:1;position:relative}.auth-hero-text{color:#eef5f1db;max-width:28ch;margin:0;font-size:1.05rem;line-height:1.45;position:relative}.auth-card{background:linear-gradient(#ffffffeb,#f6f9f7f5);flex-direction:column;justify-content:center;gap:12px;padding:36px 32px;display:flex}.auth-card h1{margin:0;font-size:1.6rem}.auth-lead{margin:0 0 8px}.auth-submit{width:100%;margin-top:8px}.auth-hint{margin:4px 0 0;font-size:.9rem}.auth-hint code{font-family:var(--font-mono);font-size:.85em}.profile-page .profile-main{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start;gap:18px;display:grid}.profile-panel-card{background:#ffffffd1;border:1px solid #1428201a;border-radius:14px;flex-direction:column;gap:12px;padding:20px;display:flex;box-shadow:0 8px 24px #1428200f}.profile-panel-card h2{margin:0;font-size:1.15rem}.profile-panel-card .primary-btn{align-self:flex-start}.admin-tariffs-main{width:100%;max-width:min(1200px,100%);margin:0 auto}.admin-tariffs-lead{color:#2a3832;max-width:62ch;margin:0 0 14px;font-size:15px;line-height:1.45}.admin-tariffs-layout{grid-template-columns:minmax(280px,.95fr) minmax(300px,1.05fr);align-items:start;gap:14px;display:grid}.admin-tariff-form{flex-direction:column;gap:14px;display:flex}.admin-tariff-textarea{resize:vertical;width:100%;min-height:110px;font:inherit;background:#fff;border:1px solid #1428202e;border-radius:8px;padding:8px 10px}.admin-tariff-textarea:focus{outline-offset:1px;outline:2px solid #0f7a6c59}.admin-tariff-check{color:#2a3832;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.admin-tariff-caps{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px 12px;margin-top:6px;display:grid}.admin-tariff-caps-line{margin:8px 0 0;font-size:13px}.admin-tariff-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.admin-tariff-card{background:#f8fbf9e6;border:1px solid #1428201a;border-radius:10px;padding:12px 14px}.admin-tariff-card.is-editing{border-color:#0f7a6c73;box-shadow:0 0 0 2px #0f7a6c1f}.admin-tariff-card.is-inactive{opacity:.72}.admin-tariff-card-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.admin-tariff-card-actions{flex-wrap:wrap;gap:6px;display:flex}.admin-tariff-desc{color:#2a3832;margin:8px 0 0;font-size:13px}.admin-tariff-features{color:#3d5248;margin:8px 0 0;padding-left:18px;font-size:13px}.user-tariffs-main{width:100%;max-width:min(1100px,100%);margin:0 auto}.user-tariffs-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:stretch;gap:14px;display:grid}.user-tariff-card{background:#ffffffe6;border:1px solid #1428201a;border-radius:14px;flex-direction:column;gap:10px;padding:18px 18px 16px;display:flex;box-shadow:0 6px 18px #1428200d}.user-tariff-card.is-current{border-color:#0f7a6c80;box-shadow:0 0 0 2px #0f7a6c26}.user-tariff-card-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.user-tariff-card-head h2{margin:0;font-size:1.15rem}.user-tariff-price{color:#0f7a6c;white-space:nowrap;margin:0;font-weight:700}.user-tariff-limit{color:#2a3832;margin:0;font-size:13px;font-weight:600}.user-tariff-caps{color:#3d5248;margin-top:auto;font-size:13px}.user-tariff-card .primary-btn,.user-tariff-card .tool-btn{width:100%}@media (width<=960px){.admin-tariffs-layout,.settings-sections-grid{grid-template-columns:1fr}.settings-fields-grid--3{grid-template-columns:1fr 1fr}.settings-slope-range{grid-template-columns:1fr}.settings-slope-range .primary-btn{grid-column:1;justify-self:start}}@media (width<=720px){.dashboard-main,.settings-page-main{padding:18px 14px 32px}.settings-fields-grid,.settings-fields-grid--3{grid-template-columns:1fr}.toolbar-project-name{max-width:120px}.auth-shell{grid-template-columns:1fr;min-height:auto}.auth-hero{min-height:180px;padding:28px 24px}.auth-card{padding:28px 22px 32px}}.landing{--landing-ink:#14201b;--landing-muted:#4d5f56;--landing-accent:#0f7a6c;--landing-accent-2:#1a9b88;--landing-warm:#c45c26;height:100%;color:var(--landing-ink);font-family:var(--font-ui);background:radial-gradient(1000px 560px at 0 -10%,#e7f3ee 0%,#0000 55%),radial-gradient(800px 480px at 100% 10%,#c5d9cf 0%,#0000 50%),linear-gradient(165deg,#e4ece7 0%,#d0ddd5 45%,#bccabf 100%);overflow:auto}.landing-nav{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#e4ece7d1;border-bottom:1px solid #14282014;align-items:center;gap:20px;padding:14px clamp(16px,4vw,40px);display:flex;position:sticky;top:0}.landing-nav-brand{font-family:var(--font-display);letter-spacing:.06em;color:var(--landing-ink);font-size:1.35rem;font-weight:800;text-decoration:none}.landing-nav-links{flex-wrap:wrap;flex:1;gap:16px 22px;margin-left:8px;display:flex}.landing-nav-links a{color:var(--landing-muted);font-size:.95rem;font-weight:500;text-decoration:none}.landing-nav-links a:hover{color:var(--landing-accent)}.landing-nav-actions{align-items:center;gap:10px;display:flex}.landing-btn{border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:.7rem 1.15rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:transform .2s,background .2s,color .2s,border-color .2s;display:inline-flex}.landing-btn:hover{transform:translateY(-1px)}.landing-btn-primary{background:var(--landing-accent);color:#f3faf7}.landing-btn-primary:hover{background:var(--landing-accent-2)}.landing-btn-secondary{color:var(--landing-ink);background:#ffffff8c;border-color:#14282024}.landing-btn-ghost{color:var(--landing-ink);background:0 0;border-color:#0000}.landing-hero{align-items:end;min-height:min(92vh,880px);padding:clamp(28px,6vw,72px) clamp(16px,4vw,40px) clamp(40px,7vw,80px);display:grid;position:relative;overflow:hidden}.landing-hero-visual{z-index:0;position:absolute;inset:0}.landing-hero-mesh{background:linear-gradient(120deg,#0f7a6c2e 0%,#0000 42%,#c45c261f 100%),url("data:image/svg+xml,%3Csvg width='72' height='72' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 36h72M36 0v72' stroke='%230f7a6c14' stroke-width='1'/%3E%3C/svg%3E");animation:18s ease-in-out infinite alternate landing-mesh-drift;position:absolute;inset:0}@keyframes landing-mesh-drift{0%{transform:scale(1)translate(0)}to{transform:scale(1.06)translate(-1.5%,1%)}}.landing-hero-photo{object-fit:cover;object-position:70% 45%;opacity:.28;width:100%;height:100%;position:absolute;inset:0;-webkit-mask-image:linear-gradient(100deg,#0000 0% 28%,#000 55% 100%);mask-image:linear-gradient(100deg,#0000 0% 28%,#000 55% 100%)}.landing-hero-plan{opacity:.92;filter:drop-shadow(0 24px 48px #1428202e);pointer-events:none;width:min(72vw,820px);height:auto;position:absolute;top:8%;right:-4%}.landing-draw-a,.landing-draw-b,.landing-draw-c{stroke-dasharray:1200;stroke-dashoffset:1200px;animation:2.4s forwards landing-draw}.landing-draw-b{animation-delay:.35s}.landing-draw-c{animation-delay:.7s}@keyframes landing-draw{to{stroke-dashoffset:0}}.landing-node-pulse{transform-origin:120px 160px;animation:2.8s ease-in-out infinite landing-pulse}@keyframes landing-pulse{0%,to{opacity:1}50%{opacity:.55}}.landing-hero-copy{z-index:1;flex-direction:column;gap:16px;max-width:34rem;animation:.9s both landing-rise;display:flex;position:relative}@keyframes landing-rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.landing-brand{font-family:var(--font-display);letter-spacing:.04em;color:var(--landing-ink);margin:0;font-size:clamp(2.8rem,8vw,4.6rem);font-weight:800;line-height:.95}.landing-brand-sm{font-size:clamp(1.8rem,4vw,2.4rem)}.landing-hero-title{font-family:var(--font-display);letter-spacing:-.02em;max-width:18ch;margin:0;font-size:clamp(1.55rem,3.4vw,2.15rem);font-weight:700;line-height:1.2}.landing-hero-lead{color:var(--landing-muted);max-width:38ch;margin:0;font-size:1.08rem;line-height:1.55}.landing-hero-cta{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.landing-section{max-width:1080px;margin:0 auto;padding:clamp(48px,9vw,96px) clamp(16px,4vw,40px)}.landing-section-alt{background:#ffffff59;border-block:1px solid #1428200f;max-width:none;padding-left:max(clamp(16px,4vw,40px),50% - 540px);padding-right:max(clamp(16px,4vw,40px),50% - 540px)}.landing-kicker{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--landing-accent);margin:0 0 8px;font-size:.8rem;font-weight:500}.landing-h2{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 12px;font-size:clamp(1.7rem,3.2vw,2.35rem);font-weight:700;line-height:1.15}.landing-section-lead{max-width:46ch;color:var(--landing-muted);margin:0 0 32px;font-size:1.05rem;line-height:1.55}.landing-chip-rail{background:#1428200a;border-block:1px solid #14282014;padding:12px 0;overflow:hidden}.landing-chip-track{gap:10px;width:max-content;animation:32s linear infinite landing-chip-scroll;display:flex}@keyframes landing-chip-scroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.landing-chip{font-family:var(--font-mono);color:var(--landing-ink);letter-spacing:.02em;background:#ffffff8c;border:1px solid #0f7a6c47;border-radius:999px;flex:none;padding:.4rem .85rem;font-size:.82rem}.landing-audience{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 40px;margin:0;padding:0;list-style:none;display:grid}.landing-audience-icon{width:52px;height:52px;color:var(--landing-accent);margin-bottom:10px}.landing-icon{width:48px;height:48px;display:block}.landing-audience h3,.landing-problems h3,.landing-role h3{font-family:var(--font-display);margin:0 0 8px;font-size:1.2rem;font-weight:700}.landing-audience p,.landing-problems p,.landing-role p{color:var(--landing-muted);margin:0;line-height:1.55}.landing-problems{flex-direction:column;gap:28px;margin:0;padding:0;list-style:none;display:flex}.landing-problems li{grid-template-columns:auto 1fr;align-items:start;gap:18px 24px;display:grid}.landing-problem-num{font-family:var(--font-mono);color:var(--landing-warm);padding-top:2px;font-size:1.1rem;font-weight:500}.landing-role{border-top:1px solid #1428201a;padding:22px 0}.landing-role:last-child{border-bottom:1px solid #1428201a}.landing-steps{counter-reset:step;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin:0;padding:0;list-style:none;display:grid}.landing-steps li{counter-increment:step;flex-direction:column;gap:8px;display:flex}.landing-steps li:before{content:"0" counter(step);font-family:var(--font-mono);color:var(--landing-accent);letter-spacing:.08em;font-size:.85rem}.landing-steps strong{font-family:var(--font-display);font-size:1.15rem}.landing-steps span{color:var(--landing-muted);line-height:1.5}.landing-finale{text-align:center;background:radial-gradient(600px 280px at 50% 0,#0f7a6c29,#0000 70%);flex-direction:column;align-items:center;gap:12px;padding:clamp(56px,10vw,110px) clamp(16px,4vw,40px);display:flex}.landing-finale .landing-section-lead{text-align:center;margin-bottom:8px}.landing-finale .landing-hero-cta{justify-content:center}.landing-footer{border-top:1px solid #14282014;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:22px clamp(16px,4vw,40px) 36px;display:flex}.landing-footer-brand{font-family:var(--font-display);letter-spacing:.06em;font-weight:700}.landing-footer-links{flex-wrap:wrap;gap:16px;display:flex}.landing-footer-links a{color:var(--landing-muted);font-size:.92rem;text-decoration:none}.landing-footer-links a:hover{color:var(--landing-accent)}.landing-split{grid-template-columns:1.05fr 1fr;align-items:center;gap:clamp(24px,4vw,48px);max-width:1180px;margin:0 auto;padding:clamp(48px,8vw,88px) clamp(16px,4vw,40px);display:grid}.landing-split-rev{grid-template-columns:1fr 1.05fr}.landing-split-rev .landing-split-media{order:2}.landing-split-media{margin:0}.landing-split-media img{aspect-ratio:16/11;object-fit:cover;border-radius:4px;width:100%;display:block}.landing-split-media figcaption{color:var(--landing-muted);font-size:.88rem;font-family:var(--font-mono);margin-top:10px}.landing-tools-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 20px;margin-bottom:36px;display:grid}.landing-tool{color:var(--landing-accent);flex-direction:column;gap:8px;display:flex}.landing-tool h3{color:var(--landing-ink);font-family:var(--font-display);margin:0;font-size:1.1rem}.landing-tool p{color:var(--landing-muted);margin:0;font-size:.98rem;line-height:1.5}.landing-panel-row{grid-template-columns:1.2fr .9fr;gap:20px;display:grid}.landing-profile-viz,.landing-spec-viz{background:#ffffff8c;border:1px solid #1428201a;border-radius:14px;padding:14px}.landing-profile-viz svg{border-radius:10px;width:100%;height:auto;display:block}.landing-profile-viz p,.landing-spec-viz p{color:var(--landing-muted);font-size:.88rem;font-family:var(--font-mono);margin:10px 0 0}.landing-spec-viz table{border-collapse:collapse;width:100%;font-size:.92rem}.landing-spec-viz caption{caption-side:top;text-align:left;font-family:var(--font-mono);letter-spacing:.06em;color:var(--landing-accent);margin-bottom:8px;font-size:.78rem}.landing-spec-viz th,.landing-spec-viz td{text-align:left;border-bottom:1px solid #14282014;padding:8px 6px}.landing-spec-viz th{color:var(--landing-muted);font-size:.8rem;font-weight:600}.landing-tariffs{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:18px;display:grid}.landing-tariff{background:#ffffff9e;border:1px solid #1428201f;border-radius:16px;flex-direction:column;gap:12px;padding:22px 20px;display:flex}.landing-tariff.is-featured{background:#e8f5f0e6;border-color:#0f7a6c73;box-shadow:0 16px 40px #0f46371a}.landing-tariff h3{font-family:var(--font-display);margin:0;font-size:1.35rem}.landing-tariff-price{flex-direction:column;gap:2px;margin:6px 0 0;display:flex}.landing-tariff-price strong{font-size:1.6rem;font-family:var(--font-display)}.landing-tariff-price span{color:var(--landing-muted);font-size:.85rem}.landing-tariff-blurb{color:var(--landing-muted);min-height:3.2em;margin:0;line-height:1.45}.landing-tariff ul{color:var(--landing-ink);flex:1;margin:0;padding:0 0 0 1.1rem;line-height:1.55}.landing-tariff .landing-btn{width:100%;margin-top:4px}@media (width<=960px){.landing-split,.landing-split-rev,.landing-tools-grid,.landing-panel-row,.landing-tariffs{grid-template-columns:1fr}.landing-split-rev .landing-split-media{order:0}}@media (width<=860px){.landing-nav-links{display:none}.landing-audience,.landing-steps{grid-template-columns:1fr}.landing-hero-plan{opacity:.4;width:110%;top:0;right:-18%}.landing-hero-photo{opacity:.22;-webkit-mask-image:linear-gradient(#000 20%,#0000 85%);mask-image:linear-gradient(#000 20%,#0000 85%)}.landing-hero-copy{max-width:100%}}
