:root{--background: #f4f6f3;--surface: #ffffff;--text: #202422;--text-secondary: #6b716d;--primary: #145c43;--primary-strong: #0f4b36;--primary-soft: #e7f2ec;--correct: #2e7d5b;--correct-soft: #e9f4ee;--wrong: #b45a5a;--wrong-soft: #f8ecec;--border: #dce3de;--muted: #66736c;--shadow: 0 12px 34px rgba(25, 53, 40, .075);--shadow-soft: 0 5px 16px rgba(25, 53, 40, .055);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text);background:var(--background);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{width:100%;max-width:100%;min-height:100%;margin:0;overflow-x:hidden;overscroll-behavior:none}body{min-width:320px;overflow-x:hidden;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 50% 0,rgba(20,92,67,.07),transparent 34%),#e9eeea}img,a{-webkit-user-drag:none;-webkit-touch-callout:none}button{font:inherit}button:focus-visible{outline:3px solid rgba(20,92,67,.28);outline-offset:2px}button:disabled{cursor:default}.app-shell{position:relative;width:100%;max-width:min(390px,100vw);height:100dvh;min-height:100dvh;margin:0 auto;overflow:hidden;background:var(--background);box-shadow:0 0 36px #1c2d241a;overscroll-behavior-y:none}.app-content{height:100dvh;min-height:100dvh;overflow-x:hidden;overflow-y:auto;padding-bottom:calc(74px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.screen{width:100%;max-width:100vw;min-height:calc(100dvh - 74px - env(safe-area-inset-bottom));padding:max(22px,env(safe-area-inset-top)) 20px 12px;overflow-x:hidden;scroll-padding-bottom:calc(84px + env(safe-area-inset-bottom));display:flex;flex-direction:column}.quiz-screen{width:100%;height:100dvh;min-height:100dvh;max-height:100dvh;padding:max(28px,env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom));overflow-x:hidden;overflow-y:scroll;scroll-padding-bottom:calc(24px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;touch-action:pan-x pan-y pinch-zoom}.home-screen{display:flex;flex-direction:column}.app-header,.screen-header{margin-bottom:20px}.eyebrow{margin:0 0 7px;color:var(--primary);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(24px,7vw,30px);line-height:1.25;letter-spacing:-.045em}h2{margin-bottom:12px;font-size:15px}.today-card,.question-card,.table-card,.result-card,.empty-card,.wrong-card,.stat-card,.summary-list{border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:var(--shadow)}.today-card{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:9px 4px;border-color:#145c4324;border-radius:14px}.today-metric{display:grid;gap:2px;justify-items:center;min-width:0;padding:2px 3px;text-align:center}.today-metric+.today-metric{border-left:1px solid rgba(20,92,67,.14)}.today-card span,.today-metric span{max-width:100%;overflow:hidden;color:var(--text-secondary);font-size:9.5px;font-weight:750;letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap;word-spacing:.12em}.today-card strong,.today-metric strong{max-width:100%;overflow:hidden;font-size:12px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.home-action-grid,.selection-grid,.count-grid,.stats-grid,.result-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.home-action-grid{margin-top:12px}.home-action-grid>*,.home-utility-row>*,.today-card>*{min-width:0}.home-action-grid :is(.primary-button,.secondary-button,.tips-home-button){width:100%;min-width:0;padding-right:6px;padding-left:6px;overflow:hidden;overflow-wrap:anywhere;font-size:clamp(12px,3.55vw,14px);line-height:1.2;text-align:center}.home-utility-row{display:grid;grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);gap:8px;margin-top:10px}.primary-button,.secondary-button,.tips-home-button,.select-button,.text-button,.chip,.tag-button,.inline-actions button{min-height:48px;border-radius:14px;border:1px solid transparent;cursor:pointer;font-weight:700}.primary-button{border-color:var(--primary);color:#fff;background:var(--primary);box-shadow:0 7px 16px #145c4329}.primary-button:hover{background:var(--primary-strong)}.secondary-button,.select-button{border-color:var(--border);color:var(--text);background:var(--surface);box-shadow:var(--shadow-soft)}.tips-home-button{min-height:48px;border:1px solid #2563eb;border-radius:14px;color:#fff;background:#2563eb;box-shadow:0 7px 16px #2563eb38;cursor:pointer;font-weight:800}.tips-home-button:hover{background:#1d4ed8}.usage-guide-button{display:grid;align-content:center;justify-items:center;gap:1px;width:100%;min-width:0;min-height:48px;margin:0;padding:4px 7px;border:1px solid rgba(37,99,235,.24);border-radius:14px;color:#1d4ed8;background:#eff6ff;box-shadow:var(--shadow-soft);cursor:pointer;font-size:11px;font-weight:850;line-height:1.25;letter-spacing:-.035em;overflow:hidden;text-align:center}.usage-guide-dialog{width:min(100%,430px);max-height:min(82dvh,680px);padding:22px 20px 18px;overflow-y:auto;border:1px solid rgba(255,255,255,.72);border-radius:22px;background:#fff;box-shadow:0 24px 70px #101f173d}.usage-guide-dialog h2{margin-bottom:15px;color:var(--primary);font-size:19px}.usage-guide-dialog ol{display:grid;margin:0;padding-left:22px;gap:10px;color:var(--text);font-size:13px;font-weight:650;line-height:1.52}.usage-guide-dialog ul{display:grid;margin:6px 0 0;padding-left:18px;gap:3px;color:var(--text-secondary);font-size:12px}.usage-guide-dialog .primary-button{width:100%;margin-top:18px}.select-button.is-selected,.chip.is-selected,.tag-button.is-selected{border-color:var(--primary);color:var(--primary);background:var(--primary-soft);box-shadow:inset 0 0 0 1px #145c430d}.wide-button{width:100%;margin-top:20px}.text-button{color:var(--text-secondary);background:transparent}.section-block{margin-top:18px}.home-screen .section-block h2{margin-bottom:8px;font-size:13px}.weak-list{display:flex;flex-wrap:wrap;gap:6px}.weak-list span{padding:6px 9px;border-radius:999px;color:var(--primary);background:var(--primary-soft);font-size:11px;font-weight:700}.pwa-install-area{width:100%;margin-top:18px}.pwa-install-button{display:flex;width:min(100%,390px);max-width:100%;min-width:0;min-height:58px;margin:0 auto;padding:10px 18px;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--border);border-radius:16px;color:var(--primary);background:var(--surface);box-shadow:var(--shadow-soft);cursor:pointer;font-size:14px;font-weight:850}.pwa-install-button:hover{border-color:#145c4357;background:var(--primary-soft)}.pwa-install-button:active{transform:translateY(1px)}.pwa-install-button small{color:var(--text-secondary);font-size:10px;font-weight:650}.pwa-install-area+.brand-credit{margin-top:20px}.brand-credit{margin:18px 0 0;color:var(--text-secondary);font-size:12px;text-align:center}.screen>.brand-credit{margin-top:auto;padding-top:18px}.selection-grid,.count-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.training-summary{display:grid;grid-template-columns:1fr auto;gap:11px 16px;margin-top:28px;padding:18px;border:1px solid var(--border);border-radius:18px;background:#ffffffb8;box-shadow:var(--shadow-soft)}.training-summary span{color:var(--text-secondary);font-size:13px}.training-summary strong{color:var(--primary);font-size:13px}.select-button{min-width:0;padding:10px 4px;font-size:13px}.unit-label-multiline{display:inline-block;line-height:1.2;white-space:nowrap}.bottom-tabs{position:fixed;z-index:20;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(6,1fr);width:100%;overflow:hidden;max-width:min(390px,100vw);margin:auto;padding:8px 6px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:#fffffff0;box-shadow:0 -8px 24px #1935280b;backdrop-filter:blur(16px)}.tab-button{display:flex;min-width:0;width:100%;min-height:48px;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;border-radius:14px;color:var(--muted);background:transparent;cursor:pointer;font-size:10px;font-weight:700}.tab-button span:first-child{font-size:inherit}.tab-icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tab-icon-fill{fill:currentColor;stroke:none}.tab-button.is-active{color:var(--primary);background:var(--primary-soft)}.quiz-screen{display:flex;flex-direction:column;padding:max(14px,env(safe-area-inset-top)) 14px calc(16px + env(safe-area-inset-bottom))}.quiz-status{display:grid;grid-template-columns:36px minmax(0,1fr) auto;min-height:44px;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;color:var(--text-secondary);font-size:13px;font-weight:700}.quiz-back-button{display:grid;width:36px;height:36px;place-items:center;border:1px solid var(--border);border-radius:11px;color:var(--text);background:var(--surface);box-shadow:var(--shadow-soft);cursor:pointer;font-size:18px}.quiz-progress{display:grid;gap:4px;min-width:0}.quiz-meta-line{display:flex;min-width:0;align-items:center;gap:6px;color:var(--text-secondary);font-size:13px;font-weight:800;white-space:nowrap}.quiz-meta-line>span:not(:last-child):after{content:"·";margin-left:6px;color:var(--muted)}.quiz-unit-label{flex:0 1 auto;max-width:34vw;min-width:0;overflow:hidden;color:var(--primary);text-overflow:ellipsis}.quiz-question-count,.quiz-correct-count{font-variant-numeric:tabular-nums}.quiz-status time{flex:0 0 auto;font-variant-numeric:tabular-nums}.progress-dots{display:grid;grid-template-columns:repeat(10,16px);gap:6px;align-items:center;color:var(--muted)}.progress-dots.is-twenty{grid-template-rows:repeat(2,16px)}.progress-dot{display:grid;width:16px;height:16px;place-items:center;font-size:15px;line-height:1}.progress-dot.state-correct{color:var(--correct)}.progress-dot.state-wrong{color:var(--wrong)}.progress-dot.is-current{color:var(--primary)}.question-card{display:grid;min-height:150px;align-items:center;padding:18px 17px;border-radius:16px;border-color:#145c431f}.question-text{width:100%;margin:0;text-align:left;font-size:clamp(16px,4.8vw,21px);font-weight:750;line-height:1.46;letter-spacing:-.025em}.choices-grid{display:grid;gap:7px;margin-top:10px}.choices-grid.is-2{grid-template-columns:repeat(2,minmax(0,1fr))}.choices-grid.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}.choices-grid.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}.choices-grid.is-4.is-fractionization{grid-template-columns:repeat(2,minmax(0,1fr))}.choices-grid.is-fractionization .choice-button{min-height:62px;padding:7px 8px;line-height:1.35}.choice-button{min-width:0;min-height:48px;padding:6px 4px;overflow-wrap:anywhere;border:1px solid var(--border);border-radius:12px;color:var(--text);background:var(--surface);cursor:pointer;font-size:clamp(12px,3.5vw,15px);font-weight:800;box-shadow:var(--shadow-soft);transition:transform .12s ease,border-color .12s ease,background-color .12s ease}.choice-button:not(:disabled):active{transform:translateY(1px)}.choice-correct{border-color:var(--correct);color:#fff;background:var(--correct);box-shadow:none}.choice-wrong{border-color:var(--wrong);color:var(--wrong);background:var(--wrong-soft)}.fast-answer-result{display:grid;min-height:50px;margin-top:10px;padding:10px 13px;gap:7px;border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow-soft);font-size:14px;font-weight:800}.fast-answer-result.is-correct{border-color:#cfe5d8;color:var(--correct);background:var(--correct-soft)}.fast-answer-result.is-wrong{border-color:#ead1d1;color:var(--wrong);background:var(--wrong-soft)}.fast-answer-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.fast-answer-heading span{color:var(--text)}.fast-solution-lines{display:grid;gap:2px;padding-top:6px;border-top:1px solid currentColor}.fast-solution-lines p{margin:0;color:var(--text);font-size:12px;line-height:1.42}.table-quiz{padding-top:max(10px,env(safe-area-inset-top))}.table-lead{margin-bottom:7px;color:var(--text-secondary);text-align:left;font-size:12px;font-weight:700}.table-card{width:100%;padding:7px;border-radius:14px;border-color:#145c431f}table{width:100%;table-layout:fixed;border-collapse:collapse}th,td{height:33px;padding:3px 2px;border:1px solid var(--border);text-align:left;vertical-align:middle;font-size:clamp(11px,3vw,13px);font-variant-numeric:tabular-nums}thead th{color:var(--primary);background:var(--primary-soft)}tbody th{background:#fafbf9}.table-question-text{margin:10px 3px 0;font-size:clamp(15px,4.3vw,19px)}.feedback{margin-top:10px;padding:12px;border-radius:14px;box-shadow:var(--shadow-soft)}.correct-feedback{border:1px solid #cfe5d8;background:var(--correct-soft)}.wrong-feedback{border:1px solid #ead1d1;background:var(--wrong-soft)}.feedback h2{margin-bottom:7px;color:var(--correct);font-size:14px}.wrong-feedback h2{color:var(--wrong)}.solution-lines p{margin-bottom:2px;font-size:12px;font-weight:650;line-height:1.42;text-align:left}.feedback-label{display:block;margin:9px 0 5px;color:var(--text-secondary);font-size:12px;font-weight:700}.feedback-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}.feedback-actions button{min-height:42px}.tag-grid,.chip-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.tag-button,.chip{min-width:0;min-height:34px;padding:4px 3px;border-color:var(--border);color:var(--text-secondary);background:#fff;font-size:11px}.feedback .wide-button{min-height:42px;margin-top:10px}.tips-screen{--screen-gutter: 20px;padding-bottom:calc(144px + env(safe-area-inset-bottom))}.stats-screen{padding-bottom:calc(144px + env(safe-area-inset-bottom))}.tips-header{margin-bottom:12px}.tip-column-card{display:grid;margin-bottom:14px;padding:12px 13px;grid-template-columns:112px minmax(0,1fr);gap:12px;align-items:center;border:1px solid rgba(37,99,235,.18);border-radius:14px;background:#eff6ff}.tip-column-card>strong{color:#1d4ed8;font-size:13px}.tip-column-card>div{display:grid;gap:6px;font-size:11px;font-weight:750}.tip-column-card a{display:flex;min-height:34px;padding:6px 8px;align-items:center;justify-content:space-between;gap:6px;border:1px solid rgba(37,99,235,.22);border-radius:9px;color:#1d4ed8;background:#fff;text-decoration:none}.tip-column-card a strong{flex:0 0 auto;font-size:9px}.tip-column-card span{color:var(--text-secondary)}.tips-category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.tip-category{min-height:48px;padding:8px 6px;border:1px solid var(--border);border-radius:13px;color:var(--text);background:#fff;box-shadow:var(--shadow-soft);cursor:pointer;font-size:12px;font-weight:800}.tip-category.is-selected{border-color:#2563eb;color:#1d4ed8;background:#eff6ff}.tips-viewer{margin-top:18px;margin-right:calc(var(--screen-gutter) * -1);margin-left:calc(var(--screen-gutter) * -1)}.tips-viewer-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;padding:0 var(--screen-gutter)}.tips-viewer-heading h2{margin-bottom:3px}.tips-viewer-heading span{color:var(--text-secondary);font-size:11px}.tip-download{flex:0 0 auto;padding:9px 11px;border-radius:11px;color:#fff;background:#2563eb;text-decoration:none;font-size:12px;font-weight:800}.tip-carousel{overflow:hidden;border-radius:0;touch-action:pan-y}.tip-carousel-track{display:flex;width:100%;transition:transform .22s ease;will-change:transform}.tip-slide{position:relative;flex:0 0 100%;padding:0;overflow:hidden;border:1px solid var(--border);border-right:0;border-left:0;border-radius:0;background:#fff;box-shadow:var(--shadow);cursor:zoom-in;touch-action:pan-y}.tip-slide img{display:block;width:100%;height:auto;touch-action:pan-y;-webkit-user-drag:none}.tip-slide span{position:absolute;right:9px;bottom:9px;padding:6px 9px;border-radius:999px;color:#fff;background:#101828b8;font-size:10px;font-weight:800}.tip-zoom-backdrop{position:fixed;z-index:120;inset:0;display:flex;flex-direction:column;background:#080d12f5}.tip-zoom-toolbar{display:flex;align-items:center;justify-content:flex-end;padding:max(10px,env(safe-area-inset-top)) 12px 10px;color:#fff}.tip-zoom-toolbar button{min-width:68px;min-height:40px;border:1px solid rgba(255,255,255,.28);border-radius:999px;color:#fff;background:#ffffff1f;cursor:pointer;font-weight:800}.tip-zoom-toolbar .tip-zoom-close{width:auto}.tip-zoom-nav{position:fixed;z-index:122;top:50%;width:44px;height:58px;border:1px solid rgba(255,255,255,.22);border-radius:999px;color:#fff;background:#0f172aad;box-shadow:0 10px 30px #00000047;font-size:26px;font-weight:900;transform:translateY(-50%);cursor:pointer}.tip-zoom-nav.is-prev{left:10px}.tip-zoom-nav.is-next{right:10px}.tip-zoom-canvas{position:relative;display:flex;flex:1;min-height:0;padding:0 8px calc(14px + env(safe-area-inset-bottom));align-items:center;justify-content:center;overflow:hidden;cursor:grab;touch-action:none;user-select:none}.tip-zoom-canvas.is-dragging{cursor:grabbing}.tip-zoom-image{display:block;max-width:100%;max-height:100%;height:auto;object-fit:contain;transform-origin:center center;will-change:transform;touch-action:none;user-select:none;-webkit-user-drag:none}.info-screen{padding-top:max(18px,env(safe-area-inset-top));padding-bottom:calc(78px + env(safe-area-inset-bottom))}.info-screen>.brand-credit{padding-top:10px;padding-bottom:0}.info-screen .screen-header{margin-bottom:12px}.info-card{padding:10px 14px 14px;overflow:hidden;border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:var(--shadow)}.info-list{margin:0}.info-list>div{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;padding:9px 0;border-bottom:1px solid var(--border)}.info-list dt{color:var(--text-secondary);font-size:12px;font-weight:750}.info-list dd{min-width:0;margin:0;overflow-wrap:anywhere;font-size:13px;font-weight:800}.info-list dd small{display:block;margin-top:4px;color:var(--text-secondary);font-size:11px;font-weight:650}.info-list a{color:var(--primary)}.info-version-row dd button{margin-left:7px;padding:3px 6px;border:0;border-radius:7px;color:#2563eb;background:#eff6ff;cursor:pointer;font-size:11px;font-weight:800}.version-history{margin-top:9px;padding:9px 11px;border-radius:13px;color:var(--text);background:var(--primary-soft)}.version-history strong{font-size:12px}.version-history p{margin:5px 0 0;color:var(--text-secondary);font-size:12px}.info-book-area{display:grid;margin-top:12px;grid-template-columns:108px minmax(0,1fr);gap:12px;align-items:center}.info-cover-button{width:108px;padding:0;overflow:hidden;border:1px solid rgba(20,92,67,.18);border-radius:12px;background:#fff;box-shadow:0 10px 26px #101f172e;cursor:zoom-in}.info-cover-button img{display:block;width:100%;height:auto}.info-cover-button span{display:block;padding:6px 3px;color:var(--text-secondary);font-size:9px;font-weight:800}.book-purchase-actions{display:grid;gap:8px}.book-purchase-actions strong{color:var(--text);font-size:12px}.book-purchase-actions a{display:grid;min-height:40px;padding:7px 10px;place-items:center;border:1px solid var(--border);border-radius:11px;color:var(--primary);background:var(--surface);box-shadow:var(--shadow-soft);text-align:center;text-decoration:none;font-size:11px;font-weight:800}.stop-button{align-self:center;margin-top:18px}.result-screen{justify-content:center}.result-screen>.progress-dots{align-self:center;margin-bottom:28px}.result-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:30px 20px}.result-card strong{font-size:21px}.math-text{white-space:normal}.fraction{display:inline-grid;min-width:2.3em;grid-template-rows:auto auto;align-items:center;margin:0;vertical-align:middle;text-align:center;font-variant-numeric:tabular-nums;line-height:1.1}.fraction-numerator{padding:0 .22em .12em;border-bottom:1.5px solid currentColor}.fraction-denominator{padding:.12em .22em 0}.math-fraction-expression{display:inline-flex;min-height:2.35em;align-items:center;justify-content:center;gap:.22em;vertical-align:middle;white-space:nowrap}.math-fraction-expression .fraction{margin:0;vertical-align:0}.math-arrow{display:inline-grid;min-width:.8em;place-items:center;align-self:center;font-size:1.85em;font-weight:900;line-height:1;transform:translateY(-.03em)}.choices-grid.is-fractionization .math-arrow{font-size:2.2em}.math-unit{display:inline-flex;align-self:center;align-items:center;min-height:2.35em;margin-left:-.08em;line-height:1}.result-card span{color:var(--text-secondary)}.result-actions{margin-top:14px}.chip-grid{margin-bottom:20px}.empty-card{display:flex;min-height:230px;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px}.empty-card p{margin:0;color:var(--text-secondary)}.wrong-list{display:grid;gap:10px;margin-top:16px}.wrong-card{padding:16px}.wrong-card span{color:var(--primary);font-size:11px;font-weight:800}.wrong-card p{margin:7px 0 13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700}.inline-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.inline-actions button{min-height:38px;border-color:var(--border);color:var(--text-secondary);background:#fafbf9;font-size:12px}.stats-grid{gap:7px;margin-bottom:16px}.stat-card{display:flex;min-height:64px;flex-direction:column;justify-content:center;gap:4px;padding:10px 12px;border-radius:14px}.stat-card span{color:var(--text-secondary);font-size:10.5px;font-weight:800}.stat-card strong{font-size:17px;line-height:1.2}.rate-list{display:grid;gap:14px}.rate-row{display:grid;grid-template-columns:78px 1fr 42px;align-items:center;gap:10px;font-size:12px}.rate-label{display:flex;flex-direction:column;gap:3px}.rate-label small{color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}.rate-row strong{text-align:right}.rate-track{height:8px;overflow:hidden;border-radius:999px;background:var(--border)}.rate-track span{display:block;height:100%;border-radius:inherit;background:var(--primary)}.summary-list{margin-top:28px;padding:5px 18px}.summary-list div{display:flex;justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--border);font-size:13px}.summary-list div:last-child{border-bottom:0}.summary-list span{color:var(--text-secondary)}.reset-records-button{width:100%;min-height:46px;margin-top:16px;border:1px solid #e4cece;border-radius:14px;color:var(--wrong);background:#ffffffad;cursor:pointer;font-size:13px;font-weight:750}.dialog-backdrop{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:22px;background:#141c186b;backdrop-filter:blur(5px)}.confirm-dialog{width:min(100%,360px);padding:25px 22px 20px;border:1px solid rgba(255,255,255,.72);border-radius:22px;background:#fff;box-shadow:0 24px 70px #101f173d;text-align:center}.dialog-mark{display:grid;width:42px;height:42px;margin:0 auto 15px;place-items:center;border-radius:50%;color:var(--primary);background:var(--primary-soft);font-size:20px;font-weight:850}.dialog-mark.is-danger{color:var(--wrong);background:var(--wrong-soft)}.confirm-dialog h2{margin-bottom:9px;font-size:19px}.confirm-dialog p{margin-bottom:22px;color:var(--text-secondary);font-size:14px;line-height:1.6}.dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.dialog-actions.is-single{grid-template-columns:1fr}.install-guide-dialog{text-align:center}.dialog-actions button{min-height:48px;border-radius:13px;cursor:pointer;font-weight:750}.dialog-cancel{border:1px solid var(--border);color:var(--text-secondary);background:#fff}.dialog-confirm{border:1px solid var(--primary);color:#fff;background:var(--primary)}.dialog-confirm.is-danger{border-color:var(--wrong);background:var(--wrong)}.update-notice{position:fixed;z-index:40;top:calc(10px + env(safe-area-inset-top));left:50%;min-height:42px;padding:8px 14px;transform:translate(-50%);border:0;border-radius:999px;color:#fff;background:var(--primary);box-shadow:var(--shadow);cursor:pointer;font-size:12px;font-weight:700}@media(max-width:370px){.screen,.quiz-screen{padding-right:14px;padding-left:14px}.selection-grid,.count-grid{gap:5px}.select-button{font-size:11px}.tips-screen{--screen-gutter: 14px}.progress-dots{grid-template-columns:repeat(10,14px);gap:3px}.quiz-status{grid-template-columns:38px minmax(0,1fr) auto;gap:7px}.quiz-back-button{width:34px;height:34px}.progress-dot{width:14px;height:14px;font-size:13px}}@media(min-width:700px){body{padding:20px 0}.app-shell,.app-content,.quiz-screen{min-height:calc(100dvh - 40px)}.screen{min-height:calc(100dvh - 114px - env(safe-area-inset-bottom))}.app-shell{overflow:hidden;border-radius:28px}.bottom-tabs{bottom:20px;border-radius:0 0 28px 28px}}:root.high-contrast{--background: #fff;--surface: #fff;--text: #080b09;--text-secondary: #343a36;--primary: #064a31;--primary-strong: #003c27;--primary-soft: #dcefe5;--border: #8d9991;--muted: #3c4841}.quiz-screen{--background: #fbfaf3;--surface: #fffef8;--text: #111;--text-secondary: #333;--primary: #111;--primary-strong: #000;--primary-soft: #efede2;--correct: #155b3f;--correct-soft: #eef6ef;--wrong: #a33232;--wrong-soft: #f8eeee;--border: #222;--muted: #555;--shadow: none;--shadow-soft: none;background:linear-gradient(transparent 31px,#11111109 32px),#fbfaf3;background-size:100% 32px}.quiz-screen .quiz-status{padding-bottom:8px;border-bottom:2px solid #111}.quiz-screen :is(.quiz-back-button,.question-card,.table-card,.choice-button,.feedback,.fast-answer-result){border-color:#111;border-radius:6px;background:#fffef8;box-shadow:none}.quiz-screen .choice-button.choice-correct{border-color:var(--correct);color:#fff;background:var(--correct)}.quiz-screen .choice-button.choice-wrong{border-color:var(--wrong);color:#fff;background:var(--wrong)}.quiz-screen .question-card{min-height:132px;align-items:flex-start}.quiz-screen .question-text,.quiz-screen .table-question-text{color:#111;font-weight:850}.quiz-screen table{border-color:#111}.quiz-screen th,.quiz-screen td{border-color:#111;background:#fffef8}.quiz-screen th{background:#efede2;color:#111}.app-status-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.status-chip{padding:6px 9px;border:1px solid var(--border);border-radius:999px;color:var(--text-secondary);background:var(--surface);font-size:11px;font-weight:750}.status-chip.is-online:before,.status-chip.is-offline:before{display:inline-block;width:7px;height:7px;margin-right:5px;border-radius:50%;background:var(--correct);content:""}.status-chip.is-offline:before{background:#d28b24}.resume-card{display:flex;width:100%;min-height:64px;margin-top:14px;padding:14px 16px;align-items:center;justify-content:space-between;gap:12px;border:1px solid rgba(20,92,67,.22);border-radius:16px;color:var(--text);background:linear-gradient(135deg,var(--surface),var(--primary-soft));box-shadow:var(--shadow-soft);cursor:pointer;text-align:left}.resume-card span{color:var(--primary);font-size:13px;font-weight:800}.resume-card strong{font-size:13px;text-align:right}.progress-count{color:var(--text-secondary);font-size:12px;font-weight:800;white-space:nowrap}.quiz-progress{display:grid;align-items:center;gap:5px}.quiz-status time.is-hidden{visibility:hidden}.choice-button{touch-action:pan-x pan-y pinch-zoom;transition:transform 90ms ease,border-color .12s ease,background .12s ease}.choice-button:not(:disabled):active{transform:scale(.985)}.solution-lines p.is-key,.result-solution p.is-key{margin-top:7px;padding:8px 10px;border-left:3px solid var(--primary);border-radius:7px;color:var(--primary-strong);background:var(--primary-soft);font-weight:800}.result-score{color:var(--primary);font-size:34px!important;font-weight:900;letter-spacing:-.04em}.result-detail-section{margin-top:18px}.result-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.result-section-heading h2{margin:0}.result-section-heading span{color:var(--text-secondary);font-size:12px;font-weight:700}.result-question-list{display:grid;gap:8px;margin-top:10px}.result-question{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--surface)}.result-question.is-wrong{border-color:#b45a5a59}.result-question summary{display:flex;min-height:48px;padding:12px 14px;align-items:center;justify-content:space-between;cursor:pointer;font-size:13px;font-weight:800;list-style:none}.result-question summary::-webkit-details-marker{display:none}.result-question.is-correct summary span{color:var(--correct)}.result-question.is-wrong summary span{color:var(--wrong)}.result-question summary strong{color:var(--text-secondary);font-size:12px}.result-question-text,.result-answer-row,.result-solution{margin-right:14px;margin-left:14px}.result-question-text{margin-bottom:10px;font-size:13px;font-weight:750;line-height:1.55}.result-answer-row{display:grid;gap:4px;padding:9px 10px;border-radius:9px;background:var(--background);font-size:12px}.result-solution{margin-top:10px}.result-solution p{margin-bottom:5px;font-size:12px;line-height:1.5}.result-actions{margin-top:16px}.result-actions .primary-button:first-child{grid-column:1 / -1}.weekly-chart{display:grid;height:196px;padding:15px 10px 11px;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow-soft)}.weekly-column{display:grid;min-width:0;grid-template-rows:20px 1fr 18px 18px;align-items:end;justify-items:center;gap:2px}.weekly-rate,.weekly-column small{color:var(--text-secondary);font-size:10px;font-weight:700}.weekly-bar-track{display:flex;width:min(24px,70%);height:100%;align-items:end;overflow:hidden;border-radius:7px 7px 3px 3px;background:var(--primary-soft)}.weekly-bar-track span{display:block;width:100%;min-height:0;border-radius:inherit;background:var(--primary)}.weekly-column strong{font-size:11px}.stats-empty-card{margin-bottom:14px;padding:18px}.stats-empty-card strong{display:block;margin-bottom:5px}.stats-empty-card p{margin:0;color:var(--text-secondary);font-size:13px;line-height:1.55}.daily-goal-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin-bottom:10px;padding:10px 11px 10px 13px;border:1px solid rgba(20,92,67,.18);border-radius:16px;background:linear-gradient(135deg,#fff,#f3f7f4);box-shadow:var(--shadow-soft)}.daily-goal-card.is-achieved{border-color:#155b3f47;background:linear-gradient(135deg,#eef8f2,#fff)}.daily-goal-card div{display:grid;min-width:0;gap:1px}.daily-goal-card span{color:var(--text-secondary);font-size:11px;font-weight:800}.daily-goal-card strong{color:var(--primary);font-size:18px;font-weight:900;line-height:1.15}.daily-goal-card small{color:var(--text-secondary);font-size:10px;font-weight:700}.achievement-log-button{display:grid;min-width:62px;min-height:52px;padding:5px 7px;place-items:center;gap:3px;border:1px solid rgba(20,92,67,.2);border-radius:13px;color:var(--primary);background:#fff;box-shadow:var(--shadow-soft);cursor:pointer;font-size:10px;font-weight:850;white-space:nowrap}.calendar-mini-icon{position:relative;display:block;width:20px;height:20px;border:2px solid currentColor;border-radius:5px}.calendar-mini-icon:before{position:absolute;top:3px;right:0;left:0;height:2px;background:currentColor;content:""}.calendar-mini-icon:after{position:absolute;top:-4px;left:4px;width:8px;height:4px;border-right:2px solid currentColor;border-left:2px solid currentColor;content:""}.stats-grid.stats-grid-compact{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:12px}.stat-card.stat-card-compact{min-height:48px;gap:1px;padding:7px 3px;align-items:center;border-radius:12px;text-align:center}.stat-card.stat-card-compact span{font-size:9.5px;letter-spacing:-.015em;white-space:nowrap;word-spacing:.12em}.stat-card.stat-card-compact strong{max-width:100%;overflow:hidden;font-size:12px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.achievement-backdrop{align-items:center;overflow:hidden}.achievement-dialog{width:min(100%,360px);max-height:min(86dvh,680px);padding:17px 15px 15px;overflow-y:auto;border:1px solid rgba(255,255,255,.72);border-radius:22px;background:#fff;box-shadow:0 24px 70px #101f173d;-webkit-overflow-scrolling:touch}.achievement-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:13px}.achievement-dialog-header span{color:var(--text-secondary);font-size:11px;font-weight:800}.achievement-dialog-header h2{margin:2px 0 0;color:var(--primary);font-size:20px}.achievement-dialog-header button{display:grid;width:34px;height:34px;place-items:center;border:0;border-radius:10px;color:var(--text-secondary);background:var(--background);cursor:pointer;font-size:22px;font-weight:700}.calendar-week-labels,.achievement-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-week-labels{margin-bottom:6px;color:var(--text-secondary);font-size:10px;font-weight:850;text-align:center}.achievement-day{min-width:0;min-height:36px;border:1px solid var(--border);border-radius:11px;color:var(--text);background:#fff;cursor:pointer;font-size:12px;font-weight:850}.achievement-day.is-muted{color:#b8c0ba;background:#f7f8f6}.achievement-day.is-achieved{border-color:#155b3f47;color:#fff;background:var(--correct)}.achievement-day.is-selected{outline:3px solid rgba(37,99,235,.24);outline-offset:1px}.achievement-detail{margin-top:13px;padding:12px;border:1px solid var(--border);border-radius:16px;background:var(--background)}.achievement-detail.is-achieved{border-color:#155b3f3d;background:var(--correct-soft)}.achievement-detail-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.achievement-detail-title strong{font-size:15px}.achievement-detail-title span{padding:5px 8px;border-radius:999px;color:var(--primary);background:#fff;font-size:11px;font-weight:850}.achievement-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.achievement-detail-grid div{display:grid;gap:2px;padding:8px;border-radius:11px;background:#ffffffb8}.achievement-detail-grid span{color:var(--text-secondary);font-size:10px;font-weight:800}.achievement-detail-grid strong{min-width:0;overflow-wrap:anywhere;color:var(--text);font-size:12px;line-height:1.35}.achievement-weak-list{display:grid;gap:2px}.achievement-weak-list span{display:block}.settings-card,.app-guide-card{margin-top:20px;padding:18px;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow-soft)}.home-fast-mode{min-width:0;margin:0;padding:0 8px;border:1px solid rgba(20,92,67,.18);border-radius:15px;background:var(--surface);box-shadow:var(--shadow-soft)}.home-fast-mode .setting-toggle.is-compact{min-height:46px;padding:4px 0;gap:5px;align-items:center}.home-fast-mode .setting-toggle>span{min-width:0}.home-fast-mode .setting-toggle>span strong{display:block;max-width:none;overflow:hidden;font-size:10px;line-height:1.2;letter-spacing:-.075em;text-overflow:clip;white-space:nowrap;word-break:keep-all}.home-fast-mode .setting-toggle i{flex:0 0 auto;width:32px;height:19px}.home-fast-mode .setting-toggle i b{top:2px;left:2px;width:15px;height:15px}.home-fast-mode .setting-toggle i.is-on b{transform:translate(13px)}.settings-screen{padding-top:max(22px,env(safe-area-inset-top))}.settings-screen-header{margin-bottom:14px}.settings-page-card{margin-top:0;padding-top:8px;padding-bottom:8px}.settings-card h2,.app-guide-card h2{margin-bottom:5px}.settings-heading p,.app-guide-card p{margin-bottom:0;color:var(--text-secondary);font-size:12px;line-height:1.55}.inline-message{margin:10px 0 0;color:var(--primary);font-size:12px;font-weight:750}.inline-message.is-error{color:var(--wrong)}.settings-card{display:grid;gap:0}.settings-heading{margin-bottom:8px}.setting-toggle{display:flex;width:100%;min-height:50px;padding:8px 0;align-items:center;justify-content:space-between;border:0;border-top:1px solid var(--border);color:var(--text);background:transparent;cursor:pointer;font-weight:750}.setting-toggle:first-child{border-top:0}.setting-toggle>span{display:grid;gap:2px;text-align:left}.setting-toggle>span strong{font-size:13px}.setting-toggle>span small{color:var(--text-secondary);font-size:10px;font-weight:650}.setting-toggle.is-compact{min-height:58px;border-top:0}.setting-toggle i{position:relative;width:42px;height:24px;border-radius:999px;background:#b9c2bc;transition:background .16s ease}.setting-toggle i b{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 2px 5px #0003;transition:transform .16s ease}.setting-toggle i.is-on{background:var(--primary)}.setting-toggle i.is-on b{transform:translate(18px)}.app-guide-card p+p{margin-top:7px}.reinstall-card{display:grid;margin-top:16px;padding:16px;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow-soft)}.reinstall-card h2{margin-bottom:4px}.reinstall-card p,.reinstall-guide{margin:0;color:var(--text-secondary);font-size:11px;line-height:1.5}.reinstall-button{min-height:42px;padding:8px 12px;border:1px solid var(--primary);border-radius:11px;color:#fff;background:var(--primary);cursor:pointer;font-size:12px;font-weight:800;white-space:nowrap}.reinstall-guide{margin-top:10px;padding:0 4px;text-align:center}.tip-file-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.loading-backdrop{position:fixed;z-index:120;inset:0;display:grid;place-items:center;padding:24px;background:#121c1640;backdrop-filter:blur(3px)}.loading-card{display:grid;width:min(100%,330px);padding:22px;gap:10px;border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:var(--shadow)}.loading-card strong{margin-top:5px;color:var(--text-secondary);font-size:13px;text-align:center}.loading-line{display:block;width:72%;height:16px;border-radius:7px;background:linear-gradient(90deg,var(--primary-soft),#f7faf8,var(--primary-soft));background-size:220% 100%;animation:skeleton-loading 1.1s linear infinite}.loading-line.is-wide{width:100%;height:56px}@keyframes skeleton-loading{to{background-position:-220% 0}}.app-message{position:fixed;z-index:130;top:max(14px,env(safe-area-inset-top));left:50%;display:flex;width:min(calc(100% - 28px),500px);min-height:46px;padding:10px 10px 10px 14px;align-items:center;justify-content:space-between;gap:10px;transform:translate(-50%);border:1px solid var(--border);border-radius:14px;color:var(--text);background:var(--surface);box-shadow:var(--shadow);font-size:13px;font-weight:750}.app-message button{width:32px;height:32px;border:0;border-radius:9px;color:var(--text-secondary);background:var(--background);cursor:pointer;font-size:20px}.update-notice{position:fixed;z-index:125;top:max(14px,env(safe-area-inset-top));left:50%;display:flex;width:min(calc(100% - 28px),500px);min-height:48px;padding:9px 10px 9px 14px;align-items:center;justify-content:space-between;gap:10px;transform:translate(-50%);border:1px solid rgba(20,92,67,.22);border-radius:14px;color:var(--text);background:var(--surface);box-shadow:var(--shadow);text-align:left}.update-notice span{font-size:11px;line-height:1.35}.update-notice span strong{display:block;color:var(--primary);font-size:12px}.update-notice button{min-width:54px;min-height:32px;border:0;border-radius:9px;color:#fff;background:var(--primary);cursor:pointer;font-size:12px;font-weight:800}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}html,body,#root{height:auto!important;max-width:none!important;min-height:100%!important;overflow-x:auto!important;overflow-y:auto!important;overscroll-behavior:auto!important;touch-action:pan-x pan-y pinch-zoom!important}body{min-height:100dvh!important}.app-shell{height:auto!important;max-height:none!important;min-height:100dvh!important;overflow:visible!important;overscroll-behavior:auto!important;touch-action:pan-x pan-y pinch-zoom!important}.app-content{height:auto!important;max-height:none!important;min-height:calc(100dvh - 74px - env(safe-area-inset-bottom))!important;overflow:visible!important;overscroll-behavior:auto!important;touch-action:pan-x pan-y pinch-zoom!important}.screen,.quiz-screen,.result-screen{height:auto!important;max-height:none!important;overflow:visible!important;overscroll-behavior:auto!important;touch-action:pan-x pan-y pinch-zoom!important}.screen{min-height:calc(100dvh - 74px - env(safe-area-inset-bottom))!important}.quiz-screen,.result-screen{min-height:100dvh!important}.tip-carousel,.tip-slide,.tip-slide img,.choice-button,.select-button,.tab-button,.primary-button,.secondary-button,.tips-home-button,.usage-guide-button{touch-action:pan-x pan-y pinch-zoom!important}
