:root{--paper:#f7f7f4;--ink:#1a1a20;--rule-bold:#1a1a20;--rule-hair:#d9d8ce;--accent:#25407a;--pencil:#8b8a80;--quiet:#5c5c66;--sel:#e4e8f1;--wrong:#8f2a2a;--peer:#eef0f5;--same-digit:#d7ddec;--bg:var(--paper);--given:var(--ink);--entered:var(--accent);--muted:var(--quiet);--surface:var(--paper);--on-accent:var(--paper);--radius:12px;--tap:44px;--icon-lg:27px;--fs-h1:40px;--fs-h2:32px;--fs-h3:26px;--fs-h4:18px;--fs-body:17px;--fs-large-body:19px;--fs-button:15px;--fs-nav:15px;--fs-small:13.5px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#1a1917;--ink:#ece9e1;--rule-bold:#ece9e1;--rule-hair:#35342f;--accent:#8fa8d8;--pencil:#7a776e;--quiet:#9b9890;--sel:#2a2f3d;--wrong:#d98a8a;--peer:#232228;--same-digit:#333a4d;--bg:var(--paper);--given:var(--ink);--entered:var(--accent);--muted:var(--quiet);--surface:var(--paper);--on-accent:var(--paper)}}:root[data-theme=dark]{--paper:#1a1917;--ink:#ece9e1;--rule-bold:#ece9e1;--rule-hair:#35342f;--accent:#8fa8d8;--pencil:#7a776e;--quiet:#9b9890;--sel:#2a2f3d;--wrong:#d98a8a;--peer:#232228;--same-digit:#333a4d;--bg:var(--paper);--given:var(--ink);--entered:var(--accent);--muted:var(--quiet);--surface:var(--paper);--on-accent:var(--paper)}*,: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}.icon{flex-shrink: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(--paper);border:2px solid var(--rule-bold);grid-template-columns:repeat(9,1fr);width:100%;max-width:min(100%,60dvh);display:grid;overflow:hidden;container-type:inline-size}.cell{aspect-ratio:1;background:var(--paper);border-right:1px solid var(--rule-hair);border-bottom:1px solid var(--rule-hair);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(--rule-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(--rule-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{font:400 var(--fs-h3) ui-serif, Georgia, serif;color:var(--accent);line-height:1}.cell--given .cell__value{color:var(--ink);font-weight:600}.cell--conflict .cell__value{color:var(--wrong)}.cell__pencil{color:var(--pencil);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);font:400 9px/1 ui-serif,Georgia,serif;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:3px;padding:8px;display:grid}.pad__key{height:50px;color:var(--accent);background:var(--paper);border:1px solid var(--rule-hair);box-shadow:0 1px 0 var(--rule-hair);border-radius:5px;justify-content:center;align-items:center;min-width:0;font:400 23px ui-serif,Georgia,serif;transition:background-color 90ms ease-out;display:flex}.pad__key:active{background:var(--sel)}.pad__key--done{color:var(--quiet)}.pad--pencil .pad__key{color:var(--pencil);font-size:var(--fs-nav);align-items:flex-start;padding-top:6px}.toolbar{border-bottom:1px solid var(--rule-hair);display:flex}.toolbar__key{color:var(--quiet);flex-direction:column;flex:1;align-items:center;gap:4px;padding:34px 2px 10px;display:flex}.toolbar__key svg{width:var(--icon-lg);height:var(--icon-lg)}.toolbar__key span{font:var(--fs-small) / 1.2 ui-sans-serif, system-ui, sans-serif}.toolbar__key:disabled{opacity:.35}.toolbar__key.is-on{color:var(--accent)}.screen__finish-slot{justify-content:center;height:46px;display:flex}.screen__finish{border:1px solid var(--accent);height:100%;color:var(--accent);font:600 var(--fs-button) / 1 ui-sans-serif, system-ui, sans-serif;border-top:none;border-radius:0 0 3px 3px;align-items:center;gap:8px;padding:0 20px;animation:.18s ease-out screen-finish-in;display:flex}@keyframes screen-finish-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.screen__finish svg{width:18px;height:18px}.progress{background:var(--rule-hair);width:100%;height:2px;overflow:hidden}.progress__fill{background:var(--accent);height:100%;transition:width .2s ease-out}.screen__head{border-bottom:1px solid var(--rule-bold);align-items:center;gap:8px;padding:4px 8px;display:flex}.screen__head button{color:var(--ink)}.screen__head button[aria-label=back] .icon{width:var(--icon-lg);height:var(--icon-lg)}.screen__title{text-align:center;flex:1;font-weight:600}.screen__meta{white-space:nowrap;text-overflow:ellipsis;text-align:center;min-width:0;color:var(--quiet);flex:1;font:18px/1.3 ui-sans-serif,system-ui,sans-serif;overflow:hidden}.screen__head .screen__timer{color:var(--quiet);font:var(--fs-h4) / 1 ui-serif, Georgia, serif;font-variant-numeric:tabular-nums;min-width:60px;min-height:var(--tap);justify-content:flex-end;align-items:center;gap:4px;display:flex}.screen__timer-icon{width:24px;height:24px}.screen__save-warning{text-align:center;color:var(--quiet);padding:2px 8px 6px;font-size:13px}.screen__hint{-webkit-line-clamp:2;text-align:center;max-height:44px;color:var(--accent);-webkit-box-orient:vertical;padding:4px 16px;font-size:14px;display:-webkit-box;position:absolute;top:0;left:0;right:0;overflow:hidden}.screen__body{flex:1;justify-content:center;align-items:center;min-height:0;padding:0 8px;display:flex;position:relative}.screen__playblock{flex-direction:column;width:100%;display:flex}.screen__reveal-block{z-index:20;position:fixed;inset:0}.overlay{background:color-mix(in oklab, var(--paper) 82%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);place-items:center;display:grid;position:fixed;inset:0}.overlay__card{background:var(--paper);text-align:center;border-radius:0;gap:12px;padding:28px 36px;display:grid}.overlay__card h2{font:600 var(--fs-h2) ui-serif, Georgia, serif}.overlay__card p{color:var(--quiet)}.overlay__btn{background:var(--accent);color:var(--on-accent);border-radius:0;padding:10px 20px;font-weight:600}.gameover .overlay__card h2{color:var(--wrong)}.screen__pause{width:100%;font:inherit;cursor:pointer;border:none}.pill{left:50%;bottom:calc(12px + env(safe-area-inset-bottom));background:var(--paper);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(--rule-hair);border-radius:999px;min-height:32px;padding:4px 12px;font-size:14px}.pill button:first-of-type{background:var(--accent);color:var(--on-accent)}.home{padding-top:env(safe-area-inset-top);overflow:hidden}.home__head{padding:18px max(12px, env(safe-area-inset-right)) 14px max(20px, env(safe-area-inset-left));border-bottom:1.5px solid var(--rule-bold);justify-content:space-between;align-items:center;gap:12px;display:flex}.home__mastname{font-family:ui-serif,Georgia,serif;font-size:var(--fs-h1);letter-spacing:-.02em;line-height:1.05}.home__mast-icons{align-items:center;margin-right:-11px;display:flex}.home__mast-icon{color:var(--quiet);min-width:var(--tap);min-height:var(--tap);place-items:center;display:grid}.home__mast-icon .icon{width:var(--icon-lg);height:var(--icon-lg)}.home__mast-icon[aria-label=Courses]{color:var(--accent)}.home__body{padding:20px max(20px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));flex-direction:column;gap:20px;display:flex}.home__section-label{font-size:var(--fs-nav);color:var(--quiet);margin:0}.home__tiers{flex-direction:column;display:flex}.home__tier-row{border-bottom:1px solid var(--rule-hair);align-items:stretch;gap:10px;display:flex}.home__tier{text-align:left;color:var(--ink);background:0 0;border:0;flex:1;justify-content:flex-start;align-items:center;padding:19px 2px;display:flex;position:relative}.home__tier:disabled{cursor:default}.home__continue{background:var(--paper);border:1px solid var(--accent);color:var(--accent);font-size:var(--fs-button);white-space:nowrap;border-radius:0;flex:none;align-self:center;padding:9px 14px;line-height:1.3}.home__tier-name{font-family:ui-serif,Georgia,serif;font-size:24px;line-height:1.25}.home__tier--pending{background:var(--sel)}.home__tier-spinner{border:2px solid var(--quiet);opacity:0;border-top-color:#0000;border-radius:50%;width:16px;height:16px;margin-top:-8px;position:absolute;top:50%;right:2px}.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(--wrong);font-size:var(--fs-nav);margin:0}.settings__card{text-align:left;width:min(92vw,380px);max-height:80vh;overflow-y:auto}.settings__card h2{font-family:ui-serif,Georgia,serif}.settings__card .overlay__btn{width:100%}.settings__section{gap:4px;display:grid}.settings__section-title{font-size:var(--fs-small);color:var(--quiet);text-transform:uppercase;letter-spacing:.04em}.settings__segmented{background:var(--rule-hair);gap:4px;padding:4px;display:flex}.settings__segmented button{color:var(--ink);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;border-bottom:1px solid var(--rule-hair);justify-content:space-between;align-items:center;gap:12px;width:100%;padding:13px 2px;display:flex}.settings__row-text{gap:2px;display:grid}.settings__row-label{font-size:var(--fs-button);color:var(--ink)}.settings__row-hint{font-size:var(--fs-small);color:var(--quiet)}.settings__switch{border:1.5px solid var(--quiet);flex-shrink:0;width:22px;height:22px}.settings__switch.is-on{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--paper), inset 0 0 0 9px var(--accent)}.settings__save-warning{text-align:center;color:var(--quiet);font-size:var(--fs-small)}.daily-card{border:1px solid var(--rule-bold);border-radius:0;gap:10px;width:100%;padding:14px 14px 12px;display:grid}.daily-card__top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.daily-card__date{font-family:ui-serif,Georgia,serif;font-size:var(--fs-h4);color:var(--ink);line-height:1.25}.daily-card__calendar{color:var(--accent);min-width:var(--tap);min-height:var(--tap);place-items:center;margin:-11px -11px 0 0;display:grid}.daily-card__calendar .icon{width:22px;height:22px}.daily-card__head{border-top:1px solid var(--rule-hair);justify-content:space-between;align-items:baseline;gap:8px;padding-top:10px;display:flex}.daily-card__tier{font-size:var(--fs-nav);color:var(--quiet)}.daily-card__action{background:var(--accent);width:100%;color:var(--on-accent);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) max(24px, calc(env(safe-area-inset-bottom) + 12px)) env(safe-area-inset-left);flex-direction:column;display:flex;position:fixed;inset:0}.lesson--loading{display:block}.lesson>div:has(>.board){flex:1;justify-content:center;align-items:center;min-height:0;display:flex;container-type:size}.lesson .board{width:min(100cqw,100cqh);max-width:100%;height:min(100cqw,100cqh)}.lesson .overlay__btn{min-height:48px}.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}.calendar{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))}.calendar__nav{justify-content:space-between;align-items:center;gap:8px;padding:4px 8px;display:flex}.calendar__nav button{color:var(--accent);font-size:22px;line-height:1}.calendar__nav button:disabled{color:var(--quiet);cursor:default}.calendar__month{font-family:ui-serif,Georgia,serif;font-size:var(--fs-h4)}.calendar__weekdays{border-bottom:1px solid var(--rule-hair);grid-template-columns:repeat(7,1fr);padding:0 8px;display:grid}.calendar__weekday{text-align:center;font-size:var(--fs-small);color:var(--quiet);padding:8px 0 6px}.calendar__scroll{flex:1;min-height:0;padding:0 8px;overflow-y:auto}.calendar__grid{border-top:1px solid var(--rule-bold);flex:none;grid-template-columns:repeat(7,1fr);display:grid}.calendar__cell{aspect-ratio:1;min-height:var(--tap);font-family:ui-serif,Georgia,serif;font-size:var(--fs-h4);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;display:flex}.calendar__cell--pad{visibility:hidden}.calendar__cell--future,.calendar__cell--before-floor{color:var(--pencil);cursor:default}.calendar__cell--playable,.calendar__cell--started{color:var(--ink)}.calendar__cell--in-progress{background:var(--sel);color:var(--accent);font-weight:600}.calendar__cell--done{background:var(--accent);color:var(--on-accent);font-weight:600}.calendar__cell--played{border-bottom:1.5px solid var(--accent)}.calendar__cell--today{border:1.5px solid var(--rule-bold)}.calendar__cell--today.calendar__cell--played{border-bottom-color:var(--accent)}.daysheet__card{text-align:left;width:min(92vw,380px)}.daysheet__date{font-family:ui-serif,Georgia,serif;font-size:22px}.daysheet__tier{color:var(--quiet);font-size:var(--fs-nav)}.daysheet__done{color:var(--accent);font-weight:600}.daysheet__played-late{color:var(--quiet);font-size:var(--fs-small)}.daysheet__percent{font-weight:600}.daysheet__started{color:var(--quiet);font-size:var(--fs-small)}.daysheet__close{width:100%;color:var(--quiet)}.courses .courses__row{border:0;border-bottom:1px solid var(--rule-hair);text-align:left;width:100%;color:var(--ink);background:0 0;border-radius:0;justify-content:space-between;align-items:center;gap:12px;padding:13px 2px;display:flex}.courses .courses__row--unavailable{opacity:.45}.courses .courses__row-name{color:var(--ink);font-family:ui-serif,Georgia,serif;font-size:18px;line-height:1.25}.courses .courses__row-learned{color:var(--accent);place-items:center;display:grid}.courses .courses__row-learned .icon{width:19px;height:19px}.courses .courses__row-soon{font-size:var(--fs-small);color:var(--quiet)}
