@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=Playfair+Display:wght@400;600;700&display=swap";:root{--color-navy:#1b2a4a;--color-navy-light:#2c3e6b;--color-tricolore-blue:#002395;--color-tricolore-red:#ed2939;--color-white:#fafbfd;--color-cream:#f5f3ef;--color-warm-gray:#e8e4de;--color-mid-gray:#9a9590;--color-text:#2d2926;--color-text-muted:#6b6560;--color-text-light:#a09890;--color-correct:#2d8a56;--color-correct-bg:#e8f5ed;--color-incorrect:#c93545;--color-incorrect-bg:#fde8eb;--color-active:#002395;--color-active-bg:#e8edfa;--color-warning:#d4930d;--color-warning-bg:#fff8e7;--color-a1:#4caf50;--color-a2:#8bc34a;--color-b1:#ff9800;--color-b2:#ff5722;--color-c1:#9c27b0;--color-c2:#e91e63;--font-display:"Playfair Display", Georgia, serif;--font-body:"DM Sans", -apple-system, sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--text-4xl:2.5rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 1px 3px #1b2a4a0f;--shadow-md:0 4px 12px #1b2a4a14;--shadow-lg:0 8px 30px #1b2a4a1f;--shadow-xl:0 16px 50px #1b2a4a29;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-bounce:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.15s;--duration-normal:.25s;--duration-slow:.4s;--navbar-height:76px;--page-gutter:clamp(1.25rem, 2.5vw, 2.5rem);--page-max:1600px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-body);color:var(--color-text);background:radial-gradient(circle at 0 0,#00239514,#0000 28%),radial-gradient(circle at 100% 0,#ed293912,#0000 24%),linear-gradient(#f8f5f0 0%,#f5f3ef 55%,#f1ede6 100%);min-height:100vh;line-height:1.6}#root{flex-direction:column;min-height:100vh;display:flex}.app-main{flex:1;width:100%}a{color:var(--color-tricolore-blue);transition:color var(--duration-fast) var(--ease-out);text-decoration:none}a:hover{color:var(--color-navy)}img{max-width:100%;display:block}h1,h2,h3,h4{font-family:var(--font-display);color:var(--color-navy);line-height:1.2}h1{font-size:var(--text-4xl);font-weight:700}h2{font-size:var(--text-3xl);font-weight:600}h3{font-size:var(--text-2xl);font-weight:600}h4{font-size:var(--text-xl);font-weight:600}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);font-family:var(--font-body);font-size:var(--text-sm);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-normal) var(--ease-out);white-space:nowrap;border:none;font-weight:600;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:var(--color-tricolore-blue);color:#fff;box-shadow:0 2px 8px #0023954d}.btn-primary:hover{background:var(--color-navy-light);transform:translateY(-1px);box-shadow:0 4px 16px #00239566}.btn-secondary{background:var(--color-white);color:var(--color-navy);border:1.5px solid var(--color-warm-gray)}.btn-secondary:hover{border-color:var(--color-tricolore-blue);color:var(--color-tricolore-blue);background:var(--color-active-bg)}.btn-ghost{color:var(--color-text-muted);background:0 0}.btn-ghost:hover{color:var(--color-navy);background:var(--color-warm-gray)}.btn-danger{background:var(--color-tricolore-red);color:#fff}.btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-xs)}.btn-lg{padding:var(--space-4) var(--space-8);font-size:var(--text-base)}.card{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:all var(--duration-normal) var(--ease-out);border:1px solid #0000000a}.card:hover{box-shadow:var(--shadow-md)}.card-interactive{cursor:pointer}.card-interactive:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.level-badge{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.level-a1{color:var(--color-a1);background:#4caf501f}.level-a2{color:var(--color-a2);background:#8bc34a1f}.level-b1{color:var(--color-b1);background:#ff98001f}.level-b2{color:var(--color-b2);background:#ff57221f}.level-c1{color:var(--color-c1);background:#9c27b01f}.level-c2{color:var(--color-c2);background:#e91e631f}.navbar{min-height:var(--navbar-height);padding:var(--space-4) clamp(1.25rem, 3vw, 3rem);color:#fff;z-index:100;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#1b2a4af0;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.navbar-brand{align-items:center;gap:var(--space-3);font-family:var(--font-display);font-size:var(--text-xl);color:#fff;font-weight:700;text-decoration:none;display:flex}.navbar-brand .flag{margin-right:var(--space-2);gap:2px;display:flex}.navbar-brand .flag span{border-radius:2px;width:4px;height:20px}.navbar-brand .flag-blue{background:var(--color-tricolore-blue)}.navbar-brand .flag-white{background:#fff}.navbar-brand .flag-red{background:var(--color-tricolore-red)}.navbar-links{align-items:center;gap:var(--space-6);display:flex}.navbar-links a{color:#ffffffbf;font-size:var(--text-sm);transition:color var(--duration-fast);font-weight:500}.navbar-links a:hover,.navbar-links a.active{color:#fff}.navbar-user{align-items:center;gap:var(--space-3);display:flex}.session-layout{min-height:calc(100vh - var(--navbar-height));grid-template-columns:minmax(220px,260px) minmax(0,1.45fr) minmax(260px,320px);gap:0;max-width:1400px;margin:0 auto;display:grid}.session-nav{max-height:calc(100vh - var(--navbar-height));top:var(--navbar-height);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fafbfdd1;border-right:1px solid #1b2a4a14;padding:clamp(1.25rem,2vw,1.75rem);position:sticky;overflow-y:auto}.session-nav-header{background:var(--color-navy);color:#fff;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4);text-align:center}.session-nav-header h3{font-family:var(--font-body);font-size:var(--text-sm);color:#fff;letter-spacing:.05em;text-transform:uppercase;font-weight:700}.session-nav-progress{height:3px;margin-top:var(--space-2);background:#fff3;border-radius:2px;overflow:hidden}.session-nav-progress-bar{height:100%;transition:width var(--duration-normal) var(--ease-out);background:#fff;border-radius:2px}.question-grid{gap:var(--space-2);grid-template-columns:repeat(3,1fr);display:grid}.question-num{aspect-ratio:1;border-radius:var(--radius-sm);font-size:var(--text-sm);cursor:pointer;border:1.5px solid var(--color-warm-gray);background:var(--color-white);color:var(--color-text);transition:all var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;font-weight:600;display:flex;position:relative}.question-num:hover{border-color:var(--color-tricolore-blue);color:var(--color-tricolore-blue)}.question-num.active{background:var(--color-tricolore-blue);border-color:var(--color-tricolore-blue);color:#fff;box-shadow:0 2px 8px #0023954d}.question-num.answered{background:var(--color-active-bg);border-color:var(--color-tricolore-blue);color:var(--color-tricolore-blue)}.question-num.correct{background:var(--color-correct-bg);border-color:var(--color-correct);color:var(--color-correct)}.question-num.incorrect{background:var(--color-incorrect-bg);border-color:var(--color-incorrect);color:var(--color-incorrect)}.question-num.has-duplicate:after{content:"";background:var(--color-warning);border-radius:999px;width:8px;height:8px;position:absolute;top:6px;right:6px;box-shadow:0 0 0 2px #fffc}.question-num.is-favorite{box-shadow:inset 0 0 0 2px #d4930d7a}.question-num.has-note{border-style:dashed}.session-content{width:100%;max-width:none;margin:0;padding:clamp(2rem,3vw,3.5rem) clamp(2rem,4vw,4.5rem)}.session-side{top:var(--navbar-height);height:calc(100vh - var(--navbar-height));gap:var(--space-6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fafbfdc7;border-left:1px solid #1b2a4a14;flex-direction:column;padding:clamp(1.5rem,2.4vw,2.5rem);display:flex;position:sticky}.audio-player{border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);background:linear-gradient(135deg,#e8edfa 0%,#f0f4ff 100%);border:1px solid #0023951a}.audio-player-label{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-tricolore-blue);margin-bottom:var(--space-3);font-weight:600;display:flex}.audio-controls{align-items:center;gap:var(--space-3);display:flex}.audio-play-btn{border-radius:var(--radius-full);background:var(--color-tricolore-blue);color:#fff;cursor:pointer;width:40px;height:40px;font-size:var(--text-lg);transition:all var(--duration-fast) var(--ease-out);border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.audio-play-btn:hover{background:var(--color-navy);transform:scale(1.05)}.audio-progress-container{gap:var(--space-1);flex-direction:column;flex:1;display:flex}.audio-progress-bar{cursor:pointer;background:#0023951f;border-radius:3px;width:100%;height:6px;position:relative;overflow:hidden}.audio-progress-fill{background:var(--color-tricolore-blue);border-radius:3px;height:100%;transition:width .1s linear}.audio-time{font-size:var(--text-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums;justify-content:space-between;display:flex}.audio-countdown{border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);text-align:center;background:linear-gradient(135deg,#fff8e7 0%,#fff3d4 100%);border:1px solid #d4930d33}.audio-countdown .countdown-icon{font-size:var(--text-2xl);margin-bottom:var(--space-2)}.audio-countdown .countdown-time{font-size:var(--text-2xl);font-variant-numeric:tabular-nums;color:var(--color-warning);font-weight:700}.question-instruction{background:var(--color-warning-bg);border-left:3px solid var(--color-warning);padding:var(--space-3) var(--space-4);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--text-sm);color:var(--color-text);margin-bottom:var(--space-6)}.question-image{border:1px solid var(--color-warm-gray);border-radius:var(--radius-md);margin-bottom:var(--space-6);background:#fff;overflow:hidden}.question-image img{width:100%;height:auto}.duplicate-question-badge{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);color:#9b6400;font-size:var(--text-sm);background:#d4930d1f;border-radius:999px;padding:8px 12px;font-weight:700;display:inline-flex}.study-tools-row{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.study-tool-chip{color:var(--color-navy);font-size:var(--text-sm);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);background:#ffffffe6;border:1px solid #0055a41f;border-radius:999px;padding:10px 14px;font-weight:700}.study-tool-chip:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.study-tool-chip.active{color:var(--color-tricolore-blue);background:#0055a414;border-color:#0055a43d}.study-note-panel{margin-top:var(--space-6);padding:var(--space-4);border-radius:var(--radius-md);gap:var(--space-3);background:#f8f9fcfa;border:1px solid #0000000d;display:grid}.study-note-textarea{resize:vertical;border-radius:var(--radius-md);width:100%;min-height:140px;padding:var(--space-4);font:inherit;color:var(--color-text);background:var(--color-white);border:1px solid #1b2a4a24}.study-note-textarea:focus{border-color:#0055a459;outline:none;box-shadow:0 0 0 3px #0055a414}.study-note-hint{font-size:var(--text-xs);color:var(--color-text-muted)}.option-list{gap:var(--space-3);flex-direction:column;display:flex}.option-item{align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);background:var(--color-white);border:1.5px solid var(--color-warm-gray);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);font-size:var(--text-base);display:flex}.option-item:hover{border-color:var(--color-tricolore-blue);background:var(--color-active-bg)}.option-item.selected{border-color:var(--color-tricolore-blue);background:var(--color-active-bg);box-shadow:0 0 0 1px var(--color-tricolore-blue)}.option-item.correct{border-color:var(--color-correct);background:var(--color-correct-bg)}.option-item.incorrect{border-color:var(--color-incorrect);background:var(--color-incorrect-bg)}.option-item.disabled{cursor:default;opacity:.7}.option-radio{border-radius:var(--radius-full);border:2px solid var(--color-mid-gray);width:20px;height:20px;transition:all var(--duration-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.option-item.selected .option-radio{border-color:var(--color-tricolore-blue);background:var(--color-tricolore-blue)}.option-item.selected .option-radio:after{content:"";border-radius:var(--radius-full);background:#fff;width:8px;height:8px}.option-item.correct .option-radio{border-color:var(--color-correct);background:var(--color-correct)}.option-item.correct .option-radio:after{content:"✓";color:#fff;font-size:var(--text-xs);font-weight:700}.option-item.incorrect .option-radio{border-color:var(--color-incorrect);background:var(--color-incorrect)}.option-item.incorrect .option-radio:after{content:"✗";color:#fff;font-size:var(--text-xs);font-weight:700}.option-label{color:var(--color-navy);margin-right:var(--space-2);font-weight:500}.session-footer{padding-top:var(--space-8);margin-top:var(--space-8);border-top:1px solid var(--color-warm-gray);justify-content:space-between;align-items:center;display:flex}.session-footer-center{font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.timer-display{text-align:center}.timer-time{font-size:var(--text-3xl);font-variant-numeric:tabular-nums;color:var(--color-tricolore-blue);font-weight:700;font-family:var(--font-body)}.timer-time.warning{color:var(--color-warning)}.timer-time.danger{color:var(--color-tricolore-red);animation:1s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.timer-progress{background:var(--color-warm-gray);height:4px;margin-top:var(--space-3);border-radius:2px;overflow:hidden}.timer-progress-bar{background:var(--color-tricolore-blue);border-radius:2px;height:100%;transition:width 1s linear}.timer-progress-bar.warning{background:var(--color-warning)}.timer-progress-bar.danger{background:var(--color-tricolore-red)}.speed-control{align-items:center;gap:var(--space-2);flex-direction:column;display:flex}.speed-control-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600}.speed-buttons{gap:var(--space-2);display:flex}.speed-btn{border-radius:var(--radius-full);border:1.5px solid var(--color-warm-gray);background:var(--color-white);width:44px;height:44px;color:var(--color-text);font-size:var(--text-xs);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;font-weight:700;display:flex}.speed-btn:hover{border-color:var(--color-tricolore-blue);color:var(--color-tricolore-blue)}.speed-btn.active{background:var(--color-tricolore-blue);border-color:var(--color-tricolore-blue);color:#fff}.side-actions{gap:var(--space-3);flex-direction:column;display:flex}.side-action-btn{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1.5px solid var(--color-warm-gray);background:var(--color-white);color:var(--color-text);font-size:var(--text-sm);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);align-items:center;gap:var(--space-2);width:100%;font-weight:500;display:flex}.side-action-btn:hover{border-color:var(--color-tricolore-blue);color:var(--color-tricolore-blue);background:var(--color-active-bg)}.side-action-btn.active{background:var(--color-active-bg);border-color:var(--color-tricolore-blue);color:var(--color-tricolore-blue)}.transcript-panel{background:var(--color-cream);border-radius:var(--radius-md);padding:var(--space-4);font-size:var(--text-sm);color:var(--color-text);border:1px solid var(--color-warm-gray);max-height:200px;line-height:1.7;overflow-y:auto}.dashboard{width:min(var(--page-max), calc(100vw - (var(--page-gutter) * 2)));margin:0 auto;padding:clamp(2rem,3vw,3.25rem) 0 clamp(3rem,5vw,4.5rem)}.dashboard-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:clamp(2rem,4vw,3rem);display:flex}.dashboard-header h1{margin-bottom:var(--space-2)}.dashboard-header p{color:var(--color-text-muted);font-size:var(--text-lg);max-width:38rem}.dashboard-full-exam-btn{color:var(--color-tricolore-blue);font-size:var(--text-sm);cursor:pointer;transition:all var(--duration-fast);white-space:nowrap;background:#ffffffb8;border:1px solid #0055a42e;border-radius:999px;flex-shrink:0;padding:12px 18px;font-weight:700;line-height:1}.dashboard-full-exam-btn:hover{background:#0055a414;transform:translateY(-1px)}.dashboard-grid{gap:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));display:grid}.dashboard-grid-home{grid-template-columns:repeat(2,minmax(0,1fr))}.section-card{padding:var(--space-6);flex-direction:column;min-height:100%;display:flex}.section-card-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.section-card-icon{border-radius:var(--radius-md);width:48px;height:48px;font-size:var(--text-2xl);justify-content:center;align-items:center;display:flex}.section-card-icon.listening{background:linear-gradient(135deg,#e8edfa 0%,#d4dcfa 100%)}.section-card-icon.reading{background:linear-gradient(135deg,#fff8e7 0%,#ffe8b3 100%)}.section-card-icon.writing{background:linear-gradient(135deg,#e7f5e9 0%,#c3e6c7 100%)}.section-card-icon.speaking{background:linear-gradient(135deg,#fae8ec 0%,#f5c9d3 100%)}.btn-danger{background:var(--color-tricolore-red);color:#fff;padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast);border:none;font-weight:600}.btn-danger:hover{background:#a0001f;transform:translateY(-1px)}.animate-in-delay-4{animation-delay:.4s}.section-card-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--color-navy);font-weight:600}.section-card-desc{color:var(--color-text-muted);font-size:var(--text-sm);margin:var(--space-2) 0 0}.section-card-footer{justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:auto;display:flex}.section-card-meta{color:var(--color-text-muted);font-size:var(--text-sm)}.resource-summary-card{margin-top:var(--space-5);padding:var(--space-5);border-radius:var(--radius-lg);background:linear-gradient(#f7fff9f2 0%,#f3faf5fa 100%);border:1px solid #2ecc712e;box-shadow:inset 0 1px #fffc}.resource-summary-row{justify-content:space-between;align-items:center;gap:var(--space-4);color:var(--color-navy);font-size:var(--text-base);display:flex}.resource-summary-row strong{font-family:var(--font-display);color:#0aa84f;font-size:clamp(1.5rem,3vw,2rem)}.resource-summary-divider{height:1px;margin:var(--space-4) 0;background:#2ecc7124}.resource-browse-btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);color:var(--color-navy);font-family:var(--font-display);font-size:var(--text-lg);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);background:linear-gradient(#f8f9fcfa 0%,#f2f3f8fa 100%);border:1px solid #0000000d;font-weight:600;display:inline-flex}.resource-browse-btn:hover{box-shadow:var(--shadow-md);color:var(--color-tricolore-blue);transform:translateY(-1px)}.resource-actions{margin-top:var(--space-5);gap:var(--space-3);grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);display:grid}.resource-actions .resource-browse-btn,.resource-drill-btn{width:100%}.resource-drill-btn{padding:var(--space-4) var(--space-4);border-radius:var(--radius-lg);color:var(--color-tricolore-blue);font-size:var(--text-sm);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);background:#0055a40f;border:1px solid #0055a424;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.resource-drill-btn:hover{box-shadow:var(--shadow-sm);background:#0055a41a;transform:translateY(-1px)}.full-exam-page{width:min(var(--page-max), calc(100vw - (var(--page-gutter) * 2)));margin:0 auto;padding:clamp(2rem,3vw,3rem) 0 clamp(3rem,5vw,4rem)}.full-exam-shell{gap:var(--space-6);display:grid}.full-exam-loading{padding:var(--space-10);text-align:center;color:var(--color-text-muted)}.full-exam-header{justify-content:space-between;align-items:flex-start;gap:var(--space-6);display:flex}.full-exam-header p{color:var(--color-text-muted);margin-top:var(--space-2);max-width:40rem}.full-exam-actions{gap:var(--space-3);flex-wrap:wrap;justify-content:flex-end;display:flex}.full-exam-grid{gap:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.full-exam-card{gap:var(--space-4);padding:var(--space-5);display:grid}.full-exam-card-top{justify-content:space-between;gap:var(--space-4);align-items:flex-start;display:flex}.full-exam-card-title{font-family:var(--font-display);font-size:var(--text-lg);color:var(--color-navy);font-weight:700}.full-exam-card-meta,.full-exam-time{color:var(--color-text-muted);font-size:var(--text-sm)}.full-exam-result{gap:4px;display:grid}.full-exam-score{font-size:var(--text-2xl);font-family:var(--font-display);color:var(--color-navy);font-weight:700}.full-exam-status-current{color:var(--color-tricolore-blue);background:#0055a41a}.full-exam-status-completed{color:var(--color-correct);background:#28a7451f}.full-exam-status-pending{color:var(--color-text-muted);background:#7080901f}@media (width<=960px){.dashboard-grid-home,.full-exam-grid{grid-template-columns:1fr}.dashboard-header,.full-exam-header{flex-direction:column}.full-exam-actions{justify-content:flex-start}}.selector-page{width:min(1480px, calc(100vw - (var(--page-gutter) * 2)));margin:0 auto;padding:clamp(2rem,3vw,3rem) 0 clamp(3rem,5vw,4rem)}.selector-header{margin-bottom:var(--space-8)}.selector-header-row{justify-content:space-between;align-items:flex-start;gap:var(--space-6);display:flex}.selector-subtitle{margin-top:var(--space-2);color:var(--color-text-muted);max-width:42rem}.selector-tabs{box-shadow:var(--shadow-sm);background:#f5f7fbf2;border:1px solid #0055a41f;border-radius:22px;flex-shrink:0;align-items:center;gap:6px;padding:6px;display:inline-flex}.selector-tab{color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);background:0 0;border:none;border-radius:16px;padding:12px 18px;font-weight:700}.selector-tab.active{background:var(--color-white);color:var(--color-navy);box-shadow:var(--shadow-sm)}.selector-grid{gap:var(--space-5);display:grid}.selector-grid-library{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.selector-item-card{padding:var(--space-6);gap:var(--space-5);display:grid}.selector-item-head{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.selector-item-title{color:var(--color-navy);font-size:clamp(1.4rem,2.4vw,2rem);font-weight:700}.selector-item-source{margin-top:var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm)}.selector-item-badge{font-size:var(--text-xs);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:8px 12px;font-weight:700;display:inline-flex}.selector-item-badge.official{color:#0aa84f;background:#2ecc711f}.selector-item-badge.supplement{color:var(--color-tricolore-blue);background:#0055a41a}.selector-progress-panel{min-height:120px;padding:var(--space-4);border-radius:var(--radius-md);align-content:center;gap:var(--space-4);background:linear-gradient(#f8f9fcf2 0%,#f3f4f8fa 100%);border:1px solid #0000000a;display:grid}.selector-progress-row{gap:var(--space-2);display:grid}.selector-progress-meta{justify-content:space-between;align-items:center;gap:var(--space-4);font-size:var(--text-sm);color:var(--color-navy);display:flex}.selector-progress-meta strong{font-family:var(--font-display);font-size:var(--text-lg)}.selector-progress-bar{background:#0000000f;border-radius:999px;width:100%;height:10px;overflow:hidden}.selector-progress-fill{border-radius:inherit;height:100%}.selector-progress-fill.practice{background:linear-gradient(90deg,#69a9ff 0%,#2f7cf5 100%)}.selector-progress-fill.exam{background:linear-gradient(90deg,#3157e0 0%,#1732b7 100%)}.selector-empty-state{color:var(--color-text-muted);font-size:var(--text-base)}.selector-action-row{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.selector-action-btn{width:100%}.selector-action-btn.btn{padding-left:var(--space-4);padding-right:var(--space-4)}.level-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));display:grid}.level-card{padding:var(--space-6);text-align:center;cursor:pointer;gap:var(--space-4);align-content:start;display:grid}.level-card-level{font-size:var(--text-3xl);font-weight:700;font-family:var(--font-display)}.level-card-count{font-size:var(--text-sm);color:var(--color-text-muted)}.level-card-progress{padding-top:var(--space-2);gap:var(--space-2);margin-top:auto;display:grid}.level-card-progress-meta{justify-content:space-between;align-items:center;gap:var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted);display:flex}.level-card-progress-meta strong{color:var(--color-navy);font-family:var(--font-display);font-size:var(--text-base)}.level-card-progress-bar{background:#0000000f;border-radius:999px;width:100%;height:8px;overflow:hidden}.level-card-progress-fill{border-radius:inherit;height:100%}.level-card-progress-fill.level-a1{background:linear-gradient(90deg, #4caf50cc 0%, var(--color-a1) 100%)}.level-card-progress-fill.level-a2{background:linear-gradient(90deg, #8bc34acc 0%, var(--color-a2) 100%)}.level-card-progress-fill.level-b1{background:linear-gradient(90deg, #ffc107d9 0%, var(--color-b1) 100%)}.level-card-progress-fill.level-b2{background:linear-gradient(90deg, #ff9800d9 0%, var(--color-b2) 100%)}.level-card-progress-fill.level-c1{background:linear-gradient(90deg, #8e24aad9 0%, var(--color-c1) 100%)}.level-card-progress-fill.level-c2{background:linear-gradient(90deg, #e91e63d9 0%, var(--color-c2) 100%)}.level-card-empty{font-size:var(--text-sm);color:var(--color-text-muted)}.progress-badge{background:var(--color-correct);color:#fff;border-radius:var(--radius-full);padding:2px 6px;font-size:10px;font-weight:700;line-height:1.3;position:absolute;top:6px;right:6px}.drill-levels-row{gap:var(--space-2);padding:var(--space-3) var(--space-4);grid-template-columns:repeat(6,1fr);display:grid}.drill-level-btn{padding:var(--space-2) var(--space-1);border-radius:var(--radius-lg);background:var(--color-white);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);border:1px solid #0000000f;flex-direction:column;justify-content:center;align-items:center;display:flex;box-shadow:0 1px 4px #0000000d}.drill-level-btn:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.drill-level-name{font-size:var(--text-lg);font-weight:800;line-height:1.2}.drill-level-count{color:var(--color-text-muted);margin-top:2px;font-size:10px;font-weight:500}.drill-level-btn.level-a1 .drill-level-name{color:var(--color-a1)}.drill-level-btn.level-a2 .drill-level-name{color:var(--color-a2)}.drill-level-btn.level-b1 .drill-level-name{color:var(--color-b1)}.drill-level-btn.level-b2 .drill-level-name{color:var(--color-b2)}.drill-level-btn.level-c1 .drill-level-name{color:var(--color-c1)}.drill-level-btn.level-c2 .drill-level-name{color:var(--color-c2)}.results-page{width:min(1180px, calc(100vw - (var(--page-gutter) * 2)));margin:0 auto;padding:clamp(2rem,3vw,3rem) 0 clamp(3rem,5vw,4rem)}.results-score{text-align:center;padding:var(--space-12)}.results-score-number{font-size:4rem;font-weight:700;font-family:var(--font-display);color:var(--color-navy)}.results-score-label{color:var(--color-text-muted);margin-top:var(--space-2)}.results-stats{gap:var(--space-4);margin:var(--space-6) 0;grid-template-columns:repeat(3,1fr);display:grid}.stat-card{text-align:center;padding:var(--space-4)}.stat-value{font-size:var(--text-2xl);color:var(--color-navy);font-weight:700}.stat-label{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.login-page{min-height:calc(100vh - var(--navbar-height));width:min(1360px, calc(100vw - (var(--page-gutter) * 2)));justify-content:center;align-items:center;margin:0 auto;padding:clamp(2rem,4vw,4rem) 0;display:flex}.login-card{width:100%;max-width:560px;padding:clamp(2rem,3vw,3rem)}.login-card h2{text-align:center;margin-bottom:var(--space-6)}.form-group{margin-bottom:var(--space-4)}.form-label{font-size:var(--text-sm);color:var(--color-text);margin-bottom:var(--space-2);font-weight:500;display:block}.form-input{width:100%;padding:var(--space-3) var(--space-4);border:1.5px solid var(--color-warm-gray);border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text);transition:border-color var(--duration-fast);background:var(--color-white)}.form-input:focus{border-color:var(--color-tricolore-blue);outline:none;box-shadow:0 0 0 3px #0023951a}.form-error{color:var(--color-incorrect);font-size:var(--text-sm);margin-top:var(--space-2)}.btn-google{padding:var(--space-3) var(--space-5);background:var(--color-white);border:1.5px solid var(--color-warm-gray);border-radius:var(--radius-md);font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);justify-content:center;align-items:center;font-weight:500;display:flex}.btn-google:hover{border-color:var(--color-mid-gray);background:var(--color-cream);box-shadow:var(--shadow-sm)}.login-divider{align-items:center;gap:var(--space-4);margin:var(--space-5) 0;color:var(--color-text-muted);font-size:var(--text-sm);display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--color-warm-gray);flex:1;height:1px}.history-page{width:min(var(--page-max), calc(100vw - (var(--page-gutter) * 2)));margin:0 auto;padding:clamp(2rem,3vw,3rem) 0 clamp(3rem,5vw,4rem)}.history-table{border-collapse:separate;border-spacing:0;width:100%}.history-table th{text-align:left;padding:var(--space-3) var(--space-4);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);border-bottom:2px solid var(--color-warm-gray);font-weight:700}.history-table td{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);border-bottom:1px solid var(--color-warm-gray)}.history-table tbody tr{transition:background var(--duration-fast)}.history-table tbody tr:hover{background:var(--color-active-bg)}.saved-page{width:min(var(--page-max), calc(100vw - (var(--page-gutter) * 2)));margin:0 auto;padding:clamp(2rem,3vw,3rem) 0 clamp(3rem,5vw,4rem)}.saved-header{justify-content:space-between;align-items:flex-start;gap:var(--space-5);margin-bottom:var(--space-8);display:flex}.saved-subtitle{margin-top:var(--space-2);color:var(--color-text-muted);max-width:42rem}.saved-tabs{background:#f5f7fbf2;border:1px solid #0055a41a;border-radius:18px;gap:6px;padding:6px;display:inline-flex}.saved-tab{color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer;background:0 0;border:none;border-radius:12px;padding:10px 16px;font-weight:700}.saved-tab.active{background:var(--color-white);color:var(--color-navy);box-shadow:var(--shadow-sm)}.saved-empty{padding:var(--space-10);text-align:center;color:var(--color-text-muted)}.saved-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(320px,1fr));display:grid}.saved-card{padding:var(--space-5);gap:var(--space-4);display:grid}.saved-card-top{justify-content:space-between;gap:var(--space-4);align-items:flex-start;display:flex}.saved-card-meta{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.saved-card-title{margin-top:var(--space-2);font-size:var(--text-xl);color:var(--color-navy)}.saved-favorite-btn{background:var(--color-white);width:40px;height:40px;color:var(--color-text-muted);font-size:var(--text-lg);cursor:pointer;border:1px solid #0055a41f;border-radius:999px}.saved-favorite-btn.active{color:var(--color-warning);background:#fff8e7eb;border-color:#d4930d59}.saved-preview-block,.saved-note-block{padding:var(--space-4);border-radius:var(--radius-md);background:#f8f9fcfa;border:1px solid #0000000a}.saved-block-label{font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--space-2);font-weight:700}.saved-preview-block p,.saved-note-block p{font-size:var(--text-sm);color:var(--color-text);white-space:pre-wrap;line-height:1.7}.saved-card-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.saved-library-layout{gap:var(--space-5);grid-template-columns:minmax(240px,300px) minmax(0,1fr);display:grid}.saved-library-nav{padding:var(--space-3);gap:var(--space-2);max-height:calc(100vh - 220px);top:calc(var(--navbar-height) + var(--space-4));flex-direction:column;display:flex;position:sticky;overflow-y:auto}.saved-library-link{text-align:left;border-radius:var(--radius-md);width:100%;padding:var(--space-3);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);background:#f8f9fcfa;border:1px solid #0000}.saved-library-link:hover{background:#f2f6fff2;border-color:#0055a41f}.saved-library-link.active{background:#0055a414;border-color:#0055a43d}.saved-library-link-title{color:var(--color-navy);font-weight:700}.saved-library-link-meta{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:6px}.saved-library-main{padding:var(--space-6);gap:var(--space-5);display:grid}.saved-library-audio{width:100%}.lang-toggle{border-radius:var(--radius-full);background:#ffffff26;padding:2px;display:flex}.lang-toggle button{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);color:#fff9;font-size:var(--text-xs);cursor:pointer;transition:all var(--duration-fast);background:0 0;border:none;font-weight:600}.lang-toggle button.active{color:var(--color-navy);background:#fff}.user-avatar-wrapper{position:relative}.user-avatar{border-radius:var(--radius-full);background:var(--color-tricolore-blue);color:#fff;width:36px;height:36px;font-size:var(--text-xs);letter-spacing:.03em;cursor:pointer;transition:all var(--duration-fast) var(--ease-out);border:2px solid #ffffff4d;justify-content:center;align-items:center;font-weight:700;display:flex}.user-avatar:hover{border-color:#fff9;transform:scale(1.05)}.user-dropdown{background:var(--color-white);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);min-width:200px;animation:fadeIn var(--duration-fast) var(--ease-out);z-index:100;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}.user-dropdown-email{padding:var(--space-3) var(--space-4);font-size:var(--text-xs);color:var(--color-text-muted);border-bottom:1px solid var(--color-warm-gray);word-break:break-all}.user-dropdown-item{width:100%;padding:var(--space-3) var(--space-4);text-align:left;font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text);cursor:pointer;transition:background var(--duration-fast);background:0 0;border:none}.user-dropdown-item:hover{background:var(--color-cream);color:var(--color-tricolore-red)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}.animate-in{animation:fadeIn var(--duration-slow) var(--ease-out) both}.animate-in-delay-1{animation-delay:.1s}.animate-in-delay-2{animation-delay:.2s}.animate-in-delay-3{animation-delay:.3s}@media (width<=768px){.session-layout{grid-template-columns:1fr}.session-nav{top:var(--navbar-height);z-index:90;background:var(--color-white);max-height:none;display:none;position:fixed;bottom:0;left:0;right:0}.session-nav.open{display:block}.session-side{height:auto;padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-warm-gray);z-index:80;justify-content:space-around;align-items:center;gap:var(--space-3);border-left:none;flex-direction:row;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px #0000000d}.session-content{padding:var(--space-4);padding-bottom:80px}.navbar{padding:var(--space-3) var(--space-4)}.navbar-links{display:none}.dashboard{width:calc(100vw - (var(--space-4) * 2));padding:var(--space-4) 0 calc(var(--space-8) * 1.2)}.dashboard-grid{grid-template-columns:1fr}.selector-page,.history-page,.saved-page,.results-page,.login-page{width:calc(100vw - (var(--space-4) * 2));padding-left:0;padding-right:0}.resource-summary-row{font-size:var(--text-sm)}.resource-summary-row strong{font-size:var(--text-xl)}.resource-actions{grid-template-columns:1fr}.selector-header-row{flex-direction:column}.selector-tabs{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;display:grid}.selector-tab{width:100%;padding-left:var(--space-3);padding-right:var(--space-3)}.selector-grid-library{grid-template-columns:1fr}.selector-item-card{padding:var(--space-5)}.selector-item-head{flex-direction:column}.selector-action-row{grid-template-columns:1fr}.saved-header{flex-direction:column}.saved-tabs{grid-template-columns:repeat(3,minmax(0,1fr));width:100%;display:grid}.saved-grid,.saved-library-layout{grid-template-columns:1fr}.saved-library-nav{max-height:none;position:static}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}.results-stats{grid-template-columns:1fr}}.mobile-nav-toggle{color:#fff;font-size:var(--text-xl);cursor:pointer;padding:var(--space-2);background:0 0;border:none;display:none}@media (width<=768px){.mobile-nav-toggle{align-items:center;display:flex}}.submit-overlay{z-index:200;animation:fadeIn var(--duration-fast) var(--ease-out);background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.submit-dialog{background:var(--color-white);border-radius:var(--radius-xl);padding:var(--space-8);text-align:center;width:90%;max-width:400px;box-shadow:var(--shadow-xl)}.submit-dialog h3{margin-bottom:var(--space-4)}.submit-dialog p{color:var(--color-text-muted);margin-bottom:var(--space-6)}.submit-dialog-actions{gap:var(--space-3);justify-content:center;display:flex}
