:root{--bg:#f4f4f1;--surface:#fff;--surface-2:#ebebe6;--grid-line:#d8d8d1;--grid-line-bold:#3a3a35;--given:#1b1b19;--entered:#1354d6;--pencil:#64645d;--sel:#d4e3ff;--peer:#edf1f9;--same-digit:#c6daff;--error:#b32828;--accent:#1354d6;--on-accent:#fff;--muted:#75756d;--radius:12px;--tap:44px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#16161a;--surface:#1f1f24;--surface-2:#2a2a31;--grid-line:#34343c;--grid-line-bold:#8c8c99;--given:#f0f0f2;--entered:#9cb9ff;--pencil:#a4a4ab;--sel:#2e3a55;--peer:#2d2d37;--same-digit:#3a4a6b;--error:#ffa1a1;--accent:#9cb9ff;--on-accent:#10101a;--muted:#9a9aa4}}:root[data-theme=dark]{--bg:#16161a;--surface:#1f1f24;--surface-2:#2a2a31;--grid-line:#34343c;--grid-line-bold:#8c8c99;--given:#f0f0f2;--entered:#9cb9ff;--pencil:#a4a4ab;--sel:#2e3a55;--peer:#2d2d37;--same-digit:#3a4a6b;--error:#ffa1a1;--accent:#9cb9ff;--on-accent:#10101a;--muted:#9a9aa4}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}html,body,#root{height:100%}body{background:var(--bg);color:var(--given);font-variant-numeric:tabular-nums;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;font:400 16px/1.4 -apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;min-height:var(--tap);min-width:var(--tap);background:0 0;border:0}.app{height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.board{aspect-ratio:1;background:var(--surface);border:2px solid var(--grid-line-bold);border-radius:6px;grid-template-columns:repeat(9,1fr);width:100%;max-width:min(100%,62vh);margin:0 auto;display:grid;overflow:hidden;container-type:inline-size}.cell{aspect-ratio:1;background:var(--surface);border-right:1px solid var(--grid-line);border-bottom:1px solid var(--grid-line);justify-content:center;align-items:center;min-width:0;min-height:0;padding:0;transition:background-color 90ms ease-out;display:flex;position:relative}.cell:nth-child(9n){border-right:0}.cell:nth-child(9n+3),.cell:nth-child(9n+6){border-right:2px solid var(--grid-line-bold)}.cell:nth-child(n+73){border-bottom:0}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom:2px solid var(--grid-line-bold)}.cell--peer{background:var(--peer)}.cell--same{background:var(--same-digit)}.cell--selected{background:var(--sel)}.cell--hint-unit{background:var(--peer)}.cell--hint-focus{background:var(--peer);box-shadow:inset 0 0 0 2px var(--accent)}.cell__value{color:var(--entered);font-size:7cqw;font-weight:400;line-height:1}.cell--given .cell__value{color:var(--given);font-weight:600}.cell--conflict .cell__value{color:var(--error)}.cell__pencil{color:var(--pencil);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);font-size:2.5cqw;line-height:1;display:grid;position:absolute;inset:7%}.cell__mark{justify-content:center;align-items:center;display:flex}.cell__mark--match{color:var(--accent);font-weight:700}@keyframes cell-place{0%{opacity:.4;transform:scale(.72)}to{opacity:1;transform:scale(1)}}.cell__value{animation:90ms ease-out cell-place}.cell--given .cell__value{animation:none}.pad{grid-template-columns:repeat(9,1fr);gap:4px;padding:8px 4px;display:grid}.pad__key{aspect-ratio:3/4;color:var(--accent);background:var(--surface);border-radius:var(--radius);justify-content:center;align-items:center;min-width:0;font-size:clamp(20px,5.5vw,30px);font-weight:500;transition:transform 70ms ease-out,background-color 90ms ease-out;display:flex}.pad__key:active{background:var(--surface-2);transform:scale(.92)}.pad__key--done{color:var(--muted)}.pad--pencil .pad__key{color:var(--pencil);align-items:flex-start;padding-top:6px;font-size:clamp(15px,4vw,22px)}.toolbar{justify-content:space-between;gap:6px;padding:4px;display:flex}.toolbar button{border-radius:var(--radius);background:var(--surface);color:var(--given);flex:1;padding:8px 4px;font-size:15px}.toolbar button:disabled{opacity:.35}.toolbar button.is-on{background:var(--accent);color:var(--on-accent)}.progress{background:var(--surface-2);border-radius:999px;width:100%;height:4px;overflow:hidden}.progress__fill{background:var(--accent);height:100%;transition:width .2s ease-out}.screen__head{align-items:center;gap:8px;padding:4px 8px;display:flex}.screen__head button{min-height:40px;font-size:26px;line-height:1}.screen__title{text-align:center;flex:1;font-weight:600}.screen__mistakes{color:var(--muted);white-space:nowrap;font-size:13px}.screen__timer{color:var(--muted);text-align:right;min-width:52px;font-size:15px}.screen__save-warning{text-align:center;color:var(--muted);padding:2px 8px 6px;font-size:12px}.screen__hint{text-align:center;color:var(--accent);padding:4px 12px 2px;font-size:14px}.screen__body{flex:1;justify-content:center;align-items:center;min-height:0;padding:8px;display:flex}.screen__foot{padding-bottom:4px}.screen__autocomplete-row{min-height:var(--tap);align-items:center;margin:0 4px 6px;display:flex}.screen__autocomplete{background:var(--accent);width:fit-content;color:var(--on-accent);border-radius:var(--radius);min-height:var(--tap);white-space:nowrap;margin-left:auto;padding:0 16px;font-size:15px;font-weight:600;animation:.18s ease-out screen-autocomplete-in}@keyframes screen-autocomplete-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.screen__reveal-block{z-index:20;position:fixed;inset:0}.overlay{background:color-mix(in oklab, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);place-items:center;display:grid;position:fixed;inset:0}.overlay__card{background:var(--surface);text-align:center;border-radius:20px;gap:12px;padding:28px 36px;display:grid}.overlay__card h2{font-size:26px}.overlay__card p{color:var(--muted)}.overlay__btn{background:var(--accent);color:var(--on-accent);border-radius:var(--radius);padding:10px 20px;font-weight:600}.gameover .overlay__card h2{color:var(--error)}.home{padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));justify-content:center;gap:20px;position:relative}.home__title{text-align:center;letter-spacing:-.02em;font-size:34px;font-weight:700}.home__resume{background:var(--accent);width:100%;color:var(--on-accent);border-radius:var(--radius);gap:2px;padding:14px;font-weight:600;display:grid}.home__resume small{opacity:.85;font-weight:400}.home__tiers{gap:8px;display:grid}.home__tier{background:var(--surface);color:var(--given);border-radius:var(--radius);padding:14px;font-size:17px;position:relative}.home__tier:disabled{cursor:default}.home__tier--pending{background:var(--surface-2)}.home__tier-spinner{border:2px solid var(--muted);opacity:0;border-top-color:#0000;border-radius:50%;width:18px;height:18px;margin-top:-9px;position:absolute;top:50%;right:14px}.home__tier--pending .home__tier-spinner{opacity:1;animation:.8s linear infinite home-tier-spin}@keyframes home-tier-spin{to{transform:rotate(360deg)}}.home__gen-failed{text-align:center;color:var(--error);font-size:14px}.home__head{top:max(12px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right));position:absolute}.home__settings-btn{min-height:var(--tap);min-width:var(--tap);color:var(--muted);place-items:center;font-size:22px;line-height:1;display:grid}.settings__card{text-align:left;width:min(92vw,380px);max-height:80vh;overflow-y:auto}.settings__card .overlay__btn{width:100%}.settings__section{gap:4px;display:grid}.settings__section-title{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:13px}.settings__segmented{background:var(--surface-2);border-radius:var(--radius);gap:4px;padding:4px;display:flex}.settings__segmented button{border-radius:calc(var(--radius) - 4px);color:var(--given);flex:1;padding:8px 0;font-size:14px}.settings__segmented button.is-on{background:var(--accent);color:var(--on-accent)}.settings__row{text-align:left;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:10px 2px;display:flex}.settings__row-text{gap:2px;display:grid}.settings__row-label{color:var(--given);font-size:15px}.settings__row-hint{color:var(--muted);font-size:12px}.settings__switch{background:var(--surface-2);border-radius:999px;flex-shrink:0;width:44px;height:26px;transition:background-color .12s ease-out;position:relative}.settings__switch-knob{background:var(--surface);border-radius:50%;width:20px;height:20px;transition:transform .12s ease-out;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.settings__switch.is-on{background:var(--accent)}.settings__switch.is-on .settings__switch-knob{background:var(--on-accent);transform:translate(18px)}.settings__save-warning{text-align:center;color:var(--muted);font-size:12px}.pill{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));background:var(--surface);z-index:10;border-radius:999px;align-items:center;gap:10px;padding:8px 8px 8px 16px;font-size:14px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 24px #0000002e}.pill button{background:var(--surface-2);border-radius:999px;min-height:32px;padding:4px 12px;font-size:14px}.pill button:first-of-type{background:var(--accent);color:var(--on-accent)}.daily-card{background:var(--surface);border-radius:var(--radius);gap:10px;width:100%;padding:14px;display:grid}.daily-card__head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.daily-card__date{color:var(--given);font-size:17px;font-weight:600}.daily-card__tier{color:var(--muted);font-size:14px}.daily-card__action{background:var(--accent);width:100%;color:var(--on-accent);border-radius:calc(var(--radius) - 4px);gap:2px;padding:12px;font-weight:600;display:grid}.daily-card__action small{opacity:.85;font-weight:400}.daily-card__done{text-align:center;color:var(--accent);padding:12px;font-weight:600;display:block}.lesson{z-index:15;background:var(--bg);height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;display:flex;position:fixed;inset:0}.lesson--loading{display:block}.lesson__head{align-items:center;gap:8px;padding:4px 8px;display:flex}.lesson__head button{min-height:40px;font-size:26px;line-height:1}.lesson__title{text-align:center;text-transform:capitalize;flex:1;font-weight:600}.lesson__count{color:var(--muted);white-space:nowrap;font-size:13px}.lesson__gloss{text-align:center;color:var(--given);padding:4px 12px 0;font-size:14px}.lesson__prompt{text-align:center;color:var(--muted);padding:2px 12px 4px;font-size:13px}.lesson__controls{justify-content:space-between;gap:6px;padding:4px;display:flex}.lesson__pencil,.lesson__undo,.lesson__erase,.lesson__stuck{border-radius:var(--radius);background:var(--surface);color:var(--given);flex:1;padding:8px 4px;font-size:15px}.lesson__pencil:disabled,.lesson__undo:disabled,.lesson__erase:disabled,.lesson__stuck:disabled{opacity:.35}.lesson__pencil.is-on{background:var(--accent);color:var(--on-accent)}.lesson__hint{text-align:center;color:var(--accent);padding:4px 12px 2px;font-size:14px}.lesson__why{text-align:center;color:var(--given);padding:4px 16px 8px;font-size:13px}.lesson__complete{text-align:center;color:var(--given);padding:6px 16px 4px;font-size:14px;font-weight:600}.courses{padding:max(24px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));gap:4px;overflow-y:auto}.courses--loading{display:block}.courses__row{background:var(--surface);border-radius:var(--radius);text-align:left;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:14px;display:flex}.courses__row--unavailable{opacity:.45}.courses__row-name{color:var(--given);font-size:16px}.courses__row-learned{color:var(--accent);font-weight:700}.courses__row-soon{color:var(--muted);font-size:12px}.home__courses{background:var(--surface);width:100%;color:var(--given);border-radius:var(--radius);padding:14px;font-size:15px;font-weight:600}
