:root{--bg:#f6f7f1;--surface:#fff;--tint:#f1f5ea;--text:#2b3a2e;--muted:#6b7764;--line:#e2e8da;--green:#4c683b;--green-dark:#3a5230;--good:#5d9a38;--warn:#b97c12;--accent:#ef6f2e;--brand:#33a35f;--word:#1b7944;color:var(--text);background:var(--bg);font-synthesis:none;-webkit-font-smoothing:antialiased;font-family:Nunito,"M PLUS Rounded 1c",sans-serif}*{box-sizing:border-box}html,body,#root{overscroll-behavior:none;height:100%;overflow:hidden}body{background:var(--bg);min-width:280px;margin:0}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible,summary:focus-visible{outline-offset:3px;outline:3px solid #7f9c5c}a{color:inherit}img{max-width:100%}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:20;background:#fff;padding:10px;position:fixed;top:-60px;left:10px}.skip-link:focus{top:10px}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app{max-width:1600px;height:100dvh;padding:env(safe-area-inset-top,0px) max(16px, env(safe-area-inset-right,0px)) max(16px, env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px));flex-direction:column;margin:0 auto;display:flex}.app main{outline:none;flex-direction:column;flex:1;min-height:0;display:flex}.learning-workspace{flex:1;grid-template-columns:200px minmax(0,1fr);gap:16px;min-height:0;display:grid}.lesson-sidebar{flex-direction:column;min-width:0;min-height:0;display:flex}.sidebar-heading{color:var(--muted);justify-content:space-between;margin:0;padding:12px 6px;font-size:13px;font-weight:600;display:flex}.sidebar-heading span{font-weight:400}.site-header{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:12px;height:64px;margin-bottom:12px;display:flex}.brand{--brand-size:48px;font-size:calc(var(--brand-size) * .75);letter-spacing:-.025em;white-space:nowrap;color:var(--brand);flex:none;align-items:center;gap:8px;font-weight:700;line-height:1.1;text-decoration:none;display:flex}.brand-mark{width:var(--brand-size);height:var(--brand-size);object-fit:contain;flex:none;display:block}.header-tagline{letter-spacing:.04em;text-align:right;flex:1;margin:0;font-size:16px;font-weight:500;line-height:1.5}.header-tagline span{display:inline-block}.header-tagline span+span{margin-left:.3em}.header-actions{flex:none;align-items:center;gap:8px;display:flex}.language-switcher{border:1px solid var(--line);background:var(--surface);border-radius:12px;flex:none;align-items:center;gap:2px;padding:3px;display:inline-flex}.language-switcher button{border-radius:8px;place-items:center;min-width:40px;min-height:36px;padding:0 8px;display:grid}.language-switcher button[aria-pressed=true]{background:#e9f2de;box-shadow:inset 0 0 0 1.5px #a9c391}.language-switcher button:hover:not([aria-pressed=true]){background:var(--tint)}.language-picker-button{height:44px;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:12px;flex:none;align-items:center;gap:4px;padding:0 8px 0 10px;display:inline-flex}.language-picker-button:hover{background:var(--tint)}.language-popup{color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:14px;margin:0;padding:6px;inset:auto;transform:translate(-100%);box-shadow:0 12px 32px #17251530}.language-popup button{text-align:left;border-radius:10px;align-items:center;gap:10px;width:100%;min-width:164px;min-height:44px;padding:8px 12px;font-size:14px;display:flex}.language-popup button[aria-pressed=true]{background:#e9f2de;font-weight:600}.language-popup button:hover:not([aria-pressed=true]){background:var(--tint)}.language-popup button>svg:last-child:not(.flag){color:var(--green-dark);margin-left:auto}.flag{border-radius:3px;width:24px;height:16px;display:block;box-shadow:0 0 0 1px #2b3a2e2e}.menu-language{border-bottom:1px solid var(--line);color:var(--muted);flex:none;justify-content:space-between;align-items:center;gap:12px;padding:8px 16px;font-size:13px;display:flex}.sign-language-note{background:var(--tint);color:var(--green-dark);border-radius:10px;padding:10px 12px}.lesson-picker{scrollbar-width:thin;scrollbar-color:#b8c5ac transparent;overscroll-behavior:contain;flex-direction:column;flex:1;gap:8px;min-height:0;padding:4px 6px 8px 4px;display:flex;overflow:hidden auto}.lesson-choice{text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:16px;flex:none;align-items:center;gap:8px;min-height:72px;padding:8px;transition:border-color .15s,background .15s;display:flex;position:relative}.lesson-choice:hover{border-color:#c3d0b4}.lesson-choice[aria-selected=true]{border-color:var(--green);background:#f3f8ec;box-shadow:0 0 0 3px #4c683b1f}.lesson-thumb{background:var(--tint);border-radius:12px;flex:none;width:44px;height:48px;overflow:hidden}.lesson-thumb img{object-fit:cover;transform-origin:50% 42%;width:100%;height:100%;transform:scaleX(-1)scale(1.35)}.lesson-choice-text{gap:2px;min-width:0;display:grid}.lesson-choice-text strong{font-size:14px;font-weight:650}.lesson-choice-text small{color:var(--muted);font-size:11px}.lesson-done{color:#fff;background:var(--good);border-radius:50%;place-items:center;width:20px;height:20px;display:grid;position:absolute;top:8px;right:8px}.practice-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden;box-shadow:0 10px 36px #2c3c2010}.lesson-bar{flex:none;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px 4px;display:flex}.lesson-bar h2{letter-spacing:1px;margin:0;font-size:22px;font-weight:650}.lesson-word{color:var(--word);font-weight:800}.lesson-japanese{letter-spacing:0;color:var(--muted);margin-left:12px;font-size:13px;font-weight:400;display:inline-block}.lesson-bar p{color:var(--muted);margin:2px 0 0;font-size:13px}.lesson-english{letter-spacing:1px;color:#93a086;margin-left:10px;font-size:11px}.lesson-bar>.ghost-button{flex:none}.ghost-button{color:var(--green-dark);background:var(--tint);border-radius:999px;align-items:center;gap:5px;padding:7px 11px;font-size:12px;display:inline-flex}.ghost-button:hover:not(:disabled){background:#e5eed9}.primary-button{color:#fff;background:var(--green);border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:11px 24px;font-size:14px;font-weight:600;display:inline-flex;box-shadow:0 3px 8px #29431c1c}.primary-button:hover:not(:disabled){background:var(--green-dark)}.text-button{color:var(--muted);margin-top:8px;padding:8px;font-size:12px}.step-tracker{scrollbar-width:thin;overscroll-behavior:contain;counter-reset:step;flex:none;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:8px;margin:0;padding:8px 18px 12px;list-style:none;display:grid;overflow-x:auto}.step-tracker li{min-width:0;position:relative}.step-tracker li+li:before{content:"";background:var(--line);width:10px;height:2px;position:absolute;top:50%;left:-10px}.step-tracker li[data-state=done]+li:before{background:var(--good)}.step-tracker button{text-align:left;border:1.5px solid var(--line);background:#fafbf7;border-radius:14px;align-items:center;gap:6px;width:100%;height:100%;min-height:48px;padding:5px 8px;display:flex}.step-tracker button:hover{border-color:#c3d0b4}.step-tracker [data-state=done] button{background:#f2f8eb;border-color:#b9d3a0}.step-tracker [data-viewing=true] button{border-color:var(--accent);background:#fff8ef;box-shadow:0 0 0 3px #ef6f2e22}.tracker-thumb .step-picture,.tracker-thumb .step-picture-mirror{height:100%}.tracker-thumb .step-picture img{aspect-ratio:auto;object-fit:cover;height:100%}.tracker-thumb{background:var(--tint);border-radius:10px;flex:none;width:36px;height:36px;overflow:hidden}.step-tracker [data-state=todo] .tracker-thumb{opacity:.6}.tracker-text{grid-template-columns:auto 1fr;align-items:center;gap:2px 7px;min-width:0;display:grid}.tracker-number{width:22px;height:22px;color:var(--muted);border:1.5px solid #cfd8c4;border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid;position:relative}.step-tracker [data-state=done] .tracker-number{color:#fff;background:var(--good);border-color:var(--good)}.step-tracker [data-viewing=true] .tracker-number{color:#fff;background:var(--accent);border-color:var(--accent)}.tracker-complete{color:#fff;background:var(--good);border:1.5px solid #fff;border-radius:50%;width:14px;height:14px;padding:1px;position:absolute;bottom:-4px;right:-6px}.tracker-title{font-size:11px;font-weight:600;line-height:1.35}.tracker-text small{color:var(--muted);grid-column:2;font-size:10px}.step-tracker [data-viewing=true] small{color:#98400f;font-weight:700}.preview-playback{flex:none;padding:0 18px 10px}.preview-timeline{gap:4px;height:6px;display:flex}.preview-segment{background:var(--line);border-radius:999px;flex:1;overflow:hidden}.preview-segment>span{background:var(--accent);transform-origin:0;width:100%;height:100%;display:block}.practice-grid{border-top:1px solid var(--line);flex:1;grid-template-columns:minmax(0,.95fr) minmax(0,1.15fr);min-height:0;display:grid}.step-picture{position:relative;overflow:hidden}.step-picture-mirror{position:relative;transform:scaleX(-1)}.step-picture img{aspect-ratio:3/2;object-fit:contain;-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.step-motion{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.step-path-halo{fill:none;stroke:#fff;stroke-width:26px;stroke-linecap:round;opacity:.9}.step-path{fill:none;stroke:var(--accent);stroke-width:13px;stroke-linecap:round;stroke-dasharray:2 26}.step-traveler{fill:var(--accent);stroke:#fff;stroke-width:5px}.step-target{fill:none;stroke:var(--accent);stroke-width:7px;stroke-dasharray:18 14}.step-guide{border-right:1px solid var(--line);background:#fcfdf9;flex-direction:column;min-width:0;min-height:0;padding:12px 16px;display:flex}.guide-head{flex:none;align-items:center;gap:8px;display:flex}.guide-count{color:var(--muted);flex-shrink:0;font-size:13px}.guide-count strong{color:var(--accent);font-size:18px}.guide-part{color:var(--green-dark);background:var(--tint);border-radius:999px;padding:3px 9px;font-size:12px}.guide-head .ghost-button{flex-shrink:0;margin-left:auto}.guide-title{flex:none;margin:6px 0 8px;font-size:clamp(16px,1.5vw,21px);font-weight:700;line-height:1.45}.guide-stage{border:1px solid var(--line);background:radial-gradient(circle at 50% 40%,#fff 0%,#eef3e6 72%);border-radius:18px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.guide-stage .guide-picture,.guide-stage .step-picture-mirror{width:100%;height:100%}.guide-stage .step-picture img{object-fit:contain;height:100%}.guide-caption{flex:none}.guide-nav{width:38px;height:38px;color:var(--green-dark);border:1px solid var(--line);background:#ffffffd9;border-radius:50%;place-items:center;margin-top:-19px;display:grid;position:absolute;top:50%;box-shadow:0 2px 6px #0001}.guide-nav.prev{left:8px}.guide-nav.next{right:8px}.guide-nav:disabled{opacity:0;pointer-events:none}.mirror-note{color:var(--muted);background:#ffffffd9;border-radius:999px;padding:3px 9px;font-size:11px;position:absolute;bottom:8px;left:10px}.guide-instruction{margin:8px 0 2px;font-size:13px;font-weight:600;line-height:1.6}.guide-points{gap:4px;margin:0;padding:0;list-style:none;display:grid}.guide-points li{color:#4f5c49;padding-left:16px;font-size:13px;line-height:1.7;position:relative}.guide-points li:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:.72em;left:3px}.guide-self{color:#6b5a33;background:#fff5e2;border-radius:10px;margin:10px 0 0;padding:8px 11px;font-size:12px;line-height:1.7}.guide-next{color:var(--muted);border-top:1px dashed var(--line);align-items:center;gap:8px;margin:14px 0 0;padding-top:12px;font-size:13px;display:flex}.guide-next span{white-space:nowrap;color:var(--green-dark);background:var(--tint);border-radius:999px;flex:none;padding:2px 8px;font-size:11px;font-weight:700}.camera-panel{flex-direction:column;min-width:0;min-height:0;padding:12px 16px;display:flex;position:relative}.camera-head{flex:none;justify-content:space-between;align-items:center;gap:8px;min-height:28px;display:flex}.camera-title{white-space:nowrap;color:var(--muted);flex:none;font-size:13px;font-weight:600}.status-chips{flex-wrap:wrap;justify-content:flex-end;gap:6px;font-size:11px;display:flex}.status-chips>span[data-ok]{color:#8a5b0b;background:#fff2d6;border-radius:999px;padding:3px 8px}.status-chips>span[data-ok=true]{color:#3f6b26;background:#e8f3dc}.camera-live{color:var(--muted);align-items:center;gap:5px;padding:3px 0 3px 4px;display:inline-flex}.camera-live i{background:#bec6b5;border-radius:50%;width:7px;height:7px}.camera-live.on{color:#3f6b26}.camera-live.on i{background:#6fb043;box-shadow:0 0 0 3px #6fb04333}.now-banner{background:#fff;border:2px solid #d7dfcd;border-radius:14px;flex:none;grid-template-columns:auto 1fr;align-items:center;gap:4px 12px;margin-top:6px;padding:7px 10px 12px;display:grid;position:relative}.now-banner[data-tone=good]{background:#f3faec;border-color:#9fcb7b}.now-banner[data-tone=warn]{background:#fff9eb;border-color:#ebcd8b}.now-step{color:#fff;background:var(--accent);border-radius:12px;place-items:center;min-width:32px;height:32px;padding:0 6px;font-size:15px;font-weight:750;display:grid}.now-banner strong{font-size:14px;font-weight:700;line-height:1.5}.hold-bar{background:#00000010;border-radius:4px;height:4px;position:absolute;bottom:6px;left:14px;right:14px;overflow:hidden}.hold-bar i{background:var(--good);border-radius:4px;height:100%;transition:width .12s linear;display:block}.camera-stage{isolation:isolate;border:1px solid var(--line);background:#eef1e8;border-radius:18px;flex:1;min-height:0;margin-top:6px;position:relative;overflow:hidden}.camera-stage.is-live{background:#1f2721;border-color:#2f4a2f}.camera-video,.camera-look,.camera-overlay{object-fit:contain;visibility:hidden;width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.camera-stage.is-live .camera-video,.camera-stage.is-live.has-look .camera-look,.camera-stage.is-live .camera-overlay{visibility:visible}.camera-look,.camera-overlay{pointer-events:none}.look-button{z-index:6;max-width:calc(100% - 160px);color:var(--green-dark);border:1px solid var(--line);background:#ffffffeb;border-radius:999px;align-items:center;gap:6px;padding:7px 12px 7px 10px;font-size:11px;font-weight:600;display:flex;position:absolute;bottom:10px;left:10px}.look-button-state{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.help-button{z-index:6;width:32px;height:32px;color:var(--green-dark);border:1px solid var(--line);background:#ffffffeb;border-radius:50%;place-items:center;font-size:17px;font-weight:700;line-height:1;display:grid;position:absolute;top:10px;right:10px}.camera-stage.is-live .look-button,.camera-stage.is-live .help-button{color:#f0f5e8;background:#132219c4;border-color:#ffffff30}.camera-stage.is-live .look-button-state{color:#c9d6bd}.look-dialog{width:min(600px,100% - 24px)}.look-dialog .dialog-body{padding:12px 16px 18px}.look-note{color:var(--muted);margin:0 0 10px;line-height:1.7;font-size:12px!important}.look-group{border:0;margin:0 0 12px;padding:0}.look-group legend{margin-bottom:6px;padding:0;font-size:13px;font-weight:700}.look-options{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid}.look-option{text-align:center;cursor:pointer;justify-items:center;gap:4px;font-size:12px;font-weight:600;line-height:1.3;display:grid}.look-thumb{width:100%;color:var(--muted);background:var(--tint);border:2px solid var(--line);border-radius:14px;place-items:center;font-size:11px;font-weight:500;display:grid;overflow:hidden}.look-thumb-face{aspect-ratio:1;background:#eef4f7}.look-thumb-scene{aspect-ratio:3/2}.look-thumb img{object-fit:cover;width:100%;height:100%;display:block}.look-thumb-face img{transform:scale(1.25)}.look-option input:checked+.look-thumb{border-color:var(--accent);box-shadow:0 0 0 2px #ef6f2e40}.look-option input:focus-visible+.look-thumb{outline-offset:2px;outline:3px solid #7f9c5c}.stop-camera{z-index:6;color:#f0f5e8;background:#132219c4;border:1px solid #ffffff30;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:11px;display:flex;position:absolute;bottom:10px;right:10px}.camera-empty{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:18px 18px 48px;display:flex;position:absolute;inset:0}.framing-guide{color:#a5b593;flex-shrink:1;width:96px;height:72px;min-height:0;margin-bottom:4px}.camera-empty h3{margin:0 0 8px;font-size:17px;font-weight:650}.camera-empty p{max-width:360px;color:var(--muted);margin:0 0 12px;font-size:13px;line-height:1.8}.camera-error{color:#9b5d2e!important}.step-celebration{z-index:4;color:#fff;pointer-events:none;background:#3f6b26ee;border-radius:16px;align-items:center;gap:10px;width:fit-content;margin:0 auto;padding:9px 16px 9px 10px;animation:.25s ease-out toast-in;display:flex;position:absolute;top:12px;left:12px;right:12px;box-shadow:0 6px 18px #0004}.step-celebration>span:last-child{gap:2px;display:grid}.step-celebration strong{letter-spacing:.5px;font-size:18px}.step-celebration small{opacity:.92;font-size:13px;font-weight:600}.step-celebration .celebration-check{width:38px;height:38px;box-shadow:0 0 0 3px #fff5}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.celebration-check{color:#fff;background:var(--good);border-radius:50%;place-items:center;width:60px;height:60px;display:grid;box-shadow:0 0 0 6px #fff5}.complete-panel{z-index:5;text-align:center;background:#f3f9ecf2;flex-direction:column;justify-content:center;align-items:center;padding:20px;animation:.2s ease-out panel-in;display:flex;position:absolute;inset:0}.complete-panel .celebration-check{animation:.55s ease-out both check-pop}.petal-burst{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}@keyframes panel-in{0%{opacity:0}}@keyframes check-pop{0%{opacity:0;transform:scale(.3)}45%{opacity:1;transform:scale(1.18)}70%{transform:scale(.94)}to{transform:none}}.complete-panel h3{margin:12px 0 6px;font-size:24px;font-weight:700}.complete-panel p{color:var(--muted);margin:0 0 16px;font-size:13px}.complete-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.auto-next{justify-items:center;gap:6px;width:min(240px,100%);margin-top:14px;display:grid}.auto-next-bar{background:#00000012;border-radius:999px;width:100%;height:6px;overflow:hidden}.auto-next-bar>span{background:var(--green);transform-origin:0;height:100%;display:block}.auto-next small{color:var(--muted);font-size:12px;font-weight:600}.check-panel{display:contents}.check-panel .detail-button{display:none}.camera-checks h4,.self-check h4{color:var(--muted);margin:0 0 6px;font-size:11px;font-weight:650}.self-check{border-top:1px solid var(--line);margin-top:16px;padding-top:14px}.self-check p{margin:0 0 10px}.criteria{gap:4px;margin:0;padding:0;list-style:none;display:grid}.criteria li{align-items:center;gap:7px;font-size:12px;line-height:1.5;display:flex}.criteria li>span:first-child{color:#9aa690;border:2px solid #d3dbc8;border-radius:50%;flex:none;place-items:center;width:20px;height:20px;font-size:11px;font-weight:800;display:grid}.criteria li[data-state=met]>span:first-child{color:#fff;background:var(--good);border-color:var(--good)}.criteria li[data-state=unmet]>span:first-child{color:var(--accent);border-color:#f2b48f}.criteria li[data-state=met]{color:#3f6b26}.criteria li[data-state=skip]{color:#a0a99a}.manual-confirm{color:var(--green-dark);background:#fff;border:1.5px solid #c3d0b4;border-radius:999px;margin-top:4px;padding:8px 14px;font-size:12px;font-weight:600}.manual-confirm:hover{background:var(--tint)}.detail-button{min-height:32px;color:var(--green-dark);text-underline-offset:4px;padding:4px 0;font-size:12px;text-decoration:underline}.info-dialog{width:min(560px,100% - 32px);max-height:calc(100dvh - 40px);color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:0;overflow:hidden;box-shadow:0 24px 80px #17251540}.info-dialog[open]{flex-direction:column;display:flex}.info-dialog::backdrop{background:#1b2b2570}.dialog-header{border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:16px;padding:12px 16px;display:flex}.dialog-header h2{margin:0;font-size:17px}.dialog-close{background:var(--tint);border-radius:50%;flex:0 0 44px;place-items:center;height:44px;display:grid}.dialog-body{overscroll-behavior:contain;text-align:left;min-height:0;padding:16px 20px 24px;font-size:14px;line-height:1.8;overflow-y:auto}.dialog-body p{font-size:14px}.dialog-body>:first-child{margin-top:0}.more-signs,.mobile-lesson-heading,.mobile-guide-label{display:none}.site-menu{flex:none}.menu-toggle,.menu-back{border-radius:12px;flex:none;place-items:center;width:44px;height:44px;display:grid}.menu-toggle{background:var(--surface);border:1px solid var(--line)}.share-toggle{min-width:44px;height:44px;color:var(--green-dark);background:var(--surface);border:1px solid var(--line);border-radius:12px;flex:none;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:600;display:inline-flex}.share-toggle:hover{background:var(--tint)}.share-dialog{width:min(480px,100% - 32px)}.share-target{background:var(--tint);border:1px solid var(--line);border-radius:14px;grid-template-columns:1fr 1fr;gap:4px;min-width:0;margin:0 0 14px;padding:4px;display:grid}.share-target label{text-align:center;min-height:44px;color:var(--muted);cursor:pointer;border-radius:10px;place-items:center;padding:6px 10px;font-size:13px;font-weight:600;line-height:1.35;display:grid;position:relative}.share-target input{opacity:0;pointer-events:none;position:absolute}.share-target label:has(input:checked){color:var(--green-dark);background:var(--surface);box-shadow:0 1px 4px #29431c24}.share-target label:has(input:focus-visible){outline-offset:2px;outline:3px solid #7f9c5c}.share-preview{margin:0 0 12px}.share-preview img{aspect-ratio:1200/630;border:1px solid var(--line);border-radius:12px;width:100%;height:auto;display:block}.share-preview figcaption{color:var(--muted);margin-top:6px;font-size:12px;line-height:1.5}.share-address{gap:8px;display:flex}.share-address input{min-width:0;min-height:44px;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:10px;flex:1;padding:8px 12px;font-size:13px}.share-address button{color:#fff;background:var(--green);border-radius:10px;flex:none;align-items:center;gap:6px;min-height:44px;padding:0 14px;font-size:13px;font-weight:600;display:inline-flex}.share-address button:hover{background:var(--green-dark)}.share-options{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.share-option{text-align:center;min-height:76px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:14px;align-content:center;justify-items:center;gap:6px;padding:10px 4px;font-size:12px;line-height:1.3;text-decoration:none;display:grid}.share-option:hover{background:var(--tint)}.share-option>svg:not(.brand-icon){color:var(--green-dark)}.dialog-body .share-status{min-height:1.5em;color:var(--green-dark);margin:10px 0 0;font-size:13px;line-height:1.5}.mobile-menu-dialog{width:100%;max-width:none;height:100dvh;max-height:none;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);color:var(--text);background:#f6f7f1fe;border:0;margin:0;inset:0;overflow:hidden}.mobile-menu-dialog[open]{flex-direction:column;display:flex}.mobile-menu-dialog::backdrop{background:#1b2b2570}.menu-header{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:8px;min-height:64px;padding:8px 12px;display:flex}.menu-header h2{outline:none;flex:1;margin:0;padding-left:4px;font-size:17px}.menu-brand{--brand-size:clamp(28px, 10vw, 40px);min-width:0;font-size:calc(var(--brand-size) * .75);letter-spacing:-.025em;white-space:nowrap;color:var(--brand);flex:1;align-items:center;gap:8px;padding-left:4px;font-weight:700;line-height:1.1;display:none}.menu-brand img{width:var(--brand-size);height:var(--brand-size);object-fit:contain;flex:none;display:block}.menu-links{flex:none;gap:8px;padding:12px;display:grid}.menu-links button,.menu-links a{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:14px;align-items:center;gap:12px;min-height:52px;padding:8px 14px;font-size:14px;display:flex}.menu-links a{text-decoration:none}.menu-links button svg:last-child:not(:first-child),.menu-links a svg:last-child:not(:first-child){margin-left:auto}.menu-body{overscroll-behavior:contain;flex:1;min-height:0;padding-bottom:20px;overflow-y:auto}.menu-links+.menu-links{padding-top:8px}.menu-group{color:var(--muted);margin:0;padding:0 4px;font-size:12px;font-weight:600}.menu-note{color:var(--muted);gap:6px;margin:4px 16px 0;font-size:12px;line-height:1.6;display:flex}.menu-note svg{flex:none;margin-top:3px}@media (min-width:900px){.site-menu-dialog{border-left:1px solid var(--line);width:min(440px,100%);inset:0 0 0 auto;box-shadow:-16px 0 48px #17251524}.site-menu-dialog[open]{animation:.2s ease-out menu-in}}@keyframes menu-in{0%{opacity:0;transform:translate(24px)}}.more-signs-toggle{min-height:44px;color:var(--green-dark);white-space:nowrap;background:#f3f8ec;border:1px solid #c3d0b4;border-radius:12px;justify-content:center;align-items:center;padding:4px 12px;font-size:12px;font-weight:650;line-height:1.2;display:flex}.more-signs-toggle:hover{background:#e9f2de}.sign-search{flex:none;align-items:center;margin:12px 12px 0;display:flex;position:relative}.sign-search>svg{color:var(--muted);pointer-events:none;position:absolute;left:14px}.sign-search input{width:100%;min-height:48px;font:inherit;color:var(--text);background:var(--surface);border:1.5px solid var(--line);appearance:none;border-radius:14px;margin:0;padding:10px 44px 10px 42px;font-size:16px}.sign-search input::placeholder{color:#8a9581}.sign-search input:focus{border-color:var(--green);outline:none}.sign-search input:focus-visible{outline-offset:1px;outline:3px solid #7f9c5c}.sign-search input::-webkit-search-cancel-button{display:none}.sign-search-clear{width:40px;height:40px;color:var(--muted);border-radius:50%;place-items:center;display:grid;position:absolute;right:4px}.more-signs-list{overscroll-behavior:contain;flex:1;min-height:0;padding:0 12px 16px;overflow-y:auto}.more-signs-count{color:var(--muted);margin:10px 4px 8px;font-size:12px}.more-signs-list ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.more-signs-item{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:14px;align-items:center;gap:12px;width:100%;min-height:72px;padding:8px 12px 8px 8px;display:flex}.more-signs-item[aria-current=true]{border-color:var(--green);background:#f2f7eb}.more-signs-picture{background:var(--tint);border-radius:12px;flex:none;width:56px;height:56px;overflow:hidden}.more-signs-picture img{object-fit:cover;transform-origin:50% 42%;width:100%;height:100%;display:block;transform:scaleX(-1)scale(1.35)}.more-signs-name{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.more-signs-name strong{font-size:15px;font-weight:650}.more-signs-name strong small{color:var(--muted);margin-left:8px;font-size:11px;font-weight:400}.more-signs-name>small{color:var(--muted);word-break:auto-phrase;font-size:11px;line-height:1.4}.more-signs-steps{white-space:nowrap}.more-signs-steps:before{content:"・"}.more-signs-steps:lang(en):before{content:" · "}.more-signs-done{color:#fff;background:var(--good);border-radius:50%;flex:none;place-items:center;width:22px;height:22px;display:grid}.more-signs-current{color:#fff;background:var(--green);border-radius:999px;flex:none;padding:3px 8px;font-size:11px;font-weight:650}.more-signs-empty{text-align:center;justify-items:center;gap:10px;padding:20px 16px;display:grid}.more-signs-empty img{width:auto;height:104px}.more-signs-empty p{color:var(--muted);margin:0;font-size:13px;line-height:1.6}.more-signs-empty strong{color:var(--text);overflow-wrap:anywhere;margin-bottom:2px;font-size:15px;display:block}.menu-info{overscroll-behavior:contain;min-height:0;padding:16px 20px 24px;font-size:14px;line-height:1.8;overflow-y:auto}.practice-info h3,.legal h2,.legal h3{margin:24px 0 8px;font-size:15px}.practice-info h3:first-child{margin-top:0}.practice-info p,.legal p{margin:8px 0}.practice-info ol,.practice-info ul,.legal ul{padding-left:22px}.practice-info li{margin-bottom:8px}.legal li{margin-bottom:4px}.legal p,.legal li{text-wrap:pretty}.practice-info a,.legal a{text-underline-offset:3px;overflow-wrap:anywhere}.legal .legal-effective{color:var(--muted);margin-top:0;font-size:12px}.developers>p{margin:0 0 16px}.developers ul{gap:12px;margin:0;padding:0;list-style:none;display:grid}.developers li{background:var(--surface);border:1px solid var(--line);border-radius:16px;align-items:center;gap:14px;padding:14px 16px;display:flex}.developer-initial{width:48px;height:48px;color:var(--green-dark);background:#e9f2de;border-radius:50%;flex:none;place-items:center;font-size:20px;font-weight:650;display:grid}.developer-text{min-width:0;line-height:1.5;display:grid}.developer-text small{color:var(--muted);font-size:12px}.developer-text strong{font-size:17px;font-weight:650}.developer-text a{color:var(--green-dark);text-underline-offset:3px;justify-self:start;align-items:center;gap:4px;padding:4px 0;font-size:13px;display:inline-flex}.document-page{overscroll-behavior:contain;height:100%;overflow-y:auto}.document-frame{max-width:760px;padding:env(safe-area-inset-top,0px) max(20px, env(safe-area-inset-right,0px)) max(32px, env(safe-area-inset-bottom,0px)) max(20px, env(safe-area-inset-left,0px));margin:0 auto}.document-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:64px;display:flex}@media (max-width:599px){.document-header .brand{--brand-size:clamp(32px, 10vw, 48px)}}.document-main{padding:28px 0 8px;font-size:15px;line-height:1.85}.document-main h1{margin:0 0 12px;font-size:26px;line-height:1.4}.document-main .legal h2{margin-top:32px;font-size:17px}.document-footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 24px;margin-top:32px;padding-top:24px;display:flex}.document-footer .primary-button{text-decoration:none}.document-footer nav{flex-wrap:wrap;gap:4px 18px;font-size:13px;display:flex}.document-footer nav a{color:var(--muted);text-underline-offset:3px}.document-footer nav a[aria-current=page]{color:var(--text);font-weight:600;text-decoration:none}@media print{.document-page{height:auto;overflow:visible}html:has(.document-page){height:auto;overflow:visible}html:has(.document-page) body{height:auto;overflow:visible}.document-header .language-picker,.document-footer{display:none}}@media (min-width:900px){.practice-grid{grid-template-rows:auto auto auto minmax(0,1fr)}.step-guide,.camera-panel{grid-row:1/-1;grid-template-rows:subgrid;grid-template-columns:minmax(0,1fr);display:grid}.guide-head,.camera-head{grid-row:1}.camera-title{text-overflow:ellipsis;flex:1 1 0;min-width:0;overflow:hidden}.guide-title{grid-row:2}.now-banner{grid-row:2/4}.guide-caption{display:contents}.guide-instruction{grid-row:3;margin:0 0 2px}.guide-stage,.now-banner+.camera-stage{grid-area:4/1;margin-top:8px}.camera-stage{grid-area:2/1/-1}.guide-caption>.detail-button{z-index:2;background:#ffffffd9;border-radius:999px;grid-area:4/1;place-self:end;min-height:28px;margin:0 11px 9px 0;padding:3px 10px}.mirror-note{max-width:calc(100% - 150px)}}@media (min-width:900px) and (max-width:1150px){.learning-workspace{grid-template-columns:174px minmax(0,1fr);gap:10px}.lesson-thumb{width:36px;height:42px}.tracker-thumb{display:none}.step-guide,.camera-panel{padding:10px 12px}.guide-head{gap:5px}.guide-part{padding:3px 5px;font-size:10px}.guide-head .ghost-button{padding-inline:8px}}@media (max-height:700px){.site-header{height:44px;margin-bottom:6px}.brand{--brand-size:34px}.framing-guide{display:none}.camera-empty{padding:10px 10px 42px}.camera-empty h3{margin-bottom:5px;font-size:15px}.camera-empty p{margin-bottom:8px;font-size:12px;line-height:1.5}.primary-button{min-height:40px;padding:8px 18px;font-size:13px}.guide-title{font-size:16px}.guide-instruction{font-size:12px}.complete-panel{padding-block:10px 48px}.complete-panel .celebration-check{width:32px;height:32px}.complete-panel h3{margin-top:8px;font-size:18px}.complete-panel p{margin-bottom:8px;font-size:12px}}@media (min-width:900px) and (max-height:700px){.language-picker-button{border-radius:10px;height:36px}.header-actions .menu-toggle{border-radius:10px;width:36px;height:36px}.share-toggle{border-radius:10px;height:36px}}@media (max-width:899px){.app{padding-inline:max(8px, env(safe-area-inset-left,0px)) max(8px, env(safe-area-inset-right,0px));padding-bottom:max(6px, env(safe-area-inset-bottom,0px))}.site-header{border-bottom:0;gap:8px;height:auto;min-height:52px;margin-bottom:4px;padding-block:4px}.site-header>.brand,.header-tagline,.lesson-sidebar,.lesson-bar{display:none}.mobile-lesson-heading{flex:1;align-items:center;gap:6px;min-width:0;padding-left:6px;display:flex;container-type:inline-size}.mobile-lesson-heading h1{min-width:0;margin:0;font-size:clamp(13px,3.6vw,17px);font-weight:650;line-height:1.35}.mobile-lesson-heading h1>span,.mobile-lesson-heading h1>small{overflow-wrap:anywhere;display:block}.title-word{font-size:max(10px, min(1em, 100cqi / (var(--chars) + .4)))}.mobile-lesson-heading h1>small{color:var(--muted);font-size:10px;font-weight:400}.header-actions{gap:4px}.language-picker-button{padding:0 6px 0 8px}.header-actions .flag{width:20px;height:14px}.more-signs{flex:none;display:block}.share-toggle{padding:0}.share-toggle-label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.menu-brand{display:flex}.menu-brand+h2{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.learning-workspace{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);gap:0}.practice-card{border-radius:18px}.step-tracker{gap:6px;padding:5px 10px 6px;display:flex}.step-tracker li{flex:1 0 0}.preview-playback{padding:0 10px 7px}.step-tracker button{border-radius:10px;justify-content:center;min-height:48px;padding:4px}.tracker-thumb,.tracker-title,.tracker-text small{display:none}.tracker-text{flex-direction:column;gap:3px;display:flex}.step-tracker [data-viewing=true] .tracker-text small{white-space:nowrap;font-size:9px;line-height:1.1;display:block}.practice-grid{grid-template-rows:minmax(0,.42fr) minmax(0,.58fr);grid-template-columns:minmax(0,1fr)}.step-guide,.camera-panel{border:0;padding:8px 10px}.step-guide{border-bottom:1px solid var(--line);position:relative}.guide-head{gap:6px;min-height:28px}.mobile-guide-label{color:var(--muted);font-size:12px;font-weight:650;display:inline}.guide-count,.guide-part,.guide-instruction{display:none}.guide-head .ghost-button{min-height:28px;padding:4px 9px;font-size:11px}.guide-title{margin:3px 0 5px;font-size:14px;line-height:1.4}.guide-stage{border-radius:12px}.guide-caption{z-index:2;position:absolute;bottom:12px;right:15px}.guide-caption>.detail-button{background:#fffffff0;border-radius:999px;min-height:28px;padding:3px 8px;font-size:10px}.guide-nav{width:44px;height:44px;margin-top:-22px}.mirror-note{max-width:calc(100% - 110px);padding:2px 6px;font-size:9px;bottom:5px;left:5px}.camera-head{gap:4px;min-height:24px}.camera-title{font-size:11px}.status-chips{gap:4px;font-size:10px}.status-chips>span[data-ok]{padding:2px 5px}.camera-stage{border-radius:12px;margin-top:4px}.framing-guide{display:none}.camera-empty{padding:10px 10px 40px}.camera-empty h3{margin:0 0 5px;font-size:14px}.camera-empty p{max-width:380px;margin-bottom:10px;font-size:11px;line-height:1.5}.camera-empty .primary-button{min-height:40px;padding:8px 18px;font-size:13px}.camera-empty .text-button{margin-top:2px;padding:5px 8px}.now-banner{border-radius:10px;gap:4px 8px;margin-top:3px;padding:4px 8px 10px}.now-banner[data-idle]{display:none}.now-step{border-radius:8px;min-width:24px;height:24px;font-size:11px}.now-banner strong{font-size:11px;line-height:1.4}.hold-bar{height:3px;bottom:3px}.help-button{display:none}.camera-panel .check-panel{flex:none;justify-content:space-between;align-items:center;gap:4px 12px;margin-top:4px;display:flex}.camera-panel[data-active=true] .check-panel{flex-wrap:wrap;gap:4px 16px;padding-block:3px}.check-panel .detail-button{min-height:28px;font-size:11px;display:inline-block}.stop-camera{min-height:32px;bottom:6px;right:6px}.look-button{min-height:32px;padding:5px 10px 5px 8px;font-size:10px;bottom:6px;left:6px}.look-button-state{display:none}.look-options{gap:6px}.look-option{font-size:11px}.step-celebration{gap:8px;padding:8px 10px}.step-celebration strong{font-size:13px}.step-celebration small{font-size:10px}.complete-panel{padding:8px 8px 44px}.complete-panel .celebration-check{width:30px;height:30px}.complete-panel h3{margin:6px 0;font-size:16px}.complete-panel p{margin:0 0 8px;font-size:11px}.complete-actions{gap:6px}.complete-actions button{min-height:36px;padding:6px 12px;font-size:12px}.auto-next{gap:4px;margin-top:8px}.auto-next-bar{height:4px}.auto-next small{font-size:11px}}@media (max-width:599px){.language-picker-button{padding:0 8px}.language-picker-button>svg:not(.flag){display:none}.more-signs-toggle{white-space:normal;text-align:center;padding:3px 7px}.more-signs-toggle span:lang(ja){max-width:3.2em}.more-signs-toggle span:lang(en){width:min-content}}@media (min-width:600px) and (max-width:899px){.mobile-lesson-heading h1>span{display:inline}}@media (max-width:359px){.header-actions>.language-picker,.header-actions>.share-toggle{display:none}}@media (max-width:899px) and (max-height:620px){.site-header{min-height:46px;margin-bottom:2px}.step-guide,.camera-panel{padding:6px 8px}.guide-caption{bottom:10px;right:13px}.guide-title{font-size:13px}.camera-empty p:not(.camera-error){display:none}.camera-empty .camera-error{margin-bottom:6px;font-size:10px}.complete-panel .celebration-check{display:none}}@media (max-width:599px) and (max-height:480px){.practice-grid{overscroll-behavior:contain;grid-template-rows:minmax(190px,.42fr) minmax(220px,.58fr);overflow-y:auto}}@media (min-width:600px) and (max-width:899px) and (max-height:480px){.practice-grid{grid-template-rows:minmax(0,.45fr) minmax(0,.55fr)}.step-guide{grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:3px 12px;display:grid}.guide-head{grid-area:1/2}.guide-title{grid-area:2/2;margin:0}.guide-stage{grid-area:1/1/-1}.guide-caption{grid-area:3/2;align-self:start;position:static}.mirror-note{max-width:calc(100% - 10px)}.camera-panel{grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:2px 12px;display:grid}.camera-stage{grid-area:1/1/-1;margin:0}.camera-head{grid-area:1/2}.camera-panel .now-banner{grid-area:2/2;margin:0}.camera-panel .check-panel{grid-area:3/2;align-self:start}.camera-empty h3{font-size:12px}.camera-empty .primary-button{min-height:36px;padding-block:5px;font-size:12px}.camera-empty .camera-error{line-height:1.3}.complete-panel h3{margin:0 0 4px;font-size:13px}.complete-panel p{display:none}.complete-actions button{min-height:32px;padding:4px 8px;font-size:11px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.step-traveler{display:none}}
