:root{color-scheme:dark;--bg:#10161c;--panel:#171f27;--raised:#1d2832;--line:#33424e;--text:#edf3f5;--muted:#a8b7c3;--mint:#91efcf;--blue:#68b4fa;--amber:#f2b259;--purple:#c499f6;--green:#64d9ad;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:16px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);line-height:1.5}button,input{font:inherit}button{border:1px solid #526471;background:#202c36;color:var(--text);border-radius:9px;min-height:44px;padding:9px 15px;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}button:hover{background:#2b3b47;border-color:#8096a6}button:disabled{cursor:wait;opacity:.65}:focus-visible{outline:2px solid var(--mint);outline-offset:4px}h1,h2,h3,p{margin:0}h2{font-size:1.05rem;font-weight:650;letter-spacing:-.015em}a{color:var(--mint);text-underline-offset:3px}button.primary{background:var(--mint);color:#112d24;border-color:var(--mint);min-width:112px}button.primary:hover{background:#b1ffe4}.shell{max-width:1550px;margin:0 auto;padding:28px 36px 20px}.masthead{display:flex;justify-content:space-between;align-items:center;gap:20px}.brand{display:flex;align-items:center;gap:15px}.brand svg{width:36px;height:42px;stroke:var(--mint);stroke-width:2.5;fill:none;stroke-linecap:round}.eyebrow{font-size:.7rem;letter-spacing:.16em;font-weight:650;color:var(--muted)}h1{font-size:2rem;line-height:1.2;letter-spacing:-.055em;font-weight:650}.title-dot{color:var(--mint)}.info-button{display:flex;align-items:center;gap:9px;background:transparent;border-color:#58736f}.info-icon{border:1.5px solid var(--mint);border-radius:50%;width:18px;height:18px;color:var(--mint);font:600 12px Georgia,serif;text-align:center;line-height:16px}.intro{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:22px 0 27px;padding-bottom:24px;border-bottom:1px solid var(--line)}.intro p{color:#c6d3dc;font-size:1rem}.model-label{font:11px var(--mono);letter-spacing:.09em;color:var(--muted)}.mobile-break{display:none}.workspace{display:grid;grid-template-columns:285px minmax(0,1fr);gap:28px}.setup{border-right:1px solid var(--line);padding-right:25px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:15px}.section-number{color:#8496a4;font:12px var(--mono)}.helper{color:var(--muted);font-size:.8rem;margin:0 0 21px;line-height:1.55}.control{position:relative;margin:0 0 15px}.control-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.control label{font-size:.875rem;color:#d2dce3;cursor:pointer}.value{font:500 .9rem var(--mono);color:var(--mint);white-space:nowrap}.control input{display:block;width:100%;height:27px;margin:4px 0 0;accent-color:var(--mint);cursor:pointer}.control-label{display:flex;align-items:center;gap:5px}.help-trigger{border:0;background:transparent;color:#98acba;min-height:24px;width:24px;padding:0;border-radius:50%;font:12px var(--mono)}.help-trigger:hover{color:var(--text);background:#34434f}.tooltip{position:absolute;z-index:10;left:0;top:100%;width:min(290px,85vw);padding:12px 14px;background:#293b48;border:1px solid #6a8190;box-shadow:0 12px 32px #0006;border-radius:8px;font-size:.875rem;color:#f4f7fa;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s}.control:not(.tip-dismissed):hover .tooltip,.control:not(.tip-dismissed):focus-within .tooltip,.control.tip-open .tooltip{opacity:1;visibility:visible;pointer-events:auto}.control-divider{margin:19px 0 18px;border-top:1px solid var(--line);padding-top:17px}.capacity-card{margin-top:20px;border-top:1px solid var(--line);padding-top:17px}.capacity-heading{display:flex;justify-content:space-between;font-size:.875rem}.capacity-heading strong{font:500 .875rem var(--mono);color:var(--amber)}.capacity-track{height:4px;border-radius:4px;background:#34414c;overflow:hidden;margin:10px 0}.capacity-track span{display:block;height:100%;background:var(--amber);width:100%}.capacity-card p{font-size:.8rem;color:#becbd4}.capacity-card .capacity-note{font-size:.75rem;color:var(--muted);margin-top:8px}.simulation{min-width:0;scroll-margin-top:16px}.flight-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 0}.actions{display:flex;gap:8px;flex-wrap:wrap}.clock-block{display:flex;align-items:center;gap:12px;flex-shrink:0}.clock-block span{font:10px var(--mono);letter-spacing:.12em;color:var(--muted)}#clock{font:500 1.55rem var(--mono);font-variant-numeric:tabular-nums}.run-caption{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:.75rem;margin:14px 0 10px}#seed-label{font-family:var(--mono)}.planes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.plane-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;min-width:0;overflow:hidden;--method:var(--mint)}.plane-card[data-kind=b]{--method:var(--amber)}.plane-card[data-kind=r]{--method:var(--purple)}.plane-top{padding:16px 16px 11px}.plane-title-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.plane-title-row h3{font-size:1rem;letter-spacing:-.015em}.method-index{color:var(--method);font:11px var(--mono)}.method-desc{font-size:.75rem;color:var(--muted);margin:4px 0 13px}.time-row{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.boarding-time{font:500 1.65rem var(--mono);letter-spacing:-.04em}.flight-state{font-size:.7rem;color:var(--method)}.boarding-count{font-size:.75rem;color:#b4c4cf;display:block;margin:6px 0 10px}.progress-track{height:3px;background:#34414c;border-radius:4px;overflow:hidden}.progress-track span{display:block;background:var(--method);height:100%;width:0}.cabin{height:380px;margin:0 8px;border-top:1px solid #2b3944;border-bottom:1px solid #2b3944;background:linear-gradient(180deg,#151c24,#19222b);position:relative}.cabin canvas{display:block;width:100%;height:100%}.cabin-bottom{display:flex;justify-content:space-between;padding:8px 15px 1px;font:10px var(--mono);letter-spacing:.09em;color:#9cabb9}.metrics{padding:12px 15px 16px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.metric strong{display:block;font:500 1rem var(--mono);color:#edf3f5}.metric span{font-size:.65rem;line-height:1.4;color:var(--muted);display:block;margin-top:5px}.legend{display:flex;gap:10px 18px;flex-wrap:wrap;margin:16px 0 7px;font-size:.75rem;color:#c2cfd8}.legend>span{display:inline-flex;align-items:center;gap:6px}.dot,.seat{display:inline-block;flex-shrink:0;width:7px;height:7px;background:#63717d;border-radius:50%}.seat{border-radius:2px}.walking{background:var(--blue)}.stowing{background:var(--amber)}.passing{background:var(--purple)}.seated{background:var(--green)}.filled{background:#fff}.empty{background:#63717d}.legend-note{font-size:.75rem;color:var(--muted)}.result{border-left:2px solid var(--mint);background:#91efcf08;padding:10px 14px;margin-top:15px;font-size:.875rem;color:#c7e8df}.comparison{grid-column:1/-1;border-top:1px solid var(--line);padding-top:26px;margin-top:4px}.comparison-top{display:flex;align-items:center;justify-content:space-between;gap:22px}.comparison h2{font-size:1.5rem;margin:5px 0 6px}.comparison-top p{color:var(--muted);font-size:.875rem}.compare-button{border-color:#6b9287;color:var(--mint);background:#91efcf09;flex-shrink:0}.comparison-empty{border:1px dashed var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;gap:22px;padding:28px;margin-top:20px;color:var(--muted);font-size:.875rem}.comparison-empty strong{font-weight:400;color:#cad6df}.sample-bars{width:50px;display:grid;gap:7px}.sample-bars i{height:4px;border-radius:2px;background:#506773}.sample-bars i:nth-child(2){width:100%}.sample-bars i:first-child{width:55%;background:#688c81}.sample-bars i:last-child{width:75%}.table-wrap{overflow-x:auto;margin-top:20px;border:1px solid var(--line);border-radius:10px}table{width:100%;border-collapse:collapse;font-size:.875rem;text-align:left;min-width:660px}th{font-size:.75rem;font-weight:500;color:var(--muted);padding:13px 16px;background:#1a252e}td{padding:15px 16px;border-top:1px solid var(--line);font-family:var(--mono)}td:first-child{font-family:inherit;font-weight:650}.time-cell{min-width:150px}.time-bar{display:block;height:3px;width:var(--bar);background:var(--method);margin-top:7px;border-radius:3px}.batch-note{font-size:.8rem;color:var(--muted);margin-top:12px}#batch-status:not(:empty){margin-top:18px;color:var(--mint);font-size:.875rem}progress{width:100%;height:7px;accent-color:var(--mint);margin-top:12px}footer{margin-top:30px;padding-top:18px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;color:#95a6b3;font-size:.75rem}footer span span{padding:0 7px;color:#576d7d}dialog{width:min(790px,calc(100vw - 28px));max-height:88dvh;border:1px solid #4c6473;border-radius:18px;color:var(--text);background:#17212a;padding:0;box-shadow:0 30px 130px #0009}dialog::backdrop{background:#060c12bd;backdrop-filter:blur(6px)}.dialog-top{padding:25px 28px 20px;display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#17212a;z-index:1}.dialog-top h2{font-size:1.7rem;margin-top:5px}.close-button{font-size:26px;line-height:1;padding:6px 12px;align-self:flex-start}.dialog-body{padding:24px 28px 30px;font-size:1rem;line-height:1.7}.dialog-body h3{font-size:1.13rem;color:var(--text);margin:25px 0 8px}.dialog-body p,.dialog-body li{color:#bfcdd7}.dialog-body p+p{margin-top:12px}.dialog-body ul,.dialog-body ol{padding-left:22px}.dialog-body li+li{margin-top:7px}.method-info{padding:16px 18px;border-left:2px solid var(--method);background:#ffffff03;margin:15px 0}.method-info h3{margin:0 0 7px}.callout{border:1px solid #49665d;border-radius:9px;background:#91efcf07;padding:16px 18px;margin:20px 0}.dialog-body .legend{font-size:.9rem;line-height:2;gap:8px 22px}.skip-link{position:fixed;top:-70px;left:15px;padding:12px;background:var(--mint);color:#12251e;z-index:100}.skip-link:focus{top:10px}.noscript{position:fixed;bottom:0;padding:20px;background:#633;color:#fff;width:100%}
@media(min-width:1400px){.cabin{height:420px}}@media(max-width:1150px){.shell{padding:24px}.workspace{grid-template-columns:245px minmax(0,1fr);gap:20px}.setup{padding-right:19px}.plane-top{padding:13px 11px 10px}.planes{gap:8px}.method-desc{font-size:.7rem}.metrics{padding:12px 10px}.clock-block{display:block;text-align:right}.clock-block span{display:block}.plane-title-row h3{font-size:.9rem}}
@media(max-width:950px){.workspace{grid-template-columns:1fr}.setup{border:1px solid var(--line);border-radius:12px;padding:18px}.setup .helper{margin-bottom:14px}#controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px 20px}.control{margin:0}.control-divider{margin:0;border:0;padding:0}.control-top{align-items:flex-start}.control label{font-size:.8rem}.value{font-size:.8rem}.control-label{gap:1px}.help-trigger{width:18px;min-width:18px}.capacity-card{margin-top:17px;padding-top:12px}.capacity-card p{display:inline}.capacity-card .capacity-note{margin-left:8px}.model-label{display:none}.simulation{margin-top:4px}.comparison{grid-column:1}.cabin{height:420px}}
@media(max-width:620px){.shell{padding:20px 16px}.brand{gap:10px}.brand svg{width:27px}.brand .eyebrow{font-size:9px}h1{font-size:1.7rem}.info-button{padding:9px 11px;font-size:.8rem}.intro{margin:19px 0 20px;padding-bottom:18px}.intro p{font-size:.9rem}.mobile-break{display:block}.setup{padding:16px}#controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 18px}.control label{font-size:.875rem}.control:nth-child(even) .tooltip{left:auto;right:0}.capacity-card p{display:block}.capacity-card .capacity-note{margin:6px 0 0}.flight-toolbar{align-items:flex-start}.actions{gap:6px}.actions button{font-size:.8rem;padding:9px 11px}button.primary{min-width:91px}.clock-block span{font-size:9px}#clock{font-size:1.35rem}.planes{grid-template-columns:1fr;gap:16px}.plane-top{padding:17px 20px 13px}.plane-title-row h3{font-size:1.15rem}.method-index{font-size:12px}.method-desc{font-size:.875rem;margin-bottom:10px}.cabin{height:410px;margin:0 17px}.metrics{padding:15px 20px 18px}.metric strong{font-size:1.15rem}.metric span{font-size:.8rem}.boarding-count{font-size:.8rem}.flight-state{font-size:.8rem}.cabin-bottom{padding:9px 20px 0}.legend{font-size:.8rem}.comparison-top{align-items:flex-start;flex-direction:column;gap:16px}.comparison-top>button{width:100%}.comparison h2{font-size:1.35rem}.comparison-empty{padding:23px 18px;justify-content:flex-start;gap:16px}.dialog-top{padding:21px 19px 17px}.dialog-top h2{font-size:1.35rem}.dialog-body{padding:20px 19px 25px}.dialog-top .eyebrow{font-size:9px}footer{font-size:.7rem}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.eyebrow,.model-label,.method-index,.method-desc,.flight-state,.metric span,.clock-block span,.cabin-bottom,.brand .eyebrow,.dialog-top .eyebrow,footer{font-size:.75rem}
.control label{font-size:.875rem}.metric span{line-height:1.45}.help-trigger{min-height:28px;min-width:24px}.boarding-count{font-size:.875rem}
/* Help opens only from its question-mark button or the help text itself. */
.control:not(.tip-dismissed):hover .tooltip,.control:not(.tip-dismissed):focus-within .tooltip{opacity:0;visibility:hidden;pointer-events:none}
.control:not(.tip-dismissed):has(.help-trigger:hover) .tooltip,.control:not(.tip-dismissed):has(.help-trigger:focus-visible) .tooltip,.control:not(.tip-dismissed):has(.tooltip:hover) .tooltip,.control.tip-open:not(.tip-dismissed) .tooltip{opacity:1;visibility:visible;pointer-events:auto}
.tooltip::before{content:"";position:absolute;bottom:100%;left:0;right:0;height:8px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
