:root{--ink:#1c2a22;--paper:#f3ead6;--paper-2:#efe3c8;--line:#d7c49a;--olive:#2a6f5b;--orange:#c45c26;--clay:#a33b24;--gold:#d4a017;--white:#fffaf1;--shadow:4px 4px 0 #1c2a22;color:var(--ink);background:var(--paper);font-family:Nunito,Segoe UI,sans-serif;line-height:1.45}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(circle at 12px 12px, #c45c2624 1.5px, transparent 2px) 0 0 / 28px 28px, var(--paper);margin:0}h1,h2,h3,.brand strong{font-feature-settings:"kern" 1, "liga" 1;font-family:Fraunces,Georgia,serif;font-weight:700}button,input{font:inherit}button{cursor:pointer}.app{max-width:960px;margin:0 auto;padding:16px 16px 48px}.top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.brand{text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:0;display:flex}.brand strong{font-size:1.25rem;display:block}.brand em{color:#5c6b62;font-size:.85rem;font-style:normal}.top nav{gap:6px;display:flex}.top nav button{border:2px solid var(--ink);background:var(--white);border-radius:999px;padding:8px 14px}.top nav button.on{background:var(--olive);color:var(--white)}.hero-card,.now,.card,.unit-tile,.timeline button,.rhythm{background:var(--white);border:2px solid var(--ink);box-shadow:var(--shadow)}.hero-card{border-radius:18px;align-items:center;gap:16px;margin-bottom:20px;padding:20px;display:flex}.hero-card h1{margin:0 0 8px;font-size:2rem}.name-field{flex-direction:column;gap:4px;margin-top:10px;font-size:.9rem;display:flex}.name-field input{border:2px solid var(--ink);background:var(--paper);border-radius:10px;max-width:240px;padding:8px 10px}.course-switch{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;font-size:.9rem;display:flex}.course-switch button{border:2px solid var(--ink);background:var(--paper);border-radius:999px;padding:6px 12px}.course-switch button.on{background:var(--olive);color:#fff}.now,.rhythm,.card{border-radius:16px;margin-bottom:20px;padding:18px}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--orange);margin:0;font-size:.75rem}.cta-row,.hub-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.btn{background:var(--orange);color:#fff;border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);border-radius:12px;padding:10px 16px}.btn:active{box-shadow:2px 2px 0 var(--ink);transform:translate(1px,1px)}.btn.ghost{background:var(--white);color:var(--ink)}.btn.small{padding:6px 10px;font-size:.9rem}.btn.listen{background:var(--olive);margin-bottom:12px}.btn:disabled{opacity:.45;cursor:not-allowed}.days{gap:8px;margin:0;padding:0;list-style:none;display:grid}.days li{border-bottom:1px dashed var(--line);grid-template-columns:120px 1fr;gap:8px;padding:8px 0;display:grid}.note,footer,.tiny{color:#5c6b62;font-size:.92rem}footer{margin-top:28px}.unit-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.unit-tile{text-align:left;border-radius:14px;gap:4px;padding:14px;display:grid}.unit-tile i{border-radius:99px;width:28px;height:8px;display:block}.unit-tile em,.timeline em{color:#5c6b62;font-size:.9rem;font-style:normal}.unit-tile.current{outline:3px solid var(--olive)}.stars{letter-spacing:.15em;color:var(--gold);font-size:1.1rem}.stars.small{font-size:.95rem}.timeline{padding:0;list-style:none}.timeline li{margin-bottom:10px}.timeline button{text-align:left;border-radius:12px;gap:4px;width:100%;padding:14px;display:grid}.timeline .active button{background:#e7f3ec}.when{color:var(--olive);font-size:.8rem}.holidays{padding-left:18px}.vocab{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;padding:0;list-style:none;display:grid}.vocab li{background:var(--white);border:2px solid var(--ink);border-radius:10px;justify-content:space-between;gap:8px;padding:8px 10px;display:flex}.speak{color:var(--olive);text-align:left;background:0 0;border:0;padding:0;font-weight:800}.crumb button{color:var(--olive);background:0 0;border:0;padding:0}.lead{font-size:1.15rem}.grammar-card{padding:28px 26px!important}.grammar-card h1{margin-bottom:0}.grammar-card h2{color:var(--orange);margin-top:8px;margin-bottom:20px}.rule{max-width:38em}.rule p{margin:0 0 1.15em;font-size:1.18rem;line-height:1.75}.rule p:last-child{margin-bottom:0}.pattern{background:var(--paper-2);border-radius:8px;margin:1.4em 0;padding:12px 14px;font-family:ui-monospace,Consolas,monospace;font-size:1.05rem;line-height:1.5}.examples{margin:0;padding:0;list-style:none}.examples li{gap:4px;margin:16px 0;display:grid}.watch{border-left:4px solid var(--orange);background:#f7e1c8;padding:8px 12px}.dots{flex-wrap:wrap;gap:6px;margin:8px 0 16px;display:flex}.dots button{border:2px solid var(--ink);background:var(--white);border-radius:999px;padding:6px 12px}.dots button.on{background:var(--olive);color:#fff}.progress-row{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.play-card{padding:20px}.ask{font-size:1.2rem;font-weight:800}.options{gap:8px;display:grid}.opt{text-align:left;background:var(--paper);border:2px solid var(--ink);border-radius:12px;padding:12px}.opt.sel{background:#dceee4}.opt.matched{background:#c8e6c9;text-decoration:line-through}.sentence{font-size:1.2rem}.blank{border-bottom:2px solid var(--ink);min-width:3ch;margin:0 4px;display:inline-block}.chip{border:2px solid var(--ink);background:var(--paper-2);border-radius:10px;margin:4px;padding:8px 10px}.chip.on{background:#dceee4}.built,.bank{min-height:48px;margin-bottom:10px}.hint{color:#888}.match{grid-template-columns:1fr 1fr;gap:10px;display:grid}.col-label{text-transform:uppercase;letter-spacing:.06em;color:var(--olive);margin:0 0 6px;font-size:.8rem;font-weight:800}.how-to{margin:-8px 0 14px;font-size:1.02rem}.fb{border-radius:10px;justify-content:space-between;align-items:center;margin-top:14px;padding:10px;display:flex}.fb.ok{background:#dceee4}.explain{background:#f8d4cc;border-radius:12px;gap:12px;margin-top:16px;padding:14px;display:grid}.almost{margin:0;font-weight:800}.tip-card{background:var(--white);border:2px solid var(--ink);border-radius:12px;padding:12px 14px}.tip-card h3{margin:0 0 8px;font-size:1.05rem}.tip-card p{margin:0 0 8px}.tip-ex{gap:2px;display:grid}.tip-ex em{color:var(--olive);font-style:normal;font-weight:800}.celebrate{text-align:center;padding:20px}.big{font-family:Fraunces,serif;font-size:1.8rem}.row-actions{align-items:center;gap:12px;margin-bottom:16px;display:flex}.sheet{color:#111;background:#fff;border:1px solid #ccc;margin-bottom:24px;padding:24px}.sheet-head{border-bottom:2px solid #111;justify-content:space-between;padding-bottom:8px;font-size:.9rem;display:flex}.sheet h1{font-size:1.6rem}.name-line{letter-spacing:.04em}.grammar-box{background:#f6f1e4;margin:12px 0;padding:12px}.vocab-note{margin:0 0 12px}.vocab-block{margin-top:14px}.vocab-block h2{color:var(--olive);margin:0 0 8px;font-size:1.1rem}.vocab-cards{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.vocab-card{break-inside:avoid;border:1px dashed #333;border-radius:8px;justify-content:space-between;align-items:baseline;gap:10px;padding:8px 10px;display:flex}.vocab-card strong{font-size:1.05rem}.vocab-card span{color:#444}@media print{body{background:#fff}.no-print,.top,footer,.back{display:none!important}.app{max-width:none;padding:0}.sheet{box-shadow:none;page-break-after:always;border:0}.sheet.vocab-sheet,.answers-sheet{page-break-after:auto}}@media (width<=640px){.hero-card{flex-direction:column;align-items:flex-start}.days li,.match{grid-template-columns:1fr}}
