:root{--bg: #F7F8F5;--surface: #FFFFFF;--surface-2: #E8EAE5;--primary: #4A7C59;--primary-light: #6B9B78;--primary-dark: #3A6347;--primary-muted: #C2D5C8;--accent: #D4845A;--accent-light: #E6B08A;--text: #1E2B22;--text-2: #7A7F76;--text-muted: #B8BCB3;--score-high: #4A7C59;--score-mid: #D4845A;--score-low: #A06060;--border: #E8EAE5;--shadow: rgba(30, 43, 34, .06);--overlay: rgba(30, 43, 34, .3);--sp-xs: 4px;--sp-sm: 8px;--sp-md: 16px;--sp-lg: 24px;--sp-xl: 32px;--sp-xxl: 48px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 24px;--r-full: 9999px;--fs-xs: 11px;--fs-sm: 13px;--fs-md: 15px;--fs-lg: 18px;--fs-xl: 22px;--fs-xxl: 28px;--fs-hero: 36px;--fw-normal: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--font: "Inter", "Noto Sans JP", sans-serif;--shadow-standard: 0 2px 8px var(--shadow);--shadow-elevated: 0 4px 12px rgba(30, 43, 34, .1)}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text)}button,input,textarea{font:inherit}button{color:inherit}.app-shell{width:100%;min-height:100dvh;max-width:430px;margin:0 auto;background:var(--bg);position:relative;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-elevated)}.appbar{display:flex;align-items:center;gap:var(--sp-sm);padding:calc(var(--sp-lg) + env(safe-area-inset-top)) var(--sp-lg) var(--sp-md)}.appbar .back,.back{width:32px;height:32px;border-radius:var(--r-full);border:none;background:var(--surface);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-standard);cursor:pointer}.appbar .title{font-size:var(--fs-lg);font-weight:var(--fw-bold)}.pill{display:inline-flex;align-items:center;gap:6px;background:var(--primary-muted);color:var(--primary-dark);font-size:var(--fs-xs);font-weight:var(--fw-medium);padding:5px 12px;border-radius:var(--r-full);white-space:nowrap}.pill .dot{width:6px;height:6px;border-radius:var(--r-full);background:var(--primary)}.pill.ghost{background:var(--surface);color:var(--text-2);box-shadow:var(--shadow-standard)}.pill.ghost .dot{background:var(--primary)}.home-privacy .pill,.r-privacy .pill{white-space:normal;line-height:1.5}.btn{min-height:44px;border:none;cursor:pointer;font-family:var(--font);font-size:var(--fs-md);font-weight:var(--fw-semibold);border-radius:var(--r-full);display:flex;align-items:center;justify-content:center;gap:var(--sp-sm);padding:0 var(--sp-lg);transition:opacity .12s,transform .12s}.btn:active{opacity:.85;transform:scale(.97)}.btn:disabled{opacity:.6;cursor:default;transform:none}.btn-primary{background:var(--primary);color:var(--surface)}.btn-secondary{background:var(--surface-2);color:var(--text-2)}.btn-wide{width:100%;height:52px}.card{background:var(--surface);border-radius:var(--r-lg);padding:var(--sp-lg);box-shadow:var(--shadow-standard)}.link-btn,.text-nav{border:none;background:transparent;color:var(--text-2);cursor:pointer;font-size:var(--fs-sm);font-weight:var(--fw-medium)}.home-body{padding:0 var(--sp-lg);flex:1;display:flex;flex-direction:column}.home-top{display:flex;justify-content:space-between;align-items:center;padding-top:calc(var(--sp-lg) + env(safe-area-inset-top))}.home-privacy{display:flex;justify-content:flex-start;margin-top:var(--sp-md)}.wordmark{font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--primary-dark)}.hero{margin-top:var(--sp-xxl)}.hero h1{font-size:var(--fs-hero);font-weight:var(--fw-bold);line-height:1.2;letter-spacing:0}.hero p{font-size:var(--fs-md);color:var(--text-2);margin-top:var(--sp-sm)}.exercise-list{display:flex;flex-direction:column;gap:var(--sp-md);margin-top:var(--sp-xl)}.exercise-chip{display:flex;align-items:center;gap:var(--sp-md);background:var(--surface);border-radius:var(--r-lg);padding:var(--sp-md) var(--sp-lg);box-shadow:var(--shadow-standard);border:2px solid transparent;min-height:64px}.exercise-chip.selected{border-color:var(--primary)}.exercise-chip .ic,.streak-card .ic,.mini-receipt .ic,.manual-panel .ic{width:44px;height:44px;border-radius:var(--r-md);background:var(--primary-muted);color:var(--primary-dark);display:flex;align-items:center;justify-content:center;flex:0 0 auto}.exercise-chip.dim .ic{background:var(--surface-2);color:var(--text-2)}.exercise-chip .nm{font-size:var(--fs-md);font-weight:var(--fw-semibold)}.exercise-chip .sub{font-size:var(--fs-sm);color:var(--text-2);margin-top:2px}.exercise-chip.dim .nm{color:var(--text-2)}.exercise-chip .tag{margin-left:auto;font-size:var(--fs-xs);color:var(--primary-dark);background:var(--primary-muted);padding:3px 10px;border-radius:var(--r-full)}.home-foot{margin-top:auto;padding-bottom:calc(var(--sp-xl) + env(safe-area-inset-bottom))}.streak-line{display:flex;align-items:center;gap:var(--sp-sm);justify-content:center;margin-bottom:var(--sp-md)}.streak-dots{display:flex;gap:5px}.streak-dots i{width:8px;height:8px;border-radius:var(--r-full);background:var(--surface-2)}.streak-dots i.on{background:var(--primary)}.streak-line span{font-size:var(--fs-sm);color:var(--text-2)}.btn-start{width:100%;height:56px;font-size:var(--fs-lg)}.manual-link{width:100%;margin-top:var(--sp-md);min-height:36px}.cam{position:relative;flex:1;overflow:hidden;background:linear-gradient(180deg,var(--surface-2) 0%,var(--primary-muted) 130%)}.cam svg.overlay{position:absolute;inset:0;width:100%;height:100%}.cam .top-strip,.top-strip{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-sm);padding:calc(var(--sp-lg) + env(safe-area-inset-top)) var(--sp-lg) var(--sp-lg);pointer-events:none;z-index:2}.top-strip>*{pointer-events:auto}.close{width:36px;height:36px;border-radius:var(--r-full);border:none;background:var(--surface);color:var(--text-2);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-standard);cursor:pointer}.sheet{background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;padding:var(--sp-lg);box-shadow:var(--shadow-elevated)}.sheet .status{display:flex;align-items:center;gap:var(--sp-sm);margin-bottom:var(--sp-md)}.sheet .status .ok-ic,.save-card .ok-big{width:24px;height:24px;border-radius:var(--r-full);background:var(--primary);color:var(--surface);display:flex;align-items:center;justify-content:center;flex:0 0 auto}.sheet .status p{font-size:var(--fs-md);font-weight:var(--fw-semibold)}.sheet .status small{display:block;font-size:var(--fs-sm);color:var(--text-2);font-weight:var(--fw-normal);margin-top:2px}.setup-hints{display:flex;flex-direction:column;gap:var(--sp-xs);color:var(--text-2);font-size:var(--fs-sm);line-height:1.6}.sheet-hints{margin:0 0 var(--sp-md) 32px}.track-pill{position:absolute;right:var(--sp-lg);bottom:var(--sp-md);display:inline-flex;align-items:center;gap:6px;background:var(--surface);border-radius:var(--r-full);font-size:var(--fs-xs);color:var(--text-2);padding:5px 12px;box-shadow:var(--shadow-standard);z-index:2}.track-pill .dot{width:6px;height:6px;border-radius:var(--r-full);background:var(--primary)}.body-guide{stroke:var(--primary);stroke-width:3;opacity:.9}.skeleton-line{stroke:var(--primary);stroke-width:3.5;opacity:.95}.skeleton-dot{fill:var(--primary)}.target-zone{fill:var(--primary-muted);opacity:.45}.target-line{stroke:var(--primary);stroke-width:2;opacity:.7}.target-text{font-family:var(--font);font-size:var(--fs-xs);fill:var(--primary-dark);font-weight:var(--fw-semibold)}.manual-setup{min-height:100dvh;display:flex;align-items:center;padding:var(--sp-lg)}.top-close{position:absolute;top:calc(var(--sp-lg) + env(safe-area-inset-top));left:var(--sp-lg)}.manual-panel{width:100%;background:var(--surface);border-radius:var(--r-xl);padding:var(--sp-xl) var(--sp-lg);box-shadow:var(--shadow-standard)}.manual-panel .large{width:56px;height:56px}.manual-panel h1{font-size:var(--fs-xxl);line-height:1.3;margin-top:var(--sp-lg);letter-spacing:0}.manual-panel p{color:var(--text-2);line-height:1.7;margin:var(--sp-sm) 0 var(--sp-xl)}.live-shell{background:var(--surface)}.live-tap{border:none;color:var(--text);text-align:center;cursor:pointer}.manual-cam{background:linear-gradient(180deg,var(--bg) 0%,var(--primary-muted) 160%)}.manual-bg{position:absolute;inset:var(--sp-xl);border:2px dashed var(--primary-muted);border-radius:var(--r-xl)}.count-wrap{position:absolute;left:0;right:0;top:46%;transform:translateY(-50%);text-align:center;pointer-events:none;z-index:1}.count-num{font-size:96px;font-weight:var(--fw-bold);line-height:1;color:var(--text);font-variant-numeric:tabular-nums;text-shadow:0 2px 12px var(--bg)}.count-unit{font-size:var(--fs-lg);color:var(--text-2);font-weight:var(--fw-medium)}.pulse{animation:repPulse .15s ease-out}@keyframes repPulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.rep-dots{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:240px;margin:var(--sp-md) auto 0}.rep-dots i{width:12px;height:12px;border-radius:var(--r-full);background:var(--primary)}.rep-dots i.rest{background:var(--surface);border:1px solid var(--text-muted);width:10px;height:10px}.coach-line{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border-radius:var(--r-full);padding:8px 16px;margin-top:var(--sp-lg);font-size:var(--fs-sm);color:var(--text);font-weight:var(--fw-medium);box-shadow:var(--shadow-standard)}.coach-line .dot{width:6px;height:6px;border-radius:var(--r-full);background:var(--accent)}.tap-hint{display:inline-block;margin-top:var(--sp-sm);font-size:var(--fs-sm);color:var(--text-2)}.live-foot{padding:var(--sp-md) var(--sp-lg) calc(var(--sp-xl) + env(safe-area-inset-bottom));background:var(--surface)}.live-actions{display:flex;gap:var(--sp-md)}.live-actions .btn{flex:1}.rep-legend{font-size:var(--fs-xs);color:var(--text-2);text-align:center;margin-top:var(--sp-sm)}.rep-legend i.solid,.rep-legend i.dash{display:inline-block;vertical-align:-1px;margin:0 3px 0 8px;border-radius:var(--r-full)}.rep-legend i.solid{width:8px;height:8px;background:var(--primary)}.rep-legend i.dash{width:6px;height:6px;border:2px dashed var(--primary-light);background:transparent}.receipt-body{flex:1;overflow:auto;padding:0 var(--sp-lg) calc(var(--sp-xl) + env(safe-area-inset-bottom));display:flex;flex-direction:column}.receipt{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-standard);padding:var(--sp-lg)}.receipt .r-head{text-align:center;padding-bottom:var(--sp-md)}.receipt .r-head .mark{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--primary-dark)}.receipt .r-head .when{font-size:var(--fs-xs);color:var(--text-muted);margin-top:4px}.r-divider{border:none;border-top:1px dashed var(--border);margin:0 calc(-1 * var(--sp-lg))}.r-hero{text-align:center;padding:var(--sp-lg) 0 var(--sp-md)}.r-hero .kind{font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text-2)}.r-hero .val{font-size:var(--fs-hero);font-weight:var(--fw-bold);line-height:1.1;margin-top:var(--sp-xs)}.r-hero .val small{font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--text-2);margin-left:4px}.metric{margin-top:var(--sp-md)}.metric .m-row{display:flex;justify-content:space-between;gap:var(--sp-md);font-size:var(--fs-sm);margin-bottom:6px}.metric .m-row.spacious{margin-top:6px}.metric .m-row .k{color:var(--text-2)}.metric .m-row .v{font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}.metric .m-row .v .sub{color:var(--text-muted);font-weight:var(--fw-normal)}.bar{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden}.bar i{display:block;height:100%;border-radius:4px;background:var(--primary)}.formula-note{margin-top:var(--sp-xs);color:var(--text-muted);font-size:var(--fs-xs);line-height:1.5}.detail-row{font-size:var(--fs-xs)!important;color:var(--text-2)}.receipt-divider{margin-top:var(--sp-md)}.r-note{margin-top:var(--sp-lg);background:var(--bg);border-radius:var(--r-md);padding:var(--sp-md);font-size:var(--fs-sm);line-height:1.7;color:var(--text)}.r-note .grow{color:var(--text-2);display:block;margin-top:2px}.r-privacy{display:flex;justify-content:center;margin-top:var(--sp-md)}.receipt-actions{margin-top:var(--sp-lg)}.receipt-actions .row{display:flex;gap:var(--sp-md);margin-bottom:var(--sp-md)}.receipt-actions .row .btn{flex:1;min-width:0}.receipt-actions .btn{height:auto;min-height:44px;padding-top:10px;padding-bottom:10px;line-height:1.35;text-align:center}.sr-live{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn .ai-ic{width:18px;height:18px;flex:0 0 auto}.hist-body{padding:0 var(--sp-lg) calc(var(--sp-xl) + env(safe-area-inset-bottom));flex:1;overflow:auto}.hist-body .card{margin-bottom:var(--sp-md)}.cal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-md)}.cal-head .mo{font-size:var(--fs-lg);font-weight:var(--fw-bold)}.cal-head .nav{display:flex;gap:var(--sp-sm)}.cal-head .nav span{width:32px;height:32px;border-radius:var(--r-full);background:var(--surface);color:var(--text-2);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-standard)}.cal{width:100%;border-collapse:collapse}.cal th{font-size:var(--fs-xs);color:var(--text-muted);font-weight:var(--fw-medium);padding-bottom:var(--sp-sm)}.cal td{text-align:center;padding:7px 0}.cal .d{width:38px;height:38px;margin:0 auto;border-radius:var(--r-full);border:none;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:var(--fs-sm);position:relative;cursor:pointer}.cal .d:disabled{cursor:default}.cal .d i{width:5px;height:5px;border-radius:var(--r-full);background:var(--primary);margin-top:2px}.cal .d.mut{color:var(--text-muted)}.cal .d.today{background:var(--primary);color:var(--surface);font-weight:var(--fw-semibold)}.cal .d.today i{background:var(--surface)}.streak-card,.mini-receipt{display:flex;align-items:center;gap:var(--sp-md);width:100%;border:none;text-align:left}.streak-card .ic,.mini-receipt .ic{width:40px;height:40px}.streak-card .t,.mini-receipt .t{font-size:var(--fs-md);font-weight:var(--fw-semibold)}.streak-card .s,.mini-receipt .s{font-size:var(--fs-sm);color:var(--text-2);margin-top:2px}.mini-receipt{cursor:pointer}.mini-receipt .chev{margin-left:auto;color:var(--text-muted)}.save-scene{position:relative}.save-overlay{position:absolute;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:10}.save-card{background:var(--surface);border-radius:var(--r-xl);padding:var(--sp-xl) var(--sp-xxl);box-shadow:var(--shadow-elevated);text-align:center;animation:pop 1.2s ease both}.save-card .ok-big{width:56px;height:56px;margin:0 auto var(--sp-md)}.save-card .t{font-size:var(--fs-xl);font-weight:var(--fw-bold)}.save-card .s{font-size:var(--fs-sm);color:var(--text-2);margin-top:var(--sp-xs)}@keyframes pop{0%{transform:scale(.8);opacity:0}25%{transform:scale(1);opacity:1}to{transform:scale(1);opacity:1}}.onboarding{justify-content:center;padding:var(--sp-lg)}.onboard-card{background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-standard);padding:var(--sp-lg)}.onboard-figure{height:260px;border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(180deg,var(--surface-2) 0%,var(--primary-muted) 130%);position:relative}.onboard-figure .overlay{position:absolute;inset:0;width:100%;height:100%}.onboard-card h1{margin-top:var(--sp-lg);font-size:var(--fs-xxl);line-height:1.3;letter-spacing:0}.onboard-card p{margin:var(--sp-sm) 0 var(--sp-xl);color:var(--text-2);line-height:1.7}@media(min-width:431px){body{background:var(--surface-2)}.app-shell{min-height:min(100dvh,820px)}}@media(max-width:360px){.receipt-actions .row{flex-direction:column}.count-num{font-size:88px}}.auto-cam{background:#000}.auto-cam .cam-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}.auto-cam .pose-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}.auto-cam .pose-canvas.dim{opacity:.3}.cam-video.mirror,.pose-canvas.mirror{transform:scaleX(-1)}.auto-cam svg.overlay{z-index:1}.auto-cam .top-strip,.auto-cam .track-pill,.auto-cam .count-wrap{z-index:3}.frame-guide .body-guide{stroke:var(--text-muted);opacity:.75;transition:stroke .35s ease,opacity .35s ease}.frame-guide .body-guide.in{stroke:var(--primary);opacity:.95}.sheet .status .ok-ic.pending{background:var(--surface-2);color:var(--text-muted)}.flip-link{display:block;width:100%;text-align:center;margin-top:var(--sp-sm);padding:var(--sp-sm)}
