:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#111827;background-color:#f9fafb;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}:root{color-scheme:light;--bg-canvas: #eef3f8;--bg-panel: rgba(255, 255, 255, .88);--bg-panel-strong: #ffffff;--bg-soft: #f5f8fc;--bg-soft-blue: #eef5ff;--bg-soft-green: #f1fbf4;--text-strong: #0f172a;--text-main: #1f2937;--text-muted: #64748b;--text-faint: #94a3b8;--accent-primary: #2563eb;--accent-primary-strong: #1d4ed8;--accent-soft: #dbeafe;--accent-soft-strong: #eff6ff;--accent-border: rgba(37, 99, 235, .18);--accent-ring: rgba(96, 165, 250, .2);--banner-bg: radial-gradient(circle at top right, rgba(96, 165, 250, .14), transparent 30%), linear-gradient(135deg, rgba(255, 255, 255, .94) 0%, rgba(242, 247, 253, .96) 100%);--banner-border: rgba(148, 163, 184, .2);--surface-control: rgba(255, 255, 255, .9);--surface-control-strong: rgba(255, 255, 255, .96);--surface-input: rgba(248, 250, 252, .92);--surface-card: rgba(255, 255, 255, .96);--surface-card-soft: linear-gradient(180deg, rgba(248, 251, 255, .96) 0%, rgba(255, 255, 255, .92) 100%);--surface-card-green: linear-gradient(180deg, rgba(246, 255, 248, .96) 0%, rgba(255, 255, 255, .92) 100%);--school-text: #1d4ed8;--school-bg: #eff6ff;--school-border: #bfdbfe;--study-text: #15803d;--study-bg: #f0fdf4;--study-border: #bbf7d0;--warn-text: #b45309;--warn-bg: #fffbeb;--warn-border: #fde68a;--line-soft: rgba(148, 163, 184, .24);--line-strong: rgba(148, 163, 184, .34);--shadow-panel: 0 18px 44px rgba(15, 23, 42, .08);--shadow-soft: 0 10px 26px rgba(15, 23, 42, .06);--shadow-focus: 0 0 0 4px rgba(96, 165, 250, .2);--blue-500: #2563eb;--blue-400: #60a5fa;--blue-100: #dbeafe;--green-600: #15803d;--green-400: #4ade80;--green-100: #dcfce7;--red-600: #be123c;--red-100: #ffe4e6;--amber-700: #b45309;--amber-100: #fef3c7;--radius-panel: 24px;--radius-card: 18px;--radius-control: 14px}.app-shell[data-theme=dark]{--bg-canvas: #0f172a;--bg-panel: rgba(15, 23, 42, .82);--bg-panel-strong: #111827;--bg-soft: #162235;--bg-soft-blue: #11243f;--bg-soft-green: #12271c;--text-strong: #f8fafc;--text-main: #e2e8f0;--text-muted: #94a3b8;--text-faint: #64748b;--accent-primary: #60a5fa;--accent-primary-strong: #93c5fd;--accent-soft: rgba(37, 99, 235, .22);--accent-soft-strong: rgba(30, 41, 59, .92);--accent-border: rgba(96, 165, 250, .24);--accent-ring: rgba(96, 165, 250, .28);--banner-bg: radial-gradient(circle at top right, rgba(96, 165, 250, .18), transparent 30%), linear-gradient(135deg, rgba(17, 24, 39, .96) 0%, rgba(15, 23, 42, .96) 100%);--banner-border: rgba(148, 163, 184, .18);--surface-control: rgba(15, 23, 42, .88);--surface-control-strong: rgba(15, 23, 42, .96);--surface-input: rgba(15, 23, 42, .92);--surface-card: rgba(15, 23, 42, .92);--surface-card-soft: linear-gradient(180deg, rgba(17, 24, 39, .96) 0%, rgba(15, 23, 42, .92) 100%);--surface-card-green: linear-gradient(180deg, rgba(17, 31, 23, .96) 0%, rgba(15, 23, 42, .92) 100%);--school-text: #93c5fd;--school-bg: rgba(37, 99, 235, .18);--school-border: rgba(96, 165, 250, .28);--study-text: #86efac;--study-bg: rgba(22, 163, 74, .16);--study-border: rgba(74, 222, 128, .26);--warn-text: #fbbf24;--warn-bg: rgba(180, 83, 9, .16);--warn-border: rgba(251, 191, 36, .22);--line-soft: rgba(148, 163, 184, .14);--line-strong: rgba(148, 163, 184, .24);--shadow-panel: 0 20px 48px rgba(2, 6, 23, .42);--shadow-soft: 0 12px 30px rgba(2, 6, 23, .28);--shadow-focus: 0 0 0 4px rgba(96, 165, 250, .24)}.app-shell[data-theme=blossom]{--bg-canvas: #fdf2f8;--bg-panel: rgba(255, 250, 252, .9);--bg-soft: #fff5f8;--bg-soft-blue: #fff0f6;--text-strong: #4a2033;--text-main: #5f3650;--text-muted: #8a5d77;--text-faint: #b48aa0;--accent-primary: #db2777;--accent-primary-strong: #be185d;--accent-soft: #fbcfe8;--accent-soft-strong: #fdf2f8;--accent-border: rgba(219, 39, 119, .18);--accent-ring: rgba(244, 114, 182, .22);--banner-bg: radial-gradient(circle at top right, rgba(244, 114, 182, .18), transparent 30%), linear-gradient(135deg, rgba(255, 251, 253, .96) 0%, rgba(252, 231, 243, .84) 100%);--banner-border: rgba(244, 114, 182, .16)}.app-shell[data-theme=forest]{--bg-canvas: #edf7f1;--bg-panel: rgba(250, 255, 251, .9);--bg-soft: #f1faf4;--bg-soft-blue: #edf8f1;--text-strong: #163124;--text-main: #254634;--text-muted: #567565;--text-faint: #88a091;--accent-primary: #15803d;--accent-primary-strong: #166534;--accent-soft: #dcfce7;--accent-soft-strong: #f0fdf4;--accent-border: rgba(22, 163, 74, .18);--accent-ring: rgba(74, 222, 128, .22);--banner-bg: radial-gradient(circle at top right, rgba(74, 222, 128, .16), transparent 30%), linear-gradient(135deg, rgba(250, 255, 251, .96) 0%, rgba(220, 252, 231, .74) 100%);--banner-border: rgba(74, 222, 128, .14)}.app-shell[data-theme=ocean]{--bg-canvas: #ebf8ff;--bg-panel: rgba(248, 253, 255, .9);--bg-soft: #eefafd;--bg-soft-blue: #e0f2fe;--text-strong: #12324a;--text-main: #21445b;--text-muted: #5a7b92;--text-faint: #8ba7bb;--accent-primary: #0891b2;--accent-primary-strong: #0e7490;--accent-soft: #bae6fd;--accent-soft-strong: #ecfeff;--accent-border: rgba(8, 145, 178, .18);--accent-ring: rgba(34, 211, 238, .24);--banner-bg: radial-gradient(circle at top right, rgba(34, 211, 238, .18), transparent 30%), linear-gradient(135deg, rgba(248, 253, 255, .96) 0%, rgba(224, 242, 254, .84) 100%);--banner-border: rgba(34, 211, 238, .16)}.app-shell{min-height:100vh;padding:28px;box-sizing:border-box;background:radial-gradient(circle at top left,rgba(96,165,250,.12),transparent 24%),radial-gradient(circle at top right,rgba(74,222,128,.08),transparent 22%),linear-gradient(180deg,#f6f9fc 0%,var(--bg-canvas) 100%);color:var(--text-main)}.app-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.header-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.theme-control{display:inline-grid;gap:6px}.theme-control-label{font-size:.78rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.theme-select{min-height:46px;min-width:118px;padding:0 38px 0 14px;border:1px solid var(--accent-border);border-radius:999px;background-color:var(--surface-control);color:var(--text-strong);font:inherit;font-size:.92rem;font-weight:700;appearance:none;cursor:pointer;box-shadow:var(--shadow-soft);background-image:linear-gradient(45deg,transparent 50%,var(--accent-primary) 50%),linear-gradient(135deg,var(--accent-primary) 50%,transparent 50%);background-position:calc(100% - 18px) 20px,calc(100% - 12px) 20px;background-size:6px 6px,6px 6px;background-repeat:no-repeat}.theme-select:focus{outline:none;box-shadow:var(--shadow-soft),var(--shadow-focus)}.app-header-copy{display:grid;gap:8px}.app-header h1{margin:0;font-size:2.1rem;font-weight:800;letter-spacing:-.03em;color:var(--text-strong)}.app-header-summary{margin:0;color:var(--text-muted);font-size:.96rem}.textbook-open-button{min-height:46px;padding:0 18px;border:1px solid var(--accent-border);border-radius:999px;background:var(--surface-control);color:var(--accent-primary);font:inherit;font-size:.92rem;font-weight:700;cursor:pointer;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:background-color .18s ease,border-color .18s ease,transform .18s ease,box-shadow .18s ease}.textbook-open-button:hover{background:var(--accent-soft-strong);border-color:color-mix(in srgb,var(--accent-primary) 26%,transparent);transform:translateY(-1px)}.textbook-open-button:focus-visible{outline:none;box-shadow:var(--shadow-soft),var(--shadow-focus)}.exam-banner{display:grid;gap:16px;margin-bottom:22px;padding:22px 24px;border-radius:28px;background:var(--banner-bg);border:1px solid var(--banner-border);box-shadow:var(--shadow-panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.exam-banner-summary{display:flex;align-items:stretch;justify-content:space-between;gap:16px}.exam-banner-copy{display:grid;gap:8px}.exam-banner-label{font-size:.82rem;font-weight:600;color:var(--text-muted);letter-spacing:.02em;text-transform:uppercase}.exam-banner-title{font-size:1.45rem;letter-spacing:-.02em;color:var(--text-strong)}.exam-banner-description{color:var(--text-muted);font-size:.94rem}.exam-range-inline{display:grid;gap:4px;margin-top:8px}.exam-range-inline-label{font-size:.8rem;font-weight:700;color:var(--text-muted);text-transform:uppercase}.exam-range-inline-value{color:var(--text-strong);font-size:.94rem;font-weight:600}.exam-banner-focus{min-width:150px;padding:16px 18px;border-radius:22px;display:grid;align-content:center;gap:8px;text-align:center;box-shadow:var(--shadow-soft)}.exam-banner-focus.is-exam{background:linear-gradient(135deg,color-mix(in srgb,var(--accent-soft) 80%,white 20%),#fffffff0);border:1px solid color-mix(in srgb,var(--accent-primary) 34%,transparent)}.exam-banner-focus.is-range{background:linear-gradient(135deg,#f8fafcfa,#f1f5f9f5);border:1px solid rgba(148,163,184,.28)}.exam-banner-focus-label{font-size:.8rem;font-weight:700;color:var(--text-muted);text-transform:uppercase}.exam-banner-focus-value{font-size:1.55rem;letter-spacing:-.03em;color:var(--accent-primary)}.exam-banner-focus-value-small{font-size:1.1rem}.exam-banner-focus-date{font-size:.86rem;color:var(--text-muted);font-weight:600}.exam-banner-focus-side{min-width:150px}.exam-banner-dday-card{min-width:190px;padding:18px 20px;border-radius:24px;border:1px solid rgba(148,163,184,.28);display:grid;align-content:center;gap:8px;background:#ffffffe6;text-align:center;cursor:pointer;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.exam-banner-dday-card.is-exam{background:linear-gradient(135deg,#fffffff5,color-mix(in srgb,var(--accent-soft) 40%,white 60%));border-color:color-mix(in srgb,var(--accent-primary) 34%,transparent);box-shadow:0 16px 36px color-mix(in srgb,var(--accent-primary) 12%,transparent)}.exam-banner-dday-card.is-range{background:linear-gradient(135deg,#fffffff5,#f8fafcfa);border-color:#94a3b847;box-shadow:0 14px 34px #0f172a14}.exam-banner-dday-card:hover{transform:translateY(-2px);box-shadow:0 20px 42px #0f172a1f}.exam-banner-dday-card:focus-visible{outline:none;box-shadow:0 20px 42px #0f172a1f,var(--shadow-focus)}.exam-range-open-button{min-height:40px;margin-top:8px;border:1px solid var(--accent-border);border-radius:999px;background:var(--surface-control-strong);color:var(--accent-primary);font:inherit;font-size:.9rem;font-weight:700;cursor:pointer;box-shadow:0 6px 18px color-mix(in srgb,var(--accent-primary) 10%,transparent);transition:background-color .18s ease,border-color .18s ease,transform .18s ease}.exam-range-open-button:hover{background:var(--accent-soft-strong);border-color:color-mix(in srgb,var(--accent-primary) 32%,transparent);transform:translateY(-1px)}.mode-toggle{display:flex;flex-wrap:wrap;gap:8px}.mode-toggle-button{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--line-soft);background:var(--surface-control);color:var(--text-muted);font:inherit;font-size:.9rem;font-weight:600;cursor:pointer;box-shadow:0 4px 14px #0f172a0a;transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}.mode-toggle-button.is-active{border-color:color-mix(in srgb,var(--accent-primary) 40%,transparent);background:linear-gradient(180deg,var(--accent-soft-strong) 0%,var(--accent-soft) 100%);color:var(--accent-primary)}.mode-toggle-button:hover{transform:translateY(-1px);border-color:#94a3b866}.mode-toggle-compact .mode-toggle-button{min-height:34px;font-size:.86rem}.app-layout{display:grid;grid-template-columns:240px minmax(0,1fr) 320px;gap:20px;min-height:calc(100vh - 180px)}.panel{background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:var(--radius-panel);padding:22px;box-shadow:var(--shadow-panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.panel-header{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--line-soft)}.panel-subnote{margin:-4px 0 14px;color:var(--text-muted);font-size:.88rem;line-height:1.45}.panel-header h2{margin:0;font-size:1.05rem;font-weight:600;color:var(--text-strong)}.content-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.overall-progress-group{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.overall-progress{font-size:.92rem;font-weight:600;border-radius:999px;padding:6px 10px}.overall-progress-school{color:var(--school-text);background:var(--school-bg);border:1px solid var(--school-border)}.overall-progress-study{color:var(--study-text);background:var(--study-bg);border:1px solid var(--study-border)}.overall-progress-unset{color:var(--warn-text);background:var(--warn-bg);border:1px solid var(--warn-border)}.subject-list,.content-placeholder,.progress-form{display:grid;gap:12px}.subject-button,.unit-item,.form-input,.form-textarea{border-radius:16px;background:var(--bg-soft);border:1px solid var(--line-soft)}.subject-button{position:relative;overflow:hidden;width:100%;padding:15px 16px;font-size:.95rem;font-family:inherit;text-align:left;color:var(--text-main);cursor:pointer;transition:border-color .18s ease,background-color .18s ease,color .18s ease,box-shadow .18s ease,transform .18s ease;box-shadow:inset 0 1px #fff9}.subject-button:hover{border-color:color-mix(in srgb,var(--accent-primary) 26%,transparent);background:color-mix(in srgb,var(--bg-soft) 70%,var(--accent-soft-strong) 30%);transform:translateY(-1px)}.subject-button:focus-visible{outline:3px solid #bfdbfe;outline-offset:2px}.subject-button.is-selected{border-color:color-mix(in srgb,var(--accent-primary) 34%,transparent);background:linear-gradient(180deg,var(--accent-soft-strong) 0%,var(--accent-soft) 100%);color:var(--accent-primary);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-primary) 6%,transparent),0 10px 24px color-mix(in srgb,var(--accent-primary) 10%,transparent)}.subject-button-fill{position:absolute;inset:0 auto 0 0;pointer-events:none}.subject-button-fill.is-school{background:linear-gradient(90deg,#60a5fa29,#2563eb33)}.subject-button-fill.is-study{background:linear-gradient(90deg,#4ade802e,#16a34a38)}.subject-button-fill.is-both{background:linear-gradient(90deg,#60a5fa24,#4ade8029)}.subject-button-content{position:relative;z-index:1;display:grid;gap:8px}.subject-button-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.subject-button-name{font-weight:600;color:inherit}.subject-button-percent{font-size:.88rem;font-weight:700}.subject-button-dual-percent{display:flex;gap:8px}.subject-button-unset{color:var(--warn-text);font-size:.82rem;font-weight:700}.subject-button-percent-school{color:var(--school-text)}.subject-button-percent-study{color:var(--study-text)}.subject-button-bar-group{display:grid;gap:6px}.subject-button-bar{display:block;width:100%;height:6px;border-radius:999px;background:#94a3b82e;overflow:hidden}.subject-button-bar-fill{display:block;height:100%;border-radius:inherit}.subject-button-bar-fill-school{background:linear-gradient(90deg,#60a5fa,#2563eb)}.subject-button-bar-fill-study{background:linear-gradient(90deg,#4ade80,#16a34a)}.content-placeholder{align-content:start}.content-note{margin:0 0 4px;color:var(--text-muted);font-size:.96rem}.semester-list{display:grid;gap:18px}.semester-section{display:grid;gap:14px}.tree-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.tree-toggle-button{display:inline-flex;align-items:center;gap:10px;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.tree-toggle-symbol{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:999px;background:linear-gradient(180deg,#f8fafc,#e5edf7);color:var(--text-main);font-weight:700;flex:0 0 auto;border:1px solid rgba(148,163,184,.22)}.tree-summary{width:min(250px,100%)}.semester-title{margin:0;font-size:1rem;font-weight:700;color:var(--text-strong)}.curriculum-unit{display:grid;gap:10px}.curriculum-unit-title{margin:0;font-size:.96rem;font-weight:600;color:var(--text-main)}.empty-semester-note{margin:0;color:var(--text-muted);font-size:.94rem}.unit-list{margin:0;padding:0;list-style:none;display:grid;gap:12px}.unit-item{padding:18px;color:var(--text-main);font-size:.97rem;display:grid;gap:8px;box-shadow:0 10px 26px #0f172a0a}.unit-item.is-highlighted{border-color:color-mix(in srgb,var(--accent-primary) 34%,transparent);background:linear-gradient(180deg,var(--accent-soft-strong) 0%,color-mix(in srgb,var(--accent-soft) 84%,white 16%) 100%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent-primary) 4%,transparent),0 14px 30px color-mix(in srgb,var(--accent-primary) 10%,transparent)}.unit-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.unit-title{font-size:.98rem}.unit-percent{font-size:.92rem;font-weight:700;color:var(--school-text)}.unit-percent-muted{color:var(--text-muted);font-weight:600}.unit-page{color:var(--text-muted);font-size:.9rem}.unit-page-muted{color:var(--text-faint)}.progress-stack{display:grid;gap:10px}.progress-stack-compact{gap:8px}.progress-stack-compact .progress-label,.progress-stack-compact .progress-value{font-size:.84rem}.progress-stack-compact .unit-progress-bar{height:8px}.progress-row,.segment-row{display:grid;gap:6px}.segment-label{font-size:.82rem;font-weight:600}.segment-label-school{color:var(--school-text)}.segment-label-study{color:var(--study-text)}.segment-track{position:relative;width:100%;height:8px;display:flex;align-items:center;border-radius:999px;background:linear-gradient(180deg,#e2e8f0e6,#f1f5f9db);overflow:visible}.progress-segment{position:absolute;top:0;bottom:0;min-width:4px;border-radius:999px;cursor:help;outline:none}.progress-segment:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 10px);transform:translate(-50%) translateY(4px);min-width:180px;max-width:260px;padding:10px 12px;border-radius:12px;background:#0f172af5;color:#f8fafc;font-size:.76rem;font-weight:500;line-height:1.5;white-space:pre-line;box-shadow:0 14px 32px #0f172a3d;opacity:0;pointer-events:none;transition:opacity .14s ease,transform .14s ease;z-index:3}.progress-segment:before{content:"";position:absolute;left:50%;bottom:calc(100% + 4px);width:10px;height:10px;background:#0f172af5;transform:translate(-50%) rotate(45deg);opacity:0;pointer-events:none;transition:opacity .14s ease;z-index:2}.progress-segment:hover:after,.progress-segment:hover:before,.progress-segment:focus-visible:after,.progress-segment:focus-visible:before{opacity:1}.progress-segment:hover:after,.progress-segment:focus-visible:after{transform:translate(-50%) translateY(0)}.segment-empty{position:relative;z-index:1;padding-left:10px;font-size:.76rem;font-weight:600;color:#94a3b8}.progress-segment-school{background:linear-gradient(90deg,#60a5fa,#2563eb)}.progress-segment-study{background:linear-gradient(90deg,#4ade80,#16a34a)}.progress-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}.progress-label,.progress-value{font-size:.9rem;font-weight:600}.progress-label-school,.progress-value-school{color:var(--school-text)}.progress-label-study,.progress-value-study{color:var(--study-text)}.unit-progress-bar{width:100%;height:11px;border-radius:999px;background:linear-gradient(180deg,#e2e8f0eb,#f1f5f9db);overflow:hidden}.unit-progress-fill{height:100%;border-radius:inherit}.unit-progress-fill-school{background:linear-gradient(90deg,#60a5fa,#2563eb)}.unit-progress-fill-study{background:linear-gradient(90deg,#4ade80,#16a34a)}.saved-progress-card{margin-top:8px;padding:18px;border-radius:14px;border:1px solid #dbe3ee;background:#f8fbff}.saved-progress-card h3{margin:0 0 14px;font-size:1rem;color:#1f2937}.saved-progress-card-study{background:#f6fff8;border-color:#d5f5dc}.saved-progress-items{margin:0;padding:0;list-style:none;display:grid;gap:12px}.saved-progress-item{padding:14px;border-radius:12px;background:#fff;border:1px solid #e2e8f0}.saved-progress-item-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.saved-progress-item-meta{display:flex;align-items:center;gap:8px}.saved-progress-item-title{font-size:.92rem;color:#1f2937}.editing-badge{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent-primary);font-size:.78rem;font-weight:700}.saved-progress-list{margin:0;display:grid;gap:10px}.saved-progress-row{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;align-items:start}.saved-progress-row dt{color:var(--text-muted);font-weight:600}.saved-progress-row dd{margin:0;color:var(--text-strong)}.saved-progress-memo dd{white-space:pre-wrap}.matched-unit-list{margin:0;padding-left:18px;display:grid;gap:4px}.saved-progress-empty{margin:0;color:var(--text-muted);font-size:.95rem}.record-delete-button{min-height:34px;padding:0 12px;border:1px solid rgba(244,63,94,.22);border-radius:999px;background:#fff5f7;color:var(--red-600);font:inherit;font-size:.86rem;font-weight:700;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.record-delete-button:hover{background:var(--red-100);border-color:#f43f5e52}.record-delete-button:focus-visible{outline:3px solid #fecdd3;outline-offset:2px}.record-action-group{display:flex;gap:8px}.record-edit-button{min-height:34px;padding:0 12px;border:1px solid var(--accent-border);border-radius:999px;background:var(--accent-soft-strong);color:var(--accent-primary);font:inherit;font-size:.86rem;font-weight:700;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.record-edit-button:hover{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent-primary) 30%,transparent)}.record-edit-button:focus-visible{outline:3px solid #bfdbfe;outline-offset:2px}.form-message{margin:0;padding:13px 14px;border-radius:16px;background:#fff7f7;border:1px solid rgba(248,113,113,.26);color:#b91c1c;font-size:.93rem}.editing-notice{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;border-radius:16px;background:linear-gradient(180deg,var(--accent-soft-strong) 0%,var(--accent-soft) 100%);border:1px solid var(--accent-border);color:var(--accent-primary);font-size:.92rem;font-weight:600}.editing-cancel-button{min-height:32px;padding:0 10px;border:1px solid var(--accent-border);border-radius:999px;background:var(--surface-control-strong);color:var(--accent-primary);font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.editing-cancel-button:hover{background:var(--accent-soft)}.form-field{display:grid;gap:8px}.form-label{font-size:.92rem;font-weight:600;color:var(--text-main)}.form-input,.form-textarea{width:100%;box-sizing:border-box;padding:13px 15px;font:inherit;color:var(--text-strong);background:var(--surface-input);box-shadow:inset 0 1px #fffc}select.form-input{appearance:none}.date-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.date-action-button{min-height:48px;padding:0 14px;border:1px solid var(--line-soft);border-radius:16px;background:var(--surface-control-strong);color:var(--text-main);font:inherit;font-weight:600;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,color .18s ease}.date-action-button:hover{background:var(--accent-soft-strong);border-color:var(--accent-border);color:var(--accent-primary)}.date-action-button:focus-visible{outline:3px solid #bfdbfe;outline-offset:2px}.form-input{min-height:48px}.form-textarea{min-height:156px;resize:vertical}.form-input::placeholder,.form-textarea::placeholder{color:#9ca3af}.form-input:focus,.form-textarea:focus{outline:none;border-color:color-mix(in srgb,var(--accent-primary) 42%,transparent);box-shadow:0 0 0 4px var(--accent-ring)}.save-button{min-height:48px;border:0;border-radius:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--accent-primary) 82%,white 18%) 0%,var(--accent-primary) 100%);color:#fff;font:inherit;font-weight:700;cursor:pointer;box-shadow:0 14px 28px color-mix(in srgb,var(--accent-primary) 22%,transparent);transition:background-color .18s ease,transform .18s ease,box-shadow .18s ease}.save-button:hover{background:linear-gradient(180deg,var(--accent-primary) 0%,var(--accent-primary-strong) 100%);transform:translateY(-1px);box-shadow:0 18px 34px color-mix(in srgb,var(--accent-primary) 26%,transparent)}.save-button-study{background:linear-gradient(180deg,#22c55e,#16a34a);box-shadow:0 14px 28px #16a34a2e}.save-button-study:hover{background:linear-gradient(180deg,#16a34a,#15803d);box-shadow:0 18px 34px #16a34a38}.save-button:focus-visible{outline:3px solid #bfdbfe;outline-offset:2px}.form-divider{margin:24px 0;border-top:1px solid rgba(148,163,184,.18)}.input-header{display:grid;gap:12px}.subsection-header{margin-bottom:12px}.subsection-header h3{margin:0;font-size:1rem;font-weight:700;color:var(--text-strong)}.recent-records-card,.recent-records-group{display:grid;gap:14px}.recent-records-section{padding:15px;border-radius:20px;border:1px solid var(--line-soft);background:var(--surface-card-soft);box-shadow:inset 0 1px #ffffffc2}.recent-records-section-study{background:var(--surface-card-green);border-color:#86efac3d}.recent-records-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.recent-records-section-header h4{margin:0;font-size:.94rem;color:var(--text-strong)}.recent-records-count{font-size:.8rem;font-weight:700;color:var(--text-muted)}.recent-records-list{margin:0;padding:0;list-style:none;display:grid;gap:10px}.recent-record-button{width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:13px 15px;border:1px solid var(--line-soft);border-radius:16px;background:var(--surface-card);font:inherit;text-align:left;cursor:pointer;box-shadow:0 8px 20px #0f172a0a;transition:border-color .18s ease,background-color .18s ease,transform .18s ease,box-shadow .18s ease}.recent-record-button:hover{border-color:color-mix(in srgb,var(--accent-primary) 30%,transparent);background:color-mix(in srgb,var(--surface-card) 70%,var(--accent-soft-strong) 30%);transform:translateY(-1px);box-shadow:0 14px 26px #0f172a14}.recent-record-button-study:hover{border-color:#4ade8057;background:#f4fdf6}.recent-record-button.is-expanded{border-color:#60a5fa52;background:#f7fbff}.recent-record-button-study.is-expanded{border-color:#4ade8057;background:#f4fdf6}.recent-record-button:focus-visible{outline:3px solid #bfdbfe;outline-offset:2px}.recent-record-summary{min-width:0;flex:1 1 auto;color:var(--text-strong);font-size:.9rem;font-weight:600;line-height:1.45;overflow-wrap:anywhere}.recent-record-meta{display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;flex-shrink:0;flex-wrap:wrap}.recent-record-toggle{color:var(--text-muted);font-size:.8rem;font-weight:700}.recent-record-detail{margin-top:8px;padding:12px 14px 0;display:grid;gap:12px}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:24px;background:#0f172a80;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.modal-panel{width:min(720px,100%);max-height:calc(100vh - 48px);overflow:auto;border-radius:28px;background:color-mix(in srgb,var(--bg-panel-strong) 92%,white 8%);border:1px solid var(--line-soft);box-shadow:0 30px 70px #0f172a3d;padding:24px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.modal-panel-compact{width:min(560px,100%)}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.modal-header h2{margin:0 0 6px;font-size:1.2rem;color:var(--text-strong)}.modal-header p{margin:0;color:var(--text-muted);font-size:.94rem}.modal-close-button{min-height:40px;padding:0 16px;border:1px solid var(--line-soft);border-radius:999px;background:var(--surface-control-strong);color:var(--text-main);font:inherit;font-weight:600;cursor:pointer}.modal-close-button:hover{background:var(--bg-soft);transform:translateY(-1px)}.textbook-form-grid{display:grid;gap:14px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.exam-range-list{display:grid;gap:14px}.exam-range-card{padding:18px;border-radius:20px;border:1px solid var(--line-soft);background:var(--surface-card-soft);box-shadow:inset 0 1px #ffffffc2}.exam-range-header{display:grid;gap:7px;margin-bottom:14px}.exam-range-header h4{margin:0;font-size:.96rem;font-weight:700;color:var(--text-strong)}.exam-range-saved{font-size:.88rem;color:var(--accent-primary);font-weight:600}.exam-range-saved-empty{color:var(--text-muted)}.save-button-secondary{background:#0f766e}.save-button-secondary:hover{background:#115e59}@media(max-width:1100px){.app-layout{grid-template-columns:220px minmax(0,1fr)}.input-panel{grid-column:1 / -1}}@media(max-width:720px){.app-shell{padding:16px}.app-header{flex-direction:column;align-items:stretch}.header-actions{justify-content:flex-start;width:100%}.app-layout{grid-template-columns:1fr;min-height:auto}.content-header{align-items:flex-start;flex-direction:column}.overall-progress-group{justify-content:flex-start}.exam-banner{align-items:flex-start;flex-direction:column}.mode-toggle,.theme-control,.theme-select,.textbook-open-button{width:100%}.exam-banner-summary{flex-direction:column}.exam-banner-focus,.exam-banner-dday-card{min-width:0}.modal-backdrop{padding:16px}.modal-header,.tree-row{flex-direction:column}.tree-summary{width:100%}.recent-record-button{gap:10px}.recent-record-summary{flex-basis:100%}.recent-record-meta{width:100%;justify-content:space-between}}
