:root{--surface-card:#fff;--surface-0:#eef0f2;--text-primary:#3c3c3c;--text-muted:#6b7280;--border-subtle:#e5e7eb;--accent:#1cb0f6;--warning:#ff9600;--pill-text:#14202b;--bg-success:#d7ffb8;--border-success:#58cc02;--text-success:#2b6b00;--bg-danger:#ffd9d9;--border-danger:#ff4b4b;--text-danger:#b3261e;--primary-action-bg:#2e7d32;--primary-action-border:#1b5e20;--primary-action-text:#fff}@media (prefers-color-scheme:dark){:root{--surface-card:#1f2c34;--surface-0:#141f24;--text-primary:#e8e8e8;--text-muted:#8b98a3;--border-subtle:#2b3940;--accent:#1cb0f6;--warning:#ffc800;--bg-success:#1b3a1a;--border-success:#58cc02;--text-success:#8fe06c;--bg-danger:#3a1414;--border-danger:#ff5c5c;--text-danger:#ff8a8a;--primary-action-bg:#217a30;--primary-action-border:#164f20;--primary-action-text:#fff}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}body{min-height:100vh;margin:0}.puzzle-card{box-sizing:border-box;flex-direction:column;gap:1rem;width:100%;max-width:480px;margin:0 auto;padding:1rem;display:flex}.puzzle-card__prompt{text-align:center;color:var(--text-primary);margin:0;font-size:1.0625rem;font-weight:600}.puzzle-card__interaction{flex-direction:column;display:flex}.code-snippet{background:var(--surface-0);font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:calc(.8125rem * var(--code-snippet-font-scale,1));border-radius:12px;padding:.625rem 0;line-height:1.5;position:relative;overflow-x:auto}.code-snippet--scrollable:after{content:"";background:linear-gradient(to right, transparent, var(--surface-0));pointer-events:none;border-radius:0 12px 12px 0;width:1.5rem;position:absolute;top:0;bottom:0;right:0}.code-snippet__line{white-space:pre;text-align:left;width:100%;color:var(--text-primary);font:inherit;background:0 0;border:none;align-items:center;gap:.75rem;padding:.0625rem 1rem;display:flex}.code-snippet__line--interactive{cursor:pointer;min-height:44px}.code-snippet__line-number{text-align:right;min-width:1.5rem;color:var(--text-muted);-webkit-user-select:none;user-select:none;flex-shrink:0}.code-snippet__line-code{white-space:pre}.code-snippet__line--wrong{background:var(--bg-danger)}.code-snippet__line--reveal-correct{background:var(--bg-success)}.token.keyword{color:#cf222e}.token.string{color:#116329}.token.function{color:#6639ba}.token.class-name,.token.builtin{color:#953800}.token.number,.token.boolean,.token.constant,.token.property,.token.literal-property{color:#0550ae}.token.comment{color:var(--text-muted);font-style:italic}.token.punctuation,.token.operator{color:var(--text-muted)}.token.parameter,.token.annotation,.token.macro,.token.directive,.token.directive-hash,.token.generics{color:#0e7490}@media (prefers-color-scheme:dark){.token.keyword{color:#ff7b72}.token.string{color:#7ee787}.token.function{color:#d2a8ff}.token.class-name,.token.builtin{color:#ffa657}.token.number,.token.boolean,.token.constant,.token.property,.token.literal-property{color:#79c0ff}.token.parameter,.token.annotation,.token.macro,.token.directive,.token.directive-hash,.token.generics{color:#56d4dd}}.mcq-choices{flex-direction:column;gap:.5rem;display:flex}.mcq-choice{border:2px solid var(--border-subtle);background:var(--surface-card);width:100%;min-height:44px;color:var(--text-primary);text-align:left;cursor:pointer;border-radius:12px;padding:.75rem 1rem;font-size:.9375rem}.mcq-choice:disabled{cursor:default}.mcq-choice--correct,.mcq-choice--reveal-correct{border-color:var(--border-success);background:var(--bg-success);color:var(--text-success)}.mcq-choice--wrong{border-color:var(--border-danger);background:var(--bg-danger);color:var(--text-danger)}.swipe-fallback{flex-direction:column;gap:.75rem;display:flex}.swipe-fallback__hint{text-align:center;color:var(--text-muted);margin:0;font-size:.8125rem}.swipe-fallback__card{touch-action:pan-y;flex-direction:column;gap:.75rem;display:flex}.swipe-fallback__buttons{gap:.75rem;display:flex}.swipe-fallback__button{border:2px solid var(--border-subtle);background:var(--surface-card);min-height:44px;color:var(--text-primary);cursor:pointer;border-radius:12px;flex:1;padding:.75rem .5rem;font-size:.9375rem;font-weight:600}.swipe-fallback__button:disabled{cursor:default}.swipe-fallback__button--left{border-color:var(--border-danger)}.swipe-fallback__button--right{border-color:var(--border-success)}.swipe-fallback__button--correct,.swipe-fallback__button--reveal-correct{border-color:var(--border-success);background:var(--bg-success);color:var(--text-success)}.swipe-fallback__button--wrong{border-color:var(--border-danger);background:var(--bg-danger);color:var(--text-danger)}.swipe-fallback__button--previewing.swipe-fallback__button--left{background:var(--bg-danger)}.swipe-fallback__button--previewing.swipe-fallback__button--right{background:var(--bg-success)}.feedback-panel{border-radius:16px;flex-direction:column;gap:.75rem;padding:1rem;animation:.18s ease-out feedback-panel-slide-in;display:flex}@keyframes feedback-panel-slide-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.feedback-panel--correct{background:var(--bg-success)}.feedback-panel--wrong{background:var(--bg-danger)}.feedback-panel__header{align-items:center;gap:.5rem;display:flex}.feedback-panel--correct .feedback-panel__icon,.feedback-panel--correct .feedback-panel__verdict,.feedback-panel--correct .feedback-panel__delta{color:var(--text-success)}.feedback-panel--wrong .feedback-panel__icon,.feedback-panel--wrong .feedback-panel__verdict,.feedback-panel--wrong .feedback-panel__delta{color:var(--text-danger)}.feedback-panel__icon{font-size:1.25rem;line-height:1}.feedback-panel__verdict{flex:1;font-size:1rem;font-weight:700}.feedback-panel__delta{font-variant-numeric:tabular-nums;font-weight:700}.feedback-panel__explanation{color:var(--text-primary);margin:0;font-size:.9375rem;line-height:1.45}.feedback-panel__continue{border:none;border-bottom:4px solid var(--primary-action-border);background:var(--primary-action-bg);width:100%;min-height:44px;color:var(--primary-action-text);cursor:pointer;border-radius:12px;padding:.875rem 1rem;font-size:1rem;font-weight:700;transition:transform 50ms ease-out,border-bottom-width 50ms ease-out,margin-bottom 50ms ease-out}.feedback-panel__continue:active{border-bottom-width:1px;margin-bottom:3px;transform:translateY(3px)}.practice-page{width:100%;max-width:480px;padding:calc(1rem + env(safe-area-inset-top)) 1rem 1rem;box-sizing:border-box;flex-direction:column;gap:1rem;margin:0 auto;display:flex}.practice-page__status{text-align:center;color:var(--text-muted);padding:2rem 0}.practice-page__filter-banner{color:var(--text-muted);justify-content:space-between;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.practice-page__nav{justify-content:center;gap:.75rem;display:flex}.practice-page__link{min-height:44px;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:.5rem .75rem;font-size:.9375rem;font-weight:600}.practice-page__version{text-align:center;color:var(--text-muted);margin:0;font-size:.6875rem}.status-bar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.status-bar__pill{font-variant-numeric:tabular-nums;min-height:44px;color:var(--pill-text);border-radius:999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-weight:700;display:flex}.status-bar__pill--rating{background:var(--accent)}.status-bar__pill--streak{background:var(--warning)}.status-bar__solved{color:var(--text-muted);align-items:center;gap:.375rem;font-size:.8125rem;display:flex}.status-bar__combo{background:var(--bg-success);min-height:44px;color:var(--text-success);border-radius:999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-weight:700;animation:.18s ease-out combo-badge-pop;display:flex}@keyframes combo-badge-pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.pattern-picker{flex-direction:column;gap:.75rem;display:flex}.pattern-picker__header{align-items:center;gap:.5rem;display:flex}.pattern-picker__title{margin:0;font-size:1.0625rem}.pattern-picker__all{border:2px solid var(--border-success);background:var(--bg-success);min-height:44px;color:var(--text-success);cursor:pointer;border-radius:12px;padding:.75rem 1rem;font-weight:700}.pattern-picker__grid{flex-direction:column;gap:.5rem;display:flex}.pattern-picker__button{border:2px solid var(--border-subtle);background:var(--surface-card);width:100%;min-height:44px;color:var(--text-primary);text-align:left;cursor:pointer;border-radius:12px;padding:.75rem 1rem;font-size:.9375rem}.mastery-view{flex-direction:column;gap:.75rem;display:flex}.mastery-view__header{align-items:center;gap:.5rem;display:flex}.mastery-view__title{margin:0;font-size:1.0625rem}.mastery-view__list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.mastery-row{background:var(--surface-0);border-radius:12px;justify-content:space-between;align-items:center;gap:.5rem;min-height:44px;padding:.625rem 1rem;display:flex}.mastery-row__label{color:var(--text-primary);flex:1;font-size:.875rem}.mastery-row__accuracy{color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:700}.mastery-row__count{color:var(--text-muted);font-size:.75rem}.daily-page{width:100%;max-width:480px;padding:calc(1rem + env(safe-area-inset-top)) 1rem 1rem;box-sizing:border-box;flex-direction:column;gap:1rem;margin:0 auto;display:flex}.daily-page__status{text-align:center;color:var(--text-muted);padding:2rem 0}.daily-page__link{min-height:44px;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:.5rem .75rem;font-size:.9375rem;font-weight:600}.daily-page__heading{text-align:center;color:var(--text-primary);margin:0;font-size:1.125rem;font-weight:700}.share-card{background:var(--surface-card);border:1px solid var(--border-subtle);border-radius:.75rem;flex-direction:column;gap:.5rem;padding:.875rem 1rem;display:flex}.share-card__text{color:var(--text-primary);white-space:pre-wrap;word-break:break-word;margin:0;font-size:.9375rem}.share-card__button{background:var(--primary-action-bg);border:none;border-bottom:3px solid var(--primary-action-border);min-height:44px;color:var(--primary-action-text);cursor:pointer;border-radius:.5rem;font-weight:700}.update-prompt,.ios-install-sheet{z-index:100;box-sizing:border-box;padding:.875rem 1rem calc(.875rem + env(safe-area-inset-bottom));background:var(--surface-card);border-top:1px solid var(--border-subtle);position:fixed;bottom:0;left:0;right:0}.update-prompt{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.update-prompt__message{color:var(--text-primary);font-size:.9375rem;font-weight:600}.update-prompt__actions{align-items:center;gap:.5rem;display:flex}.update-prompt__refresh{border:none;border-bottom:4px solid var(--primary-action-border);background:var(--primary-action-bg);min-height:44px;color:var(--primary-action-text);cursor:pointer;border-radius:12px;padding:.625rem 1.25rem;font-size:.9375rem;font-weight:700;transition:transform 50ms ease-out,border-bottom-width 50ms ease-out,margin-bottom 50ms ease-out}.update-prompt__refresh:active{border-bottom-width:1px;margin-bottom:3px;transform:translateY(3px)}.update-prompt__refresh:disabled{opacity:.7;cursor:default}.update-prompt__dismiss{min-height:44px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:.625rem .75rem;font-size:.9375rem;font-weight:600}.ios-install-sheet{flex-direction:column;gap:.75rem;display:flex}.ios-install-sheet__header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.ios-install-sheet__title{color:var(--text-primary);margin:0;font-size:1rem;font-weight:700}.ios-install-sheet__close{min-width:44px;min-height:44px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;font-size:1.25rem;line-height:1;display:flex}.ios-install-sheet__steps{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.ios-install-sheet__step{color:var(--text-primary);align-items:center;gap:.625rem;font-size:.9375rem;line-height:1.4;display:flex}.ios-install-sheet__step-icon{flex:none;font-size:1.125rem}.mode-switcher{padding:calc(.5rem + env(safe-area-inset-top)) 1rem 0;justify-content:center;gap:.5rem;display:flex}.mode-switcher__tab{min-height:44px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:.5rem;padding:.5rem 1rem;font-size:.9375rem;font-weight:600}.mode-switcher__tab--active{background:var(--surface-card);color:var(--text-primary)}
