@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--ink:#18362d;--muted:#69776e;--green:#227454;--line:#d9ded3;--paper:#f6f5ef}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--ink);padding:10px 15px;border-radius:7px;font-weight:600}button:hover{background:#e7ecdf}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #bd7b34;outline-offset:3px}a{color:inherit}header{max-width:1440px;margin:auto;height:84px;display:flex;align-items:center;gap:14px;padding:0 44px;border-bottom:1px solid var(--line)}.brand{font-size:29px;text-decoration:none;letter-spacing:-2px;font-weight:700}.brand span{color:var(--green);font-size:23px}.brand b{font-size:19px;letter-spacing:-.5px;margin-left:8px}.divider{height:25px;border-left:1px solid var(--line);margin:0 6px}header small{font-size:10px;border:1px solid var(--line);border-radius:4px;padding:3px 6px;color:var(--muted)}nav{margin-left:auto;display:flex;gap:8px}nav button{border:0;font-size:12px}main{max-width:1352px;margin:auto;padding:0 28px}.intro{display:flex;justify-content:space-between;align-items:center;padding:43px 0 32px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.8px;color:var(--muted);margin:0 0 14px}h1,h2,h3{font-family:'Space Grotesk',sans-serif}h1{font-size:48px;line-height:1.08;letter-spacing:-2px;margin:0}h1 span{color:#cf815b}.intro p:last-child{color:var(--muted);margin-bottom:0}.intro-note{display:flex;align-items:center;gap:22px;padding-right:55px}.intro-note>span{font-size:76px;color:#bdcaaf;font-weight:400}.intro-note p{line-height:1.8;font-size:13px}.lab{display:grid;grid-template-columns:minmax(0,1fr) 310px;border:1px solid #ccd6c7;border-radius:14px;overflow:hidden;background:#fffdf8;box-shadow:0 8px 30px #18362d06}.experiment{min-width:0}.plot-top{display:flex;justify-content:space-between;padding:18px 24px;font-size:10px;letter-spacing:1px;border-bottom:1px solid #dde4d7}.plot-top b{font-weight:600}.plot-top>span{color:var(--muted);letter-spacing:0}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#37835f;margin-right:7px}.canvas-wrap{height:390px;position:relative;background:#edf3e9}canvas{width:100%;height:100%;display:block}.plot-key{position:absolute;top:16px;left:24px;display:flex;gap:20px;font-size:10px;color:#526b59;pointer-events:none}.transport{display:flex;gap:8px;padding:18px 24px 10px;align-items:center}.primary{background:var(--green);color:white;border-color:var(--green);min-width:135px}.primary:hover{background:#195c42}.quiet{border:0;margin-left:auto}.rate select{background:transparent;border:0;font-size:12px;color:var(--muted);max-width:100px}.timeline{display:flex;align-items:center;gap:12px;padding:7px 24px 19px;font:11px 'Space Grotesk',monospace;color:var(--muted)}input[type=range]{accent-color:var(--green);width:100%;cursor:pointer}.timeline span{white-space:nowrap;min-width:42px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:18px 24px;gap:10px}.metrics span{display:block;color:var(--muted);font-size:10px;margin-bottom:8px}.metrics strong{font:500 25px 'Space Grotesk',monospace}.metrics small{font-size:11px;color:var(--muted)}.view-options{padding:16px 24px;display:flex;flex-wrap:wrap;gap:18px;font-size:11px}input[type=checkbox]{accent-color:var(--green);vertical-align:middle}aside{border-left:1px solid var(--line);padding:24px;background:#f9f9f2}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.panel-heading h2{font-size:18px;margin:0}.panel-heading span{font-size:8px;letter-spacing:.6px;color:var(--muted)}.select-row{display:block;font-size:11px;color:var(--muted)}.select-row select{display:block;width:100%;padding:11px 8px;background:#fffdf8;border:1px solid var(--line);border-radius:6px;margin:8px 0 24px;color:var(--ink);font-size:12px}.control{margin:0 0 20px}.control-top{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-bottom:7px}.number-wrap{display:flex;gap:4px;align-items:center;color:var(--muted);font-size:10px}.control input[type=number]{width:62px;text-align:right;border:1px solid var(--line);border-radius:4px;background:#fffdf8;color:var(--ink);padding:4px;font-size:12px}.control input[type=range]{height:5px;display:block;margin:10px 0}.air-heading,.target-heading{border-top:1px solid var(--line);padding-top:19px;display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:12px}.air-heading>span{font-size:9px;color:var(--muted)}.hint{font-size:11px;line-height:1.6;color:var(--muted);margin:10px 0 20px}.target-heading h3{font-size:14px;margin:0 0 15px}.target-heading label{font-size:10px;margin-bottom:15px}.bottom-grid{display:grid;grid-template-columns:1fr 310px;gap:28px;margin:35px 0}.flights{min-width:0}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.section-head .eyebrow{margin-bottom:8px}.section-head h2{font-size:23px;letter-spacing:-.7px;margin:0}.section-head button{font-size:11px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;white-space:nowrap;text-align:left;font-size:12px}th{color:var(--muted);font-size:10px;font-weight:500}td,th{padding:13px 10px;border-bottom:1px solid var(--line)}td:first-child{font-weight:700}#empty{color:var(--muted);font-size:12px;margin:25px 10px}#export{margin-top:15px;font-size:11px}.try{background:#e6ebdc;border-radius:10px;padding:25px}.try h2{font-size:26px;letter-spacing:-.7px;margin:0}.try p:not(.eyebrow){font-size:12px;line-height:1.7;color:#5e6c5f}.try button{border:0;padding:5px 0;font-size:12px}footer{border-top:1px solid var(--line);padding:23px 0;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted)}footer a{margin-left:15px}footer button{font-size:10px;border:0}dialog{max-width:600px;width:calc(100% - 32px);border:1px solid var(--line);border-radius:14px;padding:35px;background:var(--paper);color:var(--ink);line-height:1.75}dialog::backdrop{background:#102c2566;backdrop-filter:blur(4px)}dialog h2{font-size:28px;line-height:1.2}.close{float:right;border:0;padding:4px 10px}dialog p{font-size:13px}@media(min-width:1400px){.canvas-wrap{height:430px}}@media(max-width:1000px){main{padding:0 18px}.intro-note{padding:0}.lab{grid-template-columns:minmax(0,1fr) 270px}aside{padding:18px}.transport{padding-left:15px;padding-right:15px;gap:4px}.transport button{padding:10px}.primary{min-width:100px}.metrics strong{font-size:20px}.view-options{gap:10px}.bottom-grid{grid-template-columns:1fr 270px}}@media(max-width:740px){header{height:68px;padding:0 16px;gap:8px}.brand b,.divider{display:none}header>strong{font-size:13px}nav{gap:0}nav button{font-size:10px;padding:8px}.intro{padding:30px 0 24px}h1{font-size:37px}.intro-note{display:none}.lab{grid-template-columns:1fr}.canvas-wrap{height:320px}aside{border-left:0;border-top:1px solid var(--line)}.panel-heading{margin-bottom:15px}.metrics{padding:16px 12px}.metrics span{font-size:9px}.metrics strong{font-size:20px}.bottom-grid{grid-template-columns:1fr;gap:25px}.transport{flex-wrap:wrap}.view-options{padding:15px;font-size:10px}.plot-top{padding:15px}.section-head h2{font-size:20px}footer{align-items:flex-start}footer span{max-width:200px}footer a{display:block;margin:8px 0 0}.try h2 br{display:none}.try h2{font-size:24px}}

.properties{border-top:1px solid var(--line);padding:14px 0;font-size:11px}.properties summary{cursor:pointer;font-weight:600;margin-bottom:12px}.properties[open]{margin-bottom:12px}.plot-key{flex-wrap:wrap;gap:8px 15px}#object-note{margin-top:-12px}

.rotation-panel{border-top:1px solid var(--line);padding-top:16px}.rotation-panel h3{font-size:14px;margin:0 0 17px}.orientation-toggle{font-size:11px;display:block;margin:15px 0}.rotation-status{margin:0;padding:12px 24px 0;color:var(--muted);font:10px "Space Grotesk",monospace;line-height:1.6}
/* Flight Lab v2 workspace */
.lab{align-items:start}.experiment{position:sticky;top:14px}.projection-tabs{display:flex;align-items:center;gap:5px;padding:12px 18px;border-bottom:1px solid var(--line);flex-wrap:wrap}.projection-tabs button{font-size:11px;padding:8px 11px;border:0}.projection-tabs button.active{background:#e1eadb;color:#235d40}.projection-tabs>span{margin-left:auto;font-size:9px;color:var(--muted)}.canvas-wrap{height:410px}.metrics strong{font-size:23px;white-space:nowrap}.transport select{background:transparent;border:0;color:var(--muted);font-size:11px;max-width:85px}.challenge-status{font-size:11px;line-height:1.6;border-top:1px solid var(--line);padding:15px 24px;color:var(--green);background:#f0f4e9}.notice{background:#e6eedb;padding:14px 18px;border:1px solid #bdcdae;border-radius:8px;line-height:1.7}.notice.error{background:#faeade;border-color:#d5ab8d;color:#83492c}aside{width:100%;min-width:0}.panel-heading{margin-bottom:18px}.panel-heading button{font-size:10px;padding:6px 10px}.settings-section{border-top:1px solid var(--line);padding:16px 0}.settings-section summary{font-family:'Space Grotesk',sans-serif;font-size:13px;font-weight:600;cursor:pointer}.settings-section[open] summary{margin-bottom:20px}.settings-section .select-row select{margin-bottom:18px}.select-row input{display:block;width:100%;padding:11px 8px;background:#fffdf8;border:1px solid var(--line);border-radius:6px;margin:8px 0 18px;color:var(--ink);font-size:12px}.check-row{font-size:12px;display:block;margin:10px 0 16px}.control .number-wrap input{width:72px}.analysis-panel{border:1px solid var(--line);background:#fffdf8;border-radius:12px;padding:24px;margin-top:30px}.analysis-panel select,.sweep-inputs select,.sweep-inputs input{background:#fffdf8;color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:9px;font:inherit;min-width:0;max-width:100%}#chart{width:100%;height:240px;display:block}#sweep-chart{width:100%;height:210px;display:block;margin:20px 0}.workbench{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:28px;margin:32px 0}.sweep-panel,.save-panel{border:1px solid var(--line);border-radius:12px;padding:25px;min-width:0;background:#fffdf8}.save-panel{background:#e8eddf}.workbench h2{font-size:24px;letter-spacing:-.7px;margin:0 0 15px}.sweep-inputs{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:10px;margin:20px 0}.sweep-inputs label{font-size:10px;color:var(--muted)}.sweep-inputs input,.sweep-inputs select{display:block;width:100%;margin-top:7px;font-size:12px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.actions button,.file-button{font-size:11px;padding:9px 11px}.file-button{cursor:pointer;border:1px solid var(--line);border-radius:7px;font-weight:600;display:inline-flex;align-items:center}.file-button:hover{background:#e1e9d9}.workbench .table-scroll{max-height:300px;overflow:auto}.flights td{white-space:normal;min-width:80px;font-size:11px;vertical-align:top;line-height:1.6}.flights td:nth-child(2){min-width:180px}.flights th{white-space:nowrap}.view-options{gap:12px}.control .number-wrap{white-space:nowrap}.rotation-status{padding-top:9px}.hint{overflow-wrap:anywhere}dialog .table-scroll{margin:20px 0}#share-url{font:11px monospace}header nav{flex-wrap:wrap}.analysis-panel .section-head select{max-width:190px}#run-sweep{min-width:0}
@media(min-width:1400px){.canvas-wrap{height:450px}}
@media(max-width:1000px){.workbench{grid-template-columns:minmax(0,1fr) 270px}.projection-tabs>span{display:none}.projection-tabs{padding:10px}.metrics{padding:16px 12px}.metrics strong{font-size:19px}.view-options{padding:14px}.sweep-inputs{grid-template-columns:repeat(3,1fr)}.sweep-inputs label:first-child{grid-column:1/-1}.analysis-panel{padding:18px}}
@media(max-width:740px){.experiment{position:static}.canvas-wrap{height:340px}.lab{overflow:visible}.experiment{overflow:hidden;border-radius:12px 12px 0 0}.metrics strong{font-size:17px}.metrics span{font-size:9px}.workbench{grid-template-columns:1fr}.projection-tabs button{font-size:10px;padding:8px}.projection-tabs{justify-content:center}.analysis-panel .section-head{align-items:flex-start;gap:15px}.analysis-panel .section-head h2{font-size:18px}.analysis-panel .section-head select{font-size:10px;max-width:130px}#chart{height:210px}.analysis-panel{padding:15px}.workbench h2{font-size:22px}.sweep-panel,.save-panel{padding:20px}.canvas-wrap .plot-key{font-size:9px;left:14px;gap:7px}.sweep-inputs{gap:8px}.control .number-wrap input{width:82px}#reset{font-size:11px}.challenge-status{padding:12px 16px}.view-options{gap:12px}.intro p:last-child{max-width:290px;line-height:1.6}.lab aside{border-radius:0 0 12px 12px}}

@media(min-width:741px){.lab{overflow:visible}.experiment{overflow:hidden;border-radius:13px 0 0 13px}aside{border-radius:0 13px 13px 0}}
.force-key{display:flex;gap:17px;flex-wrap:wrap;padding:10px 24px 0;font-size:10px}.force-key[hidden]{display:none}.force-key span:before{content:"";display:inline-block;width:16px;border-top:2px solid currentColor;margin:0 5px 3px 0}.force-key span:nth-child(1){color:#a76a3f}.force-key span:nth-child(2){color:#a85454}.force-key span:nth-child(3){color:#6c6aba}
