@font-face{font-family:IBM Plex Sans Condensed;font-weight:400;font-display:swap;src:url(/fonts/plex-cond-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans Condensed;font-weight:600;font-display:swap;src:url(/fonts/plex-cond-600.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-400.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:500;font-display:swap;src:url(/fonts/plex-mono-500.woff2) format("woff2")}:root{--vellum: #fafaf6;--paper-2: #f2f3ee;--ink: #20262b;--red: #c8402e;--red-deep: #922d1f;--alu: #b9c2c9;--hairline: #d4d7d0;--muted: #6d7680;--body: #4a5158;--ok: #22683a;--warnc: #a06514;--sans: "IBM Plex Sans Condensed", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace;font-size:16px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--vellum);color:var(--ink);font-family:var(--sans)}.app{display:flex;flex-direction:column;height:100%}.workspace{display:flex;flex:1;min-height:0}.mono{font-family:var(--mono)}.wordmark{font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink)}.wordmark-papa{color:var(--red)}.topbar{display:flex;align-items:stretch;gap:0;background:var(--vellum);border-bottom:2px solid var(--ink)}.topbar>*{align-self:center}.brand{display:flex;align-items:center;gap:9px;align-self:stretch;background:none;border:none;border-right:1px solid var(--ink);color:var(--ink);cursor:pointer;padding:8px 14px}.brand svg{color:var(--ink)}.design-name{background:#fff;border:1px solid var(--hairline);border-radius:0;color:var(--ink);padding:7px 10px;width:300px;font-family:var(--mono);font-size:13.5px;margin-left:12px}.design-name:focus{outline:none;border-color:var(--ink)}.topbar-group{display:flex;gap:6px;padding:0 10px}.spacer{flex:1}.btn{background:var(--vellum);color:var(--ink);border:1.5px solid var(--ink);border-radius:0;padding:7px 14px;cursor:pointer;font-family:var(--mono);font-size:13px;letter-spacing:.08em}.btn:hover:not(:disabled){background:var(--paper-2)}.btn:focus-visible{outline:2px solid var(--red);outline-offset:1px}.btn:disabled{opacity:.35;cursor:default}.btn.primary{background:var(--red);border-color:var(--red-deep);color:var(--vellum);font-weight:500;transform:rotate(-.4deg)}.btn.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--red)}.btn.danger{color:var(--red);border-color:var(--red)}.btn.danger:hover:not(:disabled){background:#c8402e0f}.btn.block{display:block;width:100%;margin:5px 0;text-align:left}.btn.big{padding:14px 26px;font-size:16px;margin-top:20px;letter-spacing:.12em}.btn.sm{padding:3px 9px}.btn.status{transform:rotate(-1deg)}.btn.status.ok{color:var(--ok);border-color:var(--ok);background:#22683a0d}.btn.status.warn{color:var(--warnc);border-color:var(--warnc);background:#a065140d}.btn.status.error{color:var(--red);border-color:var(--red);background:#c8402e0d}.palette{width:272px;display:flex;flex-direction:column;background:var(--vellum);border-right:1.5px solid var(--ink)}.palette-head{padding:10px;border-bottom:1px solid var(--hairline)}.search{width:100%;background:#fff;border:1px solid var(--hairline);border-radius:0;color:var(--ink);padding:8px 10px;font-family:var(--sans);font-size:14.5px}.search:focus{outline:none;border-color:var(--ink)}.palette-list{flex:1;overflow-y:auto}.palette-cat-head{width:100%;text-align:left;background:none;border:none;color:var(--red);font-family:var(--mono);font-weight:500;font-size:11.5px;text-transform:uppercase;letter-spacing:.2em;padding:12px 12px 4px;cursor:pointer;display:flex;gap:6px;align-items:center}.palette-cat-head .count{margin-left:auto;color:var(--muted)}.chev{transition:transform .12s;display:inline-block}.chev.open{transform:rotate(90deg)}@media(prefers-reduced-motion:reduce){.chev{transition:none}}.palette-item{display:flex;gap:8px;align-items:center;padding:6px 12px;cursor:grab;border-left:2px solid transparent}.palette-item:hover{background:var(--paper-2);border-left-color:var(--red)}.palette-item:active{cursor:grabbing}.thumb{flex-shrink:0}.palette-item-label{font-size:14px;line-height:1.3}.palette-item-dims{font-family:var(--mono);font-size:11.5px;color:var(--muted)}.conf.medium{color:var(--warnc)}.conf.estimate{color:var(--red)}.palette-foot{padding:9px 12px;color:var(--muted);font-family:var(--mono);font-size:11px;line-height:1.6;border-top:1px solid var(--hairline);letter-spacing:.02em}.canvas-host{flex:1;min-width:0;position:relative;background:#fff;touch-action:none}.canvas-host.preview{background:#d8dade}.canvas-tabs{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:6px;background:var(--vellum);border:1.5px solid var(--ink);padding:5px 7px;box-shadow:0 2px 10px #20262b24}.canvas-tabs .tab{background:none;border:none;cursor:pointer;font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--muted);padding:5px 12px}.canvas-tabs .tab:hover{color:var(--ink)}.canvas-tabs .tab.active{background:var(--ink);color:var(--vellum)}.canvas-tabs .tab:focus-visible{outline:2px solid var(--red)}.tab-sep{width:1px;align-self:stretch;background:var(--hairline);margin:0 3px}.swatch{width:22px;height:22px;border:1.5px solid var(--ink);cursor:pointer;padding:0}.swatch.active{outline:2px solid var(--red);outline-offset:1px}.inspector{width:300px;overflow-y:auto;background:var(--vellum);border-left:1.5px solid var(--ink);padding:14px}.inspector section{margin-bottom:20px}.inspector h3{margin:0 0 8px;font-family:var(--mono);font-weight:500;font-size:11.5px;text-transform:uppercase;letter-spacing:.22em;color:var(--red);display:flex;align-items:center;gap:10px}.inspector h3:after{content:"";flex:1;border-top:1px solid var(--hairline)}.kv{display:flex;justify-content:space-between;font-size:14.5px;padding:2.5px 0;gap:8px}.kv span:first-child{color:var(--muted)}.kv span:last-child{font-family:var(--mono);font-size:13.5px}.kv.total{border-top:1px solid var(--ink);margin-top:6px;padding-top:6px;font-weight:600}.kv.total span:first-child{color:var(--ink)}.row{display:flex;align-items:center;gap:8px;font-size:14.5px;padding:4px 0}.row input[type=number],.row input[type=text],.row select{flex:1;min-width:0;background:#fff;border:1px solid var(--hairline);border-radius:0;color:var(--ink);padding:5px 8px;font-family:var(--mono);font-size:13.5px}.row input:focus,.row select:focus{outline:none;border-color:var(--ink)}.muted{color:var(--muted);font-size:14px}.source-note{font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:8px;line-height:1.5}.approx-note{background:#c8402e0d;border:1px solid var(--red);border-radius:0;padding:9px 11px;font-size:14px;margin:8px 0;line-height:1.45;color:var(--red-deep)}.poly-editor textarea{width:100%;background:#fff;border:1px solid var(--hairline);border-radius:0;color:var(--ink);padding:6px 8px;font-family:var(--mono);font-size:13px;resize:vertical}.poly-editor textarea:focus{outline:none;border-color:var(--ink)}.poly-error{color:var(--red);font-size:13.5px;margin-top:4px}.photo-tracer .tracer-drop{text-align:center;padding:10px 4px 4px}.tracer-steps{display:flex;gap:6px;margin:2px 0 6px;font-family:var(--mono);font-size:12px}.tracer-steps span{padding:3px 9px;border:1px solid var(--hairline);color:var(--muted);letter-spacing:.04em}.tracer-steps span.on{border-color:var(--ink);color:var(--ink);background:#20262b0d}.tracer-hint{font-size:14px;margin:4px 0 8px;min-height:20px}.tracer-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}.tracer-controls .row{padding:0}.tracer-controls input[type=number]{width:90px}.tracer-foot{display:flex;align-items:center;gap:10px;margin-top:12px;padding-top:10px;border-top:1px solid var(--hairline)}.start-screen{min-height:100%;display:flex;justify-content:center;padding:26px 18px 40px;overflow-y:auto;background:#e8e9e6}.start-card{max-width:940px;width:100%;height:fit-content;background:var(--vellum);border:2.5px solid var(--ink);box-shadow:0 3px 22px #20262b2e;position:relative}.start-inner{border:1px solid var(--ink);margin:5px;padding:34px 40px 0}.start-head{display:flex;align-items:center;gap:16px}.start-head h1{font-size:34px;font-weight:600;margin:0;letter-spacing:.04em;text-transform:uppercase}.start-head h1 .wordmark-papa{color:var(--red)}.start-head .sub-id{font-family:var(--mono);font-size:11px;letter-spacing:.22em;color:var(--muted);margin-top:3px}.tagline{color:var(--body);margin:14px 0 4px;font-size:17px;max-width:68ch}.start-card h2{font-family:var(--mono);font-weight:500;font-size:12.5px;color:var(--red);text-transform:uppercase;letter-spacing:.3em;margin:30px 0 12px;display:flex;align-items:center;gap:12px}.start-card h2:after{content:"";flex:1;border-top:1px solid var(--ink)}.aircraft-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));border:1.5px solid var(--ink)}.aircraft-card{background:var(--vellum);border:none;border-right:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:13px 14px;cursor:pointer;color:var(--ink);text-align:left;position:relative}.aircraft-card:hover{background:var(--paper-2)}.aircraft-card:focus-visible{outline:2px solid var(--red);outline-offset:-3px}.aircraft-card.sel{background:#fff}.aircraft-card.sel:after{content:"SELECTED";position:absolute;top:8px;right:8px;font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--red);border:1px solid var(--red);padding:2px 5px;transform:rotate(3deg);background:var(--vellum)}.aircraft-thumb{width:100%;height:54px}.aircraft-thumb polygon,.aircraft-thumb path{stroke:var(--ink);fill:#b9c2c938}.aircraft-card.sel .aircraft-thumb polygon{stroke:var(--ink);fill:#b9c2c966}.aircraft-label{font-size:16.5px;font-weight:600;margin-top:8px;letter-spacing:.02em}.aircraft-dims{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:2px}.approx-flag{color:var(--red)}.factory-flag{color:var(--ok);font-weight:600;letter-spacing:.06em}.blank-inputs{display:flex;gap:16px;margin:14px 0 2px;flex-wrap:wrap}.blank-inputs label{display:flex;align-items:center;gap:7px;font-size:15px}.blank-inputs input{width:84px;background:#fff;border:1px solid var(--hairline);border-radius:0;color:var(--ink);padding:6px 8px;font-family:var(--mono);font-size:13.5px}.blank-inputs input:focus{outline:none;border-color:var(--ink)}.template-row{display:grid;grid-template-columns:repeat(4,1fr);border:1.5px solid var(--ink);max-width:100%}.template-card{background:var(--vellum);border:none;border-right:1px solid var(--ink);border-bottom:1px solid var(--ink);color:var(--ink);padding:11px 18px;cursor:pointer;font-size:15px;text-align:center}.template-card:hover{background:var(--paper-2)}.template-card:focus-visible{outline:2px solid var(--red);outline-offset:-3px}.template-card.sel{background:var(--ink);color:var(--vellum)}.start-secondary{margin:14px 0 0}.saved-list{display:flex;flex-direction:column;border:1.5px solid var(--ink)}.saved-row{display:flex;align-items:stretch;border-bottom:1px solid var(--hairline)}.saved-row:last-child{border-bottom:none}.saved-open{flex:1;text-align:left;background:none;border:none;color:var(--ink);padding:10px 14px;cursor:pointer;font-size:15px}.saved-open:hover{background:var(--paper-2)}.saved-row .btn{border:none;border-left:1px solid var(--hairline)}.fine-print{color:var(--muted);font-family:var(--mono);font-size:11.5px;margin:26px 0 0;line-height:1.7;letter-spacing:.02em}.titleblock{display:grid;grid-template-columns:1fr 150px 110px 110px;border-top:1.5px solid var(--ink);margin:26px -40px 0}.titleblock .tb{border-right:1px solid var(--ink);padding:8px 14px}.titleblock .tb:last-child{border-right:none}.titleblock .lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;color:var(--muted)}.titleblock .val{font-size:14.5px;font-weight:600}.titleblock .val.mono{font-family:var(--mono);font-weight:500;font-size:13.5px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#20262b73;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--vellum);border:2px solid var(--ink);border-radius:0;max-width:620px;width:calc(100% - 32px);max-height:84vh;overflow-y:auto;padding:22px 24px}.modal h3{margin:0 0 14px;font-family:var(--mono);font-weight:500;font-size:13.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--red);display:flex;align-items:center;gap:12px}.modal h3:after{content:"";flex:1;border-top:1px solid var(--ink)}.modal-stamp-row{display:flex;gap:20px;align-items:flex-start}.stamp-land{display:inline-block;animation:stamp-land .4s cubic-bezier(.2,.9,.3,1.35) .18s both}@keyframes stamp-land{0%{transform:scale(2.4) rotate(8deg);opacity:0}55%{transform:scale(.93) rotate(-2deg);opacity:1}75%{transform:scale(1.05) rotate(.5deg)}to{transform:scale(1) rotate(0);opacity:1}}@media(prefers-reduced-motion:reduce){.stamp-land{animation:none}}.modal-stamp-row .report-list{flex:1}.report-list{list-style:none;margin:0 0 12px;padding:0}.finding{padding:7px 0;font-size:15px;line-height:1.45;border-bottom:1px solid var(--hairline)}.finding.ok{color:var(--ok)}.finding.warn{color:var(--warnc)}.finding.error{color:var(--red)}.modal .muted{font-family:var(--mono);font-size:12px;line-height:1.6}.detail-modal{max-width:560px}.conf-chip{margin-left:auto;font-size:10px;letter-spacing:.14em;padding:3px 8px;border:1px solid currentColor;text-transform:uppercase;transform:rotate(-1.5deg)}.conf-chip.high{color:var(--ok)}.conf-chip.medium{color:var(--warnc)}.conf-chip.estimate{color:var(--red)}.dim-drawing{width:100%;max-height:260px;display:block;background:#fff;border:1px solid var(--hairline);margin-bottom:12px;background-image:linear-gradient(rgba(32,38,43,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(32,38,43,.05) 1px,transparent 1px);background-size:14px 14px}.detail-grid{margin-bottom:6px}.detail-grid .kv span:last-child{font-family:var(--mono);font-size:13px}.detail-notes{font-size:13.5px;color:var(--body);margin:8px 0;line-height:1.5}.detail-src{border-top:1px solid var(--ink);margin-top:10px;padding-top:10px}.detail-src-head{font-family:var(--mono);font-size:10px;letter-spacing:.24em;color:var(--red);text-transform:uppercase;margin-bottom:5px}.detail-src p{font-size:13px;color:var(--body);line-height:1.5}.src-links{list-style:none;margin:8px 0 0;padding:0}.src-links li{padding:3px 0}.src-links a{color:#2b5b8e;font-size:13.5px;text-decoration:none;border-bottom:1px dashed #2b5b8e}.src-links a:hover,.src-links a:focus-visible{color:var(--red);border-bottom-color:var(--red)}.palette-info{margin-left:auto;flex-shrink:0;align-self:center;width:26px;height:26px;border-radius:50%;background:none;border:1.5px solid var(--hairline);color:var(--muted);font-family:var(--mono);font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.palette-info:active{color:var(--red);border-color:var(--red)}.topbar.mobile{gap:0}.topbar.mobile .brand{padding:8px 12px;border-right:1px solid var(--ink)}.topbar.mobile .design-name{flex:1;min-width:0;width:auto;margin:0 8px;font-size:13px;padding:8px}.topbar.mobile .btn.status{transform:none;margin-right:8px;padding:8px 10px;font-size:13px;white-space:nowrap}.workspace.mobile{position:relative}.mobile-toolbar{display:flex;align-items:stretch;background:var(--vellum);border-top:2px solid var(--ink);padding-bottom:env(safe-area-inset-bottom,0)}.mtab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:none;border-right:1px solid var(--hairline);color:var(--ink);font-family:var(--mono);font-size:11px;letter-spacing:.1em;padding:9px 4px 8px;cursor:pointer;text-transform:uppercase}.mtab:last-child{border-right:none}.mtab:active{background:var(--paper-2)}.mtab-i{font-size:19px;line-height:1}.sel-bar{position:absolute;left:8px;right:8px;bottom:8px;z-index:20;display:flex;align-items:center;gap:8px;background:var(--vellum);border:1.5px solid var(--ink);box-shadow:0 3px 14px #20262b38;padding:7px 9px}.sel-name{font-family:var(--mono);font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.sel-nudge{display:grid;grid-template-columns:repeat(4,auto);gap:4px;flex-shrink:0}.sel-bar .btn.sm{padding:6px 10px;font-size:15px}.sel-bar .sel-del{font-size:12px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#20262b6b;display:flex;flex-direction:column;justify-content:flex-end}.sheet{background:var(--vellum);border-top:2.5px solid var(--ink);border-radius:14px 14px 0 0;max-height:82vh;display:flex;flex-direction:column;box-shadow:0 -4px 22px #20262b47;animation:sheet-up .2s ease-out}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.sheet{animation:none}}.sheet-head{display:flex;align-items:center;gap:10px;position:relative;padding:12px 14px 10px;border-bottom:1px solid var(--hairline)}.sheet-grip{position:absolute;top:5px;left:50%;transform:translate(-50%);width:38px;height:4px;border-radius:2px;background:var(--hairline)}.sheet-head h3{margin:0;flex:1;font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--red)}.sheet-close{background:none;border:none;color:var(--muted);font-size:20px;line-height:1;padding:4px 8px;cursor:pointer}.sheet-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:env(safe-area-inset-bottom,0)}.sheet-body.sheet-palette{padding:0}.sheet-body.sheet-palette .palette{width:100%;border-right:none;max-height:74vh}.sheet-body .inspector{width:100%;border-left:none}.export-panel{padding:14px}.export-grid{display:flex;flex-direction:column;gap:8px;margin:4px 0 12px}.export-grid .btn.block{margin:0;text-align:center;padding:12px}.export-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.export-row .btn{flex:1;min-width:88px;text-align:center}@media(max-width:820px){.canvas-tabs{top:8px;max-width:calc(100% - 16px);flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.canvas-tabs .tab{padding:6px 10px}.start-screen{padding:12px 8px 28px}.start-inner{padding:20px 16px 0;margin:4px}.start-head{gap:12px}.start-head h1{font-size:25px}.tagline{font-size:15px;margin:12px 0 4px}.start-card h2{margin:22px 0 10px;letter-spacing:.2em}.aircraft-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.template-row{grid-template-columns:repeat(2,1fr)}.titleblock{grid-template-columns:1fr 1fr;margin:22px -16px 0}.titleblock .tb:nth-child(2n){border-right:none}.blank-inputs{gap:12px}.modal,.detail-modal{width:calc(100% - 20px);max-height:88vh}}
