@import"https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,700;1,700&family=Public+Sans:wght@400;500;600;700;800&display=swap";:root{color-scheme:light;--bg: #f5f0e3;--bg-raised: #fffdf7;--bg-sunken: #ece4d0;--line: #ddd2b8;--ink: #211d15;--ink-dim: #625a49;--accent-green: #1d3c2d;--accent-green-ink: #f5f0e3;--accent-gold: #ab8636;--accent-gold-ink: #7d601f;--warn-ink: #8f5d0e;--skeleton: #e8e1cf;--plane: #ffd27a;--path: #ab8636;--danger: #b3503f;--radius: 12px;--font: "Public Sans", system-ui, sans-serif;--font-display: "Cormorant Garamond", serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%}body{font-family:var(--font);background:var(--bg);color:var(--ink);font-size:16px;line-height:1.55;font-variant-numeric:lining-nums tabular-nums}#root{display:flex;flex-direction:column;min-height:100dvh;max-width:560px;margin:0 auto}h1,h2,h3{font-family:var(--font);font-weight:700;letter-spacing:-.02em;margin:0}button,input,select,textarea{font-variant-numeric:lining-nums tabular-nums}:where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--accent-green);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.55}.app-main{flex:1;display:flex;flex-direction:column;padding:16px 16px calc(96px + env(safe-area-inset-bottom))}.app-header{display:flex;align-items:center;gap:10px;padding:18px 16px 6px}.app-header .brand{font-family:var(--font-display);font-style:italic;font-size:20px;font-weight:700;letter-spacing:.01em}.app-header .brand em{font-style:normal;color:var(--accent-gold-ink)}.app-header .tagline{font-size:10px;color:var(--accent-gold-ink);text-transform:uppercase;letter-spacing:.14em;font-weight:600}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:560px;display:grid;grid-template-columns:1fr 1fr 1fr;background:color-mix(in srgb,var(--bg-sunken) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:8px 8px calc(8px + env(safe-area-inset-bottom));z-index:50}.tabbar button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:none;color:var(--ink-dim);font-family:inherit;font-size:12px;font-weight:700;letter-spacing:.01em;min-height:54px;padding:8px 4px 6px;border-radius:10px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;transition:color .15s}.tabbar button svg{width:22px;height:22px}.tabbar button.active{color:var(--accent-green);background:color-mix(in srgb,var(--accent-green) 8%,var(--bg-raised))}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:inherit;font-weight:700;font-size:15px;border:1px solid var(--line);background:var(--bg-raised);color:var(--ink);border-radius:var(--radius);padding:12px 18px;min-height:44px;cursor:pointer;transition:transform .1s,background .15s}.btn:active{transform:scale(.97)}.btn.primary{background:var(--accent-green);border-color:var(--accent-green);color:var(--accent-green-ink)}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line))}.btn.small{font-size:13px;padding:8px 12px;border-radius:10px}.card{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:0 2px 7px #211d150a}.muted{color:var(--ink-dim);font-size:14px}.record-stage{position:relative;border-radius:var(--radius);overflow:hidden;background:var(--bg-sunken);border:1px solid var(--line);aspect-ratio:9 / 14;display:flex;align-items:center;justify-content:center}.record-stage video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.guide-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.guide-overlay svg{width:100%;height:100%}.guide-tip{position:absolute;left:12px;right:12px;top:12px;background:color-mix(in srgb,var(--bg-sunken) 80%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:13px;color:var(--ink)}.record-controls{display:flex;align-items:center;justify-content:center;gap:18px;padding:18px 0 6px}.rec-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:4px solid var(--ink);background:var(--danger);width:72px;height:72px;border-radius:50%;cursor:pointer;transition:border-radius .2s,transform .1s;box-shadow:0 0 0 6px color-mix(in srgb,var(--ink) 8%,transparent)}.rec-btn.recording{border-radius:18px;animation:pulse 1.2s infinite}@keyframes pulse{0%,to{box-shadow:0 0 0 6px color-mix(in srgb,var(--danger) 13%,transparent)}50%{box-shadow:0 0 0 12px color-mix(in srgb,var(--danger) 23%,transparent)}}.rec-time{font-variant-numeric:lining-nums tabular-nums;font-weight:700;font-size:18px;min-width:64px}.progress-wrap{display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;flex:1;text-align:center;padding:32px 16px}.progress-track{width:100%;max-width:320px;height:8px;border-radius:99px;background:var(--bg-sunken);border:1px solid var(--line);overflow:hidden}.progress-fill{height:100%;background:var(--accent-gold-ink);border-radius:99px;transition:width .2s}.player-stage{position:relative;border-radius:var(--radius);overflow:hidden;background:#000;border:1px solid var(--line)}.player-stage video{display:block;width:100%}.player-stage canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.tracer-held-label{position:absolute;left:3.5%;right:3.5%;top:60px;z-index:2;width:fit-content;max-width:90%;padding:4px 7px;border-radius:4px;color:#fff;background:#14271ed9;font-size:11px;pointer-events:none}.overlay-toggle{position:absolute;top:8px;right:8px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border-radius:8px;border:1px solid var(--line);background:#00000073;color:#fff;cursor:pointer}.overlay-toggle svg{width:18px;height:18px}.overlay-toggle.off{color:#d5d5d5}.overlay-toggle:focus-visible{outline-color:#fff}.player-controls{display:flex;flex-wrap:wrap;gap:8px;padding:10px 0;align-items:center}.overlay-legend{display:flex;flex-wrap:wrap;gap:6px 12px;padding:8px 2px 0}.legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-dim)}.legend-swatch{display:inline-block;width:16px;height:0}.legend-swatch.line{border-top:3px solid currentColor}.legend-swatch.ring{width:13px;height:13px;border:2px solid currentColor;border-radius:50%}.phase-tag{display:inline-block;margin-right:8px;padding:1px 8px;border-radius:99px;background:var(--bg-raised);border:1px solid var(--line);color:var(--accent-gold-ink);font-weight:700}.scrubber{display:flex;align-items:center;gap:10px;padding:16px 0 0}.scrub-track-wrap{position:relative;flex:1;display:flex;align-items:center}.scrub-track-wrap input[type=range]{flex:1}.scrub-mark{position:absolute;top:-14px;transform:translate(-50%);font-size:9px;font-weight:800;color:var(--ink-dim);pointer-events:none}.scrub-mark.impact{color:var(--accent-gold-ink);top:-16px;font-size:12px}.scrubber input[type=range]{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:6px;border-radius:99px;background:var(--bg-sunken);border:1px solid var(--line);cursor:pointer}.scrubber input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent-gold);border:2px solid var(--bg);cursor:grab}.scrubber input[type=range]::-moz-range-thumb{width:18px;height:18px;border:2px solid var(--bg);border-radius:50%;background:var(--accent-gold);cursor:grab}.scrub-time{font-variant-numeric:lining-nums tabular-nums;font-size:13px;font-weight:600;color:var(--ink);min-width:84px;text-align:right}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:inherit;font-size:13px;font-weight:600;border:1px solid var(--line);background:var(--bg-sunken);color:var(--ink-dim);border-radius:99px;padding:7px 14px;min-height:44px;cursor:pointer;transition:all .15s}.chip.on{background:var(--accent-gold);border-color:var(--accent-gold);color:var(--ink)}.keypos-row{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.keypos-row .btn{font-size:12px;padding:8px 4px;letter-spacing:0}.form-grid{display:flex;flex-direction:column;gap:14px}.form-grid label.field-label{font-size:13px;font-weight:600;letter-spacing:.01em;color:var(--ink-dim)}select,textarea,input[type=text]{font-family:inherit;font-size:16px;background:var(--bg-sunken);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:10px 12px;min-height:44px;width:100%}.swing-list{display:flex;flex-direction:column;gap:10px}.swing-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px;align-items:start}.swing-open{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px;align-items:center;text-align:left;font:inherit;color:inherit;padding:0;border:0;border-radius:6px;background:transparent;cursor:pointer;min-width:0}.swing-item.comparing .swing-open{grid-template-columns:72px minmax(0,1fr) auto}.swing-item.on{border-color:var(--accent-green);box-shadow:inset 0 0 0 1px var(--accent-green)}.swing-note-preview{color:var(--ink-dim);font-size:13px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.compare-check{color:var(--accent-green);font-weight:700}.swing-actions{position:relative}.swing-actions summary{display:grid;place-items:center;width:44px;height:44px;list-style:none;cursor:pointer;border-radius:8px;color:var(--ink-dim)}.swing-actions summary::-webkit-details-marker{display:none}.swing-actions[open] summary{background:var(--bg-sunken)}.swing-actions>button{position:absolute;right:0;top:48px;z-index:3;min-width:110px;box-shadow:0 8px 24px #211d1520}.diary-filters>summary{min-height:44px;padding:9px 0;cursor:pointer;font-weight:600}.diary-filter-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;padding:12px 0}.count-badge{font-size:12px;margin-left:10px;padding:2px 7px;border-radius:20px;background:var(--accent-green);color:var(--accent-green-ink)}.empty-filter p{margin-top:0}.swing-item img,.swing-item .thumb-fallback{width:72px;height:96px;object-fit:cover;border-radius:10px;background:var(--bg-sunken);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--ink-dim)}.swing-item .meta{display:flex;flex-direction:column;gap:4px;min-width:0}.swing-item .meta .when{font-size:13px;font-weight:500;color:var(--ink-dim)}.mini-chips{display:flex;flex-wrap:wrap;gap:4px}.mini-chip{font-size:12px;font-weight:600;border-radius:99px;padding:2px 8px;background:var(--bg-sunken);border:1px solid var(--line);color:var(--ink-dim)}.mini-chip.good{color:var(--accent-gold-ink);border-color:color-mix(in srgb,var(--accent-gold) 40%,var(--line))}.metric-card{display:flex;flex-direction:column;gap:4px}.metric-card .metric-name{font-size:13px;font-weight:600;letter-spacing:.01em;color:var(--ink-dim)}.metric-card .metric-value{font-family:var(--font);font-size:20px;font-weight:700;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.02em;line-height:1.4}.form-curve-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px}.form-curve-latest{font-family:var(--font);font-size:26px;font-weight:700;font-variant-numeric:lining-nums tabular-nums;color:var(--accent-green);white-space:nowrap}.form-curve-latest-label{font-family:var(--font);font-size:12px;font-weight:600;letter-spacing:0;color:var(--ink-dim);margin-left:6px}.form-curve-svg{width:100%;height:auto;display:block;margin-top:8px}.form-curve-svg text{font-family:var(--font);font-weight:500;font-variant-numeric:lining-nums tabular-nums}.angle-panel .angle-row{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:6px;font-size:13px;color:var(--ink-dim)}.angle-panel .angle-row strong{color:var(--accent-gold-ink);font-variant-numeric:lining-nums tabular-nums}.measured{display:flex;align-items:baseline;gap:8px;font-size:13px;color:var(--ink);font-variant-numeric:lining-nums tabular-nums}.measured-tag,.interp-tag{font-size:11px;font-weight:600;letter-spacing:.01em;color:var(--ink-dim);border:1px solid var(--line);border-radius:99px;padding:1px 6px;align-self:flex-start}.interp-tag{align-self:flex-start}.quality-banner{border-radius:var(--radius);padding:12px 14px;font-size:14px;border:1px solid var(--line)}.quality-banner.good{color:var(--ink-dim);background:var(--bg-raised)}.quality-banner.fair{background:color-mix(in srgb,var(--accent-gold) 12%,var(--bg-raised));border-color:color-mix(in srgb,var(--accent-gold) 40%,var(--line))}.quality-banner.poor{background:color-mix(in srgb,var(--danger) 12%,var(--bg-raised));border-color:color-mix(in srgb,var(--danger) 40%,var(--line))}.quality-banner ul{margin:6px 0;padding-left:18px}.metric-value.good{color:var(--accent-gold-ink)}.metric-value.warn{color:var(--warn-ink)}.bar-pair{display:flex;flex-direction:column;gap:6px;margin-top:8px}.bar-pair .bar-row{display:grid;grid-template-columns:64px 1fr 48px;gap:8px;align-items:center;font-size:13px}.bar-pair .bar-track{height:10px;background:var(--bg-sunken);border-radius:99px;overflow:hidden}.bar-pair .bar-fill{height:100%;border-radius:99px}.bar-fill.good{background:var(--accent-gold-ink)}.bar-fill.other{background:var(--ink-dim)}.screen-title{font-family:var(--font);font-size:22px;font-weight:700;letter-spacing:-.025em;margin:6px 0 12px}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:8px;align-items:center}.row.spread{justify-content:space-between}.empty-state{text-align:center;color:var(--ink-dim);padding:48px 24px;display:flex;flex-direction:column;gap:12px;align-items:center}.error-banner{background:color-mix(in srgb,var(--danger) 12%,var(--bg-raised));border:1px solid color-mix(in srgb,var(--danger) 40%,var(--line));border-radius:var(--radius);padding:12px 14px;font-size:14px}.help-btn{margin-left:auto;width:44px;height:44px;flex-shrink:0;border-radius:50%;border:1px solid var(--line);background:var(--bg-raised);color:var(--ink-dim);font-family:inherit;font-weight:700;font-size:15px;cursor:pointer}.assessment{display:flex;flex-direction:column;gap:14px}.assessment-summary{margin:0;font-size:16px;font-weight:700;line-height:1.4}.assess-group{display:flex;flex-direction:column;gap:10px}.assess-heading{font-size:13px;font-weight:700;letter-spacing:.01em}.assess-heading.good{color:var(--accent-gold-ink)}.assess-heading.warn{color:var(--warn-ink)}.assess-item{display:grid;grid-template-columns:22px 1fr;gap:8px;align-items:start}.assess-item p{margin:2px 0 0}.assess-mark{font-weight:700;font-size:16px;line-height:1.3}.assess-mark.good{color:var(--accent-gold-ink)}.assess-mark.warn{color:var(--warn-ink)}.assess-uncertain{border-top:1px solid var(--line);padding-top:10px}.assess-uncertain summary{cursor:pointer;color:var(--ink-dim);font-size:13px}.assess-uncertain p{margin:8px 0 0;font-size:13px}.assess-how{border-top:1px solid var(--line);padding-top:10px}.assess-how summary{cursor:pointer;color:var(--ink-dim);font-size:13px;font-weight:700}.assess-how .how-list{margin:8px 0;padding-left:18px;display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--ink-dim)}.assess-disclaimer{margin:0;font-size:12px;color:var(--ink-dim);font-style:italic;border-top:1px solid var(--line);padding-top:10px}.welcome-hero{padding:8px;background:var(--bg-sunken)}.demo-caption{text-align:center;margin:6px 0 2px;font-size:13px}.demo-legend{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.demo-legend li{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-dim)}.demo-legend .legend-swatch.line{width:22px}.demo-howto{margin:12px 0 2px;font-size:14px}.demo-perspective{text-align:center;margin:8px 0 2px;font-size:13px;color:var(--ink)}.step-row{display:grid;grid-template-columns:32px 1fr;gap:12px;align-items:start}.step-num{width:32px;height:32px;border-radius:50%;background:var(--accent-green);color:var(--accent-green-ink);font-family:var(--font);font-weight:700;display:flex;align-items:center;justify-content:center}.tip-list{margin:8px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:14px}.tip-list li{color:var(--ink)}.lang-switch{display:inline-flex;gap:0;border-radius:8px;overflow:hidden}.lang-switch button{font:inherit;font-size:12px;font-weight:600;padding:4px 8px;min-height:44px;border:1px solid var(--line);background:transparent;color:inherit;cursor:pointer}.lang-switch button+button{border-left:none}.lang-switch button.active{background:var(--accent-gold);color:var(--ink);border-color:var(--accent-gold)}.detect-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg-raised);font-size:13px;color:var(--ink-dim)}.detect-switch{font:inherit;font-size:13px;font-weight:700;padding:4px 10px;min-height:44px;border:1px solid var(--accent-gold);border-radius:8px;background:transparent;color:var(--accent-gold-ink);cursor:pointer;white-space:nowrap}.storage-notice{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.notice-dismiss{border:none;background:none;color:inherit;font-size:16px;line-height:1;padding:0 2px;min-width:44px;min-height:44px;cursor:pointer}.swing-feedback h3{margin:0 0 10px;font-size:18px}.swing-feedback p{margin:8px 0;line-height:1.55}.swing-feedback p:last-child{margin-bottom:0}.capture-note{border-left:3px solid var(--accent-gold);padding-left:12px;font-size:14px}.analysis-details>summary{cursor:pointer;font-weight:600;padding:9px 0;min-height:44px}.analysis-details[open]>summary{margin-bottom:16px}.tracer-about{margin-top:6px;font-size:12px}.tracer-about summary{cursor:pointer;color:var(--ink-dim)}.tracer-about p{margin:6px 0 0}.screen-intro{margin:-4px 0 8px;color:var(--ink-dim);font-size:15px}.record-stage.camera-unavailable{aspect-ratio:auto;min-height:250px;background:var(--bg-raised)}.camera-unavailable .empty-state{padding:30px 24px}.camera-unavailable p{margin:0;font-size:14px}.record-placeholder-icon{width:38px;height:38px;color:var(--accent-green)}.local-hint{margin:0;color:var(--ink-dim);text-align:center;font-size:13px}.insight-totals{display:grid;grid-template-columns:1fr 1fr;gap:12px}.insight-totals>div{padding:16px;border:1px solid var(--line);border-radius:var(--radius)}.insight-totals strong{display:block;font-size:30px;font-weight:700;color:var(--accent-green);line-height:1.3}.insight-totals span{font-size:13px;color:var(--ink-dim)}.video-patterns{border-top:3px solid var(--accent-green);padding:18px}.section-eyebrow{font-size:14px;font-weight:700;color:var(--accent-green)}.video-patterns p{margin:8px 0}.video-patterns p:last-child{margin-bottom:0}.pattern-observation{font-weight:600;font-size:18px;line-height:1.5}.pattern-cohort{padding-top:10px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-dim)}.feeling-insights>div>.muted:first-child{margin-top:0}.bar-pair .bar-row{grid-template-columns:minmax(90px,1fr) minmax(60px,1fr) 54px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
