:root{--tfe-navy-50:#e8edf8;--tfe-navy-100:#c5d0ef;--tfe-navy-200:#8fa3df;--tfe-navy-300:#5977cf;--tfe-navy-400:#2f53c2;--tfe-navy-500:#1a3a8a;--tfe-navy-600:#152f72;--tfe-navy-700:#10245a;--tfe-navy-800:#0b1942;--tfe-navy-900:#060e2a;--tfe-cyan-50:#e0f9fe;--tfe-cyan-100:#b3f0fc;--tfe-cyan-200:#66e0f9;--tfe-cyan-300:#22cfef;--tfe-cyan-400:#06b6d4;--tfe-cyan-500:#0891b2;--tfe-cyan-600:#0e7490;--tfe-cyan-700:#155e75;--tfe-sun:#f6b73c;--tfe-coral:#f26d6d;--tfe-leaf:#3cb371;--tfe-grape:#8b5cf6;--tfe-primary:var(--tfe-navy-500);--tfe-primary-strong:var(--tfe-navy-700);--tfe-accent:var(--tfe-cyan-400);--tfe-accent-strong:var(--tfe-cyan-600);--tfe-bg:#f4f7fd;--tfe-surface:#fff;--tfe-surface-2:var(--tfe-navy-50);--tfe-text:#0f1b3d;--tfe-text-muted:#4b587a;--tfe-border:#d6deef;--tfe-success:var(--tfe-leaf);--tfe-warning:var(--tfe-sun);--tfe-danger:var(--tfe-coral);--tfe-focus:var(--tfe-cyan-400);--tfe-font:"Inter", "InterVariable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--tfe-font-display:var(--tfe-font);--tfe-text-xs:.8rem;--tfe-text-sm:.95rem;--tfe-text-md:1.1rem;--tfe-text-lg:1.35rem;--tfe-text-xl:1.8rem;--tfe-text-2xl:2.4rem;--tfe-leading:1.5;--tfe-space-1:.25rem;--tfe-space-2:.5rem;--tfe-space-3:.75rem;--tfe-space-4:1rem;--tfe-space-5:1.5rem;--tfe-space-6:2rem;--tfe-space-7:3rem;--tfe-space-8:4rem;--tfe-radius-sm:.5rem;--tfe-radius:1rem;--tfe-radius-lg:1.5rem;--tfe-radius-pill:999px;--tfe-shadow:0 2px 6px #0f1b3d14, 0 8px 24px #0f1b3d14;--tfe-shadow-lg:0 7px 32px #0f1b3d38;--tfe-tap:48px;--tfe-gradient:linear-gradient(135deg, var(--tfe-navy-500) 0%, var(--tfe-cyan-400) 100%)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--tfe-bg:#0b1226;--tfe-surface:#141c36;--tfe-surface-2:#1b2547;--tfe-text:#eef2ff;--tfe-text-muted:#aab6d9;--tfe-border:#2b3864}}:root[data-theme=dark]{--tfe-bg:#0b1226;--tfe-surface:#141c36;--tfe-surface-2:#1b2547;--tfe-text:#eef2ff;--tfe-text-muted:#aab6d9;--tfe-border:#2b3864}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--ink);background:var(--bg);flex-direction:column;min-height:100dvh;margin:0;line-height:1.5;display:flex}img,svg{max-width:100%;display:block}a{color:inherit}button{font:inherit;color:inherit;cursor:pointer}input,select{font:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:root{--font-display:var(--tfe-font-display);--font-body:var(--tfe-font);--bg:var(--tfe-bg);--surface:var(--tfe-surface);--surface-2:var(--tfe-surface-2);--ink:var(--tfe-text);--muted:var(--tfe-text-muted);--line:var(--tfe-border);--accent:var(--tfe-primary);--accent-ink:#fff;--accent-2:var(--tfe-accent);--focus:var(--tfe-focus);--radius:var(--tfe-radius-lg);--shadow:var(--tfe-shadow);--c1:var(--tfe-navy-500);--c2:var(--tfe-cyan-400);--c3:var(--tfe-sun);--brand-gradient:var(--tfe-gradient);--month-stripe:linear-gradient(90deg, var(--c1), var(--c2), var(--c3));--stage-bg:var(--tfe-gradient);--stage-ink:#fff;--card-bg:#fffffff5;--card-ink:var(--tfe-text);--type-scale:1;--bounce:cubic-bezier(.34, 1.56, .64, 1);color-scheme:light}html:not([data-mode="9-12"]){--tfe-bg:#f4f7fd;--tfe-surface:#fff;--tfe-surface-2:var(--tfe-navy-50);--tfe-text:#0f1b3d;--tfe-text-muted:#4b587a;--tfe-border:#d6deef}html[data-mode=K-2]{--radius:var(--tfe-radius-lg);--type-scale:1.25;--stage-bg:radial-gradient(60% 80% at 100% 0%, color-mix(in srgb, var(--tfe-sun) 55%, transparent), transparent 70%), radial-gradient(50% 70% at 0% 100%, color-mix(in srgb, var(--tfe-leaf) 35%, transparent), transparent 70%), linear-gradient(160deg, var(--tfe-cyan-100), var(--tfe-cyan-200));--stage-ink:var(--tfe-navy-700);--card-bg:#fff}html[data-mode="3-5"]{--type-scale:1.1;--stage-bg:var(--tfe-gradient)}html[data-mode="6-8"]{--radius:var(--tfe-radius);--type-scale:1;--stage-bg:linear-gradient(90deg, var(--tfe-navy-600) 0 42%, var(--tfe-navy-500) 42% 74%, var(--tfe-cyan-500) 74% 100%)}html[data-mode="9-12"]{--tfe-bg:#0b1226;--tfe-surface:#141c36;--tfe-surface-2:#1b2547;--tfe-text:#eef2ff;--tfe-text-muted:#aab6d9;--tfe-border:#2b3864;--accent:var(--tfe-cyan-400);--accent-ink:var(--tfe-navy-900);--radius:var(--tfe-radius);--type-scale:.95;--shadow:0 10px 30px #00000073;--stage-bg:radial-gradient(1200px 600px at 15% 0%, color-mix(in srgb, var(--tfe-navy-400) 55%, transparent), transparent 60%), radial-gradient(900px 500px at 85% 100%, color-mix(in srgb, var(--tfe-cyan-500) 40%, transparent), transparent 60%), var(--tfe-navy-900);--stage-ink:#eef2ff;--card-bg:#141c36e6;--card-ink:#eef2ff;color-scheme:dark}.shell{width:min(1120px,100% - 2rem);margin-inline:auto}.site-header{z-index:20;background:color-mix(in srgb, var(--surface) 88%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header .shell{flex-wrap:wrap;align-items:center;gap:1rem;min-height:64px;display:flex}.brand{font-family:var(--font-display);letter-spacing:-.015em;letter-spacing:-.01em;color:var(--ink);align-items:center;gap:.6rem;font-size:1.2rem;font-weight:800;text-decoration:none;display:flex}.brand .wordmark .grad{background:var(--brand-gradient);color:#0000;-webkit-background-clip:text;background-clip:text}html[data-mode="9-12"] .brand .wordmark .grad{background:linear-gradient(135deg, var(--tfe-cyan-200), var(--tfe-cyan-400));-webkit-background-clip:text;background-clip:text}.brand .logo{flex:none;width:38px;height:38px}.brand small{font:600 .7rem/1 var(--font-body);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;display:block}.header-spacer{flex:1}@media (width<=640px){.site-header .shell{gap:.5rem;min-height:56px}.brand small{display:none}.mode-switch button{padding:.35rem .55rem;font-size:.78rem}.header-links .btn{padding:.45rem .8rem;font-size:.85rem}}.header-links{align-items:center;gap:.5rem;display:flex}.mode-switch{background:var(--surface-2);border:1px solid var(--line);border-radius:999px;gap:4px;padding:4px;display:inline-flex}.mode-switch button{color:var(--muted);transition:transform .2s var(--bounce), background .2s, color .2s;background:0 0;border:0;border-radius:999px;padding:.45rem .8rem;font-size:.85rem;font-weight:800}.mode-switch button:hover{color:var(--ink)}.mode-switch button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);transform:scale(1.05)}.btn{background:var(--accent);color:var(--accent-ink);transition:transform .15s var(--bounce), box-shadow .15s;border:2px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:.7rem 1.2rem;font-weight:800;text-decoration:none;display:inline-flex}.btn:hover{box-shadow:0 6px 18px color-mix(in srgb, var(--tfe-cyan-400) 35%, transparent);transform:translateY(-1px)}.btn.big{min-height:var(--tfe-tap)}.btn:active{transform:scale(.98)}.btn.secondary{border-color:var(--line);color:var(--ink);background:0 0}.btn.big{padding:1rem 1.8rem;font-size:1.2rem}.btn.ghost{color:inherit;background:#ffffff2e;border-color:#ffffff59}.btn[disabled]{opacity:.5;pointer-events:none}.site-footer{color:var(--muted);border-top:1px solid var(--line);margin-top:auto;padding:2rem 0;font-size:.85rem}.site-footer .shell{flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}.site-footer a{color:inherit}.site-footer .shell+.shell{margin-top:1rem}.more-tfe{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding-bottom:1rem;display:flex}.more-tfe .more-title{color:var(--ink);letter-spacing:.06em;text-transform:uppercase;font-size:.8rem;font-weight:800}.more-tfe ul{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.more-tfe a{border-radius:var(--tfe-radius-pill);border:1px solid var(--line);background:var(--surface);color:var(--ink);align-items:center;gap:.35rem;padding:.35rem .75rem;font-weight:600;text-decoration:none;display:inline-flex}.more-tfe a:hover{border-color:var(--tfe-cyan-400);color:var(--tfe-cyan-600)}html[data-mode="9-12"] .more-tfe a:hover{color:var(--tfe-cyan-300)}.footer-brand{align-items:center;gap:.5rem;display:inline-flex}.footer-meta a{color:var(--tfe-cyan-600)}html[data-mode="9-12"] .footer-meta a{color:var(--tfe-cyan-300)}.hero{border-radius:var(--radius);color:#fff;background:var(--brand-gradient);box-shadow:var(--tfe-shadow-lg);border-bottom:6px solid #0000;border-image:var(--month-stripe) 1;margin:1.5rem 0;padding:clamp(1.5rem,4vw,3rem);position:relative;overflow:hidden}.hero:after{content:"";aspect-ratio:1;pointer-events:none;background:#ffffff1f;border-radius:50%;width:50%;position:absolute;inset:auto -10% -40% auto}.hero .eyebrow{letter-spacing:.1em;text-transform:uppercase;opacity:.9;font-size:.8rem;font-weight:800}.hero h1{font-family:var(--font-display);letter-spacing:-.015em;letter-spacing:-.02em;margin:.3rem 0 .6rem;font-size:clamp(2rem,5vw,3.4rem);font-weight:800;line-height:1.05}.hero p{max-width:60ch;margin:0 0 1.2rem;font-size:1.1rem}.hero .cta-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.hero .btn{color:var(--tfe-navy-700);background:#fff}.hero .btn.ghost{color:#fff;background:#ffffff2e}.hero-grid{grid-template-columns:1.3fr 1fr;align-items:center;gap:1.5rem;display:grid;position:relative}@media (width<=760px){.hero-grid{grid-template-columns:1fr}}.feature-card{background:var(--card-bg);color:var(--card-ink);border-radius:var(--radius);box-shadow:var(--shadow);transition:transform .2s var(--bounce);gap:.5rem;padding:1.4rem;text-decoration:none;display:grid}.feature-card:hover{transform:translateY(-4px)rotate(-.5deg)}.feature-card .emoji{font-size:3.5rem;line-height:1}.feature-card .week{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.8rem;font-weight:800}.feature-card h2,.feature-card h3{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-size:1.6rem;font-weight:800}.feature-card p{color:var(--muted);margin:0}.section-title{font-family:var(--font-display);letter-spacing:-.015em;align-items:center;gap:.6rem;margin:2rem 0 1rem;font-size:1.6rem;font-weight:800;display:flex}.months{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;display:grid}.month-card{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);flex-direction:column;display:flex;overflow:hidden}.month-card .band{color:#fff;background:var(--brand-gradient);border-bottom:5px solid #0000;border-image:var(--month-stripe) 1;align-items:center;gap:.7rem;padding:1rem 1.2rem;text-decoration:none;display:flex}.month-card .band .emoji{font-size:2rem}.month-card .band strong{font-family:var(--font-display);letter-spacing:-.015em;font-size:1.2rem;font-weight:800;line-height:1.1;display:block}.month-card .band span{opacity:.9;font-size:.8rem}.month-card .pill{color:var(--tfe-navy-700);letter-spacing:.06em;text-transform:uppercase;background:#fff;border-radius:999px;margin-left:auto;padding:.25rem .6rem;font-size:.7rem;font-weight:800}.month-card ol{gap:.35rem;margin:0;padding:.6rem;list-style:none;display:grid}.month-card li a{color:var(--ink);transition:background .15s, transform .15s var(--bounce);border-radius:12px;align-items:center;gap:.6rem;padding:.55rem .7rem;text-decoration:none;display:flex}.month-card li a:hover{background:var(--surface-2);transform:translate(4px)}.month-card li a.now{background:color-mix(in srgb, var(--tfe-cyan-400) 14%, var(--surface));box-shadow:inset 3px 0 0 var(--tfe-cyan-400);font-weight:800}.month-card li .wk{color:var(--muted);letter-spacing:.05em;min-width:2.6rem;font-size:.7rem;font-weight:800}.month-card li .nm{flex:1}.month-card li .soon{color:var(--muted);font-size:.7rem}.weeks{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin:1rem 0 2rem;display:grid}.teacher-cta{border-radius:var(--radius);background:var(--surface);border:2px dashed var(--line);grid-template-columns:1fr auto;align-items:center;gap:.6rem;margin:2.5rem 0;padding:1.6rem;display:grid}.teacher-cta h2{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-weight:800}.teacher-cta p{color:var(--muted);margin:0}@media (width<=640px){.teacher-cta{grid-template-columns:1fr}}.form-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-width:520px;box-shadow:var(--shadow);margin:2rem auto;padding:2rem}.form-card h1{font-family:var(--font-display);letter-spacing:-.015em;margin:0 0 .3rem;font-weight:800}.form-card p.lead{color:var(--muted);margin:0 0 1.4rem}.field{gap:.35rem;margin-bottom:1rem;display:grid}.field label{font-size:.9rem;font-weight:800}.field input,.field select{border:2px solid var(--line);background:var(--bg);color:var(--ink);border-radius:12px;padding:.75rem .9rem}.field input:focus{border-color:var(--accent);outline:none}.field .hint{color:var(--muted);font-size:.8rem}.checks{flex-wrap:wrap;gap:.5rem;display:flex}.checks label{border:2px solid var(--line);cursor:pointer;border-radius:999px;align-items:center;gap:.4rem;padding:.45rem .8rem;font-weight:700;display:inline-flex}.checks label:has(input:checked){border-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--surface))}.checks input{accent-color:var(--accent)}.form-error{background:color-mix(in srgb, var(--tfe-danger) 16%, #fff);color:#8a1f1f;border-radius:12px;margin:0 0 1rem;padding:.75rem 1rem;font-weight:700;display:none}.form-error.show{display:block}.form-ok{background:color-mix(in srgb, var(--tfe-success) 18%, #fff);color:#14532d;border-radius:12px;margin:0 0 1rem;padding:.75rem 1rem;font-weight:700}.hp{opacity:0;height:0;position:absolute;left:-9999px;overflow:hidden}.resource-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.resource-list li a{background:var(--surface-2);border-radius:12px;align-items:center;gap:.6rem;padding:.7rem .9rem;text-decoration:none;display:flex}.resource-list li a:hover{background:color-mix(in srgb, var(--accent) 12%, var(--surface-2))}.resource-list .kind{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-left:auto;font-size:.7rem;font-weight:800}.tag{background:var(--surface-2);color:var(--muted);border-radius:999px;padding:.2rem .55rem;font-size:.72rem;font-weight:800;display:inline-block}.prose{max-width:70ch}.prose h1{font-family:var(--font-display);letter-spacing:-.015em;font-weight:800}
