:root{--navy:#0c2334;--navy-deep:#061626;--cream:#fcf3e0;--copper:#623c24;--gold:#e2c485;--teal:#3fbfaf;--ink:#2b2118;--muted:#6b5844;--card:#fffaf0;--line:#e4d5bd;--radius:22px;--reading:760px;--font-body:"Segoe UI", system-ui, -apple-system, sans-serif;--font-heading:Georgia, "Times New Roman", serif;--grain-opacity:.5}[data-grain=off]{--grain-opacity:0}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--cream);color:var(--ink);font-family:var(--font-body);margin:0;font-size:20px;line-height:1.7}body:after{content:"";opacity:var(--grain-opacity);pointer-events:none;z-index:10;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAADLklEQVR42u1dTW70IAxFXaDMTDKT+eMI3DQ3yzGyyh2ynm76Sf2iNAnEgA3vbSpVlUIxGPP8bJTywNh3ZxUIn2m4Lv1eG/sK9L1accDYdw/Pf+ChgL1zXHMe3Kl4C2ljb1inGWPu37WxF8zKQX8+9t3z52dLcRj6nkU4TABXd//Gjp+G147FdolplSYHy3+m4bQwke0RQ8RaEffYYeHWQby1ArWxjz3n2dh3N8J5alUkX/92HNg5xnd+r3JtbI17TNh/rNHGVhG/1yogaXRyF3nxHfuuiUmAuRzmPi4ue+piyQguRgTCR2RPDlu7OLZ3HnaGdh8hcxtS3Ngl5fV87LvXxg64FRkhSIzJ9+7WGIwDteEfnIlBsrQmq+0mL2i4/LFAqtgDqWK4mLUkvTb2XOoqwA6i8vNs5BrLY2scdkuVkl3Wxp4kRC13ae7wMw3IaEVwI2efXEqyQQDhaZYQBm4zn2wQjAAAAAqitOQUgo/kESEuQMLaQpoI/aUsjn7suyusR3eeYDK53XiLV8AdNUgI1/ZXTpdS2AsQJ9u3VBUlHPLvnC0PpXCOl5DYYmA2JUgbA7k5/n0laaIBqEOAkl02IKV9Qa4SGQDwE7eWOhm1NCNpY09U0cdS2tFlgfjWSx850SsRleeB2ALsXtQiy1GZ/WttsFb9+JmGSswkpSyCDpnu3MuyslVvlMjhrPFpSIsi3UgT+kraWd6tdPbGsZBeZyi2mvd5QEI8wO1Y8s4hd4GxfConllFE5WKMpEHMVmTA/xN/5dYeRxv7pOiuUqLEsIZk50BfUE7fRvE1437VrGJ8nzZf0ktyQvSOS9K4iaOYNfdicVQIUfJBv/uxzW/HxXcgDEU7zN2GtBzoXv9N/VQWp/sO6guA1ZX6ZJ2aja5zESRlWWvUFP1BIhcfSvnwgg+9zbknHsBggbIlpfDaHwBweUk2v0FsvAUGlHtZa/AMrlzjYSejMod5f7qsesBxpC0AIN+Xl4prZeaTnEaURFQr5pq83grBUkhNsn12lustm1srBLSHKfj11Mp3t3AVdZFm5ZZ4fQ6v1IXKogGgFZRSSn1R95JLDHEUxzeA3MAO4qvXXgAAAABJRU5ErkJggg==);position:fixed;inset:0}#root{min-height:100vh}.app{max-width:var(--reading);margin:0 auto;padding:1rem 1.15rem 3.5rem}h1,h2,h3{font-family:var(--font-heading);color:var(--navy);letter-spacing:.01em;line-height:1.25}img{max-width:100%;height:auto}a{color:var(--copper)}:focus-visible{outline:3px solid var(--copper);outline-offset:3px}.art{display:block}.art-fallback{border-radius:14px;width:100%;display:block}.topbar{background:linear-gradient(150deg, var(--navy) 0%, var(--navy-deep) 100%);border:1px solid #e2c48559;border-radius:18px;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.1rem;padding:.45rem .6rem .45rem .75rem;display:flex}.topbar-brand{align-items:center;display:flex}.topbar-logo{border-radius:10px;width:38px;height:38px}.topbar-actions{gap:.5rem;display:flex}.quiet{color:var(--cream);font:inherit;cursor:pointer;background:0 0;border:1px solid #e2c485a6;border-radius:999px;padding:.35rem .95rem;font-size:.9rem}.quiet:hover{background:#e2c48529}.quiet:focus-visible{outline-color:var(--gold)}.screen{text-align:center}.screen--reading{background:var(--cream);color:var(--ink);text-align:left}.screen--welcome{padding-top:.5rem}.welcome-card{background:linear-gradient(155deg, var(--navy) 0%, var(--navy-deep) 100%);border-radius:var(--radius);border:1px solid #e2c48566;padding:2rem 1.5rem 1.75rem;box-shadow:0 18px 40px -28px #061626cc}.logo{border-radius:20px;width:132px;height:132px;margin:0 auto}.brand{color:var(--cream);letter-spacing:.34em;text-indent:.34em;margin:.8rem 0 0;font-size:2.6rem}.tagline{color:var(--gold);margin:.35rem 0 0;font-size:1.2rem}.tagline--light{color:var(--gold)}.hero--welcome{border-radius:var(--radius);width:min(420px,100%);margin:1.35rem auto 1.1rem}.hero-card{background:linear-gradient(155deg, var(--navy) 0%, var(--navy-deep) 100%);border-radius:var(--radius);border:1px solid #e2c48566;overflow:hidden}.hero--card{border-radius:0;width:100%}.hero-card .tagline{font-family:var(--font-heading);margin:0;padding:1rem 1.25rem 1.25rem;font-size:1.25rem}.continue-card{background:var(--navy);text-align:left;border:1px solid #3fbfaf80;border-radius:18px;gap:.15rem;margin-top:1.25rem;padding:1rem 1.25rem 1.15rem;text-decoration:none;display:grid}.continue-label{color:var(--teal);letter-spacing:.02em;font-size:.95rem}.continue-title{color:var(--cream);font-family:var(--font-heading);font-size:1.4rem}.continue-facts{color:#fcf3e0bf;font-size:.95rem}.section{margin:1.9rem 0 .9rem;font-size:1.7rem}.button{border:1px solid var(--copper);background:var(--copper);width:100%;color:var(--cream);font:inherit;text-align:center;cursor:pointer;border-radius:16px;padding:1rem 1.15rem;font-size:1.05rem;line-height:1.45;text-decoration:none;display:block}.button:hover{background:var(--navy);border-color:var(--navy)}.module-list{text-align:left;gap:1rem;margin:0;padding:0;list-style:none;display:grid}.module-card{background:linear-gradient(155deg, var(--navy) 0%, var(--navy-deep) 100%);border:1px solid #e2c4854d;border-radius:20px;grid-template-columns:108px 1fr;gap:1rem;padding:.9rem;text-decoration:none;display:grid}.module-card:hover{border-color:#e2c485bf}.module-cover{object-fit:cover;border-radius:14px;width:108px;height:108px}.module-body{min-width:0}.module-title{color:var(--cream);margin:.15rem 0 0;font-size:1.3rem}.module-facts{color:var(--gold);margin:.2rem 0 0;font-size:.95rem}.progress{background:#fcf3e02e;border-radius:999px;height:6px;margin-top:.65rem;overflow:hidden}.progress-fill{background:var(--teal);border-radius:999px;height:100%;display:block}.progress-text{color:#fcf3e0c7;margin:.3rem 0 0;font-size:.9rem}.card-list{gap:.85rem;margin:0;padding:0;list-style:none;display:grid}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1.05rem 1.2rem}.lesson-preview{text-align:left}.lesson-title{color:var(--navy);font-family:var(--font-heading);overflow-wrap:break-word;font-size:1.15rem;line-height:1.45}.list-progress-text{color:var(--copper);text-align:left;margin:0 0 .35rem;font-size:.95rem}.progress--light{background:#e8d9c1;margin-bottom:1.1rem}.lesson-row{background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:16px;grid-template-columns:1.9rem 1fr;align-items:start;gap:.75rem;padding:1rem 1.15rem;text-decoration:none;display:grid}.lesson-row:hover{border-color:var(--copper)}.lesson-row--done{background:#f8eeda}.tick{color:#12766a;border:1.5px solid #cbb896;border-radius:999px;justify-content:center;align-items:center;width:1.55rem;height:1.55rem;margin-top:.15rem;font-size:1rem;line-height:1;display:flex}.lesson-row--done .tick{background:var(--teal);border-color:var(--teal);color:var(--navy-deep);font-weight:700}.fresh{border-top:1px solid var(--line);margin-top:1.75rem;padding-top:1.25rem}.fresh-note{color:var(--muted);margin:0 0 .75rem;font-size:.95rem}.fresh-row{gap:.6rem;display:grid}.fresh-button{border:1px solid var(--copper);width:100%;color:var(--copper);font:inherit;cursor:pointer;background:0 0;border-radius:14px;padding:.8rem 1rem;font-size:.98rem}.fresh-button:hover{background:#623c2414}.reading{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);text-align:left;margin-bottom:1.25rem;padding:1.5rem 1.35rem 1.75rem}.reading-module{color:var(--copper);letter-spacing:.05em;text-transform:uppercase;margin:0;font-size:.9rem}.reading-title{color:var(--navy);margin:.45rem 0 1.1rem;font-size:1.7rem}.reading-text{margin:0 0 1rem;font-size:1.08rem;line-height:1.85}.reading-text:last-child{margin-bottom:0}.finish-check{font-size:1.4rem;line-height:1}.button:disabled{cursor:default}.empty-state{background:var(--card);border-radius:var(--radius);border:1px dashed #c9b79c;justify-items:center;gap:1rem;margin:0;padding:1.5rem 1.25rem 1.75rem;display:grid}.empty-art{border-radius:18px;width:min(220px,70%)}.empty-text{color:var(--copper);font-family:var(--font-heading);margin:0;font-size:1.15rem}.not-available{justify-items:center;gap:1.1rem;display:grid}.not-available-art{border-radius:var(--radius);width:min(260px,74%)}.placeholder-text{color:var(--muted);border:1.5px dashed #b9a382;border-radius:14px;margin:0;padding:.9rem 1.1rem;font-size:1rem;font-style:italic}.celebrate{animation:.9s ease-out soma-celebrate}@keyframes soma-celebrate{0%{transform:scale(1);box-shadow:0 0 #3fbfaf8c}45%{transform:scale(1.03);box-shadow:0 0 0 12px #3fbfaf2e}to{transform:scale(1);box-shadow:0 0 #3fbfaf00}}@media (width<=380px){body{font-size:19px}.module-card{grid-template-columns:88px 1fr}.module-cover{width:88px;height:88px}.brand{font-size:2.1rem}}@media (prefers-reduced-motion:reduce){.celebrate{animation:none}}
