:root{--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "Cascadia Code", monospace;--text-xs: .8125rem;--text-sm: .9375rem;--text-base: 1.0625rem;--text-md: 1.1875rem;--text-lg: 1.375rem;--text-xl: 1.625rem;--text-2xl: 2rem;--text-3xl: 2.375rem;--leading-tight: 1.25;--leading-normal: 1.55;--leading-relaxed: 1.7;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 2.5rem;--touch-min: 48px;--color-text-primary: #111111;--color-text-secondary: #4a4a4a;--color-text-tertiary: #767676;--color-background-primary: #ffffff;--color-background-secondary: #f4f6f9;--color-border-secondary: #d8dde5;--color-border-tertiary: #e8ecf1;--border-radius-sm: 8px;--border-radius-md: 12px;--border-radius-lg: 16px;--accent: #185fa5;--accent-light: #e6f1fb;--accent-dark: #0c447c;--success-bg: #e1f5ee;--success-text: #085041;--error-bg: #fcebeb;--error-text: #791f1f;--max-width: 920px;--caption-tracking: .08em}@media(min-width:768px){:root{--text-base: 1rem;--text-md: 1.125rem;--text-lg: 1.3125rem;--text-xl: 1.5rem;--text-2xl: 1.875rem;--text-3xl: 2.25rem}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-background-secondary);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--font-mono);font-size:.88em;background:var(--color-background-secondary);padding:3px 7px;border-radius:5px}.caption{display:block;font-size:var(--text-xs);font-weight:700;letter-spacing:var(--caption-tracking);text-transform:uppercase;line-height:var(--leading-tight);color:var(--color-text-tertiary);margin-bottom:var(--space-xs)}.caption--accent{color:var(--accent)}.caption--success{color:#0f6e56}.caption--warn{color:#854f0b}.caption--on-dark{color:#ffffffbf}.caption-pill{display:inline-block;font-size:var(--text-xs);font-weight:700;letter-spacing:var(--caption-tracking);text-transform:uppercase;padding:6px 14px;border-radius:999px;line-height:1}.caption-pill--accent,.caption-pill--cat{color:var(--accent);background:var(--accent-light)}.caption-pill,.caption-pill--accent,.caption-pill--cat{margin-bottom:var(--space-md)}.layout{min-height:100vh;display:flex;flex-direction:column}.site-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-background-primary);border-bottom:1px solid var(--color-border-tertiary);position:sticky;top:0;z-index:100}.brand{display:flex;align-items:center;gap:.6rem;font-size:var(--text-md);font-weight:700;color:var(--color-text-primary);text-decoration:none}.brand:hover{text-decoration:none}.brand-icon{width:36px;height:36px;background:var(--accent);color:#fff;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:800;flex-shrink:0}.site-nav{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.site-nav>a:not(.btn){display:none;color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:600}.user-chip{display:none;font-size:var(--text-sm);color:var(--color-text-secondary);background:var(--color-background-secondary);padding:6px 12px;border-radius:999px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-main{flex:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:var(--space-lg) var(--space-md) var(--space-2xl)}.site-main:has(.learning-app){padding-bottom:calc(var(--space-2xl) + 80px)}.site-footer{padding:var(--space-lg) var(--space-md);text-align:center;font-size:var(--text-sm);color:var(--color-text-tertiary);line-height:var(--leading-relaxed);border-top:1px solid var(--color-border-tertiary)}.footer-note{margin-top:var(--space-xs);color:#854f0b;font-size:var(--text-sm)}@media(min-width:640px){.site-header{padding:var(--space-sm) var(--space-lg)}.site-nav>a:not(.btn){display:block}.user-chip{display:block}.site-main{padding:var(--space-xl) var(--space-lg) var(--space-2xl)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-size:var(--text-base);font-weight:600;min-height:var(--touch-min);padding:12px 20px;border-radius:var(--border-radius-md);border:2px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,transform .1s;-webkit-tap-highlight-color:transparent}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-ghost{background:var(--color-background-primary);color:var(--color-text-primary);border-color:var(--color-border-secondary)}.btn-ghost:hover:not(:disabled){background:var(--color-background-secondary)}.btn-sm{font-size:var(--text-sm);min-height:42px;padding:8px 16px}.btn-lg{font-size:var(--text-md);min-height:54px;padding:14px 28px}.btn-block{width:100%}.btn-google{width:100%;background:#fff;border:2px solid var(--color-border-secondary);color:var(--color-text-primary)}.link-btn{background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;font-weight:600;text-decoration:underline;min-height:var(--touch-min)}.hero{text-align:center;padding:var(--space-lg) 0 var(--space-2xl)}.hero h1{font-size:var(--text-3xl);font-weight:800;line-height:var(--leading-tight);margin-bottom:var(--space-md);letter-spacing:-.02em}.hero h1 em{font-style:normal;color:var(--accent)}.hero-lead{font-size:var(--text-md);color:var(--color-text-secondary);line-height:var(--leading-relaxed);max-width:36rem;margin:0 auto var(--space-lg)}.hero-actions{display:flex;flex-direction:column;gap:var(--space-sm)}@media(min-width:480px){.hero-actions{flex-direction:row;justify-content:center;flex-wrap:wrap}}.features,.courses-section,.customize-cta{margin-bottom:var(--space-2xl)}.section-head{text-align:center;margin-bottom:var(--space-lg)}.section-head h2{font-size:var(--text-xl);font-weight:800;line-height:var(--leading-tight);letter-spacing:-.01em}.feature-grid{display:grid;grid-template-columns:1fr;gap:var(--space-md)}@media(min-width:540px){.feature-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:900px){.feature-grid{grid-template-columns:repeat(3,1fr)}}.feature-card{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg)}.feature-icon{font-size:2rem;display:block;margin-bottom:var(--space-sm)}.feature-card h3{font-size:var(--text-md);font-weight:700;margin-bottom:var(--space-xs);line-height:var(--leading-tight)}.feature-card p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.course-grid{display:grid;gap:var(--space-md)}.course-card{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);overflow:hidden}.course-card .illustration--card{margin:calc(-1 * var(--space-lg)) calc(-1 * var(--space-lg)) var(--space-md)}.illustration{margin:0 0 var(--space-md);max-width:100%}.illustration img{display:block;width:100%;height:auto;border-radius:var(--border-radius-md);border:1px solid var(--color-border-tertiary);background:var(--color-background-secondary)}.illustration--hero img{border-radius:var(--border-radius-lg)}.illustration--banner{margin-bottom:var(--space-lg)}.illustration--banner img{border-radius:var(--border-radius-lg);max-height:220px;object-fit:cover}.illustration--inline img{max-height:280px;object-fit:contain}.illustration--tutorial img{border-color:var(--accent);max-height:320px;object-fit:contain}.illustration--card img{border:none;border-radius:0;border-bottom:1px solid var(--color-border-tertiary);max-height:160px;object-fit:cover}.illustration-caption{margin-top:var(--space-xs);font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:var(--leading-normal)}.illustration-credit{display:block;margin-top:.15rem;font-style:italic}.concept .illustration{margin:var(--space-xs) 0 var(--space-sm)}.analogy .illustration{margin-bottom:var(--space-sm)}.course-intro .illustration--hero{margin-bottom:var(--space-lg)}.course-card h3{font-size:var(--text-lg);font-weight:800;margin:var(--space-xs) 0;line-height:var(--leading-tight)}.course-card>p{color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed);margin-bottom:var(--space-md)}.course-meta{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);font-size:var(--text-sm);font-weight:600;color:var(--color-text-tertiary);margin-bottom:var(--space-lg)}.course-card .btn{width:100%}.customize-cta{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);text-align:center}.customize-cta h2{font-size:var(--text-xl);font-weight:800;margin-bottom:var(--space-sm)}.catalog-empty{text-align:center;color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed);padding:var(--space-xl)}.course-card--soon{opacity:.85}.course-soon-btn{pointer-events:none;width:100%}.sync-banner{font-size:var(--text-sm);font-weight:600;color:var(--accent);background:var(--accent-light);padding:var(--space-sm) var(--space-md);border-radius:var(--border-radius-md);margin-bottom:var(--space-md);text-align:center}.course-loading-shell{padding:var(--space-md) 0}.course-loading-title{font-size:var(--text-xl);font-weight:800;margin-bottom:var(--space-lg)}.learning-app{padding:0}.course-header{margin-bottom:var(--space-lg)}.course-header h1{font-size:var(--text-xl);font-weight:800;line-height:var(--leading-tight);display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.course-icon{font-size:1.75rem;flex-shrink:0}.course-subtitle{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin-top:var(--space-xs);margin-bottom:var(--space-md)}.course-outline{margin-bottom:var(--space-lg)}.course-intro{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg)}.intro-hook-block{margin-bottom:var(--space-md)}.intro-hook{font-size:var(--text-md);font-weight:600;line-height:var(--leading-relaxed);color:var(--color-text-primary);margin:0}.intro-grid{display:grid;grid-template-columns:1fr;gap:var(--space-md)}@media(min-width:640px){.intro-grid{grid-template-columns:1fr 1fr}}.intro-card{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:var(--space-md);margin-bottom:0}.intro-card-assumptions{background:#faeeda;border:1px solid #e8d5a8}.intro-body{font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-text-secondary);margin:0}.intro-card-assumptions .intro-body{color:#5c4a1a}.sess-nav{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px;margin:0 calc(-1 * var(--space-md));padding-left:var(--space-md);padding-right:var(--space-md);-webkit-overflow-scrolling:touch;scrollbar-width:none}.sess-nav::-webkit-scrollbar{display:none}.sess-card{position:relative;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:9.5rem;min-height:4.5rem;padding:10px 12px;border-radius:var(--border-radius-md);border:2px solid var(--color-border-secondary);background:var(--color-background-primary);color:var(--color-text-primary);cursor:pointer;text-align:left;font-family:inherit;-webkit-tap-highlight-color:transparent;transition:border-color .15s,background .15s}.sess-card-num{font-size:var(--text-xs);font-weight:800;letter-spacing:var(--caption-tracking);text-transform:uppercase;color:var(--color-text-tertiary)}.sess-card-title{font-size:var(--text-sm);font-weight:700;line-height:var(--leading-tight);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sess-card-check{position:absolute;top:8px;right:8px;font-size:var(--text-xs);font-weight:800;color:#0f6e56}.sess-card.on{background:var(--accent);border-color:var(--accent)}.sess-card.on .sess-card-num,.sess-card.on .sess-card-title{color:#e6f1fb}.sess-card.on .sess-card-check{color:#b8f5d8}.sess-card.done:not(.on){border-color:#0f6e56;background:var(--success-bg)}.sess-card.done:not(.on) .sess-card-title{color:#085041}@media(min-width:640px){.sess-nav{margin:0;padding-left:0;padding-right:0;flex-wrap:wrap;overflow-x:visible}.sess-card{width:calc(25% - 8px);min-width:9rem}}.prog-wrap{margin-bottom:var(--space-lg)}.prog-header{display:flex;flex-direction:column;gap:4px;margin-bottom:var(--space-sm)}.prog-title{font-size:var(--text-md);font-weight:700;line-height:var(--leading-tight);color:var(--color-text-primary)}.prog-pct{font-size:var(--text-sm);font-weight:700;color:var(--accent)}.prog-track{height:10px;background:var(--color-background-secondary);border-radius:999px;overflow:hidden;border:1px solid var(--color-border-tertiary)}.prog-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .4s}@media(min-width:480px){.prog-header{flex-direction:row;justify-content:space-between;align-items:baseline}}.exam-banner{display:flex;flex-direction:column;gap:var(--space-md);background:#eaf3de;border:2px solid #3b6d11;border-radius:var(--border-radius-md);padding:var(--space-md);margin-bottom:var(--space-lg)}.exam-banner p{font-size:var(--text-base);font-weight:600;color:#27500a;line-height:var(--leading-relaxed)}.exam-banner .btn{width:100%}@media(min-width:480px){.exam-banner{flex-direction:row;align-items:center;justify-content:space-between}.exam-banner .btn{width:auto}}.stage-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:var(--space-lg)}@media(max-width:720px){.stage-tabs{display:flex;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}.stab{min-width:4.75rem;flex-shrink:0;font-size:var(--text-xs);min-height:64px}}.stab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:72px;padding:var(--space-sm) 6px;font-size:var(--text-sm);font-weight:700;text-align:center;cursor:pointer;background:var(--color-background-primary);color:var(--color-text-secondary);border:2px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);font-family:inherit;position:relative;-webkit-tap-highlight-color:transparent}.stab.on{background:var(--accent-light);color:var(--accent-dark);border-color:var(--accent)}.stab-icon{font-size:1.5rem;line-height:1}.stab-badge{position:absolute;top:6px;right:8px;font-size:var(--text-xs);font-weight:800;color:#0f6e56}.panel{display:none}.panel.on{display:block}.theory-card{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);margin-bottom:var(--space-md)}.theory-card h2{font-size:var(--text-lg);font-weight:800;line-height:var(--leading-tight);margin-bottom:var(--space-md)}.text-block{position:relative;padding-right:3rem;margin-bottom:var(--space-sm);max-width:100%;overflow:hidden}.text-block:last-child{margin-bottom:0}.text-block-body{min-width:0;max-width:100%;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word}.text-block-heading{margin-bottom:var(--space-md)}.text-block-heading h2,.text-block-step-title h4{margin:0}.text-block-question{margin-bottom:var(--space-md)}.text-block-question .q-text{margin-bottom:0}.text-block-inline{flex:1;margin-bottom:0;padding-right:2.75rem}.text-block-list-item{display:inline-flex;align-items:flex-start;gap:var(--space-sm);padding-right:2.5rem;width:100%}.keypoint.text-block{display:flex;align-items:flex-start;gap:var(--space-sm)}.keypoint.text-block .text-block-body{display:flex;align-items:flex-start;gap:var(--space-sm);flex:1;min-width:0}.keypoint.text-block.text-block-playing .text-block-body{display:block}.keypoint.text-block p{margin:0}.exam-banner.text-block{display:flex;flex-direction:column;gap:var(--space-md);padding-right:3rem}@media(min-width:480px){.exam-banner.text-block{flex-direction:row;align-items:center;justify-content:space-between}}.feedback.text-block{display:block}.prompt-box.text-block{margin:var(--space-sm) 0}.tts-btn{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;border:2px solid var(--color-border-secondary);border-radius:50%;background:var(--color-background-primary);color:var(--accent);cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent;transition:background .15s,border-color .15s,color .15s}.tts-btn:hover{background:var(--accent-light);border-color:var(--accent)}.tts-btn.playing{background:var(--accent);border-color:var(--accent);color:#fff}.tts-icon{font-size:.7rem;line-height:1}.tts-btn-compact{position:static;width:2.25rem;height:2.25rem}.karaoke-text{display:block;width:100%;max-width:100%;margin:0;line-height:var(--leading-relaxed);overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;white-space:normal}.karaoke-word{display:inline;border-radius:4px;padding:1px 0;transition:background .12s ease,color .12s ease;box-decoration-break:clone;-webkit-box-decoration-break:clone}.karaoke-word.spoken{color:var(--accent-dark)}.karaoke-word.active{background:#ffe566;color:#1a1a1a;font-weight:700;outline:2px solid #ffd43b;outline-offset:1px}.text-block-playing .text-block-body{line-height:var(--leading-relaxed)}.concept.text-block .text-block-body,.feedback.text-block .text-block-body,.prompt-box.text-block .text-block-body{width:100%;max-width:100%}.opt-row .karaoke-text{text-align:left}.opt-row{display:flex;align-items:stretch;gap:8px}.opt-row .opt{flex:1;min-width:0}.concept{background:var(--color-background-secondary);border-radius:var(--border-radius-md);padding:var(--space-md);margin-bottom:var(--space-sm)}.concept.text-block{margin-bottom:var(--space-sm)}.concept .term{font-size:var(--text-base);font-weight:700;margin-bottom:6px;color:var(--color-text-primary)}.concept .def{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.analogy{background:var(--accent-light);border-radius:var(--border-radius-md);padding:var(--space-md);margin-top:var(--space-md);border-left:4px solid var(--accent)}.analogy p{font-size:var(--text-base);color:var(--accent-dark);line-height:var(--leading-relaxed)}.keypoint{display:flex;gap:var(--space-sm);align-items:flex-start;margin-bottom:var(--space-sm)}.keypoint span{color:var(--accent);font-size:var(--text-lg);line-height:1.2;flex-shrink:0}.keypoint p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed)}.quiz-wrap{margin-bottom:var(--space-md)}.reinforce-panel h2{font-size:var(--text-lg);margin-bottom:var(--space-sm)}.reinforce-hint{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-md)}.matcher-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}@media(max-width:640px){.matcher-grid{grid-template-columns:1fr}}.matcher-col{display:flex;flex-direction:column;gap:var(--space-sm)}.matcher-item{width:100%;text-align:left;padding:var(--space-md);border:2px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-primary);font-size:var(--text-sm);line-height:var(--leading-relaxed);color:var(--color-text-primary);cursor:pointer;font-family:inherit}.matcher-item--def{font-size:var(--text-sm);color:var(--color-text-secondary)}.matcher-item.selected{border-color:var(--accent);background:var(--accent-light)}.matcher-item.matched{border-color:#3b6d11;background:#eaf3de;color:#27500a;cursor:default}.matcher-item.wrong{border-color:#c44;background:var(--error-bg);animation:matcher-shake .45s ease}@keyframes matcher-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.flashcard{width:100%;min-height:220px;margin:var(--space-md) 0 var(--space-sm);padding:0;border:none;background:transparent;cursor:pointer;perspective:1000px}.flashcard-inner{position:relative;width:100%;min-height:220px;transition:transform .45s ease;transform-style:preserve-3d}.flashcard.flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;gap:var(--space-sm);padding:var(--space-lg);border-radius:var(--border-radius-lg);border:2px solid var(--color-border-secondary);backface-visibility:hidden;text-align:center}.flashcard-front{background:var(--accent-light);color:var(--accent-dark)}.flashcard-back{background:#eeedfe;color:#3c3489;transform:rotateY(180deg)}.flashcard-face p:last-child{font-size:var(--text-base);line-height:var(--leading-relaxed);margin:0}.flashcard-tap-hint{text-align:center;font-size:var(--text-xs);color:var(--color-text-tertiary);margin-bottom:var(--space-md)}.flashcard-nav{display:flex;justify-content:space-between;gap:var(--space-sm)}.q-card{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);margin-bottom:var(--space-md)}.q-text{font-size:var(--text-md);font-weight:600;margin-bottom:var(--space-md);line-height:var(--leading-relaxed);color:var(--color-text-primary)}.options{display:flex;flex-direction:column;gap:var(--space-sm)}.options .opt-row .opt{margin:0}.opt{min-height:var(--touch-min);padding:14px 16px;border-radius:var(--border-radius-md);border:2px solid var(--color-border-secondary);background:var(--color-background-secondary);font-size:var(--text-base);font-weight:500;cursor:pointer;text-align:left;font-family:inherit;line-height:var(--leading-normal);transition:border-color .15s,background .15s;-webkit-tap-highlight-color:transparent}.opt:hover:not(:disabled),.opt:focus-visible:not(:disabled){border-color:var(--accent);background:var(--accent-light);outline:none}.opt.selected{border-color:var(--accent);background:var(--accent-light)}.opt.correct{background:var(--success-bg);border-color:#0f6e56;color:var(--success-text)}.opt.wrong{background:var(--error-bg);border-color:#a32d2d;color:var(--error-text)}.opt:disabled{cursor:default}.feedback{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--border-radius-md);font-size:var(--text-base);line-height:var(--leading-relaxed);display:none}.feedback.show{display:block}.feedback.ok{background:var(--success-bg);color:var(--success-text)}.feedback.bad{background:var(--error-bg);color:var(--error-text)}.quiz-score{background:var(--color-background-primary);border:2px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-xl);text-align:center;margin-top:var(--space-md)}.quiz-score .big{font-size:var(--text-3xl);font-weight:800;color:var(--accent);line-height:1}.quiz-score p{font-size:var(--text-base);color:var(--color-text-secondary);margin-top:var(--space-sm);line-height:var(--leading-relaxed)}.retry-btn{margin-top:var(--space-md);width:100%}.tut-panel{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg)}.tut-panel>h2{font-size:var(--text-lg);font-weight:800;line-height:var(--leading-tight);margin-bottom:var(--space-lg)}.tut-step{display:flex;gap:var(--space-md);margin-bottom:var(--space-lg);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border-tertiary)}.tut-step:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.tut-num{width:36px;height:36px;border-radius:50%;background:var(--accent-light);color:var(--accent);font-size:var(--text-sm);font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.tut-body h4{font-size:var(--text-base);font-weight:700;margin-bottom:var(--space-xs);line-height:var(--leading-tight)}.tut-body p{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin-bottom:var(--space-sm)}.copyable-block{margin:var(--space-sm) 0}.copyable-block__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-xs)}.copy-btn{font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:6px 12px;border:1px solid var(--color-border-secondary);border-radius:6px;background:var(--color-background-primary);color:var(--accent);cursor:pointer}.copy-btn:hover{background:var(--accent-light);border-color:var(--accent)}.prompt-box,.code-box{background:var(--color-background-secondary);border-radius:0 var(--border-radius-sm) var(--border-radius-sm) 0;padding:var(--space-md);margin:0;font-size:var(--text-sm);font-family:var(--font-mono);line-height:var(--leading-relaxed);white-space:pre-wrap;overflow-x:auto}.prompt-box{border-left:4px solid #7f77dd}.code-box{border-left:4px solid var(--accent)}.code-box pre,.prompt-box pre{margin:0;font-family:inherit;white-space:pre-wrap;word-break:break-word}.tutorial-runtime-note{font-size:var(--text-sm);color:var(--color-text-secondary);background:var(--accent-light);border-radius:var(--border-radius-md);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-lg);line-height:var(--leading-relaxed)}.python-playground__dataset{font-size:var(--text-sm);color:var(--color-text-secondary);margin-bottom:var(--space-sm);line-height:var(--leading-relaxed)}.python-playground__dataset code{font-family:var(--font-mono);font-size:.95em;color:var(--accent-dark)}.python-playground{margin:var(--space-sm) 0}.python-playground__actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);justify-content:flex-end}.run-btn{font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:6px 14px;border:1px solid var(--accent);border-radius:6px;background:var(--accent);color:#fff;cursor:pointer}.run-btn:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark)}.run-btn:disabled,.copy-btn:disabled{opacity:.6;cursor:not-allowed}.python-playground__editor{width:100%;min-height:8rem;resize:vertical;border:1px solid var(--color-border-secondary);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-relaxed);color:var(--color-text-primary)}.python-playground__editor:focus{outline:2px solid var(--accent-light);border-color:var(--accent)}.python-playground__output{margin-top:var(--space-sm);background:#0f172a;border-radius:var(--border-radius-md);padding:var(--space-md)}.python-playground__output .caption{color:#94a3b8;margin-bottom:var(--space-xs)}.python-playground__stdout,.python-playground__error,.python-playground__status{margin:0;font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-relaxed);white-space:pre-wrap;word-break:break-word}.python-playground__stdout{color:#e2e8f0}.python-playground__error{color:#fca5a5}.python-playground__status{color:#94a3b8}.python-playground__hint{margin-top:var(--space-xs);font-size:var(--text-xs);color:var(--color-text-tertiary);line-height:var(--leading-relaxed)}.tool-tag{display:inline-block;font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:5px 10px;border-radius:6px;margin:4px 6px 4px 0;background:var(--accent-light);color:var(--accent-dark)}.tool-tag.ai{background:#eeedfe;color:#3c3489}.tool-tag.creative{background:#faeeda;color:#854f0b}.tool-tag.analytics{background:#eaf3de;color:#3b6d11}.tool-tag.ads{background:var(--accent-light);color:var(--accent)}.deliverable{background:#eaf3de;border-radius:var(--border-radius-md);padding:var(--space-md);margin-top:var(--space-sm);border-left:4px solid #3b6d11}.deliverable ul{padding-left:1.25rem;margin-top:var(--space-xs)}.deliverable li{font-size:var(--text-base);color:#27500a;line-height:var(--leading-relaxed);margin-bottom:4px}.learning-app .nav-row{position:fixed;bottom:0;left:0;right:0;display:flex;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);padding-bottom:max(var(--space-sm),env(safe-area-inset-bottom));background:var(--color-background-primary);border-top:1px solid var(--color-border-tertiary);box-shadow:0 -4px 20px #0000000f;z-index:90;align-items:center}.learning-app .nav-row .btn{flex:1}.learning-app .stage-status{display:none;font-size:var(--text-sm);font-weight:600;color:var(--color-text-tertiary);text-align:center}@media(min-width:640px){.site-main:has(.learning-app){padding-bottom:var(--space-2xl)}.learning-app .nav-row{position:static;box-shadow:none;padding:0;margin-top:var(--space-lg);background:transparent;border-top:none}.learning-app .nav-row .btn{flex:none}.learning-app .stage-status{display:block;flex:1}.retry-btn{width:auto}}.auth-page{display:flex;justify-content:center;padding:var(--space-lg) 0}.auth-card{width:100%;max-width:420px;background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-xl) var(--space-lg)}.auth-card h1{font-size:var(--text-xl);font-weight:800;margin-bottom:var(--space-xs)}.auth-sub{font-size:var(--text-base);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin-bottom:var(--space-lg)}.auth-divider{display:flex;align-items:center;gap:var(--space-md);margin:var(--space-lg) 0;color:var(--color-text-tertiary);font-size:var(--text-sm);font-weight:600}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--color-border-tertiary)}.auth-form{display:flex;flex-direction:column;gap:var(--space-md)}.auth-form label{display:flex;flex-direction:column;gap:6px;font-size:var(--text-sm);font-weight:700}.auth-form label .caption{margin-bottom:2px}.auth-form input{min-height:var(--touch-min);padding:12px 16px;border:2px solid var(--color-border-secondary);border-radius:var(--border-radius-md);font-family:inherit;font-size:var(--text-base)}.auth-form input:focus{outline:none;border-color:var(--accent)}.form-error{color:#a32d2d;font-size:var(--text-base);font-weight:600}.auth-switch,.auth-back{text-align:center;font-size:var(--text-base);color:var(--color-text-secondary);margin-top:var(--space-lg)}.notice{padding:var(--space-md);border-radius:var(--border-radius-md);font-size:var(--text-base);line-height:var(--leading-relaxed);margin-bottom:var(--space-md)}.notice-warn{background:#faeeda;color:#854f0b}.exam-page{max-width:720px;margin:0 auto}.exam-header{margin-bottom:var(--space-xl)}.exam-header h1{font-size:var(--text-xl);font-weight:800;margin-bottom:var(--space-sm);line-height:var(--leading-tight)}.exam-header p{color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed)}.exam-meta{font-size:var(--text-sm);font-weight:600;color:var(--color-text-tertiary);margin-top:var(--space-sm)}.exam-result{text-align:center;padding:var(--space-xl);border-radius:var(--border-radius-lg);margin-top:var(--space-lg)}.exam-result.success{background:var(--success-bg);color:var(--success-text)}.exam-result.fail{background:var(--error-bg);color:var(--error-text)}.exam-result .big{font-size:var(--text-3xl);font-weight:800}.exam-result p{font-size:var(--text-base);margin-top:var(--space-sm);line-height:var(--leading-relaxed)}.exam-actions{display:flex;flex-direction:column;gap:var(--space-sm);margin-top:var(--space-lg)}@media(min-width:480px){.exam-actions{flex-direction:row;justify-content:center}}.cert-page{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg)}.certificate{width:100%;max-width:800px}.cert-border{background:linear-gradient(135deg,var(--accent) 0%,#0c447c 100%);padding:4px;border-radius:var(--border-radius-lg)}.cert-inner{background:#fff;padding:var(--space-2xl) var(--space-lg);text-align:center;border-radius:calc(var(--border-radius-lg) - 2px)}.cert-inner h1{font-size:var(--text-2xl);margin:var(--space-sm) 0 var(--space-md);font-weight:800;line-height:var(--leading-tight)}.cert-name{font-size:var(--text-2xl);font-weight:800;color:var(--accent-dark);margin:var(--space-sm) 0 var(--space-md);font-family:Georgia,serif;line-height:var(--leading-tight)}.cert-body{font-size:var(--text-base);color:var(--color-text-secondary);max-width:28rem;margin:0 auto var(--space-xl);line-height:var(--leading-relaxed)}.cert-footer{display:flex;flex-direction:column;gap:var(--space-lg);border-top:1px solid var(--color-border-tertiary);padding-top:var(--space-lg)}@media(min-width:480px){.cert-footer{flex-direction:row;justify-content:space-around}}.cert-date,.cert-id{font-size:var(--text-base);font-weight:700}.cert-actions{display:flex;flex-direction:column;gap:var(--space-sm);width:100%;max-width:400px}@media(min-width:480px){.cert-actions{flex-direction:row;max-width:none}}.page-loading{display:flex;justify-content:center;padding:var(--space-2xl)}.spinner{width:40px;height:40px;border:3px solid var(--color-border-secondary);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-box{text-align:center;padding:var(--space-xl);background:var(--color-background-primary);border-radius:var(--border-radius-lg);border:1px solid var(--color-border-tertiary)}.error-box h2{font-size:var(--text-lg);font-weight:800;margin-bottom:var(--space-sm)}.error-box p{color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed);margin-bottom:var(--space-lg)}@media print{.no-print,.site-header,.site-footer,.nav-row{display:none!important}.site-main{max-width:none;padding:0}.cert-border{padding:2px}}.author-page{max-width:var(--max-width);margin:0 auto;padding-bottom:var(--space-2xl)}.author-header{display:flex;flex-direction:column;gap:var(--space-md);margin-bottom:var(--space-xl)}@media(min-width:640px){.author-header{flex-direction:row;justify-content:space-between;align-items:flex-start}}.author-header h1{font-size:var(--text-2xl);font-weight:800;line-height:var(--leading-tight);margin:var(--space-xs) 0}.author-muted{color:var(--color-text-secondary);font-size:var(--text-base);line-height:var(--leading-relaxed)}.author-stats{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.author-panel{background:var(--color-background-primary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg)}.author-panel h2{font-size:var(--text-lg);font-weight:800;margin-bottom:var(--space-md)}.author-form{display:grid;gap:var(--space-md)}@media(min-width:640px){.author-form{grid-template-columns:1fr 1fr auto;align-items:end}}.author-form label{display:flex;flex-direction:column;gap:var(--space-xs);font-size:var(--text-sm);font-weight:600}.author-form input,.author-form select,.author-panel input[type=file]{font-size:var(--text-base);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-secondary);border-radius:var(--border-radius-sm);min-height:var(--touch-min)}.author-file-list{list-style:none;margin:var(--space-sm) 0;font-size:var(--text-sm);color:var(--color-text-secondary)}.author-file-list--uploaded{color:var(--success-text);font-weight:600}.author-actions{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-md)}.author-error{color:var(--error-text);background:var(--error-bg);padding:var(--space-sm) var(--space-md);border-radius:var(--border-radius-sm);margin-bottom:var(--space-md);font-size:var(--text-sm);font-weight:600}.author-job{margin-top:var(--space-lg);padding:var(--space-md);background:var(--color-background-secondary);border-radius:var(--border-radius-md);border:1px solid var(--color-border-tertiary)}.author-job-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-sm)}.author-job-percent{font-size:var(--text-2xl);font-weight:800;color:var(--accent);line-height:1}.author-job-stage{font-size:var(--text-sm);font-weight:700;color:var(--color-text-primary);text-align:right}.author-job-bar{height:10px;background:var(--color-border-tertiary);border-radius:5px;overflow:hidden;margin-bottom:var(--space-sm)}.author-job-fill{height:100%;background:var(--accent);transition:width .5s ease}.author-job-fill--pulse{animation:author-job-pulse 2s ease-in-out infinite}@keyframes author-job-pulse{0%,to{opacity:1}50%{opacity:.65}}.author-job-message{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:var(--leading-relaxed);margin:0 0 var(--space-sm)}.author-job-meta{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-md);font-size:var(--text-xs);font-weight:600;color:var(--color-text-tertiary);margin-bottom:var(--space-md)}.author-job-hint{width:100%;font-weight:500}.author-job-ill{font-size:var(--text-sm);font-weight:700;color:var(--accent-dark);margin:0 0 var(--space-sm)}.author-job-steps{list-style:none;display:grid;gap:var(--space-xs);margin:0 0 var(--space-md);padding:0}.author-job-step{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--text-sm);color:var(--color-text-tertiary)}.author-job-step--done{color:var(--success-text);font-weight:600}.author-job-step--current{color:var(--color-text-primary);font-weight:700}.author-job-step-icon{width:1.25rem;text-align:center;flex-shrink:0}.author-job-note{margin:0;font-size:var(--text-xs)}.author-job-cancel{margin-top:var(--space-sm);color:var(--error-text)}.author-job-cancel:hover{background:var(--error-bg)}.author-course-list{list-style:none;display:grid;gap:var(--space-sm)}.author-course-row{display:flex;gap:var(--space-sm);align-items:stretch}.author-course-row .author-course-item{flex:1}.author-delete-btn{flex-shrink:0;color:var(--error-text);align-self:center}.author-delete-btn:hover{background:var(--error-bg)}.author-course-item{width:100%;text-align:left;background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);padding:var(--space-md);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-md);cursor:pointer;font-size:var(--text-base)}.author-course-item:hover{border-color:var(--accent)}.author-course-item strong{flex:1;min-width:10rem}.author-edit-link{margin-left:var(--space-sm)}.author-editor-list{list-style:none;padding:0;margin:0;display:grid;gap:var(--space-sm)}.author-editor-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-md);background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-editor-row strong{display:block}.author-course-editor{position:relative}.author-edit-toolbar{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);margin:calc(-1 * var(--space-md)) calc(-1 * var(--space-md)) var(--space-md);background:color-mix(in srgb,var(--accent) 12%,var(--color-background));border-bottom:1px solid var(--color-border-tertiary)}.author-edit-toolbar__left,.author-edit-toolbar__right{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.author-edit-badge{font-size:var(--text-sm);font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.author-edit-save{font-size:var(--text-sm);color:var(--color-text-secondary)}.author-edit-error{margin-bottom:var(--space-md)}.author-edit-add-panel{margin-bottom:var(--space-md);padding:var(--space-md);background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-form--inline{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center}.author-form--inline input{flex:1;min-width:12rem}.learning-app--edit .editable-field-wrap{display:flex;flex-direction:column;gap:var(--space-xs);width:100%;min-width:0}.editable-field-label{font-size:var(--text-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-tertiary)}.learning-app--edit .editable-field-display{display:block;width:100%;box-sizing:border-box;cursor:text;border-radius:var(--border-radius-md);border:1px solid transparent;padding:var(--space-sm) var(--space-md);transition:border-color .15s,background .15s,box-shadow .15s}.learning-app--edit .editable-field-display:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--color-border-tertiary));background:color-mix(in srgb,var(--accent) 5%,var(--color-background))}.learning-app--edit .editable-field-input{display:block;width:100%;box-sizing:border-box;margin:0;font-family:inherit;font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--color-text-primary);background:var(--color-background);border:1px solid var(--color-border-secondary);border-radius:var(--border-radius-md);padding:var(--space-sm) var(--space-md);resize:none;transition:border-color .15s,box-shadow .15s}.learning-app--edit .editable-field-input--active{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent);outline:none}.learning-app--edit .editable-field-input.term,.learning-app--edit .editable-field-display.term{font-weight:700}.learning-app--edit .editable-field-input.def,.learning-app--edit .editable-field-display.def{color:var(--color-text-secondary)}.learning-app--edit textarea.editable-field-input{min-height:5rem}.learning-app--edit textarea.editable-field-input.prompt-box,.learning-app--edit .editable-field-input.pre{font-family:var(--font-mono);font-size:var(--text-sm);min-height:8rem}.learning-app--edit .editable-field-display.text-block-heading,.learning-app--edit .editable-field-input.text-block-heading{font-size:var(--text-xl);font-weight:700}.learning-app--edit .editable-field-display.course-subtitle,.learning-app--edit .editable-field-input.course-subtitle{font-size:var(--text-lg);color:var(--color-text-secondary)}.editable-placeholder{color:var(--color-text-tertiary);font-style:italic}.learning-app--edit .concept .editable-field-wrap+.editable-field-wrap{margin-top:var(--space-sm)}.learning-app--edit .keypoint{display:flex;gap:var(--space-sm);align-items:flex-start}.learning-app--edit .keypoint .editable-field-wrap{flex:1}.editable-illustration{position:relative}.editable-illustration--edit{margin-bottom:var(--space-md)}.editable-illustration__regen{margin-top:var(--space-sm)}.editable-illustration__missing{padding:var(--space-lg);text-align:center;color:var(--color-text-secondary);border:1px dashed var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-edit-session-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm) var(--space-md);margin:var(--space-md) 0;padding:var(--space-md);background:color-mix(in srgb,var(--accent) 8%,var(--color-background-secondary));border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}.author-edit-session-title{flex:1;min-width:12rem;margin:0}.author-edit-session-short{flex:1;min-width:10rem;margin:0}.author-edit-pairs{list-style:none;padding:0;margin:var(--space-md) 0 0;display:grid;gap:var(--space-sm)}.author-edit-pair{display:grid;grid-template-columns:minmax(10rem,1fr) minmax(14rem,2fr);gap:var(--space-md);align-items:start;padding:var(--space-md);background:var(--color-background-secondary);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md)}@media(max-width:640px){.author-edit-pair{grid-template-columns:1fr}}.quiz-wrap .opt-edit{display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-border-tertiary);border-radius:var(--border-radius-md);background:var(--color-background-secondary)}.quiz-wrap .opt-edit .editable-field-wrap{width:100%}.quiz-wrap .opt-edit--correct{color:var(--success-text)}
