:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#e8edf5;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0b1020;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{background:radial-gradient(circle at 20% 20%,#152040 0%,#0b1020 55%,#070a14 100%);min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}.world-canvas{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.ui-layer{z-index:1;min-height:100vh;position:relative}.app-shell{flex-direction:column;gap:1.5rem;max-width:960px;min-height:100vh;margin:0 auto;padding:1.5rem;display:flex}.app-nav{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0e1cb8;border:1px solid #ffffff14;border-radius:12px;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.app-brand{letter-spacing:.02em;font-weight:600}.app-nav-links{gap:.75rem;display:flex}.app-nav a{color:#a8b4cc;border-radius:8px;padding:.35rem .65rem;text-decoration:none}.app-nav a:hover,.app-nav a.active{color:#f4f7ff;background:#78a0ff1f}.gruber-status{border-radius:50%;flex-shrink:0;align-self:center;width:8px;height:8px}.gruber-ready{background:#6f9fff;animation:2.2s ease-in-out infinite gruber-pulse;box-shadow:0 0 #6f9fff73}.gruber-connecting{opacity:.55;background:#7f8aa3}.gruber-offline{opacity:.85;background:#c4786a}@keyframes gruber-pulse{0%,to{transform:scale(1);box-shadow:0 0 #6f9fff73}50%{transform:scale(1.08);box-shadow:0 0 0 5px #6f9fff00}}.app-main{flex:1}.app-footer{color:#7f8aa3;font-size:.875rem}.app-footer a{color:#9eb4ff}.screen{flex-direction:column;gap:1rem;display:flex}.screen-header h1{margin:0;font-size:1.75rem}.screen-subtitle{color:#9aa8c2;margin:.25rem 0 0}.placeholder-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0c1224d1;border:1px solid #ffffff14;border-radius:16px;padding:1.25rem}.meta-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.5rem;margin:1rem 0;display:grid}.meta-list dt{text-transform:uppercase;letter-spacing:.06em;color:#7f8aa3;font-size:.75rem}.meta-list dd{margin:.15rem 0 0;font-size:1.05rem}.primary-button{color:#0b1020;cursor:pointer;background:linear-gradient(135deg,#9eb4ff,#6f8fe8);border:none;border-radius:10px;padding:.7rem 1rem;font-size:1rem}.primary-button:hover:not(:disabled){filter:brightness(1.08)}.primary-button:disabled{cursor:not-allowed;opacity:.6}.session-hud{color:#9aa8c2;justify-content:space-between;align-items:baseline;padding:0 .25rem;font-size:.9rem;display:flex}.session-timer.time-up{color:#e8c990}.session-card{flex-direction:column;align-items:stretch;min-height:320px;padding:0;display:flex;overflow:hidden}.session-screen--active{padding-bottom:4.5rem;position:relative}.session-card-body{flex:1;justify-content:center;align-items:center;min-height:280px;padding:1.5rem 1.25rem;display:flex}.exercise-meta-bar{background:#ffffff06;border-bottom:1px solid #ffffff0f}.exercise-meta-bar-inner{flex-wrap:wrap;align-items:center;gap:.55rem;padding:.55rem 1rem;display:flex}.exercise-meta-tag{text-transform:uppercase;letter-spacing:.07em;color:#8f9bb5;font-size:.68rem;font-weight:600}.exercise-meta-tag.muted{text-transform:none;letter-spacing:.02em;color:#7f8aa3;font-weight:500}.exercise-meta-tag.intro{color:#9fe8c8}.exercise-meta-divider{background:#ffffff1a;flex-shrink:0;width:1px;height:.7rem}.exercise-meta-bar .card-tier{padding:.15rem .5rem;font-size:.65rem}.exercise{text-align:center;flex-direction:column;align-items:center;gap:1.25rem;width:100%;max-width:560px;display:flex}.exercise-prompt{letter-spacing:.01em;margin:0;font-size:1.9rem;font-weight:600}.exercise-answer{color:#cfe0ff;margin:0;font-size:1.4rem}.exercise-hint{color:#9aa8c2;margin:0;font-size:.9rem;font-style:italic}.intro-badge{text-transform:uppercase;letter-spacing:.08em;color:#9fe8c8;border:1px solid #9fe8c859;border-radius:999px;padding:.25rem .75rem;font-size:.75rem}.card-tier{text-transform:uppercase;letter-spacing:.06em;border:1px solid #0000;border-radius:999px;padding:.2rem .6rem;font-size:.7rem;font-weight:600}.tier-prima{color:#f5d98a;background:#f5d98a1f;border-color:#f5d98a59}.tier-basic{color:#9eb4ff;background:#9eb4ff1f;border-color:#9eb4ff59}.tier-advanced{color:#d4a8ff;background:#d4a8ff1f;border-color:#d4a8ff59}.choice-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%;display:grid}.choice-button{color:#e8edf5;cursor:pointer;background:#141c34d9;border:1px solid #ffffff1f;border-radius:12px;padding:.9rem 1rem;font-size:1.05rem;transition:background .15s,border-color .15s,opacity .15s}.choice-button:hover:not(:disabled){background:#78a0ff24;border-color:#78a0ff66}.choice-button:disabled{cursor:default}.choice-correct{color:#d8f5e8;background:#9fe8c81f;border-color:#9fe8c8b3}.choice-wrong{color:#f2d4d0;background:#e89a901a;border-color:#e89a9099}.choice-muted{opacity:.45}.grade-buttons{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.grade-button{color:#e8edf5;cursor:pointer;background:#141c34d9;border:1px solid #ffffff24;border-radius:10px;padding:.65rem 1rem;font-size:.95rem;transition:background .15s,border-color .15s}.grade-again:hover{background:#e89a901a;border-color:#e89a9099}.grade-good:hover{background:#78a0ff1f;border-color:#78a0ff80}.grade-easy:hover{background:#9fe8c81a;border-color:#9fe8c899}.wrong-answer-review{flex-direction:column;gap:.85rem;width:100%;margin-top:.75rem;display:flex}.wrong-answer-header{color:#cfe0ff;text-align:center;margin:0;font-size:.9rem}.wrong-answer-compare{grid-template-columns:1fr auto 1fr;align-items:stretch;gap:.5rem;display:grid}.wrong-answer-cell{border:1px solid #0000;border-radius:12px;flex-direction:column;gap:.3rem;min-width:0;padding:.7rem .85rem;display:flex}.wrong-answer-cell--mine{background:#e89a9014;border-color:#e89a904d}.wrong-answer-cell--right{background:#9fe8c81a;border-color:#9fe8c866}.wrong-answer-cell-label{text-transform:uppercase;letter-spacing:.07em;color:#8f9bb5;font-size:.68rem}.wrong-answer-cell-value{word-break:break-word;font-size:1.05rem}.wrong-answer-cell-value--mine{color:#f0c8c2;opacity:.9;-webkit-text-decoration:line-through #e89a908c;text-decoration:line-through #e89a908c}.wrong-answer-cell-value--right{color:#d8f5e8;font-weight:600}.wrong-answer-arrow{color:#6f8fe8;align-self:center;font-size:1.1rem}.acknowledge-buttons{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:.25rem;display:flex}.acknowledge-button{color:#e8edf5;cursor:pointer;background:#141c34d9;border:1px solid #ffffff24;border-radius:12px;flex-direction:column;align-items:center;gap:.2rem;min-width:4.75rem;padding:.6rem .8rem;font-size:.95rem;transition:background .15s,border-color .15s,transform .15s;display:inline-flex}.acknowledge-button:hover:not(:disabled){transform:translateY(-1px)}.acknowledge-again:hover{background:#e89a9024;border-color:#e89a9099}.acknowledge-good:hover{background:#78a0ff24;border-color:#78a0ff80}.acknowledge-easy:hover{background:#9fe8c824;border-color:#9fe8c899}.acknowledge-primary{background:#78a0ff29;border-color:#78a0ff73}.acknowledge-skip{color:#0b1020;background:linear-gradient(135deg,#9eb4ff,#6f8fe8);border:none;border-radius:10px;flex-direction:row;align-self:center;padding:.6rem 1.1rem;font-weight:600}.acknowledge-skip:hover{filter:brightness(1.08)}.acknowledge-emoji{font-size:1.4rem;line-height:1}.acknowledge-label{color:#b8c4dc;font-size:.8rem}.gruber-markdown{margin-top:.35rem;font-size:.92rem;line-height:1.55}.gruber-markdown>:first-child{margin-top:0}.gruber-markdown>:last-child{margin-bottom:0}.gruber-markdown p{margin:.35rem 0}.gruber-markdown strong{color:#e8edf5;font-weight:600}.gruber-markdown h1,.gruber-markdown h2,.gruber-markdown h3{color:#d4e4ff;margin:.5rem 0 .25rem;font-size:.95rem;font-weight:600}.gruber-markdown ul,.gruber-markdown ol{margin:.35rem 0;padding-left:1.25rem}.gruber-markdown li{margin:.15rem 0}.gruber-markdown code{background:#ffffff14;border-radius:4px;padding:.1rem .3rem;font-family:ui-monospace,monospace;font-size:.85em}.link-button{color:#7f8aa3;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;align-self:center;padding:.25rem .5rem;font-size:.85rem;text-decoration:underline}.link-button:hover{color:#a8b4cc}.exercise-concept{text-transform:uppercase;letter-spacing:.08em;color:#9aa8c2;font-size:.75rem}.exercise-prompt-small{font-size:1.35rem}.typed-answer{flex-direction:column;gap:.75rem;width:100%;max-width:420px;display:flex}.typed-answer-row{gap:.75rem;display:flex}.typed-input{color:#e8edf5;background:#0a0e1cd9;border:1px solid #ffffff29;border-radius:10px;outline:none;flex:1;padding:.65rem .9rem;font-size:1.05rem}.typed-input:focus{border-color:#78a0ff8c}.typed-correct{background:#9fe8c814;border-color:#9fe8c8b3}.typed-wrong{background:#e89a9014;border-color:#e89a9099}.typed-solution{color:#cfe0ff;margin:0;font-size:.95rem}.pack-select-label{color:#9aa8c2;align-items:center;gap:.75rem;margin-bottom:1rem;font-size:.85rem;display:flex}.pack-select{color:#e8edf5;background:#0a0e1cd9;border:1px solid #ffffff29;border-radius:10px;padding:.45rem .7rem;font-size:.95rem}.pin-form{flex-direction:column;align-items:center;gap:.75rem;max-width:280px;margin:0 auto;display:flex}.pin-label{text-transform:uppercase;letter-spacing:.06em;color:#7f8aa3;font-size:.75rem}.pin-input{letter-spacing:.35em;text-align:center;color:#e8edf5;background:#0a0e1cd9;border:1px solid #ffffff29;border-radius:10px;outline:none;width:100%;padding:.75rem 1rem;font-size:1.5rem}.pin-input:focus{border-color:#78a0ff8c}.pin-error{color:#e89a90;margin:0;font-size:.875rem}.parent-summary-row{border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:1.5rem;margin-bottom:1.25rem;padding-bottom:1.25rem;display:flex}.stat-highlight{flex-direction:column;align-items:center;gap:.15rem;display:flex}.stat-highlight-value{color:#9fe8c8;font-size:2.5rem;font-weight:600;line-height:1}.stat-highlight-label{text-transform:uppercase;letter-spacing:.06em;color:#7f8aa3;font-size:.75rem}.session-slots{flex-direction:column;gap:.5rem;display:flex}.session-slot{color:#7f8aa3;background:#0a0e1c80;border:1px solid #ffffff14;border-radius:8px;padding:.35rem .75rem;font-size:.9rem}.session-slot.done{color:#9fe8c8;border-color:#9fe8c859}.parent-section{margin-top:1.25rem}.parent-section:first-child{margin-top:0}.parent-settings-form{flex-direction:column;gap:.5rem;display:flex}.parent-field-label{color:#cfe0ff;font-size:.9rem;font-weight:500}.parent-field-hint{color:#7f8aa3;margin:0;font-size:.82rem}.parent-field-row{align-items:center;gap:.75rem;display:flex}.parent-text-input{color:#e8edf5;background:#0a0e1cd9;border:1px solid #ffffff24;border-radius:10px;outline:none;flex:1;min-width:0;padding:.6rem .85rem;font-size:1rem}.parent-text-input:focus{border-color:#78a0ff8c}.parent-saved{color:#9fe8c8;margin:0;font-size:.82rem}.parent-section-title{text-transform:uppercase;letter-spacing:.06em;color:#7f8aa3;margin:0 0 .5rem;font-size:.8rem}.stat-detail{color:#7f8aa3;font-size:.85rem}.parent-empty{color:#9aa8c2;text-align:center;margin:0}.parent-lock{margin:1.25rem auto 0;display:block}.method-breakdown{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.method-breakdown li{color:#cfe0ff;border-bottom:1px solid #ffffff0f;justify-content:space-between;padding:.4rem 0;font-size:.95rem;display:flex}.method-breakdown li:last-child{border-bottom:none}.gruber-dock{z-index:20;pointer-events:none;flex-direction:column;align-items:flex-end;gap:.6rem;max-width:min(380px,100vw - 3rem);display:flex;position:fixed;bottom:1.5rem;right:1.5rem}.gruber-dock>*{pointer-events:auto}.gruber-dock-button{color:#d4e4ff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;background:#0c1224eb;border:1px solid #78a0ff66;border-radius:999px;padding:.55rem 1.1rem;font-size:.88rem;font-weight:500;transition:background .15s,border-color .15s,transform .15s;box-shadow:0 4px 24px #00000059}.gruber-dock-button:hover:not(:disabled){background:#78a0ff2e;border-color:#9fc8ff99;transform:translateY(-1px)}.gruber-dock-button:disabled{opacity:.5;cursor:not-allowed}.gruber-dock-panel{width:100%;box-shadow:0 8px 32px #0006}.gruber-follow-ups{flex-wrap:wrap;justify-content:flex-end;gap:.45rem;max-width:100%;display:flex}.gruber-follow-button{color:#b8d0ff;cursor:pointer;white-space:nowrap;background:#0c1224e0;border:1px solid #78a0ff4d;border-radius:999px;padding:.4rem .75rem;font-size:.78rem}.gruber-follow-button:hover:not(:disabled){background:#78a0ff24;border-color:#9fc8ff80}.gruber-follow-button:disabled{opacity:.5;cursor:not-allowed}.gruber-follow-penalty{color:#e8b4a8;border-color:#e89a9059}.gruber-dock-loading{color:#9aa8c2;margin:0;font-size:.82rem;font-style:italic}.assist-penalty{color:#f0d4ce;background:#e89a901a;border-color:#e89a9066}.solution-revealed-notice{color:#e8b4a8;margin:0;font-size:.88rem}.assist-panel{text-align:left;border-radius:12px;width:100%;margin:0;padding:.85rem 1rem;font-size:.92rem;line-height:1.55}.assist-panel p{margin:.35rem 0 0}.assist-byline{letter-spacing:.04em;text-transform:uppercase;color:#9eb4ff;font-size:.72rem;font-weight:600;display:block}.assist-hint{color:#d4e4ff;background:#78a0ff14;border:1px solid #9fc8ff40}.assist-correction{color:#f0e4c8;background:#e8c99014;border:1px solid #e8c99059}.assist-error{color:#f2d4d0;background:#e89a9014;border:1px solid #e89a9059}.assist-loading{color:#9aa8c2;margin:0;font-style:italic}.progress-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.progress-card{flex-direction:column;gap:.35rem;min-height:148px;display:flex}.progress-kicker{text-transform:uppercase;letter-spacing:.08em;color:#7f8aa3;margin:0;font-size:.75rem}.progress-hero{margin:0;font-size:2rem;font-weight:600;line-height:1.1}.progress-detail,.progress-empty,.progress-loading{color:#9aa8c2;margin:0;font-size:.9rem}.progress-bonus{color:#9fe8c8;margin:.25rem 0 0;font-size:.85rem}.session-slots{gap:.5rem;margin-top:.25rem;display:flex}.session-slot{color:#5f6b84;border:1px solid #ffffff1f;border-radius:999px;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:.95rem;display:inline-flex}.session-slot.filled{color:#e8edf5;background:#9fe8c81a;border-color:#9fe8c873}.weekly-ring{width:108px;height:108px;margin-top:.25rem;position:relative}.weekly-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.weekly-ring-track{fill:none;stroke:#ffffff14;stroke-width:8px}.weekly-ring-progress{fill:none;stroke:#9eb4ff;stroke-width:8px;stroke-linecap:round;transition:stroke-dashoffset .35s}.weekly-ring-label{color:#9aa8c2;flex-direction:column;justify-content:center;align-items:center;gap:.1rem;font-size:.8rem;display:flex;position:absolute;inset:0}.weekly-ring-label strong{color:#e8edf5;font-size:1.35rem}.progress-section-header h2{margin:0;font-size:1.15rem}.progress-section-header p{color:#9aa8c2;margin:.25rem 0 0;font-size:.9rem}.topic-progress-list{flex-direction:column;gap:.85rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.topic-progress-row{justify-content:space-between;gap:1rem;margin-bottom:.35rem;font-size:.95rem;display:flex}.topic-progress-title{color:#d8e2f5}.topic-progress-value{color:#9aa8c2;font-variant-numeric:tabular-nums}.topic-progress-bar{background:#ffffff14;border-radius:999px;height:8px;overflow:hidden}.topic-progress-bar span{border-radius:inherit;background:linear-gradient(90deg,#6f8fe8,#9fe8c8);height:100%;display:block}.tricky-card-list{color:#cfe0ff;margin:1rem 0;padding-left:1.25rem}.tricky-card-list li+li{margin-top:.35rem}@media (width<=720px){.progress-grid{grid-template-columns:1fr}}.recent-sessions{margin-top:0}.session-list{flex-direction:column;gap:.6rem;margin:1rem 0 0;padding:0;list-style:none;display:flex}.session-row{background:#0a0e1c8c;border:1px solid #ffffff14;border-radius:12px;transition:border-color .15s,background .15s;overflow:hidden}.session-row--active{background:#9fe8c812;border-color:#9fe8c866}.session-row--expanded{border-color:#78a0ff4d}.session-row-main{width:100%;color:inherit;text-align:left;cursor:pointer;font:inherit;background:0 0;border:none;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem .9rem;display:flex}.session-row-main:hover{background:#78a0ff14}.session-row-meta{flex-wrap:wrap;align-items:center;gap:.6rem;min-width:0;display:flex}.session-row-when{color:#d8e2f5;font-size:.92rem;font-weight:500}.session-row-badge{text-transform:uppercase;letter-spacing:.06em;color:#9fe8c8;border:1px solid #9fe8c866;border-radius:999px;padding:.1rem .5rem;font-size:.68rem;font-weight:600}.session-row-summary{color:#9aa8c2;font-size:.85rem}.session-row-action{color:#9eb4ff;flex-shrink:0;font-size:.85rem;font-weight:600}.session-row--active .session-row-action{color:#0b1020;background:linear-gradient(135deg,#9fe8c8,#6f9fe0);border-radius:999px;padding:.35rem .85rem}.session-stats-inline{border-top:1px solid #ffffff0d;margin:0;padding:.75rem .9rem .85rem}
