:root{color:#202522;font-synthesis:none;text-rendering:optimizelegibility;--ink:#202522;--muted:#68706b;--paper:#fffef9;--line:#c9cec8;--line-strong:#7b847e;--accent:#167c67;--accent-dark:#0d5b4c;--accent-soft:#e5f2ed;--warning:#a35c00;--danger:#a4362d;--camera:#0d1110;background:#f2f0ea;font-family:Yu Gothic UI,Hiragino Sans,Noto Sans JP,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:#f2f0ea;min-width:320px}body{background-color:#f2f0ea;background-image:linear-gradient(#2025220a 1px,#0000 1px),linear-gradient(90deg,#2025220a 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:32px 32px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{border:1px solid var(--line-strong);background:var(--paper);min-height:44px;color:var(--ink);cursor:pointer;border-radius:3px;padding:.7rem 1rem;font-weight:700;transition:background .12s,border-color .12s,color .12s}button:hover:not(:disabled){border-color:var(--accent-dark);background:#f4faf7}button:focus-visible,input:focus-visible,summary:focus-visible{outline-offset:2px;outline:3px solid #167c6747}button:disabled{cursor:not-allowed;opacity:.42}button.primary{border-color:var(--accent-dark);background:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:var(--accent-dark);border-color:#083d34}button.danger{color:var(--danger);border-color:#d2a09c}.app-shell{width:min(100% - 32px,1600px);margin:0 auto;padding:16px 0 20px}.app-header{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:center;gap:24px;min-height:76px;padding:0 2px 14px;display:flex}.app-title{align-items:center;gap:14px;min-width:0;display:flex}.app-title-mark{border:1px solid var(--ink);background:var(--paper);flex:none;width:48px;height:48px;position:relative}.app-title-mark:before{background:var(--ink);content:"";width:2px;position:absolute;top:8px;bottom:8px;left:23px}.app-title-mark:after{border:3px solid var(--paper);background:var(--accent);width:12px;height:12px;box-shadow:0 0 0 1px var(--accent-dark);content:"";border-radius:50%;position:absolute;top:18px;left:17px}.eyebrow,.section-label{color:var(--accent-dark);letter-spacing:.14em;margin:0;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.72rem;font-weight:800}.app-header h1{letter-spacing:.01em;margin:2px 0 1px;font-size:clamp(1.6rem,2.5vw,2.55rem);line-height:1.1}.app-subtitle{color:var(--muted);margin:0;font-size:.86rem}.mediapipe-status{border:1px solid var(--line-strong);background:var(--paper);grid-template-columns:auto auto auto;align-items:center;gap:8px;min-width:220px;padding:10px 12px;font-size:.86rem;display:grid}.mediapipe-status-dot{background:0 0;border:2px solid;border-radius:50%;width:10px;height:10px}.mediapipe-status-name{color:var(--muted)}.mediapipe-status strong{justify-self:end}.mediapipe-status-active{border-color:var(--accent);color:var(--accent-dark)}.mediapipe-status-active .mediapipe-status-dot{background:var(--accent)}.mediapipe-status-loading{color:#55605a}.mediapipe-status-loading .mediapipe-status-dot{animation:1.1s ease-in-out infinite status-pulse}.mediapipe-status-warning{color:var(--warning);border-color:#c98a38}.mediapipe-status-error{color:var(--danger);border-color:#cf8179}.mediapipe-status-stopped,.mediapipe-status-idle{color:var(--muted)}@keyframes status-pulse{50%{background:currentColor;transform:scale(.72)}}.workspace-grid{grid-template-columns:minmax(0,2.15fr) minmax(360px,.85fr);align-items:stretch;gap:16px;margin-top:16px;display:grid}.camera-panel{border:1px solid var(--ink);background:var(--camera);grid-template-rows:minmax(0,1fr) auto;min-width:0;min-height:clamp(510px,100vh - 156px,790px);display:grid;overflow:hidden}.camera-stage{background:var(--camera);min-height:0;position:relative;overflow:hidden}.camera-stage video,.camera-stage canvas{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.camera-stage canvas{pointer-events:none}.camera-orientation-label{z-index:3;color:#fff;letter-spacing:.04em;pointer-events:none;background:#0d1110c2;border:1px solid #ffffff70;padding:7px 10px;font-size:.78rem;font-weight:700;position:absolute;top:16px;left:16px}.camera-corner{z-index:2;pointer-events:none;border-color:#ffffff94;width:34px;height:34px;position:absolute}.camera-corner-top-left{border-top:2px solid;border-left:2px solid;top:14px;left:14px}.camera-corner-top-right{border-top:2px solid;border-right:2px solid;top:14px;right:14px}.camera-corner-bottom-left{border-bottom:2px solid;border-left:2px solid;bottom:14px;left:14px}.camera-corner-bottom-right{border-bottom:2px solid;border-right:2px solid;bottom:14px;right:14px}.camera-placeholder{color:#f0f4f1;text-align:center;place-content:center;gap:8px;padding:24px;display:grid;position:absolute;inset:0}.camera-placeholder-index{color:#79b8a8;letter-spacing:.18em;justify-self:center;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.78rem}.camera-placeholder strong{font-size:clamp(1.1rem,1.8vw,1.55rem)}.camera-placeholder span:last-child{color:#aab5af;font-size:.9rem}.camera-footer{color:#c6cdc9;background:#171d1a;border-top:1px solid #414844;justify-content:space-between;align-items:center;gap:20px;min-height:48px;padding:10px 14px;font-size:.78rem;display:flex}.body-detection{color:#e7b066;white-space:nowrap;align-items:center;gap:8px;font-weight:700;display:inline-flex}.body-detection-dot{border:1px solid;border-radius:50%;width:9px;height:9px}.body-detected{color:#72c7ae}.body-detected .body-detection-dot{background:currentColor}.workout-console{border:1px solid var(--ink);background:var(--paper);grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:clamp(510px,100vh - 156px,790px);display:grid}.status-panel,.training-console,.control-panel{min-width:0;padding:18px 20px}.status-panel{border-bottom:1px solid var(--line)}.status-main-message{margin:10px 0 0;font-size:clamp(1rem,1.25vw,1.22rem);font-weight:700;line-height:1.55}.calibration-progress{color:var(--muted);grid-template-columns:auto 1fr;align-items:center;gap:12px;margin-top:14px;font-size:.78rem;display:grid}.calibration-progress progress{appearance:none;border:0;border-radius:0;width:100%;height:7px}.calibration-progress progress::-webkit-progress-bar{background:#e1e5e1}.calibration-progress progress::-webkit-progress-value{background:var(--accent)}.transcript-line{border-top:1px dashed var(--line);grid-template-columns:auto minmax(0,1fr);gap:10px;margin:12px 0 0;padding-top:12px;font-size:.82rem;display:grid}.transcript-line span{color:var(--muted)}.transcript-line strong{overflow-wrap:anywhere}.error-box{border-left:3px solid var(--danger);color:#782720;background:#fff2f0;margin-top:14px;padding:10px 12px;font-size:.84rem}.error-box p{margin:4px 0 0}.training-console{border-bottom:1px solid var(--line);grid-template-rows:auto minmax(0,1fr) auto;gap:18px;display:grid}.count-display{border-bottom:1px solid var(--line);padding-bottom:15px}.count-value{align-items:baseline;gap:10px;margin-top:4px;display:flex}.count-value strong{letter-spacing:-.08em;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:clamp(3.8rem,6vw,6.4rem);font-weight:700;line-height:.95}.count-value span{color:var(--muted);font-size:1.05rem;font-weight:700}.motion-rail{grid-template-columns:105px 1fr;align-items:center;gap:18px;min-height:190px;display:grid}.motion-rail-heading{align-self:start}.motion-rail-heading span{color:var(--muted);font-size:.76rem;display:block}.motion-rail-heading strong{color:var(--accent-dark);margin-top:5px;font-size:1rem;display:block}.motion-rail-list{gap:17px;margin:0;padding:0;list-style:none;display:grid;position:relative}.motion-rail-list:before{background:var(--line-strong);content:"";width:1px;position:absolute;top:12px;bottom:12px;left:7px}.motion-rail-list li{color:#858d88;grid-template-columns:16px 1fr;align-items:center;gap:12px;min-height:24px;font-size:.86rem;font-weight:700;display:grid;position:relative}.motion-rail-marker{z-index:1;border:2px solid var(--line-strong);background:var(--paper);border-radius:50%;width:15px;height:15px}.motion-rail-list li.is-current{color:var(--accent-dark)}.motion-rail-list li.is-current .motion-rail-marker{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 5px #167c6724}.motion-rail-list.is-unavailable li{color:#9caaa3}.motion-rail-list.is-unavailable .motion-rail-marker{background:#e5e8e5}.time-metrics{background:var(--line);border:1px solid var(--line);grid-template-columns:1fr 1fr;gap:1px;margin:0;display:grid}.time-metrics div{background:#f8f8f4;padding:11px 12px}.time-metrics dt{color:var(--muted);font-size:.72rem}.time-metrics dd{margin:3px 0 0;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:1.25rem;font-weight:700}.control-panel{align-self:end}.start-button{width:100%;min-height:54px;margin-top:10px;font-size:1rem}.active-controls{gap:10px;margin-top:10px;display:grid}.manual-start-row{grid-template-columns:minmax(100px,.8fr) minmax(150px,1.2fr);gap:8px;display:grid}.manual-target{color:var(--muted);gap:4px;font-size:.72rem;font-weight:700;display:grid}.manual-target input{border:1px solid var(--line-strong);width:100%;min-height:44px;color:var(--ink);background:#fff;border-radius:3px;padding:8px 10px;font-weight:700}.secondary-controls{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.support-note{color:var(--warning);margin:10px 0 0;font-size:.78rem}.result-panel{border:1px solid var(--accent-dark);background:var(--accent-soft);grid-template-columns:minmax(240px,1fr) minmax(0,1.5fr);align-items:center;gap:24px;margin-top:16px;padding:18px 20px;display:grid}.result-panel h2{color:var(--accent-dark);margin:6px 0 2px;font-size:1.55rem}.result-panel p{margin:0}.result-values{background:#a9c9bf;border:1px solid #a9c9bf;grid-template-columns:repeat(3,1fr);gap:1px;margin:0;display:grid}.result-values div{background:#f8fffc;padding:10px 12px}.result-values dt{color:var(--muted);font-size:.72rem}.result-values dd{margin:3px 0 0;font-weight:800}.debug-panel{border:1px solid var(--line-strong);background:#fffef9e0;margin-top:12px}.debug-panel summary{color:#49514c;cursor:pointer;-webkit-user-select:none;user-select:none;padding:11px 14px;font-size:.8rem;font-weight:700}.debug-panel[open] summary{border-bottom:1px solid var(--line)}.debug-grid{background:var(--line);grid-template-columns:repeat(8,minmax(0,1fr));gap:1px;margin:0;padding:1px;display:grid}.debug-grid div{background:#fbfbf7;min-width:0;padding:9px 10px}.debug-grid dt{color:var(--muted);font-size:.68rem}.debug-grid dd{overflow-wrap:anywhere;margin:3px 0 0;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:.78rem;font-weight:700}.debug-transcript{grid-column:span 2}.privacy-notice{color:#6f7772;margin:10px 2px 0;font-size:.72rem;line-height:1.5}.countdown-overlay{z-index:20;color:#fff;background:#0d1110db;place-items:center;display:grid;position:fixed;inset:0}.countdown-overlay span{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:min(38vw,18rem);font-weight:700;line-height:1}@media (width<=1180px){.workspace-grid{grid-template-columns:minmax(0,1.55fr) minmax(340px,.85fr)}.debug-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width<=900px){.app-shell{width:min(100% - 20px,780px);padding-top:10px}.app-header{align-items:flex-start}.workspace-grid{grid-template-columns:1fr}.camera-panel,.workout-console{min-height:auto}.camera-stage{min-height:55vw}.workout-console{grid-template-rows:auto auto auto}.result-panel{grid-template-columns:1fr}}@media (width<=640px){.app-header{display:grid}.app-title-mark{width:42px;height:42px}.app-title-mark:before{left:20px}.app-title-mark:after{top:15px;left:14px}.mediapipe-status{width:100%;min-width:0}.camera-footer{gap:4px;display:grid}.motion-rail{grid-template-columns:90px 1fr}.manual-start-row,.secondary-controls,.time-metrics,.result-values{grid-template-columns:1fr}.debug-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.debug-transcript{grid-column:span 2}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
