:root{color:#172126;background:#f3f6f5;font-family:Inter,Noto Sans SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #172126;--muted: #68757b;--border: #d8e0dd;--panel: #ffffff;--teal: #0b5963;--teal-2: #147886;--green: #17806d;--amber: #c17817;--red: #a94b4b;--purple: #7156a5;--shadow: 0 10px 30px rgba(25, 55, 55, .07)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:#f3f6f5}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid rgba(20,120,134,.28);outline-offset:2px}h1,h2,h3,p{margin-top:0}h1{margin-bottom:0;font-size:1.23rem;letter-spacing:.01em}h2{margin-bottom:0;font-size:1.06rem}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.app-shell{min-height:100vh}.topbar{min-height:70px;padding:12px max(22px,calc((100vw - 1480px)/2));display:flex;align-items:center;gap:13px;color:#f8fbfa;background:#143e43;border-bottom:1px solid #28555a}.brand-mark{width:40px;height:40px;display:grid;place-items:center;border:1px solid #6c9296;border-radius:10px;background:#0b5963;font-size:1.45rem;font-weight:800}.brand-copy{display:grid;gap:2px}.brand-copy>span{color:#a9c2c4;font-size:.68rem;letter-spacing:.12em}.header-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.mode-badge{padding:6px 9px;border-radius:999px;color:#cfe0df;border:1px solid #54777a;font-size:.75rem}.topbar .soft-button{background:transparent;color:#edf5f4;border-color:#66878a}.safety-notice{max-width:1480px;margin:14px auto 0;padding:11px 18px;display:flex;align-items:baseline;gap:14px;color:#614917;background:#fff9e8;border:1px solid #ead7a5;border-radius:10px;font-size:.82rem}.safety-notice strong{flex:none}main{max-width:1480px;margin:0 auto;padding:22px 20px 48px}.intro-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:8px 2px 22px}.intro-row h2{margin-bottom:7px;font-size:clamp(1.35rem,2.2vw,2rem)}.intro-row p:last-child{margin:0;color:var(--muted)}.eyebrow{margin:0 0 4px;color:var(--teal-2);font-size:.69rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.snapshot-summary{min-width:260px;padding:12px 15px;display:grid;grid-template-columns:auto auto;gap:2px 12px;border-left:3px solid var(--amber);background:#fff;box-shadow:var(--shadow)}.snapshot-summary span{grid-row:span 2;align-self:center;color:var(--muted);font-size:.72rem;text-transform:uppercase;writing-mode:vertical-rl}.snapshot-summary strong{font-size:1.3rem}.snapshot-summary small{color:var(--muted)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow)}.input-grid{display:grid;grid-template-columns:minmax(520px,1.06fr) minmax(480px,.94fr);gap:16px;margin-bottom:18px}.parameters-panel,.floor-panel,.shaft-panel,.log-panel,.chart-panel,.method-panel{padding:18px}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:15px}.section-heading h2{line-height:1.3}.live-pill,.count-pill,.check-pill,.plan-chip{flex:none;padding:5px 9px;border-radius:999px;color:#425158;background:#f0f4f2;border:1px solid #dbe3e0;font-size:.71rem;font-weight:700}.live-pill{display:flex;align-items:center;gap:5px;color:#146756;background:#ecf7f3}.live-pill i{width:6px;height:6px;border-radius:50%;background:#17806d}.check-pill.ok{color:#146756;background:#ecf7f3;border-color:#bfdfd5}.check-pill.error{color:#8e3737;background:#fff0f0;border-color:#e8c5c5}.plan-chip{color:#fff;background:var(--teal);border-color:var(--teal)}.fields-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 16px}.field{min-width:0;display:grid;grid-template-columns:minmax(124px,1fr) minmax(110px,.8fr);align-items:center;gap:10px;color:#405057;font-size:.78rem}.field>span:first-child{line-height:1.2}input,select{min-width:0;width:100%;height:36px;padding:7px 9px;color:var(--ink);background:#fbfcfc;border:1px solid #cdd8d4;border-radius:7px}input:hover,select:hover{border-color:#99b0aa}.input-with-unit{position:relative}.input-with-unit input{padding-right:46px}.input-with-unit small{position:absolute;top:50%;right:9px;transform:translateY(-50%);color:var(--muted);font-size:.65rem;pointer-events:none}.switch-row{margin-top:16px;padding:12px;display:flex;align-items:center;gap:11px;border:1px solid #e0e7e4;border-radius:9px;background:#f8faf9;cursor:pointer}.switch-row>input{position:absolute;opacity:0;width:1px;height:1px}.switch{width:38px;height:22px;flex:none;position:relative;border-radius:999px;background:#9aa8a8;transition:background .16s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .16s;box-shadow:0 1px 4px #0003}.switch-row input:checked+.switch{background:var(--teal-2)}.switch-row input:checked+.switch:after{transform:translate(16px)}.switch-row strong,.switch-row small{display:block}.switch-row strong{font-size:.8rem}.switch-row small{margin-top:2px;color:var(--muted);font-size:.68rem}.preset-row,.button-row{display:flex;flex-wrap:wrap;gap:8px}.preset-row{margin-bottom:12px}.button-row{margin:11px 0 13px}.primary-button,.soft-button,.danger-quiet-button,.icon-button{min-height:34px;padding:7px 11px;border:1px solid transparent;border-radius:7px;font-weight:700;font-size:.75rem}.primary-button{color:#fff;background:var(--teal);border-color:var(--teal)}.primary-button:hover{background:#084951}.soft-button{color:#35484d;background:#f5f8f7;border-color:#cfdad6}.soft-button:hover{background:#eaf1ef}.danger-quiet-button{color:#914040;background:#fff6f6;border-color:#e6caca}.icon-button{width:31px;min-height:30px;padding:2px;color:var(--teal);background:#edf5f3;border-color:#cfe0dc;font-size:1rem}.random-controls{display:grid;grid-template-columns:1.3fr .7fr 1fr;gap:8px;padding:10px;border:1px solid #e2e8e5;border-radius:9px;background:#f8faf9}.random-controls label{display:grid;gap:4px;color:var(--muted);font-size:.68rem}.random-controls input{height:32px}.floor-table-wrap{max-height:326px;overflow:auto;border:1px solid #dbe3e0;border-radius:9px;scrollbar-color:#a4b6b1 transparent}.floor-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.76rem}.floor-table thead{position:sticky;top:0;z-index:2}.floor-table th,.floor-table td{height:43px;padding:6px 8px;text-align:left;border-bottom:1px solid #e7ecea;background:#fff}.floor-table thead th{height:36px;color:#526168;background:#f3f6f5;font-size:.67rem;text-transform:uppercase}.floor-table tbody th{width:54px;color:var(--teal);font-size:.8rem}.floor-table td{position:relative}.floor-table td input{width:100%;height:30px;padding-right:28px}.floor-table td>span{position:absolute;right:15px;top:50%;transform:translateY(-50%);color:#81908f;font-size:.62rem;pointer-events:none}.floor-table td:last-child{width:42px}.floor-table .lobby-row th,.floor-table .lobby-row td{position:sticky;bottom:0;color:#755513;background:#fff9e8;border-bottom:0}.decision-banner{margin-bottom:12px;padding:17px 20px;display:flex;align-items:center;gap:15px;border:1px solid #b9d8d0;border-left:5px solid var(--green);border-radius:12px;background:#eff8f5}.decision-banner.neutral{border-color:#d4ddda;border-left-color:#647681;background:#f7f9f8}.decision-icon{width:42px;height:42px;flex:none;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--green);font-size:1.5rem;font-weight:900}.decision-banner.neutral .decision-icon{background:#647681}.decision-banner h2{margin-bottom:4px;font-size:1.15rem}.decision-banner p:last-child{margin:0;color:#52625f;font-size:.78rem}.metric-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;margin-bottom:18px}.metric-card{min-width:0;padding:13px;border:1px solid var(--border);border-top:3px solid #91a09f;border-radius:10px;background:#fff;box-shadow:0 6px 20px #1937370a}.metric-card.accent{border-top-color:var(--green);background:#fbfefd}.metric-card p{margin-bottom:8px;color:var(--muted);font-size:.68rem}.metric-card strong{display:block;margin-bottom:5px;font-size:clamp(.93rem,1.3vw,1.22rem);white-space:nowrap}.metric-card strong small{color:#4f5d62;font-size:.58em}.metric-card span{display:block;color:#7a878b;font-size:.64rem;line-height:1.3}.view-toolbar{margin-bottom:16px;padding:13px 17px;display:grid;grid-template-columns:auto minmax(230px,390px) 1fr;align-items:center;gap:18px}.view-toolbar .eyebrow{margin-bottom:1px}.view-toolbar p:last-child{margin:0;color:var(--muted);font-size:.74rem}.simulation-grid{display:grid;grid-template-columns:minmax(360px,.8fr) minmax(480px,1.2fr);gap:16px;margin-bottom:16px}.playback-readout{min-height:43px;display:flex;align-items:baseline;gap:12px}.playback-readout strong{color:var(--teal);font-variant-numeric:tabular-nums}.playback-readout span{overflow:hidden;color:var(--muted);font-size:.73rem;text-overflow:ellipsis;white-space:nowrap}.progress-track{height:4px;overflow:hidden;border-radius:999px;background:#e2e8e6}.progress-track i{display:block;height:100%;background:var(--amber);transition:width 40ms linear}.shaft-scroll{height:472px;margin:11px 0 12px;overflow:auto;border:1px solid #d5dfdc;border-radius:8px;background:#f8faf9}.shaft{min-width:300px;position:relative;overflow:hidden;background:linear-gradient(90deg,transparent 0 43px,#eef3f1 43px 113px,transparent 113px)}.shaft-floor{width:100%;position:absolute;left:0;display:flex;align-items:center;border-top:1px solid #dbe3e0}.shaft-floor.lobby{background:#fff9e8;border-top-color:#ddc88f}.floor-number{width:42px;padding-right:7px;text-align:right;color:#5b696d;font-size:.65rem;font-weight:800}.waiting-badge{position:absolute;right:8px;padding:2px 6px;border:1px solid #e0b8b8;border-radius:999px;color:#913f3f;background:#fff2f2;font-size:.62rem;font-weight:700}.waiting-badge.empty{color:#82908e;background:#f0f3f2;border-color:#e1e6e4}.cabin{width:64px;height:28px;position:absolute;left:48px;z-index:4;display:flex;align-items:center;justify-content:space-around;color:#fff;background:var(--teal);border:2px solid #fff;border-radius:5px;box-shadow:0 2px 8px #0b596359;transition:bottom 35ms linear}.cabin span{font-size:.55rem}.cabin strong{font-size:.67rem}.shaft-routes{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}.shaft-routes polyline{fill:none;stroke-linecap:round;stroke-linejoin:round}.shaft-baseline-path{stroke:#879195;stroke-width:1.5;stroke-dasharray:4 4;opacity:.65}.shaft-selected-path{stroke:#d07a0d;stroke-width:2.5;opacity:.85}.playback-controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.playback-controls>span{margin-left:auto;color:var(--muted);font-size:.7rem}.route-key{margin-top:11px;display:flex;align-items:center;gap:14px;color:var(--muted);font-size:.67rem}.route-key span{display:flex;align-items:center;gap:5px}.route-key i{width:20px;height:3px;display:inline-block;border-radius:4px}.route-key i.gray{background:#879195}.route-key i.accent{background:#d07a0d}.route-key small{margin-left:auto;color:#7a878b}.log-panel{min-width:0}.event-list{height:505px;margin:0;padding:0 4px 0 0;overflow:auto;list-style:none;scrollbar-color:#a4b6b1 transparent}.event-list li{min-height:47px;display:grid;grid-template-columns:62px 28px 1fr;align-items:start;gap:8px;padding:7px 8px;border-bottom:1px solid #edf0ef;border-radius:6px}.event-list li.current{background:#eef7f5;box-shadow:inset 3px 0 var(--teal-2)}.event-list time{padding-top:5px;color:#637176;font:700 .67rem ui-monospace,SFMono-Regular,Consolas,monospace;text-align:right}.event-list i{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;color:#415055;background:#e8edeb;font-size:.63rem;font-style:normal;font-weight:900}.event-list .direction i{color:#82500c;background:#fff1d7}.event-list .board i{color:#126451;background:#dff2eb}.event-list .capacity i{color:#8c3939;background:#f8dddd}.event-list .lobby i,.event-list .complete i{color:#fff;background:var(--teal)}.event-list strong,.event-list span{display:block}.event-list strong{color:#2d393e;font-size:.73rem;line-height:1.35}.event-list span{margin-top:2px;color:#7b878b;font-size:.63rem}.log-total{margin-top:9px;padding:10px 12px;display:flex;justify-content:space-between;color:#415055;background:#f4f7f6;border-radius:8px;font-size:.73rem}.log-total strong{color:var(--teal)}.chart-panel{margin-bottom:16px;overflow:hidden}.chart-heading{align-items:center}.chart-legend,.path-legend{display:flex;align-items:center;flex-wrap:wrap;gap:12px;color:var(--muted);font-size:.67rem}.legend-good,.good-text{color:#14705f;font-weight:800}.legend-bad,.bad-text{color:#a34343;font-weight:800}.chart-scroll{width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-color:#a4b6b1 transparent}.chart-scroll svg{width:100%;display:block}.grid-line{stroke:#e3e9e7;stroke-width:1}.axis-label,.x-label,.axis-title,.baseline-label,.chart-note{fill:#6b777b;font-family:inherit;font-size:10px}.axis-title{fill:#46545a;font-size:11px;font-weight:700}.baseline-rule{stroke:#59666b;stroke-width:1.5;stroke-dasharray:7 5}.baseline-label{fill:#4e5b60;font-weight:800}.best-bar{stroke:#5d4694;stroke-width:3}.best-star{fill:#5d4694;font-size:11px;font-weight:900}.bar-status{fill:#647176;font-family:inherit;font-size:9px;font-weight:800}.chart-tooltip{margin:5px 4px 0;padding:9px 11px;display:flex;flex-wrap:wrap;gap:10px 18px;color:#506065;background:#f5f8f7;border:1px solid #e0e7e4;border-radius:8px;font-size:.7rem}.chart-tooltip strong{color:var(--ink)}.baseline-area-line{stroke:#5f6c72;stroke-width:2;stroke-dasharray:7 5}.selected-area-line{stroke:#163f45;stroke-width:2.4}.chart-note{fill:#4f5d62;font-weight:700}.area-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px}.area-summary>div{padding:10px;display:flex;justify-content:space-between;border:1px solid #e0e6e4;border-radius:8px;background:#f8faf9;font-size:.7rem}.area-summary span{color:var(--muted)}.area-summary strong{color:#2c3d42}.floor-contributions{margin-top:10px;border:1px solid #e0e7e4;border-radius:8px}.floor-contributions summary{padding:10px 12px;color:#405057;cursor:pointer;font-size:.72rem;font-weight:700}.contribution-grid{max-height:160px;padding:0 10px 10px;display:grid;grid-template-columns:repeat(3,1fr);gap:5px;overflow:auto}.contribution-grid>div{padding:6px;display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:6px;border-radius:5px;background:#f6f8f7;font-size:.65rem}.contribution-grid i{width:7px;height:7px;border-radius:50%}.contribution-grid strong{font-size:.62rem}.formula-note{margin:11px 2px 0;color:var(--muted);font-size:.69rem;line-height:1.55}.compact-check{display:flex;align-items:center;gap:7px;color:#506065;font-size:.72rem}.compact-check input{width:16px;height:16px}.candidate-route{fill:none;stroke:#91a7a3;stroke-width:1.1;opacity:.45}.baseline-route{fill:none;stroke:#606c72;stroke-width:2;stroke-dasharray:6 5}.selected-route{fill:none;stroke:#287a87;stroke-width:2.5}.best-route{fill:none;stroke:#d0760b;stroke-width:4}.stop-dot{fill:#fff;stroke:#163f45;stroke-width:2}.path-legend{margin-top:8px}.path-legend span{display:flex;align-items:center;gap:5px}.path-legend .line{width:24px;height:3px;display:inline-block}.path-legend .baseline{background:repeating-linear-gradient(90deg,#606c72 0 5px,transparent 5px 8px)}.path-legend .candidates{background:#91a7a3;opacity:.6}.path-legend .best{height:4px;background:#d0760b}.path-legend .dot{width:8px;height:8px;display:inline-block;border:2px solid #163f45;border-radius:50%;background:#fff}.method-panel{display:grid;grid-template-columns:180px 1fr;gap:18px}.method-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.method-grid article{padding:12px;border-left:2px solid #9eb9b3;background:#f7f9f8}.method-grid strong{color:#2d4145;font-size:.81rem}.method-grid p{margin:7px 0 0;color:var(--muted);font-size:.68rem;line-height:1.55}footer{padding:22px;color:#738083;text-align:center;font-size:.68rem}@media(max-width:1120px){.input-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:repeat(4,1fr)}.simulation-grid{grid-template-columns:1fr 1fr}}@media(max-width:760px){.topbar{padding:10px 13px}.brand-copy>span,.mode-badge{display:none}.header-actions .soft-button{padding:6px 8px}.safety-notice{margin:9px 10px 0;align-items:flex-start;flex-direction:column;gap:3px}main{padding:16px 10px 36px}.intro-row{align-items:stretch;flex-direction:column}.snapshot-summary{min-width:0}.fields-grid{grid-template-columns:1fr}.field{grid-template-columns:1.15fr .85fr}.random-controls{grid-template-columns:1fr 1fr}.random-controls label:first-child{grid-column:1 / -1}.metric-grid{grid-template-columns:repeat(2,1fr)}.decision-banner{align-items:flex-start;padding:14px}.decision-icon{width:35px;height:35px}.view-toolbar{grid-template-columns:1fr;gap:9px}.simulation-grid{grid-template-columns:1fr}.shaft-scroll{height:420px}.event-list{height:430px}.chart-heading{align-items:flex-start;flex-direction:column}.area-summary,.contribution-grid,.method-panel,.method-grid{grid-template-columns:1fr}}@media(max-width:420px){h1{font-size:1rem}.brand-mark{width:34px;height:34px}.topbar .soft-button{max-width:78px;line-height:1.1}.parameters-panel,.floor-panel,.shaft-panel,.log-panel,.chart-panel,.method-panel{padding:13px}.metric-grid{grid-template-columns:1fr 1fr;gap:7px}.metric-card{padding:10px}.random-controls{grid-template-columns:1fr}.random-controls label:first-child{grid-column:auto}.route-key{align-items:flex-start;flex-wrap:wrap}.route-key small{width:100%;margin-left:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
