:root{--font:"Pretendard", "Apple SD Gothic Neo", -apple-system, BlinkMacSystemFont, sans-serif;--mono:"SF Mono", ui-monospace, Menlo, monospace;--bg:#eef0f3;--bg-spot:#e4e8ee;--surface:#fff;--ink:#0b0d12;--muted:#667085;--faint:#98a2b3;--line:#e4e7ec;--line-strong:#d0d5dd;--accent:#0f9f9c;--accent-2:#3b82f6;--accent-3:#8b5cf6;--accent-soft:#0f9f9c24;--ok:#10b981;--ok-soft:#10b9811f;--bad:#f04343;--bad-soft:#f043431f;--cta:linear-gradient(135deg, #0f9f9c 0%, #2563eb 100%);--cta-solid:#0d9488;--cta-text:#fff;--subj-국어:#2563eb;--subj-수학:#0f9f9c;--subj-사회:#d97706;--subj-역사:#c2410c;--subj-과학:#059669;--subj-영어:#db2777;--radius:14px;--touch:52px;--pad-x:max(1.1rem, env(safe-area-inset-left));--pad-xr:max(1.1rem, env(safe-area-inset-right));--pad-b:max(1.1rem, env(safe-area-inset-bottom))}:root[data-theme=dark]{--bg:#0a0b0e;--bg-spot:#12141a;--surface:#15171d;--ink:#f5f6f8;--muted:#9aa3b2;--faint:#6b7382;--line:#2a2e38;--line-strong:#3a4050;--accent:#2dd4bf;--accent-2:#60a5fa;--accent-3:#c084fc;--accent-soft:#2dd4bf29;--ok:#34d399;--ok-soft:#34d39924;--bad:#ff6b6b;--bad-soft:#ff6b6b24;--cta:linear-gradient(135deg, #2dd4bf 0%, #3b82f6 100%);--cta-solid:#2dd4bf;--cta-text:#0a0b0e;--subj-국어:#60a5fa;--subj-수학:#2dd4bf;--subj-사회:#fbbf24;--subj-역사:#fb923c;--subj-과학:#34d399;--subj-영어:#f472b6}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;overscroll-behavior:none;height:100%}html,body,#root{height:100%;min-height:100%;margin:0}body{color:var(--ink);font-family:var(--font);background:radial-gradient(ellipse 95% 60% at -10% -5%, #0f9f9c38, transparent 52%), radial-gradient(ellipse 80% 50% at 110% 0%, #3b82f629, transparent 48%), radial-gradient(ellipse 70% 40% at 70% 100%, #db277714, transparent 50%), linear-gradient(180deg, var(--bg) 0%, var(--bg-spot) 100%);-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:pan-x pan-y;background-attachment:fixed;overflow:hidden}:root[data-theme=dark] body{background:radial-gradient(ellipse 95% 60% at -10% -5%, #2dd4bf2e, transparent 52%), radial-gradient(ellipse 80% 50% at 110% 0%, #60a5fa24, transparent 48%), radial-gradient(ellipse 70% 40% at 70% 100%, #f472b614, transparent 50%), linear-gradient(180deg, var(--bg) 0%, var(--bg-spot) 100%);background-attachment:fixed}#root{overscroll-behavior:none;-webkit-overflow-scrolling:touch;height:100dvh;overflow:hidden auto}button,input{font:inherit;-webkit-tap-highlight-color:transparent}.wrap{width:min(100%,430px);min-height:100dvh;padding:max(.85rem, env(safe-area-inset-top)) var(--pad-xr) calc(var(--pad-b) + 5.75rem) var(--pad-x);flex-direction:column;gap:1.15rem;margin:0 auto;display:flex}.wrap.isHistory{padding-bottom:calc(var(--pad-b) + 1.25rem);gap:.75rem}.wrap.isParent{height:100dvh;max-height:100dvh;padding-bottom:max(.75rem, env(safe-area-inset-bottom));overflow:hidden}.parentSticky{z-index:5;background:var(--bg);flex-direction:column;flex:none;gap:.75rem;padding-bottom:.15rem;display:flex}.parentScroll{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex-direction:column;flex:auto;gap:.75rem;min-height:0;padding-bottom:.25rem;display:flex;overflow:hidden auto}.topBar{justify-content:space-between;align-items:flex-start;gap:.75rem;animation:.4s cubic-bezier(.22,1,.36,1) both in;display:flex}.brandMark{flex-direction:column;gap:.35rem;min-width:0;display:flex}button.brandMark.brandButton,a.brandMark.brandButton{appearance:none;text-align:left;cursor:pointer;color:inherit;background:0 0;border:0;padding:0;text-decoration:none}.brandLogo{background:linear-gradient(90deg, var(--accent), var(--accent-2), var(--accent-3));border-radius:999px;width:2.25rem;height:.4rem}.brandText{min-width:0}.title{letter-spacing:-.05em;margin:0;font-size:clamp(1.35rem,5.8vw,1.65rem);font-weight:800;line-height:1.15}.subtitle{color:var(--muted);letter-spacing:-.01em;margin:.25rem 0 0;font-size:.92rem;font-weight:500}.topActions{flex-shrink:0;gap:.4rem;display:flex}.iconBtn{border:1px solid var(--line);background:var(--surface);min-width:2.5rem;height:2.5rem;color:var(--muted);letter-spacing:-.02em;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:0 .85rem;font-size:.88rem;font-weight:700;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.iconBtn.iconOnly{width:2.5rem;padding:0}.iconBtn.active{color:var(--ink);border-color:var(--ink);background:var(--surface)}.themePair{background:color-mix(in srgb, var(--surface) 80%, transparent);border:1px solid var(--line);border-radius:999px;align-items:center;gap:.3rem;padding:.2rem;display:inline-flex}.themePair .iconBtn{background:0 0;border:0;width:2.15rem;min-width:2.15rem;height:2.15rem}.themePair .iconBtn.active{background:var(--accent-soft);color:var(--accent);border:0}.statsRow{grid-template-columns:1fr 1fr 1fr;gap:.55rem;margin-bottom:-.5rem;animation:.45s cubic-bezier(.22,1,.36,1) 40ms both in;display:grid}.statPill{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);flex-direction:column;gap:.15rem;padding:.75rem .7rem;display:flex;position:relative;overflow:hidden}button.statPill{appearance:none;font:inherit;text-align:left;color:inherit;cursor:pointer;width:100%;transition:border-color .15s,transform .12s}button.statPill:active{transform:scale(.98)}button.statPill:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.statPill:after{content:"";opacity:.55;pointer-events:none;border-radius:50%;width:5rem;height:5rem;position:absolute;inset:auto -20% -40% auto}.statPill[data-tone=solved]{border-color:color-mix(in srgb, var(--accent-2) 28%, var(--line));background:linear-gradient(160deg, color-mix(in srgb, var(--accent-2) 10%, var(--surface)), var(--surface))}.statPill[data-tone=solved]:after{background:var(--accent-2)}.statPill[data-tone=correct]{border-color:color-mix(in srgb, var(--accent) 28%, var(--line));background:linear-gradient(160deg, color-mix(in srgb, var(--accent) 10%, var(--surface)), var(--surface))}.statPill[data-tone=correct]:after{background:var(--accent)}.statPill[data-tone=points]{border-color:color-mix(in srgb, var(--accent-3) 28%, var(--line));background:linear-gradient(160deg, color-mix(in srgb, var(--accent-3) 10%, var(--surface)), var(--surface))}.statPill[data-tone=points]:after{background:var(--accent-3)}.statPill[data-tone=solved] strong{color:var(--accent-2)}.statPill[data-tone=correct] strong{color:var(--accent)}.statPill[data-tone=points] strong{color:var(--accent-3)}.statPill strong{letter-spacing:-.04em;font-variant-numeric:tabular-nums;z-index:1;font-size:1.25rem;font-weight:800;position:relative}.statPill:before{content:attr(data-label);color:var(--faint);letter-spacing:.04em;text-transform:uppercase;z-index:1;font-size:.8rem;font-weight:600;position:relative}.statPill[data-tone=correct]:before{letter-spacing:-.01em;text-transform:none;font-size:.68rem}.panel{background:var(--surface);border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);flex-direction:column;flex:1;animation:.5s cubic-bezier(.22,1,.36,1) 80ms both in;display:flex;overflow:hidden}.panelBody{flex-direction:column;flex:1;gap:1.2rem;padding:1.2rem 1.15rem 1.35rem;display:flex}.parentPanel .panelBody{gap:.75rem;padding-top:.85rem}.parentStack{flex-direction:column;gap:.75rem;display:flex}.parentSpendPanel,.parentFamilyPanel{flex:none}.parentFamilyHeader{align-items:baseline;gap:.75rem}.parentFamilyFetched{color:var(--muted);letter-spacing:-.02em;white-space:nowrap;margin:0 0 0 auto;font-size:.78rem}.parentFamilyLoading{padding:1rem 0}.parentFamilyLayout{flex-direction:column;gap:1.15rem;display:flex}.parentFamilyHero{grid-template-columns:1fr 1fr;gap:.55rem;display:grid}.parentFamilyHeroItem{border:1px solid var(--line);border-left:3px solid var(--accent,#2f6b45);background:color-mix(in srgb, var(--surface) 88%, var(--bg));flex-direction:column;gap:.18rem;min-width:0;padding:.65rem .7rem;display:flex}.parentFamilyHeroLabel{letter-spacing:-.02em;color:var(--muted);font-size:.7rem;font-weight:700}.parentFamilyHeroValue{letter-spacing:-.03em;color:var(--ink);overflow-wrap:anywhere;word-break:keep-all;font-family:Nanum Myeongjo,NanumMyeongjo,serif;font-size:1.05rem;font-weight:700;line-height:1.25}.parentFamilyHeroMeta{color:var(--muted);font-size:.68rem}.parentFamilyBlock{flex-direction:column;gap:.55rem;display:flex}.parentFamilyBlockTitle{letter-spacing:-.02em;color:var(--muted);margin:0;font-size:.78rem;font-weight:800}.parentFamilyEmpty{color:var(--muted);margin:0;font-size:.9rem}.parentFamilyPlaceMain{letter-spacing:-.03em;margin:0;font-size:1rem;font-weight:700;line-height:1.35}.parentFamilyPlaceMeta{color:var(--muted);margin:.28rem 0 0;font-size:.82rem;line-height:1.4}.parentFamilyDevices{border-top:1px solid var(--line);flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.parentFamilyDevices li{border-bottom:1px solid var(--line);padding:.65rem 0}.parentFamilyDeviceMain{grid-template-columns:3.4rem minmax(0,1fr) auto;align-items:baseline;gap:.55rem;display:grid}.parentFamilyDeviceKind{color:var(--muted);font-size:.78rem;font-weight:700}.parentFamilyDeviceName{letter-spacing:-.03em;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:700;overflow:hidden}.parentFamilyDeviceUse{font-variant-numeric:tabular-nums;color:var(--accent,#2f6b45);white-space:nowrap;font-size:.9rem;font-weight:700}.parentFamilyDeviceMeta{color:var(--muted);margin:.2rem 0 0 3.95rem;font-size:.78rem}.parentFamilyApps{border-top:1px solid var(--line);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.parentFamilyApps li{border-bottom:1px solid var(--line);grid-template-columns:1.4rem minmax(0,1fr) auto;align-items:baseline;gap:.55rem;padding:.5rem 0;display:grid}.parentFamilyAppRank{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.78rem;font-weight:700}.parentFamilyAppName{letter-spacing:-.03em;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;font-weight:600;overflow:hidden}.parentFamilyAppDur{font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap;font-size:.86rem;font-weight:600}@media (width<=420px){.parentFamilyFetched{font-size:.72rem}.parentFamilyHero{grid-template-columns:1fr 1fr;gap:.45rem}.parentFamilyHeroItem{padding:.55rem}.parentFamilyHeroValue{font-size:.95rem}.parentFamilyDeviceMain{grid-template-columns:3rem minmax(0,1fr) auto;gap:.4rem}.parentFamilyDeviceMeta{margin-left:3.4rem}.parentFamilyApps li{gap:.4rem}}.subjectTrack{border-bottom:1px solid var(--line);align-items:center;gap:.5rem;margin:-.15rem -1.15rem 0;padding:0 1.15rem;display:flex}.subjectChips{scrollbar-width:none;flex:1;gap:0;min-width:0;display:flex;overflow-x:auto}.subjectChips::-webkit-scrollbar{display:none}.subjectTypeBadge{flex-shrink:0;align-self:center}.subjectTrackBadges{flex-shrink:0;align-items:center;gap:.35rem;margin-left:auto;display:flex}.subjectChip{color:var(--faint);background:0 0;border:0;border-radius:0;flex:none;padding:.7rem .75rem .8rem;font-size:.92rem;font-weight:600;transition:color .15s;position:relative}.subjectChip.active{background:0 0;border:0;font-weight:800}.subjectChip[data-subject=국어].active{color:var(--subj-국어)}.subjectChip[data-subject=수학].active{color:var(--subj-수학)}.subjectChip[data-subject=사회].active{color:var(--subj-사회)}.subjectChip[data-subject=역사].active{color:var(--subj-역사)}.subjectChip[data-subject=과학].active{color:var(--subj-과학)}.subjectChip[data-subject=영어].active{color:var(--subj-영어)}.subjectChip.active:after{content:"";background:currentColor;border-radius:2px 2px 0 0;height:2.5px;position:absolute;bottom:-1px;left:.55rem;right:.55rem}.hero{flex-direction:column;flex:1;justify-content:flex-end;gap:.9rem;min-height:42vh;padding:1rem 0 .5rem;display:flex}.heroBrand{letter-spacing:-.06em;background:linear-gradient(120deg, var(--ink) 20%, var(--accent) 55%, var(--accent-2) 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(2.1rem,9vw,2.7rem);font-weight:800;line-height:1.12}.heroLead{max-width:16.5rem;color:var(--muted);margin:0;font-size:1.08rem;font-weight:500;line-height:1.55}.heroRules{flex-direction:column;gap:.35rem;max-width:16.5rem;margin:.15rem 0 0;padding:0;list-style:none;display:flex}.heroRules li{justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.92rem;font-weight:600;line-height:1.35;display:flex}.heroRuleLabel{color:var(--muted)}.heroRuleValue{font-variant-numeric:tabular-nums;color:var(--accent);letter-spacing:-.02em;font-weight:800}.heroRuleValue.bad{color:var(--bad)}.heroStatus{background:var(--bg);color:var(--muted);border-radius:999px;align-self:flex-start;align-items:center;gap:.5rem;margin:.4rem 0 0;padding:.45rem .75rem;font-size:.92rem;font-weight:600;display:inline-flex}.heroStatus:before{content:"";background:var(--faint);border-radius:50%;width:6px;height:6px;animation:1.2s infinite blink}.heroStatus.ready{color:var(--accent);background:var(--accent-soft)}.heroStatus.ready:before{background:var(--accent);animation:none}.loadingBlock{min-height:36vh;color:var(--muted);flex:1;place-content:center;justify-items:center;gap:.85rem;font-size:1.05rem;font-weight:500;display:grid}.spinner{border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:1.5rem;height:1.5rem;animation:.65s linear infinite spin}.error{border-radius:var(--radius);background:var(--bad-soft);color:var(--bad);margin:0;padding:.85rem 1rem;font-size:1rem;font-weight:600;line-height:1.45}.quiz{flex-direction:column;gap:1.15rem;animation:.35s cubic-bezier(.22,1,.36,1) both in;display:flex}.meta{flex-wrap:wrap;gap:.4rem;display:flex}.badge{letter-spacing:.02em;background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.4rem .7rem;font-size:.82rem;font-weight:700}.badge.faint{background:var(--bg);color:var(--muted)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.question{letter-spacing:-.04em;margin:0;font-size:clamp(1.15rem,4.5vw,1.35rem);font-weight:800;line-height:1.45}.choices{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.choice{width:100%;min-height:var(--touch);text-align:left;letter-spacing:-.02em;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;align-items:flex-start;gap:.55rem;padding:.95rem 1.05rem;font-size:.98rem;font-weight:600;line-height:1.4;transition:border-color .15s,background .15s,box-shadow .15s;display:flex}.choiceNum{min-width:1.35rem;color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0;font-weight:700}.choice.selected .choiceNum{color:var(--accent)}.choiceText{flex:1;min-width:0}.choice.selected{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent)}.textInput{width:100%;min-height:var(--touch);letter-spacing:-.02em;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);color:var(--ink);outline:none;padding:.95rem 1.05rem;font-size:1rem;font-weight:600}.textInput:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px var(--accent-soft)}.result{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);flex-direction:column;gap:.65rem;padding:1.1rem 1.15rem;animation:.3s both in;display:flex}.result.ok{background:var(--ok-soft);border-color:#0000}.result.bad{background:var(--bad-soft);border-color:#0000}.resultTitle{letter-spacing:-.03em;margin:0;font-size:1.28rem;font-weight:800}.result.ok .resultTitle{color:var(--ok)}.result.bad .resultTitle{color:var(--bad)}.resultPoints{font-variant-numeric:tabular-nums;color:var(--muted);margin:0;font-size:.95rem;font-weight:700}.result.ok .resultPoints{color:var(--ok)}.result.bad .resultPoints{color:var(--bad)}.resultAnswer{color:var(--muted);margin:0;font-size:1.02rem;font-weight:500;line-height:1.55}.hintFooter{flex-shrink:0;justify-content:center;margin-top:auto;padding-top:.75rem;display:flex}.hintDockBtn{appearance:none;min-height:auto;color:var(--faint);letter-spacing:-.01em;text-underline-offset:.15em;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--faint) 55%, transparent);text-decoration-color:color-mix(in srgb, var(--faint) 55%, transparent);cursor:pointer;background:0 0;border:none;padding:.2rem .45rem;font-size:.78rem;font-weight:500}.hintDockBtn:disabled{opacity:.45;cursor:default;text-decoration:none}.hintDockBtn:not(:disabled):active{color:var(--muted)}.hintDockText{border-radius:var(--radius-sm,.65rem);background:color-mix(in srgb, var(--bg) 70%, transparent);width:100%;max-width:100%;color:var(--faint);text-align:left;margin:0;padding:.45rem .65rem;font-size:.8rem;font-weight:500;line-height:1.45}.explanation{color:var(--ink);margin:0;font-size:1.05rem;font-weight:500;line-height:1.65}.dock{width:min(100%,430px);padding:.85rem var(--pad-x) var(--pad-b);background:linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--bg) 88%, transparent) 35%, var(--bg) 70%);z-index:30;pointer-events:none;margin:0 auto;animation:.35s both fade;position:fixed;bottom:0;left:0;right:0}.dock .btn{pointer-events:auto}.btn{min-height:var(--touch);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);letter-spacing:-.03em;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:.8rem 1.2rem;font-size:1.08rem;font-weight:700;transition:transform .12s,opacity .15s,filter .15s;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn.primary{background:var(--cta);width:100%;color:var(--cta-text);border-color:#0000;box-shadow:0 10px 28px #2563eb47}.btn.ghost{border-color:var(--line);width:100%;min-height:2.6rem;color:var(--muted);background:0 0;margin-top:.35rem;font-size:.88rem}.historyHeader{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.historyTitle{letter-spacing:-.05em;margin:0;font-size:1.4rem;font-weight:800}.historyCount{color:var(--faint);font-variant-numeric:tabular-nums;font-size:.82rem;font-weight:600}.historyFilter{flex-shrink:0;gap:.35rem;display:flex}.historyFilterBtn{border-radius:var(--radius-sm,.65rem);border:1px solid var(--line);background:var(--bg);min-height:2.15rem;color:var(--muted);cursor:pointer;flex:1;padding:.35rem .65rem;font-size:.82rem;font-weight:700}.historyFilterBtn.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 30%, transparent)}.historyList{flex-direction:column;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.historyItem{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);padding:1rem 1.05rem}.historyItem.ok{box-shadow:inset 3px 0 0 var(--ok)}.historyItem.bad{box-shadow:inset 3px 0 0 var(--bad)}.historyMeta{flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.55rem;display:flex}.historyWhen{color:var(--faint);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.72rem;font-weight:600}.historyQuestion{letter-spacing:-.03em;margin:0 0 .45rem;font-size:1.02rem;font-weight:700;line-height:1.4}.historyAnswers{color:var(--muted);margin:0 0 .4rem;font-size:.86rem;font-weight:500;line-height:1.5}.historyUserAnswer{text-decoration:line-through;text-decoration-thickness:1.5px;-webkit-text-decoration-color:color-mix(in srgb, var(--danger,#b54a3c) 70%, transparent);text-decoration-color:color-mix(in srgb, var(--danger,#b54a3c) 70%, transparent);opacity:.85}.historyExplain{margin:0;font-size:.86rem;font-weight:500;line-height:1.55}.emptyHistory{text-align:center;color:var(--muted);margin:2.5rem 0;font-weight:500;line-height:1.55}.installBanner{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--accent) 30%, var(--line));background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 12%, var(--surface)), color-mix(in srgb, var(--accent-2) 8%, var(--surface)));align-items:center;gap:.65rem;padding:.85rem .95rem;animation:.4s both in;display:flex}.installBannerBody{flex:1;min-width:0}.installBannerTitle{letter-spacing:-.03em;margin:0;font-size:.92rem;font-weight:800}.installBannerHint{color:var(--muted);margin:.2rem 0 0;font-size:.78rem;font-weight:500;line-height:1.4}.installBannerActions{flex-shrink:0;align-items:center;gap:.3rem;display:flex}.btn.installBtn{background:var(--cta);min-height:2.35rem;color:var(--cta-text);border-color:#0000;border-radius:999px;padding:.45rem .9rem;font-size:.85rem}.parentEyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:0 0 .2rem;font-size:.72rem;font-weight:700}.parentSummary{grid-template-columns:1.2fr 1fr;gap:.55rem;display:grid}.parentSummaryCard{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--accent) 25%, var(--line));background:linear-gradient(155deg, color-mix(in srgb, var(--accent) 12%, var(--surface)), var(--surface));flex-direction:column;gap:.45rem;padding:1rem;display:flex}.parentSummaryCard.faint{border-color:var(--line);background:var(--bg)}.parentSummaryLabel{color:var(--faint);letter-spacing:.03em;font-size:.72rem;font-weight:700}.parentSummaryValue{letter-spacing:-.05em;color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.85rem;font-weight:800}.parentSummaryValue.sm{color:var(--ink);font-size:1.35rem}.parentSummaryValue .slash{color:var(--faint);margin:0 .15rem;font-weight:600}.accBar{background:color-mix(in srgb, var(--line) 80%, transparent);border-radius:999px;height:6px;overflow:hidden}.accBarFill{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-2));height:100%;transition:width .35s}.historyCal{flex-direction:column;gap:.55rem;display:flex}.historyCalHeader{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.historyCalHeaderStatic{justify-content:flex-start;gap:.65rem}.historyCalTitle{letter-spacing:-.03em;margin:0;font-size:1.05rem;font-weight:800}.historyCalRange{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.78rem;font-weight:600}.historyCalNav{border-radius:var(--radius-sm,.65rem);border:1px solid var(--line);background:var(--bg);width:2.2rem;height:2.2rem;color:var(--ink);cursor:pointer;font-size:1.25rem;line-height:1}.historyCalWeekdays,.historyCalGrid{grid-template-columns:repeat(7,1fr);gap:.2rem;display:grid}.historyCalWeekday{text-align:center;color:var(--faint);padding:.15rem 0;font-size:.8rem;font-weight:700}.historyCalCell{aspect-ratio:1;border-radius:var(--radius-sm,.55rem);color:var(--ink);background:0 0;border:1px solid #0000;flex-direction:column;justify-content:center;align-items:center;gap:.12rem;min-height:2.5rem;padding:0;font-weight:650;display:flex}.historyCalCell.empty{pointer-events:none}.historyCalDay{font-variant-numeric:tabular-nums;font-size:.98rem;line-height:1}.historyCalCount{font-variant-numeric:tabular-nums;color:var(--accent);letter-spacing:-.02em;font-size:.72rem;font-weight:800;line-height:1}.historyCalCell.hasHistory{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 28%, transparent)}.historyCalCell.hasHistory .historyCalDay{color:var(--accent);font-weight:800}.historyCalCell.hasNegative .historyCalCount{color:var(--bad)}.historyCalCell.hasNegative{background:color-mix(in srgb, var(--bad) 10%, var(--surface));border-color:color-mix(in srgb, var(--bad) 28%, transparent)}.historyCalCell.hasNegative .historyCalDay{color:var(--bad)}.historyCalCell.isToday{box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--accent-3) 55%, transparent)}.historyCalCell.isLastWeek:not(.hasHistory):not(.isToday){opacity:.72}.historyCalLegend{color:var(--muted);margin:.15rem 0 0;font-size:.78rem;font-weight:500;line-height:1.4}.historyCalLegend .historyCalDot{width:.4rem;height:.4rem}.pointsRuleList{border-radius:var(--radius-sm,.65rem);border:1px solid var(--line);background:var(--bg);flex-direction:column;flex-shrink:0;gap:.3rem;margin:0;padding:.55rem .7rem;list-style:none;display:flex}.pointsRuleList li{color:var(--muted);justify-content:space-between;gap:.75rem;font-size:.86rem;font-weight:600;display:flex}.pointsRuleList strong{font-variant-numeric:tabular-nums;color:var(--accent)}.pointsRuleList strong.bad{color:var(--bad)}.historyDialogInner .historyCount{color:var(--accent);font-size:1rem;font-weight:800}.historyDialogInner .historyTitle{font-size:1.35rem}.pointsCalcList{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.pointsCalcItem{border-radius:var(--radius-sm,.65rem);border:1px solid var(--line);background:var(--bg);padding:.65rem .75rem}.pointsCalcMeta{flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:0;display:flex}.pointsCalcDetail{min-width:0;color:var(--muted);flex:1;font-size:.78rem;font-weight:550}.pointsCalcDelta{font-variant-numeric:tabular-nums;color:var(--muted);margin-left:auto;font-size:.95rem}.pointsCalcDelta.ok{color:var(--ok)}.pointsCalcDelta.bad{color:var(--bad)}.pointsCalcTotal{text-align:right;color:var(--muted);flex-shrink:0;margin:0;font-size:.95rem;font-weight:600}.pointsCalcTotal strong{font-variant-numeric:tabular-nums;color:var(--accent);font-size:1.1rem}.pointsCalcTableWrap{flex:none;min-height:auto;overflow:hidden visible}.pointsCalcTable{table-layout:fixed;border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.78rem}.pointsCalcTable th,.pointsCalcTable td{text-align:center;letter-spacing:-.04em;white-space:nowrap;text-overflow:clip;border-bottom:1px solid var(--line);padding:.55rem .12rem;font-weight:500;overflow:hidden}.pointsCalcTable thead th{color:var(--muted);background:color-mix(in srgb, var(--surface) 70%, var(--bg));letter-spacing:-.04em;font-size:.68rem;font-weight:700}.pointsCalcTable tbody th{font-weight:800}.pointsCalcTable tbody td,.pointsCalcTable tfoot td{font-weight:500}.pointsCalcTable thead th:first-child,.pointsCalcTable tbody th:first-child,.pointsCalcTable tfoot th:first-child{text-align:left;width:18%;padding-left:.45rem}.pointsCalcTable tbody tr:last-child th,.pointsCalcTable tbody tr:last-child td{border-bottom:0}.pointsCalcTable td.ok,.pointsCalcTable tfoot td.ok{color:var(--ok);font-weight:500}.pointsCalcTable td.bad,.pointsCalcTable tfoot td.bad{color:var(--bad);font-weight:500}.pointsCalcTable tfoot th,.pointsCalcTable tfoot td{border-top:1px solid var(--line);background:color-mix(in srgb, var(--surface) 70%, var(--bg))}.pointsCalcTable tfoot th{font-weight:800}.pointsCalcTable tfoot td{font-weight:500}.parentSection{flex-direction:column;gap:.7rem;display:flex}.parentSectionHead{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.parentSectionTitle{letter-spacing:-.03em;margin:0;font-size:.95rem;font-weight:800}.subjectStats{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.subjectStat{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);padding:.85rem .95rem}.subjectStat[data-subject=국어]{border-color:color-mix(in srgb, var(--subj-국어) 30%, var(--line))}.subjectStat[data-subject=수학]{border-color:color-mix(in srgb, var(--subj-수학) 30%, var(--line))}.subjectStat[data-subject=사회]{border-color:color-mix(in srgb, var(--subj-사회) 30%, var(--line))}.subjectStat[data-subject=역사]{border-color:color-mix(in srgb, var(--subj-역사) 30%, var(--line))}.subjectStat[data-subject=과학]{border-color:color-mix(in srgb, var(--subj-과학) 30%, var(--line))}.subjectStat[data-subject=영어]{border-color:color-mix(in srgb, var(--subj-영어) 30%, var(--line))}.subjectStatTop{justify-content:space-between;align-items:baseline;margin-bottom:.45rem;display:flex}.subjectStatName{letter-spacing:-.02em;font-weight:800}.subjectStat[data-subject=국어] .subjectStatName,.subjectStat[data-subject=국어] .subjectStatAcc{color:var(--subj-국어)}.subjectStat[data-subject=수학] .subjectStatName,.subjectStat[data-subject=수학] .subjectStatAcc{color:var(--subj-수학)}.subjectStat[data-subject=사회] .subjectStatName,.subjectStat[data-subject=사회] .subjectStatAcc{color:var(--subj-사회)}.subjectStat[data-subject=역사] .subjectStatName,.subjectStat[data-subject=역사] .subjectStatAcc{color:var(--subj-역사)}.subjectStat[data-subject=과학] .subjectStatName,.subjectStat[data-subject=과학] .subjectStatAcc{color:var(--subj-과학)}.subjectStat[data-subject=영어] .subjectStatName,.subjectStat[data-subject=영어] .subjectStatAcc{color:var(--subj-영어)}.subjectStatAcc{font-variant-numeric:tabular-nums;font-weight:800}.subjectStatMeta{color:var(--muted);margin:.4rem 0 0;font-size:.8rem;font-weight:500}.parentChildTabs{gap:.5rem;margin:0;padding:0;display:flex}.parentChildTab{border-radius:var(--radius-sm,.65rem);border:1px solid var(--line);background:var(--surface);min-height:3.4rem;color:var(--ink);cursor:pointer;text-align:left;flex-direction:row;flex:1;justify-content:space-between;align-items:center;gap:.65rem;padding:.55rem .85rem;font-weight:700;display:flex}.parentChildTab.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.parentChildInfo{flex-direction:column;align-items:flex-start;gap:.1rem;min-width:0;display:flex}.parentChildName{font-size:1rem;line-height:1.2}.parentChildPoints{font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:var(--accent-3);flex-shrink:0;font-size:1.55rem;font-weight:800;line-height:1}.parentChildTab.active .parentChildPoints{color:var(--accent)}.parentChildStats{flex-direction:column;flex-shrink:0;justify-content:center;align-items:flex-end;gap:.2rem;display:flex}.parentChildBank{font-variant-numeric:tabular-nums;color:var(--muted);letter-spacing:-.01em;font-size:.72rem;font-weight:650}.parentChildTab.active .parentChildBank{color:color-mix(in srgb, var(--accent) 70%, var(--muted))}.parentChildGrade{color:var(--muted);font-size:.75rem;font-weight:600}.parentTableWrap{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);margin:0;overflow:hidden}.parentTable{table-layout:fixed;border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.78rem}.parentTable th,.parentTable td{text-align:center;border-bottom:1px solid var(--line);text-overflow:clip;white-space:nowrap;padding:.55rem .1rem;overflow:hidden}.parentTable thead th{color:var(--muted);background:color-mix(in srgb, var(--surface) 70%, var(--bg));letter-spacing:-.04em;font-size:.7rem;font-weight:700}.parentTable tbody th{text-align:center;font-weight:700}.parentTable thead th:first-child,.parentTable tbody th:first-child{width:16%}.parentTable thead th:nth-child(2),.parentTable tbody td:nth-child(2){width:11%}.parentTable tbody tr:last-child th,.parentTable tbody tr:last-child td{border-bottom:0}.parentTable tbody tr:hover td,.parentTable tbody tr:hover th{background:var(--accent-soft)}.parentTable td[data-empty="1"]{color:var(--faint)}.parentTablePct{color:var(--faint);margin-left:.05rem;font-size:.66rem;font-weight:600}.parentTableDay{appearance:none;color:var(--accent);font:inherit;cursor:pointer;text-underline-offset:.12em;background:0 0;border:0;padding:0;font-weight:800;text-decoration:underline}.parentTableDay:hover{color:var(--ink)}.parentTableWrap.parentSpendWrap{overflow:hidden}.parentSpendTable.parentTable{table-layout:fixed;width:100%;font-size:.86rem}.parentSpendTable.parentTable th,.parentSpendTable.parentTable td{text-overflow:clip;padding:.55rem .35rem;overflow:hidden}.parentSpendTable.parentTable thead th{font-size:.76rem}.parentSpendTable.parentTable thead th:first-child,.parentSpendTable.parentTable tbody th:first-child{white-space:nowrap;width:4.85rem;padding-left:.45rem}.parentSpendTable.parentTable thead th:nth-child(2),.parentSpendTable.parentTable tbody td:nth-child(2){white-space:nowrap;width:2.85rem}.parentSpendTable.parentTable thead th:nth-child(3),.parentSpendTable.parentTable tbody td:nth-child(3){width:auto;padding-right:.45rem}.parentSpendTable td.parentSpendDesc{text-align:left;white-space:normal;overflow-wrap:anywhere;word-break:keep-all;font-weight:500}.parentSpendTable td.bad{color:var(--bad);font-weight:700}.parentSpendTable td.ok{color:var(--ok);font-weight:700}.parentGrantBar{border-bottom:1px solid var(--line);flex-direction:column;gap:.45rem;padding:.15rem 0 .35rem;display:flex}.parentGrantRow{align-items:baseline;gap:.85rem;min-width:0;display:flex}.parentGrantLabel{letter-spacing:.04em;color:var(--faint);flex-shrink:0;font-size:.8rem;font-weight:700}.parentGrantAmounts{flex-wrap:wrap;align-items:baseline;gap:.15rem .85rem;min-width:0;display:flex}.parentGrantAmount{appearance:none;font:inherit;letter-spacing:-.03em;color:var(--accent);cursor:pointer;text-underline-offset:.18em;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 35%, transparent);background:0 0;border:0;margin:0;padding:0;font-size:1.02rem;font-weight:700}.parentGrantAmount:hover{color:var(--ink);-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}.parentGrantAmount:disabled{opacity:.45;cursor:not-allowed}.spendDevicePick{gap:.45rem;display:flex}.spendDeviceBtn{appearance:none;border:1px solid var(--line);background:var(--bg);color:var(--muted);font:inherit;cursor:pointer;border-radius:var(--radius);flex:1;padding:.55rem .7rem;font-size:.88rem;font-weight:700}.spendDeviceBtn.active{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));background:color-mix(in srgb, var(--accent) 14%, var(--surface));color:var(--accent)}.spendDeviceBtn:disabled{opacity:.55;cursor:not-allowed}.spendDeviceBtn:not(:disabled):hover{border-color:color-mix(in srgb, var(--accent) 35%, var(--line))}.parentTableHint{color:var(--muted);margin:.75rem 0 0;font-size:.78rem;font-weight:500}.parentTable tbody tr[data-empty-day="1"] td,.parentTable tbody tr[data-empty-day="1"] th .parentTableDay{color:var(--faint)}.parentMoreBtn{width:100%;margin-top:.85rem}.historyDialog{border:1px solid var(--line);border-radius:calc(var(--radius) + 4px);background:var(--surface);width:min(28rem,100% - 1.5rem);height:90dvh;max-height:90dvh;color:var(--ink);box-sizing:border-box;margin:auto;padding:0;position:fixed;inset:0;box-shadow:0 16px 48px #0b0d1238}.pointsDialog{inset:unset;width:min(28rem,100% - 1.5rem);height:auto;max-height:min(90dvh,100% - 2rem);margin:0;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%)}.spendDialog.pointsDialog[open]{flex-direction:column;height:min(36rem,100dvh - 2rem);max-height:min(90dvh,100% - 2rem);display:flex;overflow:hidden}.pointsDialogInner{height:auto;max-height:none;overflow:visible}.spendDialogInner.pointsDialogInner{flex-direction:column;flex:1;gap:.85rem;height:100%;min-height:0;max-height:none;padding-bottom:.85rem;display:flex;overflow:hidden}.spendDialogHead{flex-direction:column;flex-shrink:0;gap:.45rem;display:flex}.spendUseBlock{border-bottom:1px solid var(--line);flex-direction:column;flex-shrink:0;gap:.65rem;padding-bottom:.85rem;display:flex}.pointsDialog .pointsCalcTableWrap{flex:none;min-height:auto;max-height:none;overflow:visible}.spendSubtitle{color:var(--muted);margin:.2rem 0 0;font-size:.85rem;font-weight:600}.spendHint{color:var(--muted);margin:0;font-size:.82rem;font-weight:500;line-height:1.45}.spendDone{color:var(--ok);margin:0;font-size:.9rem;font-weight:700}.spendPresets{grid-template-columns:repeat(3,1fr);gap:.45rem;display:grid}.spendPresetBtn{border-radius:var(--radius);flex-direction:column;gap:.15rem;width:100%;min-height:3.4rem;padding:.55rem .4rem;font-size:.95rem}.spendPresetTime{letter-spacing:-.03em;font-weight:800}.spendPresetCost{color:var(--muted);font-size:.75rem;font-weight:600}.spendPresetBtn:not(:disabled) .spendPresetCost{color:color-mix(in srgb, var(--ink) 55%, var(--muted))}.spendConfirm{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 88%, var(--accent) 12%);flex-direction:column;gap:.75rem;padding:.85rem .9rem;display:flex}.spendConfirmMsg{color:var(--text);margin:0;font-size:.95rem;font-weight:600;line-height:1.45}.spendConfirmActions{gap:.55rem;display:flex}.spendConfirmActions .btn{flex:1}.spendRecent{color:var(--muted);flex-direction:column;gap:.35rem;margin:0;padding:0;font-size:.78rem;list-style:none;display:flex}.spendRecent li{border-bottom:1px solid var(--line);justify-content:space-between;gap:.75rem;padding:.35rem 0;display:flex}.spendRecent li:last-child{border-bottom:0}.spendLedger{flex-direction:column;flex:1;gap:.45rem;min-height:0;display:flex}.spendLedgerTitle{letter-spacing:.04em;color:var(--faint);flex-shrink:0;margin:0;font-size:.72rem;font-weight:700}.spendLedgerEmpty{color:var(--muted);margin:0;padding:.75rem 0;font-size:.85rem;font-weight:500}.spendLedgerList{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;gap:0;min-height:0;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.spendLedgerList li{border-bottom:1px solid var(--line);padding:.55rem 0}.spendLedgerList li:last-child{border-bottom:0}.spendLedgerMeta{color:var(--muted);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.78rem;display:flex}.spendLedgerPts{font-weight:800}.spendLedgerPts.ok{color:var(--ok)}.spendLedgerPts.bad{color:var(--bad)}.spendLedgerDesc{color:var(--ink);word-break:keep-all;margin:.25rem 0 0;font-size:.82rem;font-weight:500;line-height:1.4}.spendDialogFoot{border-top:1px solid var(--line);flex-shrink:0;padding-top:.35rem}.spendDialogFoot .btn.ghost{width:100%;margin-top:0}.historyDialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0b0d1273}.historyDialogInner{box-sizing:border-box;flex-direction:column;gap:.85rem;height:100%;max-height:100%;padding:1.1rem;display:flex;overflow:hidden}.historyDialogList{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y;flex:auto;min-height:0;margin:0;overflow-y:auto}.historyDialogLoading{margin:1rem 0}.historyDialogInner .btn.ghost{margin-top:0}.srOnly{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.periodTabs{border:1px solid var(--line);background:var(--bg);border-radius:999px;gap:.15rem;padding:.2rem;display:inline-flex}.periodTab{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.4rem .75rem;font-size:.78rem;font-weight:700}.periodTab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #0b0d1214}.periodList{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.periodItem{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem .95rem;display:flex}.periodItemBtn{text-align:left;cursor:pointer;width:100%;color:inherit;font:inherit;appearance:none}.periodItemBtn:hover{border-color:var(--accent);background:var(--accent-soft)}.periodItemBtn:active{transform:scale(.99)}.periodLeft{flex-direction:column;gap:.15rem;min-width:0;display:flex}.periodLabel{letter-spacing:-.03em;font-weight:800}.periodMeta{color:var(--muted);font-size:.78rem;font-weight:500}.periodRight{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.35rem;width:6.25rem;padding-right:.85rem;display:flex;position:relative}.periodChevron{color:var(--faint);font-size:1.25rem;font-weight:400;line-height:1;position:absolute;top:50%;right:-.15rem;transform:translateY(-50%)}.periodRight strong{font-variant-numeric:tabular-nums;color:var(--accent);font-size:.95rem;font-weight:800}.periodRight .accBar{width:100%}.userPicker{gap:.85rem}.userPickerLead{margin:0}.userList{flex-direction:column;gap:.65rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.userCard{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);width:100%;min-height:4.25rem;color:var(--ink);cursor:pointer;text-align:left;align-items:center;gap:.85rem;padding:.95rem 1.05rem;transition:border-color .15s,background .15s,transform .1s;display:flex}.userCard:active{transform:scale(.99)}.userCard:hover,.userCard.selected{border-color:var(--accent);background:var(--accent-soft)}.userCardCheck{color:var(--accent);flex-shrink:0;margin-left:auto;font-size:.75rem;font-weight:700}.userCardIndex{background:var(--cta);width:2rem;height:2rem;color:var(--cta-text);border-radius:999px;flex-shrink:0;place-items:center;font-size:.9rem;font-weight:800;display:grid}.userCardBody{flex-direction:column;gap:.15rem;min-width:0;display:flex}.userCardName{letter-spacing:-.03em;font-size:1.15rem;font-weight:800}.userCardGrade{color:var(--muted);font-size:.85rem;font-weight:600}@keyframes in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes blink{0%,to{opacity:.35}50%{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=480px){.wrap,.dock{width:min(100%,460px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
