:root{--ios-bg: #F2F2F7;--ios-bg-elev: #FFFFFF;--ios-bg-tert: #E5E5EA;--ios-separator: rgba(60, 60, 67, .13);--label: #000000;--label-2: rgba(60, 60, 67, .6);--label-3: rgba(60, 60, 67, .3);--label-4: rgba(60, 60, 67, .18);--tint: #0A84FF;--tint-press: #0066CC;--green: #30D158;--green-deep: #1F8F3E;--red: #FF3B30;--orange: #FF9500;--shadow-card: 0 1px 0 rgba(0, 0, 0, .04), 0 8px 20px rgba(0, 0, 0, .05);--shadow-key: 0 1px 0 rgba(0, 0, 0, .04), 0 1px 3px rgba(0, 0, 0, .05);--sf: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--sf-rounded: ui-rounded, -apple-system, "SF Pro Rounded", "SF Pro Display", system-ui, sans-serif;font-family:var(--sf);color:var(--label);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;color:var(--label);overflow:hidden}html,body{background:var(--ios-bg)}#root{display:flex;justify-content:center;background:var(--ios-bg)}.frame{width:100%;max-width:480px;height:100%;position:relative;background:var(--ios-bg);overflow:hidden}button{font-family:inherit;border:none;background:transparent;cursor:pointer;color:inherit;padding:0;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid var(--tint);outline-offset:2px;border-radius:6px}.app{height:100%;width:100%;background:var(--ios-bg);display:flex;flex-direction:column;position:relative;overflow:hidden;font-family:var(--sf);color:var(--label)}.nav-large{padding:max(env(safe-area-inset-top),24px) 16px 8px;padding-top:max(env(safe-area-inset-top,24px),24px);display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.nav-large h1{margin:0;font-family:var(--sf);font-size:34px;line-height:41px;font-weight:700;letter-spacing:.37px;color:var(--label)}.nav-actions{display:flex;gap:4px;padding-bottom:6px}.nav-icon-btn{width:32px;height:32px;border-radius:16px;background:#7878801f;display:inline-flex;align-items:center;justify-content:center;color:var(--tint);transition:background .12s ease}.nav-icon-btn:active{background:#7878803d}.nav-plain{padding:max(env(safe-area-inset-top,24px),24px) 16px 10px;display:flex;align-items:center;justify-content:space-between;min-height:64px;gap:12px}.nav-side{width:64px}.nav-title{font-size:17px;font-weight:600;color:var(--label)}.nav-right-text{width:64px;text-align:right;color:var(--tint);font-size:17px;font-weight:400}.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.section-header{padding:16px 16px 6px;font-size:13px;font-weight:400;color:var(--label-2);text-transform:uppercase;letter-spacing:-.08px}.list-inset{margin:0 16px 8px;background:var(--ios-bg-elev);border-radius:14px;overflow:hidden}.list-row{display:flex;align-items:center;gap:12px;padding:14px 16px;min-height:56px;position:relative}.list-row+.list-row:before{content:"";position:absolute;left:16px;right:0;top:0;height:.5px;background:var(--ios-separator)}.list-row-title{font-size:17px;font-weight:400;color:var(--label);flex:1;min-width:0}.list-row-value{font-size:17px;color:var(--label-2);font-variant-numeric:tabular-nums}.cards{padding:4px 16px 32px;display:flex;flex-direction:column;gap:14px}.pcard{background:var(--ios-bg-elev);border-radius:18px;padding:18px 18px 16px;display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden}.pcard-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.pcard-titlewrap{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.pcard-title{font-size:22px;font-weight:700;letter-spacing:-.26px;color:var(--label);line-height:1.1}.pcard-sub{font-size:13px;color:var(--label-2);font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px 0 8px;border-radius:13px;font-size:12px;font-weight:600;letter-spacing:-.08px;background:#7878801f;color:var(--label-2);white-space:nowrap;flex-shrink:0}.badge:not(.badge-provisional):not(.badge-mastered){padding-left:10px}.badge.badge-provisional{background:#0a84ff1f;color:var(--tint)}.badge.badge-mastered{background:#30d15829;color:var(--green-deep)}.badge-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex-shrink:0}.badge.badge-provisional .badge-dot{background:transparent;border:1.5px solid currentColor;width:9px;height:9px}.spark-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:.5px solid var(--ios-separator);padding:12px 2px 0}.spark-label{font-size:12px;color:var(--label-2);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.spark-values{display:inline-flex;align-items:baseline;gap:6px;font-variant-numeric:tabular-nums}.spark-frag{display:inline-flex;align-items:baseline;gap:6px}.spark-values .v{font-size:13px;color:var(--label-2);font-weight:500}.spark-values .v.latest{color:var(--label);font-weight:600;font-size:15px}.spark-values .v.faint{color:var(--label-3)}.spark-values .sep{color:var(--label-3);font-size:11px}.pcard-readout{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0;padding:12px 2px 2px;border-top:.5px solid var(--ios-separator)}.pcard-readout>div{display:flex;flex-direction:column;gap:2px}.pcard-readout dt{font-size:11px;font-weight:600;color:var(--label-2);text-transform:uppercase;letter-spacing:.4px}.pcard-readout dd{margin:0;font-size:14px;font-weight:600;color:var(--label);font-variant-numeric:tabular-nums}.btn-primary{width:100%;height:50px;border-radius:14px;background:var(--tint);color:#fff;font-size:17px;font-weight:600;letter-spacing:-.4px;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,transform 80ms ease}.btn-primary:active{background:var(--tint-press);transform:scale(.985)}.btn-primary.muted{background:#0a84ff1f;color:var(--tint)}.btn-primary.muted:active{background:#0a84ff38}.btn-primary.danger{background:#ff3b301f;color:var(--red)}.btn-primary.danger:active{background:#ff3b3038}.btn-row{display:flex;gap:10px;padding:12px 16px max(env(safe-area-inset-bottom,16px),16px)}.btn-row .btn-primary{flex:1}.sheet-btn-row{padding-top:12px;padding-bottom:16px}.session{height:100%;display:flex;flex-direction:column}.session-top{display:flex;align-items:center;justify-content:space-between;padding:max(env(safe-area-inset-top,16px),16px) 20px 10px;min-height:56px;gap:12px}.session-counter{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--label);font-variant-numeric:tabular-nums}.session-counter .counter-total{color:var(--label-3)}.session-progress{flex:1;margin:0 14px;height:4px;background:#7878802e;border-radius:2px;overflow:hidden}.session-progress-fill{height:100%;background:var(--tint);border-radius:2px;transition:width .22s ease}.mixed-pill{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;background:#ff950026;color:var(--orange);padding:4px 8px;border-radius:8px}.session-close{width:32px;height:32px;border-radius:16px;background:#78788029;display:inline-flex;align-items:center;justify-content:center;color:var(--label-2);font-size:15px;font-weight:700;flex-shrink:0}.problem-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 24px;gap:22px}.problem-text{font-family:var(--sf-rounded);font-size:56px;font-weight:600;letter-spacing:-1.2px;color:var(--label);font-variant-numeric:tabular-nums;line-height:1;text-align:center;white-space:nowrap}.problem-text .qmark{color:var(--label-3);font-weight:500}.answer-chip{min-width:220px;height:88px;border-radius:22px;background:var(--ios-bg-elev);display:flex;align-items:center;justify-content:center;padding:0 28px;font-family:var(--sf-rounded);font-size:56px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-1px;color:var(--label);box-shadow:var(--shadow-card);transition:background .18s ease,color .18s ease,transform .12s ease}.answer-chip.empty{color:var(--label-3);font-weight:500}.answer-chip.flash-correct{background:var(--green);color:#fff}.answer-chip.flash-wrong{background:var(--red);color:#fff}.reveal{font-size:15px;font-weight:500;color:var(--red);min-height:22px;letter-spacing:-.2px}.reveal.placeholder{opacity:0}.numpad-wrap{padding:6px 12px max(env(safe-area-inset-bottom,16px),16px);background:linear-gradient(to top,var(--ios-bg) 70%,rgba(242,242,247,0))}.numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.key{height:66px;border-radius:18px;background:var(--ios-bg-elev);display:flex;align-items:center;justify-content:center;font-family:var(--sf-rounded);font-size:30px;font-weight:500;color:var(--label);font-variant-numeric:tabular-nums;box-shadow:var(--shadow-key);transition:background .1s ease,transform 80ms ease;-webkit-user-select:none;user-select:none}.key:active{background:var(--ios-bg-tert);transform:scale(.97)}.key.util{background:#78788029;color:var(--label)}.key.util:active{background:#78788047}.key.submit{background:var(--tint);color:#fff}.key.submit:active{background:var(--tint-press)}.key.submit:disabled,.key.submit[aria-disabled=true]{background:#0a84ff59;color:#ffffffd9;cursor:default;transform:none}.summary-hero{padding:24px 24px 8px;display:flex;flex-direction:column;align-items:center;gap:12px}.summary-hero-icon{width:88px;height:88px;border-radius:50%;background:#30d15826;color:var(--green);display:inline-flex;align-items:center;justify-content:center}.summary-hero-icon.alert{background:#ff950026;color:var(--orange)}.summary-hero-title{font-size:28px;font-weight:700;letter-spacing:-.5px;text-align:center;margin:4px 0 0}.summary-hero-sub{font-size:15px;color:var(--label-2);text-align:center;max-width:280px;line-height:1.35}.stat-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:24px 16px 8px}.stat-card{background:var(--ios-bg-elev);border-radius:18px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}.stat-card .stat-label{font-size:12px;font-weight:600;color:var(--label-2);text-transform:uppercase;letter-spacing:.3px}.stat-card .stat-value{font-family:var(--sf-rounded);font-size:28px;font-weight:700;letter-spacing:-.6px;color:var(--label);font-variant-numeric:tabular-nums}.stat-card .stat-foot{font-size:12px;color:var(--label-3)}.stat-card.qualified{background:linear-gradient(150deg,#30d158,#1f8f3e);color:#fff}.stat-card.qualified .stat-label,.stat-card.qualified .stat-foot{color:#ffffffd9}.stat-card.qualified .stat-value{color:#fff}.attempt-list{margin-bottom:24px}.attempt-row{min-height:44px;padding-top:10px;padding-bottom:10px}.attempt-problem{font-family:ui-monospace,SF Mono,monospace;font-size:14px;flex:1;color:var(--label)}.attempt-right{display:inline-flex;align-items:center;gap:10px;font-size:13px;color:var(--label-2);font-variant-numeric:tabular-nums}.attempt-mark{width:18px;height:18px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.attempt-mark.ok{background:#30d1582e;color:var(--green-deep)}.attempt-mark.bad{background:#ff3b302e;color:var(--red)}.sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000052;z-index:100;display:flex;align-items:flex-end;animation:backdrop-fade .22s ease both}@keyframes backdrop-fade{0%{opacity:0}to{opacity:1}}.sheet{background:var(--ios-bg);width:100%;border-top-left-radius:14px;border-top-right-radius:14px;max-height:86%;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 -20px 40px #0000002e;animation:sheet-rise .32s cubic-bezier(.32,.72,0,1) both}@keyframes sheet-rise{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-grabber{width:36px;height:5px;border-radius:3px;background:#78788080;margin:6px auto 0}.sheet-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 8px}.sheet-spacer{width:56px}.sheet-title{font-size:17px;font-weight:600}.sheet-done{width:56px;text-align:right;color:var(--tint);font-size:17px;font-weight:600}.sheet-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:max(env(safe-area-inset-bottom,32px),32px)}.chart-card{background:var(--ios-bg-elev);border-radius:14px;margin:0 16px 14px;padding:14px 14px 8px}.chart-card-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:8px;border-bottom:.5px solid var(--ios-separator);margin-bottom:10px}.chart-card-title{font-size:15px;font-weight:600;color:var(--label)}.chart-card-stats{display:flex;gap:14px;font-size:13px;color:var(--label-2);font-variant-numeric:tabular-nums}.chart-card-stats strong{color:var(--label);font-weight:600}.ios-chart{display:block;color:var(--label-2)}.chart-empty-ios{height:120px;display:flex;align-items:center;justify-content:center;color:var(--label-3);font-size:13px;text-align:center;padding:0 24px}.help-body{padding:4px 20px 24px;color:var(--label)}.help-body h3{font-size:20px;font-weight:700;letter-spacing:-.3px;margin:24px 0 8px}.help-body h3:first-child{margin-top:4px}.help-body p{margin:0 0 12px;font-size:15px;line-height:1.5;color:var(--label)}.help-body p.muted{color:var(--label-2)}.help-states{list-style:none;padding:0;margin:0;background:var(--ios-bg-elev);border-radius:14px;overflow:hidden}.help-states li{padding:14px 16px;display:flex;flex-direction:column;gap:4px;position:relative}.help-states li+li:before{content:"";position:absolute;left:16px;right:0;top:0;height:.5px;background:var(--ios-separator)}.help-state-row{display:flex;align-items:center;gap:10px}.help-state-desc{font-size:14px;color:var(--label-2);line-height:1.4}.alert-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000052;z-index:200;display:flex;align-items:center;justify-content:center;padding:36px;animation:backdrop-fade .18s ease both}.alert{width:284px;background:#f2f2f7eb;backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border-radius:14px;overflow:hidden;text-align:center;animation:alert-pop .2s cubic-bezier(.32,.72,0,1) both;box-shadow:0 14px 40px #0000002e}@keyframes alert-pop{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}.alert-body{padding:22px 20px 20px}.alert-title{font-size:17px;font-weight:600;letter-spacing:-.2px;margin-bottom:6px;line-height:1.25}.alert-msg{font-size:13px;color:var(--label);line-height:1.4;letter-spacing:-.08px}.alert-actions{display:flex;flex-direction:column;border-top:.5px solid var(--ios-separator)}.alert-btn{display:flex;align-items:center;justify-content:center;width:100%;height:44px;box-sizing:border-box;font-size:17px;color:var(--tint);font-weight:400;letter-spacing:-.2px;line-height:1;transition:background .1s ease}.alert-btn:active{background:#0000000f}.alert-btn+.alert-btn{border-top:.5px solid var(--ios-separator)}.alert-btn.destructive{color:var(--red);font-weight:600}.alert-btn.default{font-weight:600}
