:root{--color-bg:#fff;--color-fg:#1a1a1a;--color-muted:#6b6b6b;--color-border:#d9d9d9;--color-border-strong:#8a8a8a;--color-accent:#0a66c2;--color-accent-fg:#fff;--color-accent-soft:#e6f0fa;--color-danger:#c62828;--color-danger-fg:#fff;--color-danger-soft:#fdecea;--color-success:#1b7a3d;--color-success-soft:#e8f5ec;--color-fav:#b26a00;--color-warn:#f9a825;--color-warn-soft:#fff1c7;--skel-current:#00dc5a;--skel-base:#ff6ed2;--level-line:#ffd400;--color-surface:#f4f4f4;--color-scrim:#00000080;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--font-size-base:16px;--font-size-small:14px;--font-size-large:20px;--radius-s:8px;--radius-l:16px;--radius-pill:999px;--tap-size:44px;--tap-size-primary:52px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--color-bg:#121212;--color-fg:#ededed;--color-muted:#9a9a9a;--color-border:#3a3a3a;--color-border-strong:#7a7a7a;--color-accent:#6cb4ff;--color-accent-fg:#0a0a0a;--color-accent-soft:#16324d;--color-danger:#ff6b6b;--color-danger-fg:#0a0a0a;--color-danger-soft:#3a1c1c;--color-success:#5fd38a;--color-success-soft:#163222;--color-fav:#ffc940;--color-warn-soft:#4a3c0c;--color-surface:#1e1e1e}}*{box-sizing:border-box}html,body{background:var(--color-bg);color:var(--color-fg);font-family:system-ui,-apple-system,Hiragino Sans,Noto Sans JP,sans-serif;font-size:var(--font-size-base);margin:0;line-height:1.5}.app{max-width:800px;padding:var(--space-3);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom));margin:0 auto}h1{font-size:var(--font-size-base);margin:0}h2{font-size:var(--font-size-large);margin:var(--space-3) 0 var(--space-2)}h3{font-size:var(--font-size-base);margin:var(--space-3) 0 var(--space-1)}.muted{color:var(--color-muted)}.small{font-size:var(--font-size-small)}.danger{color:var(--color-danger)}.num{font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}button{min-height:var(--tap-size);font:inherit;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-s);background:var(--color-surface);color:var(--color-fg)}button:disabled{opacity:.5}button:active:not(:disabled){filter:brightness(.92)}button.primary{min-height:var(--tap-size-primary);background:var(--color-accent);color:var(--color-accent-fg);border-color:var(--color-accent);font-weight:700}button.danger{background:var(--color-bg);color:var(--color-danger);border-color:var(--color-danger)}button.danger-fill{min-height:var(--tap-size-primary);background:var(--color-danger);color:var(--color-danger-fg);border-color:var(--color-danger);font-weight:700}button.icon{width:var(--tap-size);background:0 0;border:0;flex:none;padding:0;font-size:24px;line-height:1}.full{width:100%;display:block}.fav-on{color:var(--color-fav)}.fav-off{color:var(--color-muted)}select,textarea,input[type=file],input[type=text],input[type=number],input[type=datetime-local]{min-height:var(--tap-size);font:inherit;padding:0 var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-s);background:var(--color-bg);color:var(--color-fg)}input[type=file]{padding:var(--space-2)}textarea{width:100%;padding:var(--space-2) var(--space-3);resize:vertical;display:block}.input-error{border-color:var(--color-danger)!important}button.chip{border-radius:var(--radius-pill);border-color:var(--color-border-strong);background:var(--color-bg);font-size:var(--font-size-small)}button.chip[aria-pressed=true]{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-accent);font-weight:700}.chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.seg{border:1px solid var(--color-border-strong);border-radius:var(--radius-s);display:flex;overflow:hidden}.seg.spaced{margin:var(--space-2) 0}.seg button{background:var(--color-bg);font-size:var(--font-size-small);border:0;border-radius:0;flex:1}.seg button[aria-pressed=true]{background:var(--color-accent-soft);color:var(--color-accent);font-weight:700}.notice{border:1px solid var(--color-border);border-radius:var(--radius-s);background:var(--color-surface);margin:12px 0;padding:12px}.notice>:first-child{margin-top:0}.notice>:last-child{margin-bottom:0}.notice p{margin:var(--space-1) 0}.notice.ok{background:var(--color-success-soft);border-color:var(--color-success)}.notice.ok strong{color:var(--color-success)}.notice.err{background:var(--color-danger-soft);border-color:var(--color-danger)}.notice.err strong{color:var(--color-danger)}.stack{gap:var(--space-2);margin-top:var(--space-2);flex-direction:column;display:flex}.status-dot{color:var(--color-danger)}.gap-destructive{height:var(--space-5)}.tabs{border-bottom:1px solid var(--color-border);margin:var(--space-2) calc(-1 * var(--space-3)) var(--space-3);padding:0 var(--space-2);display:flex}.tab{padding:0 var(--space-1);color:var(--color-muted);font-size:var(--font-size-small);white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;border-radius:0;flex:1;font-weight:700}.tab.active{color:var(--color-fg);border-bottom-color:var(--color-fg)}.row{gap:var(--space-2);margin:var(--space-2) 0;flex-wrap:wrap;align-items:center;display:flex}.row.nowrap{flex-wrap:nowrap}.row.tight{margin:0}.field{gap:var(--space-1);margin:var(--space-2) 0;flex-direction:column;display:flex}.field.tight{margin:0}.field>span{font-size:var(--font-size-small);color:var(--color-muted)}.progress{width:100%;height:12px}.screens{flex-direction:column;display:flex}.slider{width:100%;min-height:var(--tap-size);margin:var(--space-1) 0 0;accent-color:var(--color-accent)}.grow{flex:1;min-width:0}.row>.field.grow{min-width:12em}.row>.field+button{margin-bottom:var(--space-2);align-self:flex-end}.row>.field.tight+button{margin-bottom:0}.table tr.unavailable td{color:var(--color-muted)}.table{border-collapse:collapse;width:100%;font-size:var(--font-size-small);margin:var(--space-2) 0}.table th,.table td{border-bottom:1px solid var(--color-border);padding:var(--space-1) var(--space-2);text-align:left;vertical-align:top}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.metric-table{border-collapse:collapse;width:100%;margin:var(--space-1) 0 var(--space-2)}.metric-table th{text-align:left;font-size:var(--font-size-small);color:var(--color-muted);padding:12px 0 var(--space-1);border-bottom:1px solid var(--color-border-strong)}.metric-table td{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);vertical-align:middle}.metric-table td small{font-size:var(--font-size-small);color:var(--color-muted);display:block}.metric-table td.value{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.metric-table tr.unavailable td{color:var(--color-muted);font-weight:400}dialog.dialog{width:min(480px, calc(100vw - 2 * var(--space-4)));max-height:calc(100vh - 2 * var(--space-3));max-height:calc(100dvh - 2 * var(--space-3));border-radius:var(--radius-l);background:var(--color-bg);color:var(--color-fg);border:0;padding:20px;overflow-y:auto}dialog.dialog::backdrop{background:var(--color-scrim)}dialog.dialog h2{margin-top:0}@media (width<=599px){dialog.dialog.sheet{width:100vw;max-width:100vw;height:100dvh;max-height:none;padding:var(--space-3);padding-top:calc(var(--space-3) + env(safe-area-inset-top));padding-bottom:calc(var(--space-3) + env(safe-area-inset-bottom));border-radius:0;margin:0}}.dialog-target{margin:var(--space-2) 0;align-items:center;gap:12px;display:flex}.dialog-target p{margin:0}details.fold>summary{min-height:var(--tap-size);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-s);background:var(--color-surface);cursor:pointer;align-items:center;display:flex}details.fold[open]>summary{margin-bottom:var(--space-2)}details.fold{margin:12px 0}.lib-month{font-size:var(--font-size-small);color:var(--color-muted);margin:var(--space-3) 0 0;padding-bottom:var(--space-1);border-bottom:1px solid var(--color-border);font-weight:700}.lib-list{margin:0;padding:0;list-style:none}.lib-item{align-items:center;gap:var(--space-1);border-bottom:1px solid var(--color-border);display:flex}button.lib-open{min-width:0;padding:var(--space-2) 0;text-align:left;background:0 0;border:0;border-radius:0;flex:1;align-items:center;gap:12px;display:flex}.thumb{border-radius:var(--radius-s);object-fit:cover;background:#3d444d;flex:none;width:60px;height:80px;display:block}.lib-main{flex:1;min-width:0;display:block}.lib-line1{justify-content:space-between;align-items:baseline;gap:var(--space-2);font-variant-numeric:tabular-nums;font-weight:700;display:flex}.lib-line2{font-size:var(--font-size-small);color:var(--color-muted);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.still-box{border-radius:var(--radius-s);background:#000;width:100%;max-height:60vh;display:block}.dev-errors{border:2px solid var(--color-danger);border-radius:var(--radius-s);padding:var(--space-2);margin:var(--space-2) 0;font-size:var(--font-size-small)}.dev-errors pre{white-space:pre-wrap;word-break:break-all;margin:var(--space-1) 0}.textarea{width:100%;font-family:ui-monospace,Menlo,monospace;font-size:12px}.autotest-done{color:var(--color-accent);font-size:1.2rem;font-weight:700}.pair-role{align-items:center;gap:var(--space-1);font-size:var(--font-size-small);margin:0;font-weight:700;line-height:1.3;display:flex}.skeleton-key{border-top:4px solid var(--skel-current);width:22px;display:inline-block}.skeleton-key.base{border-top:4px dashed var(--skel-base)}.photo-note{margin:var(--space-1) 0 0}.pair-lines{min-width:0}.pair-lines p{overflow-wrap:anywhere;margin:0}.pair-lines .skeleton-key{margin-right:var(--space-1);vertical-align:middle}.side-by-side{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.side-by-side .pair-role{margin-bottom:var(--space-1)}.diff-table{border-collapse:collapse;width:100%;margin:var(--space-1) 0 var(--space-2)}.diff-table th{text-align:right;font-size:var(--font-size-small);color:var(--color-muted);padding:12px 0 var(--space-1);border-bottom:1px solid var(--color-border-strong);white-space:nowrap}.diff-table th:first-child{text-align:left;white-space:normal}.diff-table td{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);vertical-align:middle}.diff-table td small{font-size:var(--font-size-small);color:var(--color-muted);display:block}.diff-table td.value,.diff-table td.diff{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:var(--space-2)}.diff-table td.value{font-size:var(--font-size-small)}.diff-table td.diff{padding-right:var(--space-1);font-weight:700}.diff-table td.diff.notable{background:var(--color-warn-soft)}.diff-table td.diff.large{background:var(--color-danger-soft);color:var(--color-danger)}.diff-table tr.unavailable td{color:var(--color-muted);font-weight:400}.detail-row{align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-s);padding:var(--space-2) var(--space-2) var(--space-2) 12px;margin:var(--space-2) 0;display:flex}.level-box{background:var(--color-surface);border-radius:var(--radius-s);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;max-height:62dvh;display:block}.level-grab{cursor:grab;touch-action:none}.level-grab:focus-visible{stroke:var(--color-accent);outline:none}.level-readout{font-size:var(--font-size-large);margin:var(--space-2) 0 0;font-weight:700}.stage{border-radius:var(--radius-s);touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#000;margin:0 auto;position:relative;overflow:hidden}.stage-layer{transform-origin:0 0;pointer-events:none;position:absolute;top:0;left:0}.stage-layer video,.stage-layer img{width:100%;height:100%;display:block}.stage-svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.opacity-row{align-items:center;gap:var(--space-2);margin-top:var(--space-1);display:flex}.opacity-row>span{white-space:nowrap}.opacity-row .slider{margin:0}.chips.spaced{margin:var(--space-2) 0}.numbers-fold{margin:var(--space-3) 0 var(--space-2)}.numbers-fold h3{margin:0 0 var(--space-1)}.numbers-fold h3 button{text-align:left;border:0;border-bottom:1px solid var(--color-border-strong);background:0 0;border-radius:0;padding:0;font-weight:700}.numbers-hint{font-size:var(--font-size-small);color:var(--color-accent);margin-left:var(--space-1);font-weight:400}.steps{gap:var(--space-1);margin:0 0 var(--space-2);color:var(--color-muted);padding:0;font-size:12px;list-style:none;display:flex}.steps li{text-align:center;border-top:3px solid var(--color-border);white-space:nowrap;flex:1;padding-top:2px}.steps li.on{color:var(--color-accent);border-top-color:var(--color-accent);font-weight:700}.steps li.done{border-top-color:var(--color-success)}.step-title{font-size:var(--font-size-base);margin:0 0 var(--space-2)}.wave-bar{margin:var(--space-1) 0}.wave{width:100%;height:40px;margin-bottom:-6px;display:block}.wave-single{fill:var(--color-border-strong);opacity:.6}.wave-base{fill:var(--skel-base);opacity:.5}.wave-current{fill:var(--skel-current);opacity:.5}.wave-none{margin:var(--space-1) 0 0;text-align:right}.wave-track{position:relative}.wave-slider{z-index:1;display:block;position:relative}.wave-bar.arrow .wave-slider::-webkit-slider-thumb{opacity:0}.wave-bar.arrow .wave-slider::-moz-range-thumb{opacity:0}.wave-arrow{border-left:9px solid #0000;border-right:9px solid #0000;border-bottom:14px solid var(--color-accent);pointer-events:none;z-index:2;width:0;height:0;margin-left:-9px;position:absolute;top:calc(50% - 2px)}.wave-arrow:before{content:"";background:var(--color-accent);width:2px;height:64px;position:absolute;bottom:0;left:-1px}.wave-dim{background:repeating-linear-gradient(45deg, var(--color-border) 0 4px, transparent 4px 8px);pointer-events:none;height:16px;position:absolute;top:calc(50% - 8px)}.wave-marker{background:var(--color-danger);pointer-events:none;width:2px;margin-left:-1px;position:absolute;top:2px;bottom:2px}.wave-marker span{color:var(--color-danger);white-space:nowrap;font-size:11px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.wave-handles{height:28px;margin-top:-4px;position:relative}.wave-handle{background:var(--color-accent);touch-action:none;cursor:ew-resize;border-radius:0 0 4px 4px;width:16px;height:20px;margin-left:-8px;position:absolute;top:0}.wave-handle:after{content:"";background:var(--color-accent);width:2px;height:18px;position:absolute;bottom:100%;left:7px}.wave-handle:before{content:"";position:absolute;inset:-4px -14px -12px}.wave-handle span{color:var(--color-accent);white-space:nowrap;margin-top:2px;font-size:12px;position:absolute;top:100%;left:50%;transform:translate(-50%)}.wave-handle.start span{transform:translate(-20%)}.wave-handle.end span{transform:translate(-80%)}.wave-scale{justify-content:space-between;margin-top:2px;display:flex}.wave-bar:has(.wave-handles) .wave-scale{margin-top:16px}.transport button{padding:0 var(--space-2);white-space:nowrap}.transport .seg{margin:0}.player-time{margin:var(--space-1) 0 0}.single-player .stage{margin:0 auto}.pick-circle{border:2px solid var(--color-border-strong);box-sizing:border-box;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:15px;font-weight:700;display:inline-flex}.pick-circle.on{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-fg)}.lib-item.picked{background:var(--color-accent-soft);margin:0 calc(-1 * var(--space-2));padding:0 var(--space-2);border-radius:var(--radius-s)}.pick-bar{background:var(--color-bg);border-top:1px solid var(--color-border);padding:var(--space-2) 0 calc(var(--space-2) + env(safe-area-inset-bottom));margin:var(--space-3) calc(-1 * var(--space-3)) calc(-1 * var(--space-4));padding-left:var(--space-3);padding-right:var(--space-3);position:sticky;bottom:0}.pick-bar .row{margin-top:0}.kv{gap:2px var(--space-3);margin:var(--space-2) 0 var(--space-3);grid-template-columns:auto 1fr;display:grid}.kv dt{color:var(--color-muted)}.kv dd{overflow-wrap:anywhere;margin:0}.ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.stack.spaced{margin:var(--space-3) 0 var(--space-2)}.record-form .field{margin-top:var(--space-2)}.waiting{text-align:center;font-size:var(--font-size-large);margin:var(--space-5) 0;animation:2s ease-in-out infinite waiting-blink}@keyframes waiting-blink{0%,to{opacity:1}50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.waiting{animation:none}}
