html,body.player-body{height:100%}body.player-body{background:var(--bg);--ppad:5px;flex-direction:column;min-height:0;display:flex;overflow:hidden}body.player-body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(50% 100% at 50% -20%,var(--glow) 0%,transparent 72%);height:320px;position:fixed;top:0;left:0;right:0}.pbar{align-items:center;gap:var(--sp-2_5);height:68px;padding:0 var(--sp-5);z-index:30;flex:none;display:flex;position:relative}.pbar .brand-mark{transition:transform .7s var(--spring);text-decoration:none}.pbar .brand-mark:hover{transform:scale(1.06)}.pbar-title{min-width:0;padding:var(--sp-2_5) var(--sp-4);border-radius:var(--r-pill);color:var(--ink);font:640 var(--fs-4)/1.2 var(--f-display);letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;transition:background-color .5s var(--ease);text-decoration:none;overflow:hidden}.pbar-title:hover{background:var(--shell)}.pbar .spacer{flex:1}.pbar-progress{align-items:center;gap:var(--sp-2_5);padding:var(--sp-1) var(--sp-3_5) var(--sp-1) var(--sp-1);border-radius:var(--r-pill);background:var(--shell);box-shadow:inset 0 0 0 1px var(--ring);font-size:var(--fs-2);color:var(--ink-2);white-space:nowrap;display:flex}.ring{--p:0;border-radius:var(--r-pill);background:conic-gradient(var(--accent) calc(var(--p) * 1%),var(--ring-2) 0);flex:none;place-items:center;width:34px;height:34px;display:grid;position:relative}.ring:before{content:"";border-radius:var(--r-pill);background:var(--core);position:absolute;inset:3px}.ring svg{width:14px;height:14px;color:var(--accent-ink);position:relative}.seg{padding:var(--sp-1);border-radius:var(--r-pill);background:var(--shell);box-shadow:inset 0 0 0 1px var(--ring);flex:none;display:inline-flex}.seg a{padding:var(--sp-2) var(--sp-2_5);border-radius:var(--r-pill);font:500 var(--fs-1)/1 var(--f-mono);font-variant-ligatures:none;letter-spacing:.06em;color:var(--ink-3);transition:color .5s var(--ease),background-color .5s var(--ease);text-decoration:none}.seg a:hover{color:var(--ink)}.seg a[aria-current=true]{background:var(--core);color:var(--ink);box-shadow:var(--sh-1)}.pbar .btn{flex:none}.pbar-now,.pbar-read,.cc-meta{display:none}.pbar-now{justify-content:center;gap:var(--sp-0_5);min-width:0;min-height:44px;padding:var(--sp-1) var(--sp-1_5);color:var(--ink);flex-direction:column;flex:1;text-decoration:none}.pbar-now b{font:640 var(--fs-3)/1.2 var(--f-display);letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pbar-now small{font:500 var(--fs-2)/1.2 var(--f-body);color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pbar-read{background:var(--ring-2);height:3px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.pbar-read span{background:var(--accent);height:100%;transition:width .6s var(--ease);display:block}.cc-meta{justify-content:space-between;align-items:center;gap:var(--sp-2_5) var(--sp-3);padding:var(--sp-3) var(--sp-4) var(--sp-3) var(--sp-6);box-shadow:inset 0 -1px 0 var(--ring);flex-wrap:wrap;flex:none}.cc-progress{align-items:center;gap:var(--sp-2_5);font-size:var(--fs-2);color:var(--ink-2);display:flex}.player{gap:var(--sp-6);min-height:0;padding:var(--ppad) var(--sp-5) var(--sp-5);flex:1;grid-template-columns:minmax(0,1fr) 340px;display:grid}body.cc-collapsed .player{grid-template-columns:minmax(0,1fr) 56px}.stage,.cc,.cc-rail{border-radius:var(--r-card);background:var(--core);box-shadow:var(--sh-2),0 0 0 var(--ppad) var(--shell);outline:1px solid var(--ring);outline-offset:var(--ppad)}.stage{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.lesson-locked{justify-content:center;align-items:center;gap:var(--sp-3);min-height:0;padding:var(--sp-10) var(--sp-6);text-align:center;background:var(--bg);flex-direction:column;flex:1;display:flex;overflow:auto}.lesson-locked .orb{width:64px;height:64px;margin-bottom:var(--sp-1_5)}.lesson-locked .orb .ic{width:24px;height:24px;color:var(--accent-ink)}.lesson-locked h2{font:640 var(--fs-6)/1.2 var(--f-display);letter-spacing:-.025em;margin:0}.lesson-locked p{max-width:44ch;font-size:var(--fs-4);color:var(--ink-2);margin:0;line-height:1.55}.lesson-locked .actions{justify-content:center;gap:var(--sp-2_5);margin-top:var(--sp-2_5);flex-wrap:wrap;display:flex}.lesson-frame{background:var(--bg);border:0;flex:1;width:100%;min-height:0;display:block}.stage-bar{align-items:center;gap:var(--sp-3);padding:var(--sp-2_5) var(--sp-3);background:var(--core);box-shadow:inset 0 1px 0 var(--ring);flex:none;display:flex}.stage-bar .now{align-items:center;gap:var(--sp-1);text-align:center;flex-direction:column;flex:1;min-width:0;display:flex}.stage-bar .now .num{font:500 var(--fs-1)/1.2 var(--f-mono);font-variant-ligatures:none;letter-spacing:.14em;color:var(--ink-3)}.stage-bar .now b{font:500 var(--fs-3)/1.3 var(--f-body);white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.stage-bar .nav-gap{flex:none;width:104px}.stage-bar>.btn-primary{margin-left:auto}.complete{margin:0}.complete .btn.is-done{background:var(--ok-wash);color:var(--ok);box-shadow:0 0 0 1px color-mix(in srgb,var(--ok) 26%,transparent)}.cc{flex-direction:column;min-height:0;display:flex;overflow:hidden}body.cc-collapsed .cc{visibility:hidden}.cc-rail{display:none}@media (min-width:961px){body.cc-collapsed .cc{display:none}body.cc-collapsed .cc-rail{display:flex}}.cc-rail{align-items:center;gap:var(--sp-4);min-height:0;padding:var(--sp-3_5) 0;color:var(--ink-2);font:500 var(--fs-3)/1 var(--f-body);cursor:pointer;transition:color .4s var(--ease),background-color .4s var(--ease);border:0;flex-direction:column}.cc-rail:hover{color:var(--ink);background:var(--core-2)}.cc-rail-ic{border-radius:var(--r-pill);background:var(--shell);width:36px;height:36px;box-shadow:inset 0 0 0 1px var(--ring);place-items:center;display:grid}.cc-rail-ic .ic{width:17px;height:17px}.cc-rail-label{writing-mode:vertical-rl;white-space:nowrap;letter-spacing:.01em}.cc-head{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3_5) var(--sp-3) var(--sp-3_5) var(--sp-6);box-shadow:inset 0 -1px 0 var(--ring);flex:none;display:flex}.cc-head h2{font:640 var(--fs-5)/1.2 var(--f-display);letter-spacing:-.02em;margin:0}.cc-body{overscroll-behavior:contain;scrollbar-width:thin;padding:var(--sp-1_5) 0 var(--sp-2_5);flex:1;overflow-y:auto}.cc details+details{box-shadow:inset 0 1px 0 var(--ring)}.cc summary{column-gap:var(--sp-3);row-gap:var(--sp-1);padding:var(--sp-3_5) var(--sp-4) var(--sp-3_5) var(--sp-6);cursor:pointer;transition:background-color .5s var(--ease);grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr) auto;list-style:none;display:grid}.cc summary::-webkit-details-marker{display:none}.cc summary:hover{background:color-mix(in srgb,var(--core-2) 70%,transparent)}.cc summary:focus-visible{outline-offset:-3px;border-radius:var(--r-field)}.cc summary .st{font:640 var(--fs-4)/1.3 var(--f-display);letter-spacing:-.015em}.cc summary .sc{font:400 var(--fs-1)/1.3 var(--f-mono);font-variant-ligatures:none;color:var(--ink-3);grid-column:1}.cc summary>.ic{box-sizing:content-box;width:14px;height:14px;padding:var(--sp-2);border-radius:var(--r-pill);background:var(--shell);box-shadow:inset 0 0 0 1px var(--ring);color:var(--ink-2);transition:transform .7s var(--spring);grid-area:1/2/3;align-self:center}.cc details[open] summary>.ic{transform:rotate(180deg)}.cc ol{padding:0 var(--sp-2_5) var(--sp-2_5);margin:0;list-style:none}.cc li a,.cc li .row-static{gap:var(--sp-3);padding:var(--sp-2_5) var(--sp-3);border-radius:var(--r-field);color:var(--ink);font-size:var(--fs-3);transition:background-color .4s var(--ease);line-height:1.35;text-decoration:none;display:flex}.cc li a:hover{background:var(--core-2)}.cc li.current a,.cc li.current .row-static{background:color-mix(in srgb,var(--accent) 9%,var(--core));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 26%,transparent)}.cc li.current .mark{color:var(--accent-ink)}.cc li.soon .row-static,.cc li.locked .row-static{color:var(--ink-3)}.cc .mark{color:var(--ink-3);flex:none;margin-top:1px}.cc .mark .ic{width:17px;height:17px}.cc .mark.done,.cc li.current .mark.done{color:var(--ok)}.cc .lt{gap:var(--sp-1);flex-direction:column;min-width:0;display:flex}.cc .lt small{align-items:center;gap:var(--sp-1_5);font-size:var(--fs-1);color:var(--ink-3);display:flex}.cc .lt small .ic{width:13px;height:13px}.cc li.quiz-row a,.cc li.quiz-row .row-static{background:var(--core-2);margin-top:var(--sp-1)}.cc-present{padding:var(--sp-2_5) var(--sp-4);box-shadow:inset 0 -1px 0 var(--ring);flex:none;display:none}.cc-present .btn{justify-content:center;width:100%}.cc .parts{margin:var(--sp-0_5) 0 var(--sp-2) var(--sp-5);padding:var(--sp-0_5) 0 var(--sp-0_5) var(--sp-3);box-shadow:inset 1.5px 0 0 color-mix(in srgb,var(--accent) 32%,transparent);list-style:none}.cc li.current .parts a{align-items:baseline;gap:var(--sp-2_5);padding:var(--sp-2) var(--sp-2_5);border-radius:var(--r-field);font-size:var(--fs-2);color:var(--ink-3);box-shadow:none;background:0 0;line-height:1.35;display:flex}.cc li.current .parts a:hover{background:var(--core-2);color:var(--ink)}.cc li.current .parts a.past{color:var(--ink-2)}.cc li.current .parts a.on{color:var(--accent-ink);background:color-mix(in srgb,var(--accent) 7%,transparent);font-weight:600}.cc .parts .pn{font:500 var(--fs-1)/1.2 var(--f-mono);font-variant-ligatures:none;letter-spacing:.04em;color:var(--ink-3);flex:none}.cc .parts a.on .pn{color:var(--accent-ink)}.cc-scrim{z-index:35;background:color-mix(in srgb,var(--bg) 45%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:fixed;inset:0}@media (max-width:960px){.player,body.cc-collapsed .player{grid-template-columns:minmax(0,1fr);gap:0}.cc-rail{display:none!important}.cc{z-index:40;width:min(400px,100vw - 24px);transition:transform .7s var(--ease),visibility 0s .7s;box-shadow:var(--sh-3),0 0 0 var(--ppad) var(--shell);position:fixed;top:12px;bottom:12px;right:12px;transform:translate(calc(100% + 32px))}body.cc-open .cc{visibility:visible;transition:transform .7s var(--ease);transform:none}body.cc-collapsed .cc{visibility:hidden}.pbar-progress .txt{display:none}.pbar .hide-sm{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.pbar-progress{padding:var(--sp-1);box-shadow:none;background:0 0}.pbar-title{font-size:var(--fs-3)}}@media (max-width:640px){body.player-body{--ppad:0px}.pbar{gap:var(--sp-1);height:52px;padding:0 var(--sp-1_5)}.pbar .brand-mark{box-sizing:content-box;padding:var(--sp-1_5);box-shadow:none;background-clip:content-box}.pbar-title,.pbar .spacer,.pbar .pbar-progress,.pbar .seg{display:none}.pbar-now{display:flex}.pbar-read{display:block}.pbar .pbar-btn,.pbar .pbar-cta{--h:44px;width:44px;padding:0}.cc-meta,.cc-present{display:flex}.cc .round{width:44px;height:44px}.cc-meta .seg a{min-width:44px;min-height:44px;padding:0 var(--sp-3);font-size:var(--fs-2);place-items:center;display:grid}.pbar .pbar-get{--h:44px;padding:0 var(--sp-3)}.pbar-cta .lbl{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.player{padding:0 var(--sp-2) var(--sp-2)}.stage{border-radius:var(--r-field);box-shadow:var(--sh-2);outline:0}.stage-bar{padding:var(--sp-2);gap:var(--sp-2)}.stage-bar .hide-sm{clip:rect(0,0,0,0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.stage-bar .nav-gap{width:44px}.stage-bar .now{display:none}.stage-bar .btn-sm{--h:44px;width:44px;padding:0}.stage-bar .complete .btn{width:100%}.complete{flex:1;justify-content:center;display:flex}.cc{border-radius:var(--r-field);--ppad:4px;width:calc(100vw - 16px);top:8px;bottom:8px;right:8px}}@media (prefers-reduced-motion:reduce){.cc{transition:none}}.stage-view{flex:1;min-height:0;display:flex;position:relative}.resume-note{z-index:5;align-items:center;gap:var(--sp-1_5);max-width:calc(100% - 24px);padding:var(--sp-1_5) var(--sp-1_5) var(--sp-1_5) var(--sp-4);border-radius:var(--r-pill);background:var(--core);color:var(--ink-2);font-size:var(--fs-2);box-shadow:var(--sh-2);animation:pn-in .6s var(--ease) both;line-height:1.3;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.resume-note .rn-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.resume-note .rn-title{color:var(--ink);font-weight:600}.resume-note .rn-top{padding:var(--sp-2) var(--sp-2_5);border-radius:var(--r-pill);font:600 var(--fs-2)/1 var(--f-body);color:var(--accent-ink);cursor:pointer;white-space:nowrap;transition:background-color .4s var(--ease);background:0 0;border:0;flex:none}.resume-note .rn-top:hover{background:color-mix(in srgb,var(--accent) 9%,var(--core))}.end-card{z-index:5;align-items:center;gap:var(--sp-4);width:min(640px,100% - 24px);padding:var(--sp-3_5) var(--sp-14) var(--sp-3_5) var(--sp-5);border-radius:var(--r-field);background:var(--core);box-shadow:var(--sh-3);animation:ec-in .7s var(--ease) both;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.end-card .ec-body{gap:var(--sp-1);flex-direction:column;flex:1;min-width:0;display:flex}.end-card p{margin:0}.ec-title{align-items:center;gap:var(--sp-2);font:640 var(--fs-4)/1.3 var(--f-display);letter-spacing:-.015em;color:var(--ink);display:flex}.ec-title .ic{width:18px;height:18px;color:var(--ink-3)}.ec-title.is-done .ic{color:var(--ok)}.ec-line{font-size:var(--fs-2);color:var(--ink-2);line-height:1.4}.ec-small{font-size:var(--fs-2);color:var(--ink-3);line-height:1.4}.ec-lock{align-items:center;gap:var(--sp-1_5);max-width:170px;font-size:var(--fs-2);color:var(--ink-3);line-height:1.35;display:flex}.ec-lock .ic{flex:none;width:14px;height:14px}.end-card .btn{flex:none}.end-card .ec-x{position:absolute;top:8px;right:8px}.complete{position:relative}.complete-note{z-index:6;width:max-content;max-width:min(320px,100vw - 32px);padding:var(--sp-2_5) var(--sp-3_5);border-radius:var(--r-field);background:var(--core);color:var(--ink-2);font-size:var(--fs-2);box-shadow:var(--sh-2);margin:0;line-height:1.4;position:absolute;bottom:calc(100% + 12px);right:0}@keyframes pn-in{0%{opacity:0;transform:translate(-50%,-8px)}}@keyframes ec-in{0%{opacity:0;transform:translate(-50%,14px)}}@keyframes pn-in-m{0%{opacity:0;transform:translateY(-8px)}}@media (max-width:640px){.resume-note{border-radius:var(--r-field);max-width:none;padding:var(--sp-2) var(--sp-1_5) var(--sp-2) var(--sp-3_5);animation-name:pn-in-m;top:8px;left:16px;right:16px;transform:none}.resume-note .rn-text{gap:var(--sp-0_5);flex-direction:column;flex:1;line-height:1.3;display:flex}.resume-note .rn-label{font-size:var(--fs-2);color:var(--ink-3);white-space:normal}.resume-note .rn-title{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-3);overflow:hidden}.end-card{align-items:stretch;gap:var(--sp-3);width:calc(100% - 16px);padding:var(--sp-3_5) var(--sp-12) var(--sp-3_5) var(--sp-4);flex-direction:column;bottom:8px}.end-card .btn{justify-content:center;width:100%}.ec-title{white-space:nowrap}.ec-lock{max-width:none}.complete-note{left:50%;right:auto;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.resume-note,.end-card{animation:none}}.complete .btn.is-done:disabled{opacity:1;cursor:default}.player.player-preview{grid-template-columns:minmax(0,1fr)}.preview-mark{flex:none}.preview-note{font-size:var(--fs-2);color:var(--ink-3);flex:none}.cc .cc-sub{margin-top:var(--sp-1_5)}.cc .cc-sub-h{padding:var(--sp-2_5) var(--sp-3) var(--sp-1);font:500 var(--fs-1)/1.3 var(--f-mono);font-variant-ligatures:none;letter-spacing:.06em;color:var(--ink-3);overflow-wrap:anywhere;display:block}.cc .cc-sub>ol{padding:0}.pbar-report .ic{width:16px;height:16px}.report-form{gap:var(--sp-4);flex-direction:column;display:flex}.report-form textarea{resize:vertical;width:100%;min-height:150px}.report-where{padding:var(--sp-2_5) var(--sp-3_5);border-radius:var(--r-field);background:var(--core-2);box-shadow:inset 2px 0 0 var(--accent);color:var(--ink-2);font-size:var(--fs-2);overflow-wrap:anywhere;margin:0}.report-count{font-family:var(--f-mono);font-variant-ligatures:none;align-self:flex-end}.report-count.over{color:var(--err)}.report-form .field{flex-direction:column;display:flex}.report-actions{gap:var(--sp-2_5);flex-wrap:wrap;display:flex}.report-done{align-items:flex-start;gap:var(--sp-4);flex-direction:column;display:flex}.report-done .orb{color:var(--ok)}.report-done p{color:var(--ink);margin:0}.pbar-hw{position:relative}.pbar-hw .ic{width:16px;height:16px}.hw-dot{border-radius:var(--r-pill);background:var(--ink-3);flex:none;width:7px;height:7px}.pbar-hw[data-status=ACCEPTED] .hw-dot{background:var(--ok)}.pbar-hw[data-status=CHANGES] .hw-dot{background:var(--warn)}.pbar-hw[data-status=SENT] .hw-dot{background:var(--info)}.hw-dot.is-new{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}.hw-sheet .drawer-panel{width:min(560px,100%)}.hw-sheet .flash{margin:0}.hw-current{gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-field);background:var(--core-2);box-shadow:inset 0 0 0 1px var(--ring);flex-direction:column;display:flex}.hw-current-head{align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;display:flex}.hw-when{font:500 var(--fs-1)/1.3 var(--f-mono);font-variant-ligatures:none;color:var(--ink-3)}.hw-comment{gap:var(--sp-1_5);padding:var(--sp-3) var(--sp-3_5);border-radius:var(--r-field);background:var(--core);box-shadow:inset 2px 0 0 var(--accent);flex-direction:column;display:flex}.hw-note{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink-2);font-size:var(--fs-2);margin:0}.hw-sheet .hw-code{background:var(--core);max-height:min(360px,50vh)}.hw-code-input{font:400 var(--fs-2)/1.5 var(--f-mono);font-variant-ligatures:none;tab-size:4}.hw-form textarea.hw-code-input{min-height:190px}.ec-hw{align-items:center;gap:var(--sp-2) var(--sp-3);margin-top:var(--sp-2);flex-wrap:wrap;display:flex}
