@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@500&family=IBM+Plex+Sans:wght@400;500;600&display=swap";:root{--color-void: #0e0c0a;--color-paper: #141210;--color-paper-2: #1c1916;--color-paper-3: #25211c;--color-lift: #2e2923;--color-ink: #f0e6d8;--color-ink-2: #b5a898;--color-muted: #7a7064;--color-rule: #332e28;--color-rule-strong: #4a4238;--color-accent: #e07a3a;--color-accent-hot: #f08a48;--color-accent-dim: rgba(224, 122, 58, .16);--color-accent-ink: #1a1008;--color-focus: #e07a3a;--color-danger: #c65746;--color-danger-soft: rgba(198, 87, 70, .18);--color-success: #6bbf8a;--curve-bg: #12100e;--curve-grid: #2a2520;--curve-diag: rgba(224, 122, 58, .22);--curve-line: #e07a3a;--curve-point-fill: #1a1410;--curve-point-stroke: #f0a060;--curve-border: #3a342c;--font-body: "IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-sm: 1rem;--space-md: 1.5rem;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.125rem;--text-lg: 1.25rem;--radius-sm: 4px;--radius-md: 8px;--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-short: .14s}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;max-height:100dvh;overflow:hidden}body{margin:0;font-family:var(--font-body);font-size:var(--text-base);line-height:1.4;color:var(--color-ink);background:var(--color-void);-webkit-font-smoothing:antialiased}button,input{font:inherit;color:inherit}h1,p,figure{margin:0}.app{display:grid;grid-template-rows:auto minmax(0,1fr);width:100%;height:100dvh;max-height:100dvh;margin:0;padding:var(--space-xs) var(--space-sm) var(--space-sm);gap:var(--space-xs);overflow:hidden;background:var(--color-paper)}.glass-bar{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0;flex-shrink:0}.mast{min-width:0;padding:0 .15rem var(--space-2xs);border-bottom:1px solid var(--color-rule)}.mast h1{font-size:var(--text-md);font-weight:600;letter-spacing:-.02em;color:var(--color-ink)}.desk{display:grid;grid-template-columns:minmax(0,40%) minmax(0,60%);gap:var(--space-sm);min-height:0;min-width:0;overflow:hidden}.bay{min-width:0;min-height:0;display:flex;flex-direction:column;gap:var(--space-xs);overflow:hidden}.bay-curve{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:var(--space-xs)}.curve-well{display:grid;place-items:center;min-height:0;min-width:0;container-type:size}.curve-well canvas{display:block;width:min(100%,70cqh,100cqw);max-height:100%;aspect-ratio:1;border:1px solid var(--curve-border);border-radius:var(--radius-sm);background:var(--curve-bg);cursor:crosshair;touch-action:none}.tool-row{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;min-width:0}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:2.25rem;padding:0 .85rem;border:1px solid var(--color-rule-strong);border-radius:var(--radius-sm);background:var(--color-paper-2);color:var(--color-ink);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out),border-color var(--dur-short) var(--ease-out),opacity var(--dur-short) var(--ease-out);white-space:nowrap}.btn:hover:not(:disabled){background:var(--color-paper-3);border-color:var(--color-muted)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn-accent{background:var(--color-accent);border-color:#c4682e;color:var(--color-accent-ink);font-weight:600}.btn-accent:hover:not(:disabled){background:var(--color-accent-hot);border-color:var(--color-accent-hot);color:var(--color-accent-ink)}.btn:focus-visible,.btn-text:focus-visible,.file-input:focus-within,.film-hit:focus-visible,.film-x:focus-visible,input:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.file-input{position:relative;overflow:hidden}.file-input input{position:absolute;inset:0;opacity:0;cursor:pointer}.point-row{display:flex;align-items:center;gap:.5rem;margin-left:auto;padding:.2rem .55rem;border:1px solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-paper-2)}.point-row label{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-2);white-space:nowrap}.point-row strong{color:var(--color-ink);font-variant-numeric:tabular-nums}input[type=range]{-webkit-appearance:none;appearance:none;width:7rem;height:.28rem;border:none;border-radius:999px;background:linear-gradient(90deg,var(--color-lift),var(--color-accent))}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:.85rem;height:.85rem;border-radius:50%;border:2px solid var(--color-paper);background:var(--color-accent-hot);cursor:pointer}input[type=range]::-moz-range-thumb{width:.85rem;height:.85rem;border-radius:50%;border:2px solid var(--color-paper);background:var(--color-accent-hot);cursor:pointer}.film-strip{display:flex;flex-direction:column;gap:.35rem;min-width:0;padding-top:var(--space-2xs);border-top:1px solid var(--color-rule)}.film-head{display:flex;align-items:center;justify-content:space-between;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted)}.btn-text{border:none;background:none;padding:0;color:var(--color-accent);font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}.btn-text:hover{color:var(--color-accent-hot)}.film-track{display:flex;gap:.45rem;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;min-height:5.25rem;padding:.15rem 0 .25rem;scrollbar-width:thin;scrollbar-color:var(--color-rule-strong) transparent}.film-empty{flex:1;display:grid;place-items:center;min-height:5rem;border:1px dashed var(--color-rule-strong);border-radius:var(--radius-sm);color:var(--color-muted);font-size:var(--text-xs);text-align:center;padding:0 var(--space-sm)}.film-cell{position:relative;flex:0 0 auto}.film-hit{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.4rem .45rem .35rem;border:1px solid var(--color-rule-strong);border-radius:var(--radius-sm);background:linear-gradient(180deg,var(--color-paper-3),var(--color-paper-2));cursor:pointer;transition:border-color var(--dur-short) var(--ease-out)}.film-hit:hover{border-color:var(--color-accent)}.film-frame-svg{display:block;background:var(--color-void);border-radius:2px}.film-diag{stroke:var(--color-rule-strong);stroke-width:.8;stroke-dasharray:2 2}.film-path{fill:none;stroke:var(--color-accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.film-num{font-family:var(--font-mono);font-size:.62rem;color:var(--color-muted)}.film-x{position:absolute;top:-.35rem;right:-.35rem;width:1.15rem;height:1.15rem;display:grid;place-items:center;border:1px solid var(--color-rule-strong);border-radius:50%;background:var(--color-paper-2);color:var(--color-ink-2);font-size:.75rem;line-height:1;cursor:pointer;opacity:0;transition:opacity var(--dur-short) var(--ease-out)}.film-cell:hover .film-x,.film-cell:focus-within .film-x{opacity:1}.film-x:hover{background:var(--color-danger-soft);border-color:var(--color-danger);color:var(--color-danger)}.warn{font-size:var(--text-xs);color:var(--color-danger)}.bay-shots{display:grid;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:var(--space-xs);min-height:0}.shot{display:grid;grid-template-rows:auto minmax(0,1fr);gap:.3rem;min-height:0;min-width:0}.shot figcaption{font-family:var(--font-mono);font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted)}.shot-well{position:relative;display:flex;align-items:center;justify-content:center;min-height:0;min-width:0;border:1px solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-paper-2);overflow:hidden}.shot-well canvas{display:block;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;background:var(--color-void)}.shot-well canvas.is-empty{opacity:0;width:100%;height:100%}.shot-ph{position:absolute;inset:0;z-index:1;display:grid;place-items:center;margin:0;font-size:var(--text-sm);font-weight:500;color:var(--color-muted);pointer-events:none}.glass-bar-spacer{display:none}@media(max-width:900px){html{height:auto;max-height:none;overflow-x:hidden;overflow-y:scroll}body,#root{height:auto;max-height:none;overflow:visible}.app{display:flex;flex-direction:column;height:auto;max-height:none;min-height:100dvh;overflow:visible;padding-top:0}.glass-bar{--glass-inset: max(.5rem, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));--glass-top: max(.5rem, env(safe-area-inset-top, 0px));position:fixed;top:var(--glass-top);left:var(--glass-inset);right:var(--glass-inset);z-index:100;gap:.45rem;margin:0;padding:.55rem .7rem .6rem;border:1px solid color-mix(in srgb,var(--color-rule-strong) 90%,transparent);border-radius:14px;background:color-mix(in srgb,var(--color-paper) 82%,transparent);backdrop-filter:blur(20px) saturate(1.25);-webkit-backdrop-filter:blur(20px) saturate(1.25);box-shadow:0 1px color-mix(in srgb,var(--color-ink) 5%,transparent) inset,0 12px 28px #00000073;box-sizing:border-box}.glass-bar-spacer{display:block;flex-shrink:0;height:calc(var(--glass-bar-height, 8.75rem) + max(.5rem,env(safe-area-inset-top,0px)) + .45rem);pointer-events:none}.mast{padding:0 .1rem .4rem;border-bottom:1px solid color-mix(in srgb,var(--color-rule) 70%,transparent)}.mast h1{font-size:var(--text-sm)}.tool-row{gap:.35rem}.tool-row .btn,.tool-row .file-input{flex:1 1 auto;min-height:2.1rem;padding:0 .55rem;font-size:var(--text-xs)}.point-row{margin-left:0;width:100%;flex:1 1 100%}input[type=range]{flex:1;width:auto}.desk{display:flex;flex-direction:column;gap:var(--space-sm);overflow:visible;min-height:0}.bay{overflow:visible;min-height:0}.bay-curve{display:flex;flex-direction:column;gap:var(--space-xs)}.curve-well{container-type:normal;width:100%;height:auto;min-height:0}.curve-well canvas{width:min(100%,16rem);max-width:100%;height:auto;max-height:none;aspect-ratio:1;margin:0 auto}.film-track{min-height:0}.film-empty{min-height:3.5rem}.shot-original{display:none!important}.bay-shots,.shot-result{display:block;min-height:0}.shot-result .shot-well{min-height:0;max-height:none;height:auto}.shot-result .shot-well canvas{width:100%;height:auto;max-width:100%;max-height:none}.shot-result .shot-well canvas.is-empty{min-height:8rem;height:8rem}}@media(prefers-reduced-motion:reduce){.btn,.film-hit,.film-x{transition:none}}
