@import"https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700&family=Instrument+Sans:wght@400;500;600;700&display=swap";:root{color-scheme:light;--c-bg: #F7F6FB;--c-surface: #FFFFFF;--c-surface-sunk: #ECEAF4;--c-surface-raised: #FFFFFF;--c-border: #D7D3E3;--c-border-strong: #16141A;--c-ink: #16141A;--c-ink-soft: #4A4650;--c-ink-mute: #5F5A66;--c-ink-on-primary: #FFFFFF;--c-primary: #B34800;--c-primary-deep: #943900;--c-primary-soft: #FFE9DB;--c-link: #9A3800;--c-orange: #F97316;--c-orange-deep: #EA580C;--c-success: #0B7A4B;--c-success-deep: #095E3B;--c-success-soft: #DCF5E4;--c-success-bg: var(--c-success);--c-success-bg-hover: var(--c-success-deep);--c-success-ink: var(--c-success);--c-error: #B3261E;--c-error-deep: #8C1D18;--c-error-soft: #FDE2E0;--c-error-bg: var(--c-error);--c-error-bg-hover: var(--c-error-deep);--c-error-ink: var(--c-error);--c-attention: #92400E;--c-attention-deep: #7A3410;--c-attention-soft: #FCEBD3;--c-attention-bg-hover: #F8DCC0;--c-focus: #B34800;--c-rarity-rare: #0284C7;--c-rarity-epic: #5B2EE5;--c-rarity-legendary: #B8860B;--c-info: var(--c-primary);--c-info-deep: var(--c-primary-deep);--c-info-soft: var(--c-primary-soft);--c-streak: var(--c-orange);--c-streak-deep: var(--c-orange-deep);--c-streak-soft: var(--c-primary-soft);--c-sub-francais: #7B4DFF;--c-sub-maths: #0284C7;--c-sub-hist: #EA580C;--c-sub-svt: #16A34A;--c-sub-physique: #DB2777;--c-sub-langues: #D97706;--c-sub-autre: #6E6A76;--f-display: "Bricolage Grotesque", "Instrument Sans", system-ui, sans-serif;--f-body: "Instrument Sans", system-ui, -apple-system, sans-serif;--t-micro: .75rem;--t-small: .875rem;--t-body: 1rem;--t-h2: 1.25rem;--t-h1: 1.7rem;--t-hero: 2.4rem;--w-regular: 400;--w-medium: 500;--w-semibold: 600;--w-bold: 700;--r-card: 20px;--r-btn: 14px;--r-input: 14px;--r-pill: 999px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-7: 28px;--s-8: 32px;--s-9: 40px;--s-10: 44px;--s-12: 48px;--c-nav-ink: #FFFFFF;--c-nav-active-bg: #FFFFFF;--c-nav-active-ink: var(--c-primary);--c-nav-wash: rgb(255 255 255 / 14%);--c-nav-wash-strong: rgb(255 255 255 / 24%);--c-nav-wash-soft: rgb(255 255 255 / 8%);--c-backdrop: rgb(22 20 26 / 50%);--c-scrim: rgb(179 72 0 / 85%);--shadow-float: 0 8px 24px rgb(22 20 26 / 10%);--motion-instant: 60ms;--motion-fast: .14s;--motion-base: .22s;--motion-pop: .26s;--ease-press: cubic-bezier(.2, 0, 0, 1)}[data-theme=dark]{color-scheme:dark;--c-bg: #121016;--c-surface: #1B1822;--c-surface-sunk: #241F2E;--c-surface-raised: #1B1822;--c-border: rgb(255 255 255 / 8%);--c-border-strong: #F2F0F7;--c-ink: #F2F0F7;--c-ink-soft: #B7B2C2;--c-ink-mute: #A29CB0;--c-ink-on-primary: #0F0D14;--c-primary: #FB923C;--c-primary-deep: #F97316;--c-primary-soft: #3B2416;--c-link: #FFB380;--c-orange: #FB923C;--c-orange-deep: #F97316;--c-success: #4ADE80;--c-success-deep: #86EFAC;--c-success-soft: #14331F;--c-success-bg: #15803D;--c-success-bg-hover: #0E5E2F;--c-success-ink: var(--c-success);--c-error: #FCA5A5;--c-error-deep: #FECACA;--c-error-soft: #3A1717;--c-error-bg: #B3261E;--c-error-bg-hover: #8C1D18;--c-error-ink: var(--c-error);--c-attention: #FBBF24;--c-attention-deep: #FDE68A;--c-attention-soft: #3A2A10;--c-attention-bg-hover: #4A3413;--c-focus: #FB923C;--c-rarity-rare: #38BDF8;--c-rarity-epic: #8B5CF6;--c-rarity-legendary: #F5C518;--c-info: var(--c-ink-soft);--c-info-deep: var(--c-ink-soft);--c-info-soft: var(--c-primary-soft);--c-streak: var(--c-orange);--c-streak-deep: var(--c-orange-deep);--c-streak-soft: var(--c-attention-soft);--c-sub-francais: #9777FF;--c-sub-maths: #38BDF8;--c-sub-hist: #FB8A3C;--c-sub-svt: #3CCB7F;--c-sub-physique: #F472B6;--c-sub-langues: #FBBF24;--c-sub-autre: #A39DB0;--c-nav-wash: rgb(255 255 255 / 8%);--c-nav-wash-strong: rgb(255 255 255 / 14%);--c-nav-wash-soft: rgb(255 255 255 / 5%);--c-nav-ink: #F2F0F7;--c-nav-active-bg: var(--c-primary);--c-nav-active-ink: var(--c-ink-on-primary);--c-backdrop: rgb(0 0 0 / 62%);--c-scrim: rgb(0 0 0 / 78%);--shadow-float: 0 8px 24px rgb(0 0 0 / 40%)}:root{color-scheme:light;font-family:var(--f-body);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:var(--c-bg);color:var(--c-ink);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}h1,h2,h3,h4{font-family:var(--f-display)}.auth-frame{min-height:100svh;display:grid;place-items:center;padding:var(--s-5);background:var(--c-bg)}.auth-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--s-5);width:100%;max-width:432px;padding:var(--s-7) var(--s-5);background:var(--c-surface);border-radius:var(--r-card);border:2px solid var(--c-border)}.auth-actions{position:absolute;top:var(--s-4);right:var(--s-4)}.auth-brand{display:grid;place-items:center}.auth-brand__mark{display:grid;place-items:center;width:var(--s-6);height:var(--s-6);border-radius:var(--r-btn);background:var(--c-primary-soft);color:var(--c-primary)}.auth-head{display:grid;gap:var(--s-2);text-align:center}.auth-title{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h2);line-height:1.3;letter-spacing:-.01em;color:var(--c-ink)}.auth-subtitle{margin:0;font-family:var(--f-body);font-weight:var(--w-regular);font-size:var(--t-body);line-height:1.5;color:var(--c-ink-soft)}.auth-form{display:grid;gap:var(--s-4);width:100%}.auth-field{display:grid;gap:var(--s-2)}.auth-label{font-family:var(--f-body);font-weight:var(--w-medium);font-size:var(--t-small);line-height:1.3;color:var(--c-ink-mute)}.auth-input{min-height:48px;width:100%;padding:var(--s-3) 0;background:transparent;border:0;border-bottom:2px solid var(--c-border-strong);border-radius:0;color:var(--c-ink);font-size:var(--t-body);transition:border-color var(--motion-fast) var(--ease-press),background-color var(--motion-fast) var(--ease-press)}.auth-input:focus{outline:none;border-color:var(--c-focus);background:transparent}.auth-input:hover{border-color:var(--c-primary)}.auth-submit{width:100%;min-height:48px;padding:var(--s-3) var(--s-5);border-radius:var(--r-btn);background:var(--c-primary);color:var(--c-ink-on-primary);font-family:var(--f-body);font-weight:var(--w-semibold);font-size:var(--t-body);transition:background-color var(--motion-fast) var(--ease-press)}.auth-submit:hover:not(:disabled){background:var(--c-primary-deep)}.auth-submit:active:not(:disabled){background:var(--c-primary-deep)}.auth-submit{box-shadow:0 4px 0 var(--c-primary-deep)}.auth-submit:active:not(:disabled){transform:translateY(4px);box-shadow:none}.auth-footer{display:flex;align-items:center;justify-content:center;gap:var(--s-2);color:var(--c-ink-soft);font-size:var(--t-small)}.auth-note{font-size:var(--t-small);color:var(--c-ink-soft)}.auth-error{width:100%;text-align:center;font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-error-ink)}.form-grid .field-label,.compact-form .field-label{font-weight:var(--w-medium);font-size:var(--t-small);color:var(--c-ink-mute)}@media(max-width:480px){.auth-frame{padding:0}.auth-card{border:0;border-radius:0;box-shadow:none;min-height:100svh;width:100%;justify-content:center;padding:var(--s-5)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:0ms!important;animation-duration:0ms!important}}.form-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-4)}.compact-form{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-3)}.form-grid .photo-btn{width:100%;justify-content:center}input,select,textarea{width:100%;border:0;border-bottom:2px solid var(--c-border-strong);border-radius:0;background:transparent;color:var(--c-ink);padding:var(--s-3) var(--s-1);font-weight:var(--w-medium);transition:border-color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}input::placeholder,textarea::placeholder{color:var(--c-ink-mute)}input:focus,select:focus,textarea:focus{border-color:var(--c-focus);outline:none;box-shadow:none;background:transparent}select{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;padding-right:var(--s-6)}textarea{min-height:110px;resize:vertical}input[type=file]{padding:var(--s-2);font-weight:var(--w-medium);border:2px dashed var(--c-border)}.btn-primary,.btn-secondary,.btn-success,.btn-danger,.btn-tertiary,.form-grid button,.compact-form button,.quiz-list button{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:44px;padding:var(--s-2) var(--s-4);border-radius:var(--r-btn);font-family:var(--f-body);font-weight:var(--w-semibold);font-size:var(--t-body);line-height:1.2;transition:background-color var(--motion-fast) var(--ease-press),transform var(--motion-instant) var(--ease-press),border-color var(--motion-fast) var(--ease-press)}.btn-primary,.form-grid button,.compact-form button,.quiz-list button,.photo-import{background:var(--c-primary);color:var(--c-ink-on-primary)}.btn-primary:hover:not(:disabled),.form-grid button:hover:not(:disabled),.compact-form button:hover:not(:disabled),.quiz-list button:hover:not(:disabled),.photo-import:hover:not(:disabled){background:var(--c-primary-deep)}.btn-primary:active:not(:disabled),.form-grid button:active:not(:disabled),.compact-form button:active:not(:disabled),.quiz-list button:active:not(:disabled){background:var(--c-primary-deep)}.btn-secondary{background:var(--c-surface-raised);color:var(--c-ink);border:2px solid var(--c-border)}.btn-secondary:hover:not(:disabled){background:var(--c-surface-sunk)}.btn-success{background:var(--c-success-bg);color:var(--c-ink-on-primary)}.btn-success:hover:not(:disabled){background:var(--c-success-bg-hover)}.btn-danger{background:var(--c-error-bg);color:var(--c-ink-on-primary)}.btn-danger:hover:not(:disabled){background:var(--c-error-bg-hover)}.btn-primary,.form-grid button,.compact-form button,.quiz-list button,.photo-import{box-shadow:0 4px 0 var(--c-primary-deep)}.btn-success{box-shadow:0 4px 0 var(--c-success-deep)}.btn-danger{box-shadow:0 4px 0 var(--c-error-deep)}.btn-secondary{box-shadow:0 4px 0 var(--c-surface-sunk)}.btn-primary:active:not(:disabled),.form-grid button:active:not(:disabled),.compact-form button:active:not(:disabled),.quiz-list button:active:not(:disabled),.photo-import:active:not(:disabled),.btn-success:active:not(:disabled),.btn-danger:active:not(:disabled),.btn-secondary:active:not(:disabled){transform:translateY(4px);box-shadow:none}.btn-tertiary{background:transparent;color:var(--c-primary);border-radius:0;padding:var(--s-2) var(--s-1)}.btn-tertiary:hover:not(:disabled){background:var(--c-primary-soft)}.btn-primary:disabled,.btn-secondary:disabled,.btn-success:disabled,.btn-danger:disabled,.btn-tertiary:disabled{opacity:.5;cursor:not-allowed}.btn-primary:focus-visible,.btn-secondary:focus-visible,.btn-success:focus-visible,.btn-danger:focus-visible,.btn-tertiary:focus-visible,.form-grid button:focus-visible,.compact-form button:focus-visible,.quiz-list button:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.shell{min-height:100vh;display:grid;grid-template-columns:1fr}.sidebar{display:flex;align-items:center;height:64px;gap:var(--s-2);padding:var(--s-2) var(--s-5);position:sticky;top:0;z-index:30;background:var(--c-primary);color:var(--c-nav-ink);box-shadow:none}.brand{display:flex;align-items:center;gap:var(--s-2);margin-right:auto;min-width:0}.brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r-btn);background:var(--c-ink-on-primary);color:var(--c-primary);font-size:var(--t-body);box-shadow:none}.brand strong{font-family:var(--f-display);font-size:var(--t-body);font-weight:var(--w-bold);line-height:1}.brand small{display:none}nav{display:flex;gap:var(--s-1)}nav button{display:inline-flex;align-items:center;gap:var(--s-1);background:var(--c-nav-wash);color:var(--c-nav-ink);border-radius:var(--r-btn);padding:var(--s-2) var(--s-4);font-weight:var(--w-semibold);font-size:var(--t-small);transition:background var(--motion-fast) var(--ease-press),color var(--motion-fast) var(--ease-press);white-space:nowrap}nav button .nav-ico{font-size:var(--t-body)}nav button:hover:not(:disabled){background:var(--c-nav-wash-strong)}nav button.active{background:var(--c-nav-active-bg);color:var(--c-nav-active-ink)}nav button:disabled{opacity:.55}.account{display:flex;align-items:center;gap:var(--s-2);position:relative}.account-btn{display:inline-flex;align-items:center;gap:var(--s-2);min-height:44px;padding:var(--s-1);border-radius:var(--r-btn);background:transparent;color:var(--c-nav-ink);font-weight:var(--w-semibold);transition:background var(--motion-fast) var(--ease-press)}.account-btn:hover{background:var(--c-nav-wash)}.account-avatar{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--r-btn);background:var(--c-nav-wash-strong);color:var(--c-nav-ink);font-weight:var(--w-bold);font-family:var(--f-display);font-size:var(--t-body);flex-shrink:0}.account-copy{display:none;min-width:0;flex:1;text-align:left}.account-chevron{display:none;flex-shrink:0;opacity:.9}.account-theme{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;border-radius:var(--r-btn);background:var(--c-nav-wash);color:var(--c-nav-ink);transition:background var(--motion-fast) var(--ease-press)}.account-theme:hover{background:var(--c-nav-wash-strong)}.account-menu{position:fixed;left:0;right:0;bottom:0;z-index:90;display:grid;gap:var(--s-2);background:var(--c-surface-raised);color:var(--c-ink);border-radius:var(--r-card) var(--r-card) 0 0;box-shadow:var(--shadow-float);padding:var(--s-5) var(--s-5) calc(env(safe-area-inset-bottom) + var(--s-5))}.account-menu-info{display:grid;gap:2px;padding:var(--s-1) var(--s-5) var(--s-3);border-bottom:1px solid var(--c-border)}.account-menu-name{font-weight:var(--w-bold);font-size:var(--t-body);color:var(--c-ink);font-family:var(--f-display)}.account-menu-role{color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-micro)}.account-menu-item{display:flex;align-items:center;gap:var(--s-3);min-height:48px;padding:var(--s-2) var(--s-5);border-radius:var(--r-btn);background:transparent;color:var(--c-ink);font-weight:var(--w-semibold);font-size:var(--t-body);text-align:left;transition:background var(--motion-fast) var(--ease-press)}.account-menu-item:hover{background:var(--c-primary-soft)}.account-menu-item.danger{color:var(--c-error-ink)}.account-menu-item.danger:hover{background:var(--c-error-soft)}.nav-group{display:grid;gap:var(--s-1)}.nav-group-title{margin:var(--s-4) 0 2px;padding:0 var(--s-3);color:var(--c-primary-soft);font-size:var(--t-micro);font-weight:var(--w-semibold);text-transform:uppercase;letter-spacing:.08em}.nav-group-toggle{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);width:100%;padding:var(--s-2) var(--s-5);border-radius:var(--r-btn);background:transparent;color:var(--c-nav-ink);font-weight:var(--w-semibold);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.08em;transition:background var(--motion-fast) var(--ease-press)}.nav-group-toggle:hover{background:var(--c-nav-wash-soft)}.nav-group-toggle .nav-group-chevron{transition:transform var(--motion-fast) var(--ease-press)}.nav-group-toggle .nav-group-chevron.collapsed{transform:rotate(-90deg)}.nav-group-list{list-style:none;margin:var(--s-1) 0 var(--s-1);padding:0 0 var(--s-2);display:grid;gap:var(--s-1)}.nav-group-list.collapsed{display:none}@media(prefers-reduced-motion:reduce){.nav-group-toggle .nav-group-chevron,.account-chevron{transition:none}}.mobile-nav{position:fixed;left:0;right:0;bottom:0;height:56px;display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));align-items:stretch;background:var(--c-surface-raised);box-shadow:var(--shadow-float);z-index:82;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:44px;min-width:0;background:transparent;color:var(--c-ink-mute);font-weight:var(--w-semibold);font-size:var(--t-micro);line-height:1;transition:color var(--motion-fast) var(--ease-press)}.mobile-nav button .mnav-ico{display:block;font-size:22px;line-height:1}.mobile-nav button .mnav-label{display:block}.mobile-nav button.active{color:var(--c-primary)}.mobile-nav button.active:after{content:"";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:32px;height:3px;border-radius:3px;background:var(--c-primary)}.mobile-nav button:disabled{opacity:.5}.main{min-width:0;padding:clamp(14px,2vw,var(--s-6))}.content{max-width:1080px;margin:0 auto}.page-stack{display:grid;gap:var(--s-5);grid-template-columns:minmax(0,1fr)}.page-header{display:flex;flex-direction:column;gap:var(--s-4);background:var(--c-surface);border-radius:var(--r-card);padding:var(--s-4);border:2px solid var(--c-border)}.page-header h1{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h1);line-height:1.1;letter-spacing:-.02em;color:var(--c-ink)}.page-header .hello{margin:0;color:var(--c-primary);font-weight:var(--w-semibold);font-size:var(--t-small)}.page-header .sub{margin:0;color:var(--c-ink-soft);font-weight:var(--w-medium)}.course-view .page-header{border-top:8px solid var(--band, var(--c-primary))}.course-view .page-header .hello{color:var(--band, var(--c-primary))}.kicker{margin:0 0 var(--s-2);color:var(--c-primary);font-weight:var(--w-medium);font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.12em}.gamify-row{display:grid;grid-template-columns:1fr;gap:var(--s-4);margin-bottom:var(--s-4)}.pill{display:inline-flex;align-items:center;gap:var(--s-2);justify-content:center;flex:1;min-width:0;text-align:center;border-radius:var(--r-btn);padding:var(--s-3) var(--s-4);font-weight:var(--w-medium);background:var(--c-surface);color:var(--c-ink)}.pill .pill-ico{font-size:var(--t-body);color:var(--c-ink-soft)}.pill b{font-size:var(--t-h2);font-family:var(--f-display);font-weight:var(--w-bold);line-height:1.2;color:var(--c-ink)}.pill small{display:block;font-size:var(--t-micro);color:var(--c-ink-soft);font-weight:var(--w-medium)}.metric-row{display:grid;grid-template-columns:1fr;gap:var(--s-4);min-width:0}.metric{min-width:0;padding:var(--s-3) var(--s-4);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink);border:2px solid var(--c-border)}.metric span{display:block;color:var(--c-ink-mute);font-size:var(--t-small);font-weight:var(--w-medium)}.metric b{font-size:var(--t-hero);font-family:var(--f-display);font-weight:var(--w-bold);line-height:1.1;color:var(--c-ink);word-break:break-word}.metric-sub{display:block;color:var(--c-ink-soft);font-size:var(--t-micro);font-weight:var(--w-medium);margin-top:2px;font-style:normal}.grid{display:grid;gap:var(--s-4)}.grid.two,.grid.three,.grid.wide-left{grid-template-columns:minmax(0,1fr)}.panel{background:var(--c-surface);border-radius:var(--r-card);padding:var(--s-5);border:2px solid var(--c-border)}.panel h2{margin:0 0 var(--s-4);font-family:var(--f-display);font-size:var(--t-h2);font-weight:var(--w-semibold);display:flex;align-items:center;gap:var(--s-2)}.panel h2:before{content:"";width:4px;height:1.1em;border-radius:2px;background:var(--c-primary);display:inline-block;flex-shrink:0}.panel.empty{color:var(--c-ink-soft);text-align:center;padding:var(--s-6);font-weight:var(--w-medium)}.notice{padding:var(--s-3) var(--s-5);border-radius:var(--r-btn);margin-bottom:var(--s-4);font-weight:var(--w-medium);display:flex;align-items:center;gap:var(--s-2)}.notice.error{color:var(--c-error-ink);background:var(--c-error-soft)}.notice.success{color:var(--c-success-ink);background:var(--c-success-soft)}.notice.warn{color:var(--c-attention-deep);background:var(--c-attention-soft)}.notice.status-running{color:var(--c-ink);background:var(--c-surface-sunk)}.student-list,.course-list,.timeline,.cards{display:grid;gap:var(--s-2)}.row-button,.course-list button{display:flex;justify-content:space-between;gap:var(--s-3);align-items:center;width:100%;text-align:left;padding:var(--s-3) var(--s-5);border-radius:var(--r-card);background:var(--c-surface);color:var(--c-ink);font-weight:var(--w-medium);transition:border-color var(--motion-fast) var(--ease-press),transform var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}.row-button:hover,.course-list button:hover:not(:disabled){transform:translateY(-2px);border:2px solid var(--c-border-strong);background:var(--c-surface)}.row-button.selected{background:var(--c-primary-soft);border:2px solid var(--c-border)}.row-button small,.course-list button small{display:block;color:var(--c-ink-soft);font-weight:var(--w-medium)}.row-button b,.course-list button b{color:var(--c-primary);font-weight:var(--w-bold);white-space:nowrap}.course-list button{flex-direction:column;align-items:stretch;gap:var(--s-1)}.course-list button .course-ico{font-size:1.3rem}.course-list button .status{color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-micro)}.course-list button .status.done{color:var(--c-success-ink)}.course-list button .status.ready{color:var(--c-info)}.chips{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-4)}.chips span{border-radius:var(--r-pill);padding:var(--s-2) var(--s-4);font-weight:var(--w-semibold);color:var(--c-ink);background:var(--c-attention-soft);transition:transform var(--motion-fast) var(--ease-press)}.chips span:hover{transform:translateY(-2px)}.chips span{border-left:6px solid var(--chip, var(--c-primary))}.timeline div{display:flex;justify-content:space-between;gap:var(--s-2);align-items:center;border-bottom:1px solid var(--c-border);padding:var(--s-3) 0}.timeline div:last-child{border-bottom:0}.timeline b{color:var(--c-primary);font-weight:var(--w-bold)}.timeline span{color:var(--c-ink-soft);font-weight:var(--w-medium)}.paper{background:var(--c-surface)}.markdown h1{font-family:var(--f-display);font-size:var(--t-h1);font-weight:var(--w-bold);letter-spacing:-.02em;margin:0 0 var(--s-5)}.markdown h2{margin:var(--s-6) 0 var(--s-3);color:var(--c-primary);font-family:var(--f-display)}.markdown p,.markdown li{line-height:1.72;color:var(--c-ink);font-size:var(--t-body)}.markdown ul{padding-left:var(--s-5)}.markdown strong{color:var(--c-ink)}.markdown h3{margin:var(--s-5) 0 var(--s-3);color:var(--c-primary);font-family:var(--f-display)}.markdown ol{padding-left:var(--s-5)}.markdown blockquote{margin:var(--s-3) 0;padding:var(--s-3) var(--s-5);border-left:4px solid var(--c-info);background:var(--c-surface-sunk);border-radius:0 var(--r-btn) var(--r-btn) 0;color:var(--c-ink-soft);font-style:italic}.markdown img{max-width:100%;height:auto;border-radius:var(--r-card);margin:var(--s-2) 0;display:block}.course-guide{display:flex;flex-direction:column;gap:var(--s-4)}.guide-head{margin-bottom:0}.guide-body{max-width:65ch;text-align:left;color:var(--c-ink)}.course-guide .markdown,.course-guide .markdown p,.course-guide .markdown li{font-size:var(--t-body);line-height:1.68;color:var(--c-ink)}.course-guide .markdown h1,.course-guide .markdown h2,.course-guide .markdown h3{margin:var(--s-6) 0 var(--s-2);color:var(--c-ink);position:relative;padding-left:14px}.course-guide .markdown h1:before,.course-guide .markdown h2:before,.course-guide .markdown h3:before{content:"";position:absolute;left:2px;top:.2em;width:4px;height:1em;border-radius:2px;background:var(--band, var(--c-primary))}.course-guide .markdown>:first-child{margin-top:0}.guide-edit-btn{width:44px;height:44px;padding:0;gap:0;flex:0 0 auto}.guide-editor{display:grid;gap:var(--s-3)}.guide-toolbar{display:flex;flex-wrap:wrap;gap:var(--s-2)}.tool-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-btn);background:var(--c-surface-raised);color:var(--c-ink-soft);border:2px solid var(--c-border);transition:color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press),border-color var(--motion-fast) var(--ease-press)}.tool-btn:hover{color:var(--c-primary);background:var(--c-primary-soft)}.tool-btn:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.guide-textarea{width:100%;min-height:320px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--t-small);line-height:1.55;padding:var(--s-3) var(--s-5);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface);color:var(--c-ink)}.guide-textarea:focus{outline:none;border-color:var(--c-focus)}.ocr-textarea{width:100%;min-height:40vh;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:var(--t-small);line-height:1.55;padding:var(--s-3) var(--s-5);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface);color:var(--c-ink)}.ocr-textarea:focus{outline:none;border-color:var(--c-focus)}.ocr-count{margin:0;font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-ink-soft);text-align:right}.ocr-warn{display:block;padding:var(--s-2) var(--s-5);border-left:4px solid var(--c-attention);background:var(--c-attention-soft);border-radius:var(--r-btn)}.ocr-ia{display:inline-flex;align-items:center;gap:var(--s-2);font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-ink);cursor:pointer}.ocr-dialog{width:min(720px,96vw)}.guide-preview{border-top:2px dashed var(--c-border);padding-top:var(--s-4)}.guide-preview h3{margin:0 0 var(--s-2);font-family:var(--f-display);color:var(--c-ink-soft);font-size:var(--t-small);text-transform:uppercase;letter-spacing:.04em}.guide-actions{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.guide-actions .btn-primary,.guide-actions .btn-secondary{min-height:44px;padding:0 var(--s-4)}.guide-actions .btn-primary[aria-disabled=true]{opacity:.55;cursor:not-allowed}@media(max-width:480px){.guide-textarea{min-height:240px}.ocr-textarea{min-height:32vh}.guide-preview{display:none}}.cards details{border-radius:var(--r-card);background:var(--c-surface);padding:var(--s-4) var(--s-5);border:2px solid var(--c-border);transition:border-color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}.cards details[open]{border:2px solid var(--c-border-strong);background:var(--c-surface)}.cards summary{font-weight:var(--w-bold);cursor:pointer;font-family:var(--f-body);font-size:var(--t-body);list-style:none;display:flex;gap:var(--s-2);align-items:center;color:var(--c-ink)}.cards summary::-webkit-details-marker{display:none}.cards summary:after{content:"";width:10px;height:10px;border-right:2px solid var(--c-ink-soft);border-bottom:2px solid var(--c-ink-soft);transform:rotate(-45deg);margin-left:auto;transition:transform var(--motion-fast) var(--ease-press);flex-shrink:0}.cards details[open] summary:after{transform:rotate(45deg)}.cards details p{margin:var(--s-5) 0 0 var(--s-5);color:var(--c-ink);font-weight:var(--w-medium);line-height:1.6}.fc-admin-row{display:grid;grid-template-columns:1fr auto;gap:var(--s-2);align-items:start}.fc-row-actions{display:flex;gap:var(--s-1);padding-top:var(--s-3)}.fc-card-form{display:grid;gap:var(--s-2);max-width:560px;padding:var(--s-4);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface)}.fc-card-form textarea,.fc-card-form select{font-family:var(--f-body);font-size:var(--t-body);padding:var(--s-2) var(--s-3);border:1px solid var(--c-border-strong);border-radius:var(--r-btn, 8px);background:var(--c-bg);color:var(--c-ink)}.fc-form-actions{display:flex;gap:var(--s-2);margin-top:var(--s-1)}.page-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-4)}.page-header-title{display:grid;gap:var(--s-1);min-width:0}.page-title{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h1);line-height:1.05;letter-spacing:-.02em;color:var(--c-ink)}.streak-badge{display:inline-flex;align-items:center;gap:var(--s-2);min-height:44px;padding:var(--s-2) var(--s-3);border-radius:var(--r-pill);background:var(--c-attention-soft);color:var(--c-ink);font-family:var(--f-display);font-weight:var(--w-semibold);white-space:nowrap}.streak-badge svg{color:var(--c-streak)}.streak-badge b{font-size:var(--t-h2);line-height:1}.streak-badge span{font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.04em;color:var(--c-ink-soft)}.resume-card{position:relative;overflow:hidden;background:var(--c-surface);border-radius:var(--r-card);padding:var(--s-4);display:grid;gap:var(--s-4);border:2px solid var(--c-border)}.resume-card:after{content:"";position:absolute;top:0;right:0;width:34px;height:34px;background:linear-gradient(135deg,transparent 0 50%,var(--c-primary-soft) 51% 100%);border-left:2px solid var(--c-border);border-bottom:2px solid var(--c-border);border-bottom-left-radius:var(--r-btn);pointer-events:none}.resume-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-3)}.resume-meta{display:grid;gap:var(--s-1);min-width:0}.resume-eyebrow{font-size:var(--t-micro);font-weight:var(--w-medium);text-transform:uppercase;letter-spacing:.06em;color:var(--c-ink-mute)}.resume-title{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h2);color:var(--c-ink);line-height:1.15}.resume-pct{font-family:var(--f-display);font-weight:var(--w-bold);font-size:var(--t-hero);line-height:1;color:var(--c-ink)}.resume-pct small{font-size:var(--t-h2);color:var(--c-ink-soft)}.resume-cta{width:100%}.stat-row{display:grid;grid-template-columns:1fr;gap:var(--s-4);min-width:0}.stat-tile{border-radius:var(--r-btn);background:var(--c-surface);padding:var(--s-4);display:grid;gap:var(--s-2);justify-items:start;border:2px solid var(--c-border);min-width:0}.stat-tile-ico{width:44px;height:44px;border-radius:var(--r-pill);background:var(--c-primary-soft);color:var(--c-primary-deep);display:grid;place-items:center}.stat-tile-value{font-family:var(--f-display);font-weight:var(--w-bold);font-size:var(--t-hero);color:var(--c-ink);line-height:1}.stat-tile-label{font-size:var(--t-small);color:var(--c-ink-soft);font-weight:var(--w-medium)}.courses-panel{background:var(--c-surface);border-radius:var(--r-card);padding:var(--s-4);display:grid;gap:var(--s-4);border:2px solid var(--c-border)}.section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.section-title{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h2);color:var(--c-ink)}.manage-btn{min-height:44px}.home-courses{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-2)}.home-course{width:100%;display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink);font-family:var(--f-body);text-align:left;border:2px solid var(--c-border);min-width:0}.home-course:hover{border:2px solid var(--c-border-strong)}.home-course-title{flex:1;min-width:0;font-weight:var(--w-semibold);font-size:var(--t-body);line-height:1.2}.courses-empty{margin:0;color:var(--c-ink-soft);font-weight:var(--w-medium)}.subject-chip{display:inline-flex;align-items:center;gap:var(--s-2);padding:var(--s-1) var(--s-2);border-radius:var(--r-pill);background:var(--c-surface-sunk);font-size:var(--t-micro);font-weight:var(--w-medium);color:var(--c-ink-soft);white-space:nowrap}.subject-chip-dot{width:var(--s-2);height:var(--s-2);border-radius:var(--r-pill);flex:none}.pr-ring{position:relative;display:grid;place-items:center;flex:none}.pr-svg{width:100%;height:100%}.pr-track{fill:none;stroke:var(--c-surface-sunk)}.pr-fill{fill:none;stroke:var(--pr-color, var(--c-primary));stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset var(--motion-base) var(--ease-press)}.pr-label{position:absolute;font-family:var(--f-display);font-weight:var(--w-bold);font-size:var(--t-h2);color:var(--c-ink)}.manage-panel{border-top:2px solid var(--c-border);padding-top:var(--s-4)}.manage-panel .panel h2{margin:0 0 var(--s-2);font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h2);color:var(--c-ink)}.progress-card{background:var(--c-surface);border-radius:var(--r-card);padding:var(--s-5);border:2px solid var(--c-border);display:grid;gap:var(--s-4)}.progress-head{display:flex;justify-content:space-between;align-items:center;gap:var(--s-2);flex-wrap:wrap;font-weight:var(--w-semibold);color:var(--c-ink-soft)}.progress-head b{color:var(--c-primary);font-family:var(--f-display);font-size:var(--t-h2)}.progress-track{height:var(--s-3);border-radius:var(--r-pill);background:var(--c-surface-sunk);overflow:hidden}.progress-fill{height:100%;border-radius:var(--r-pill);background:var(--c-primary);transition:width var(--motion-base) var(--ease-press);box-shadow:none}.xp-badge,.muted-badge{background:var(--c-attention-soft);color:var(--c-attention-deep);border-radius:var(--r-pill);padding:var(--s-2) var(--s-5);font-weight:var(--w-semibold);font-size:var(--t-small)}.quiz-list{display:grid;gap:var(--s-5)}fieldset{border:0;border-top:2px solid var(--c-border);border-radius:0;padding:var(--s-4) 0 0;margin:0;background:transparent}fieldset:hover{border-top-color:var(--c-primary)}legend{font-weight:var(--w-semibold);font-family:var(--f-display);font-size:var(--t-body);padding:0 var(--s-1);color:var(--c-primary)}.answer{display:flex;gap:var(--s-2);align-items:center;margin:var(--s-3) 0;padding:var(--s-2) var(--s-5);border-radius:var(--r-btn);background:var(--c-surface);border:2px solid var(--c-border);transition:border-color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}.answer:hover{border:2px solid var(--c-border-strong);background:var(--c-info-soft)}.answer input{width:auto;margin:0;accent-color:var(--c-primary);transform:scale(1.2)}.answer.has-selected{background:var(--c-primary-soft)}fieldset small{display:block;margin:var(--s-2) 0 0;color:var(--c-ink-soft);font-weight:var(--w-medium)}.quiz-panel .notice{margin-top:var(--s-4);font-size:var(--t-body)}@media(min-width:920px){.shell{grid-template-columns:270px 1fr}.sidebar{position:sticky;top:0;height:100vh;flex-direction:column;align-items:stretch;gap:0;padding:var(--s-5) var(--s-5);background:var(--c-primary);box-shadow:none}.brand{margin:0;padding-bottom:var(--s-4);border-bottom:1px solid var(--c-primary-soft)}.brand-mark{width:48px;height:48px;border-radius:var(--r-card);font-size:var(--t-h2)}.brand strong{font-size:var(--t-h2)}.brand small{display:block;font-size:var(--t-micro);opacity:.82;font-weight:var(--w-medium);margin-top:2px}nav{margin-top:var(--s-5);display:grid;gap:var(--s-2)}nav button{justify-content:flex-start;border-radius:var(--r-btn);padding:var(--s-3) var(--s-5);font-size:var(--t-body);background:var(--c-nav-wash-soft)}nav.nav-groups{margin-top:var(--s-4);gap:2px}.nav-group{gap:2px}.nav-group-title{margin:var(--s-4) 0 2px;padding:0 14px}.nav-group-toggle{padding:var(--s-2) var(--s-5)}.nav-group-list{padding:2px 0 var(--s-2)}.account{margin-top:auto;padding-top:var(--s-4);border-top:1px solid var(--c-primary-soft);width:100%}.account-btn{width:100%;background:var(--c-nav-wash-soft);padding:var(--s-2) var(--s-5);justify-content:flex-start}.account-copy{display:block}.account-name{display:block;font-weight:var(--w-semibold);font-size:var(--t-small);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--c-ink-on-primary)}.account-role{opacity:.78;font-weight:var(--w-medium);font-size:var(--t-micro);color:var(--c-ink-on-primary)}.account-chevron{display:inline;margin-left:auto}.account-theme{display:none}.account-menu{position:absolute;bottom:calc(100% + 10px);left:0;right:auto;width:330px;border-radius:var(--r-card);box-shadow:var(--shadow-float)}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.wide-left{grid-template-columns:minmax(0,1.4fr) minmax(300px,.6fr)}}@media(min-width:640px){.module-kpis,.metric-row,.gamify-row,.stat-row{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}}@media(max-width:480px){.main{padding:var(--s-3)}nav button{padding:var(--s-2) var(--s-5)}}[data-theme=dark] body{background:var(--c-bg);color:var(--c-ink)}[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{border-color:var(--c-border-strong);color:var(--c-ink)}[data-theme=dark] .row-button,[data-theme=dark] .course-list button,[data-theme=dark] .cards details,[data-theme=dark] fieldset,[data-theme=dark] .answer{background:var(--c-surface)}[data-theme=dark] .panel,[data-theme=dark] .page-header,[data-theme=dark] .auth-card,[data-theme=dark] .progress-card,[data-theme=dark] .paper{background:var(--c-surface)}[data-theme=dark] .chips span{background:var(--c-attention-soft);color:var(--c-ink)}[data-theme=dark] .metric span{color:var(--c-ink-soft)}[data-theme=dark] .notice.error{color:var(--c-error-ink);background:var(--c-error-soft)}[data-theme=dark] .notice.success{color:var(--c-success-ink);background:var(--c-success-soft)}[data-theme=dark] .auth-submit{color:var(--c-ink-on-primary)}[data-theme=dark] .auth-submit:hover:not(:disabled){background:var(--c-primary-deep)}[data-theme=dark] .row-button:hover,[data-theme=dark] .course-list button:hover:not(:disabled){background:var(--c-surface)}[data-theme=dark] .sidebar,[data-theme=dark] .main{background:transparent}[data-theme=dark] .brand-mark{background:var(--c-primary-soft);border:1px solid rgb(255 255 255 / 18%)}[data-theme=dark] .module-chip,[data-theme=dark] .subnav-chip{border-color:#ffffff2e}[data-theme=dark] .module-chip.active,[data-theme=dark] .subnav-chip.active{background:var(--c-primary-soft);border-color:var(--c-primary);color:var(--c-primary)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;border-radius:var(--r-pill);background:var(--c-primary-soft);color:var(--c-ink);font-size:var(--t-body);line-height:1;transition:background var(--motion-fast) var(--ease-press),transform var(--motion-fast) var(--ease-press)}.theme-toggle:hover{transform:translateY(-2px);background:var(--c-primary-soft)}.theme-ico{display:block}.identity .theme-toggle{background:var(--c-nav-wash);color:var(--c-nav-ink)}.identity .theme-toggle:hover{background:var(--c-nav-wash-strong)}[data-theme=dark] .theme-toggle{background:var(--c-primary-soft);color:var(--c-ink)}.photo-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:44px;padding:0 var(--s-4);border-radius:var(--r-btn);background:var(--c-primary-soft);color:var(--c-primary-deep);font-family:var(--f-body);font-size:var(--t-body);font-weight:var(--w-semibold);transition:background var(--motion-fast) var(--ease-press),transform var(--motion-fast) var(--ease-press)}.photo-btn:hover:not(:disabled){background:var(--c-primary-soft);transform:translateY(-2px)}.photo-ico{font-size:var(--t-body)}.form-grid .dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-2);min-height:120px;padding:var(--s-5);border:2px dashed var(--c-border);border-radius:var(--r-card);background:transparent;color:var(--c-ink-soft);text-align:center;font-weight:var(--w-medium);transition:border-color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press),color var(--motion-fast) var(--ease-press),transform var(--motion-fast) var(--ease-press)}.form-grid .dropzone span{color:var(--c-ink);font-weight:var(--w-semibold)}.form-grid .dropzone small{opacity:.85;font-weight:var(--w-medium)}.form-grid .dropzone:hover:not(:disabled){border-color:var(--c-primary);background:var(--c-primary-soft)}.form-grid .dropzone:disabled{opacity:.6}.photo-panel{display:flex;flex-direction:column;gap:var(--s-4)}.photo-title{font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-ink-mute);text-transform:uppercase;letter-spacing:.04em}.photo-empty{margin:0;color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-small)}.photo-preview{display:flex;flex-direction:column;gap:var(--s-4)}.photo-count{color:var(--c-primary);font-weight:var(--w-bold);font-size:var(--t-small)}.photo-thumbs{display:flex;flex-wrap:wrap;gap:var(--s-2)}.photo-thumb{position:relative;width:64px;height:64px;border-radius:var(--r-card);overflow:hidden;border:2px solid var(--c-border);background-color:var(--c-primary-soft);background-size:cover;background-position:center;background-repeat:no-repeat}.photo-thumb-fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:inline-flex;align-items:center;justify-content:center;color:var(--c-ink-soft);background:var(--c-primary-soft)}.photo-file{display:block;max-width:64px;font-size:var(--t-micro);font-weight:var(--w-medium);color:var(--c-ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-remove{position:absolute;top:4px;right:4px;width:44px;height:44px;min-width:44px;padding:0;border-radius:var(--r-pill);background:var(--c-scrim);color:var(--c-ink-on-primary);display:inline-flex;align-items:center;justify-content:center}.photo-remove:hover{background:var(--c-error)}.photo-import{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:44px;padding:0 var(--s-4);background:var(--c-primary);color:var(--c-ink-on-primary);font-weight:var(--w-semibold);font-family:var(--f-body);font-size:var(--t-body);border-radius:var(--r-btn);box-shadow:none;transition:background var(--motion-fast) var(--ease-press)}.photo-import:active:not(:disabled){background:var(--c-primary-deep)}.photo-import:disabled{opacity:.55;cursor:not-allowed}.photo-import[aria-disabled=true]{opacity:.55;cursor:not-allowed;pointer-events:none}.photo-item{display:flex;flex-direction:column;align-items:flex-start;gap:4px;max-width:64px}.photo-item.photo-analyzing .photo-thumb{opacity:.55}.photo-item.photo-error .photo-thumb{outline:2px solid var(--c-error-soft);outline-offset:0}.photo-badge{display:inline-flex;align-items:center;gap:5px;font-size:var(--t-micro);font-weight:var(--w-semibold);line-height:1.25;border-radius:var(--r-pill);padding:4px var(--s-4)}.photo-badge-loading{background:var(--c-info-soft);color:var(--c-info-deep)}.photo-badge-error{background:var(--c-error-soft);color:var(--c-error-ink)}.spin{animation:spin var(--motion-base) linear infinite}@keyframes spin{to{transform:rotate(360deg)}}[data-theme=dark] .photo-badge-loading{background:var(--c-surface-sunk);color:var(--c-info-deep)}[data-theme=dark] .photo-badge-error{background:var(--c-error-soft);color:var(--c-error-ink)}@media(max-width:920px){.grid.two,.grid.three{grid-template-columns:minmax(0,1fr)}.page-header{flex-direction:column}}@media(max-width:480px){.panel{padding:var(--s-4)}.panel h2{font-size:var(--t-h2)}.form-grid .dropzone{min-height:96px;padding:var(--s-4)}.form-grid .dropzone small{font-size:var(--t-small)}.form-grid .dropzone:active:not(:disabled){background:var(--c-primary-soft);border:2px solid var(--c-border)}.photo-thumbs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2)}.photo-item{max-width:100%}.photo-thumb{width:100%;height:72px}.main{padding-bottom:88px}.auth-title{font-size:var(--t-h2)}}@media(min-width:481px)and (max-width:919px){.main{padding-bottom:88px}}@media(max-width:920px){.sidebar nav{display:none}.main{padding-bottom:88px}}@media(min-width:920px){.mobile-nav{display:none}}.pwd-field{position:relative}.pwd-field .auth-input{padding-right:52px}.pwd-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:44px;height:44px;background:transparent;border:none;color:var(--c-ink-soft);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.pwd-toggle:hover{color:var(--c-primary)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);flex-wrap:wrap;margin-bottom:var(--s-4)}.panel-title{margin:0;font-family:var(--f-display);font-size:var(--t-h2);font-weight:var(--w-semibold);display:flex;align-items:center;gap:var(--s-2)}.panel-title:before{content:"";width:4px;height:1.1em;border-radius:2px;background:var(--band, var(--c-primary));display:inline-block;flex-shrink:0}.ai-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:var(--r-pill);background:var(--c-surface-sunk);color:var(--c-ink-soft);font-family:var(--f-body);font-size:var(--t-micro);font-weight:var(--w-medium);text-transform:uppercase;letter-spacing:.04em;vertical-align:middle}.ai-btn{color:var(--c-primary-deep)}.count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:30px;padding:3px 14px;border-radius:var(--r-pill);background:var(--c-surface-sunk);color:var(--c-ink-soft);font-size:var(--t-micro);font-weight:var(--w-medium)}.admin-actions{display:flex;gap:var(--s-3);align-items:center;flex-wrap:wrap}.search-field{position:relative;display:inline-flex;align-items:center;color:var(--c-ink-soft);min-width:220px}.search-field svg{position:absolute;left:var(--s-3);pointer-events:none}.search-field input{padding-left:var(--s-6)}.table-scroll{overflow-x:auto;border-radius:var(--r-card)}.table-scroll:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.students-table{width:100%;border-collapse:collapse}.students-table th{text-align:left;padding:var(--s-3) var(--s-5);color:var(--c-ink-mute);font-size:var(--t-micro);font-weight:var(--w-semibold);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--c-border);white-space:nowrap;background:var(--c-surface-sunk)}.students-table td{padding:var(--s-3) var(--s-5);border-bottom:1px solid var(--c-border);color:var(--c-ink);font-weight:var(--w-medium);vertical-align:middle}.students-table tbody tr{cursor:pointer;transition:background var(--motion-fast) var(--ease-press)}.students-table tbody tr:hover,.students-table tbody tr.selected{background:var(--c-surface-sunk)}.cell-main{display:block;font-weight:var(--w-semibold);color:var(--c-ink)}.cell-sub{display:block;color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-micro)}.sort-btn{display:inline-flex;align-items:center;gap:var(--s-1);background:transparent;color:inherit;font:inherit;font-weight:var(--w-semibold);text-transform:inherit;letter-spacing:inherit;padding:0}.sort-btn .sort-ico{display:inline-flex;color:var(--c-primary)}.status-pill{display:inline-flex;align-items:center;padding:5px var(--s-4);border-radius:var(--r-pill);font-weight:var(--w-semibold);font-size:var(--t-micro)}.status-pill.actif{background:var(--c-success-soft);color:var(--c-success-ink)}.status-pill.inactif{background:var(--c-surface-sunk);color:var(--c-ink-soft)}.row-actions{display:inline-flex;gap:var(--s-2)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:44px;min-height:44px;border-radius:var(--r-btn);background:var(--c-surface-raised);color:var(--c-ink-soft);border:2px solid var(--c-border);transition:color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press),border-color var(--motion-fast) var(--ease-press)}.icon-btn:hover{color:var(--c-primary);border:2px solid var(--c-border-strong)}.icon-btn.danger,.icon-btn.danger:hover{background:var(--c-error-soft);color:var(--c-error-ink)}.pager{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);padding-top:var(--s-4);flex-wrap:wrap}.pager-count{color:var(--c-ink-soft);font-weight:var(--w-medium)}.pager-btns{display:flex;gap:var(--s-2);align-items:center}.pager-btns button{min-height:44px;padding:0 var(--s-4);border-radius:var(--r-btn);background:var(--c-surface-raised);color:var(--c-ink);font-weight:var(--w-semibold);border:2px solid var(--c-border);transition:border-color var(--motion-fast) var(--ease-press)}.pager-btns button:hover:not(:disabled){border:2px solid var(--c-border-strong)}.pager-btns button:disabled{opacity:.5;cursor:not-allowed}.pager-info{color:var(--c-ink-soft);font-weight:var(--w-medium)}.empty-state{text-align:center;padding:var(--s-6) var(--s-5);display:grid;gap:var(--s-4);justify-items:center;color:var(--c-ink-soft);font-weight:var(--w-medium)}.empty-state p{margin:0;font-size:var(--t-body)}.student-context{display:grid;gap:var(--s-4)}.student-banner{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;padding:var(--s-4) var(--s-5);border-radius:var(--r-card);background:var(--c-primary-soft);color:var(--c-ink);font-weight:var(--w-semibold)}.student-banner .banner-label{color:var(--c-ink-soft);font-weight:var(--w-medium)}.student-banner b{color:var(--c-primary-deep);font-family:var(--f-display)}.student-banner .banner-level{color:var(--c-ink-soft)}.invite{margin:0;padding:var(--s-4) var(--s-5);border:2px dashed var(--c-border);border-radius:var(--r-card);color:var(--c-ink-soft);font-weight:var(--w-medium);text-align:center}.btn-help{margin:var(--s-2) 0 0;color:var(--c-ink-soft);font-size:var(--t-small);font-weight:var(--w-medium)}.dialog{border:0;padding:0;border-radius:var(--r-card);box-shadow:var(--shadow-float);background:var(--c-surface-raised);color:var(--c-ink);width:min(480px,94vw)}.dialog::backdrop{background:var(--c-backdrop)}.dialog-inner{padding:var(--s-5);display:grid;gap:var(--s-4)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s-4)}.dialog-head h2{margin:0;font-family:var(--f-display);font-size:var(--t-h2);font-weight:var(--w-semibold);color:var(--c-ink)}.dialog-x{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;border-radius:var(--r-btn);background:transparent;color:var(--c-ink-soft);transition:background var(--motion-fast) var(--ease-press),color var(--motion-fast) var(--ease-press)}.dialog-x:hover{background:var(--c-primary-soft);color:var(--c-primary)}.dialog-body{display:grid;gap:var(--s-4)}.field{display:grid;gap:var(--s-2)}.field>label{font-weight:var(--w-medium);font-size:var(--t-small);color:var(--c-ink-mute)}.dialog-actions{display:flex;gap:var(--s-3);justify-content:flex-end;flex-wrap:wrap}.dialog-desc{margin:0;color:var(--c-ink);font-weight:var(--w-medium);line-height:1.6}.dialog-options{display:grid;gap:var(--s-3)}.delete-option{display:flex;gap:var(--s-2);align-items:flex-start;padding:var(--s-3) var(--s-5);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink);font-weight:var(--w-medium);line-height:1.4;cursor:pointer;border:2px solid var(--c-border)}.delete-option input{width:auto;margin:0;accent-color:var(--c-primary)}.delete-option.danger{color:var(--c-error-ink);background:var(--c-error-soft)}.pwd-reset summary{font-weight:var(--w-semibold);color:var(--c-ink-soft);cursor:pointer}.pwd-reset[open]{display:grid;gap:var(--s-3)}.pwd-reset .field{margin-top:var(--s-3)}@media(max-width:920px){.students-table thead{display:none}.students-table,.students-table tbody,.students-table tr,.students-table td{display:block;width:100%}.students-table tbody{display:grid;gap:var(--s-4)}.students-table tr{border-radius:var(--r-card);padding:var(--s-3) var(--s-4);margin:0;background:var(--c-surface-sunk);min-width:0;border:2px solid var(--c-border)}.students-table tr.selected{background:var(--c-surface-sunk);border:2px solid var(--c-border-strong)}.students-table td{padding:var(--s-2) 0;border-bottom:0;display:flex;align-items:center;gap:var(--s-2);min-width:0;overflow-wrap:anywhere;word-break:break-word}.students-table td:before{content:attr(data-label);color:var(--c-ink-soft);font-weight:var(--w-semibold);min-width:96px;flex-shrink:0}.students-table td>*{min-width:0;overflow-wrap:anywhere;word-break:break-word}.students-table td[data-label=Actions]{justify-content:flex-end}.students-table td[data-label=Actions]:before{display:none}.table-scroll{overflow-x:hidden}.search-field{min-width:100%}}@media(max-width:480px){.panel-head{flex-direction:column;align-items:stretch;gap:var(--s-3)}.admin-actions{flex-direction:column;align-items:stretch;width:100%}.admin-actions .search-field,.admin-actions .btn-primary,.admin-actions .btn-secondary{width:100%}.pager{flex-direction:column;align-items:stretch;gap:var(--s-3)}.pager-count{text-align:left}.pager-btns{display:grid;grid-template-columns:1fr auto 1fr;width:100%}.pager-btns button{width:100%}}[data-theme=dark] .students-table tbody tr,[data-theme=dark] .students-table tr.selected{background:var(--c-surface-sunk)}[data-theme=dark] .icon-btn{background:var(--c-surface-sunk);color:var(--c-ink-soft)}[data-theme=dark] .icon-btn.danger{background:var(--c-error-soft);color:var(--c-error-ink)}[data-theme=dark] .btn-secondary,[data-theme=dark] .pager-btns button{background:var(--c-surface)}[data-theme=dark] .delete-option{background:var(--c-surface-sunk)}[data-theme=dark] .delete-option.danger{background:var(--c-error-soft)}.pages-panel{display:grid;gap:var(--s-4)}.pages-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.pages-count{margin:0;color:var(--c-ink-soft);font-weight:var(--w-semibold);font-size:var(--t-small)}.status-pedago{display:inline-flex;align-items:center;align-self:flex-start;gap:var(--s-1);padding:var(--s-2) 14px;border-radius:var(--r-pill);background:var(--c-surface-sunk);color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-small)}.course-tabs{position:sticky;top:env(safe-area-inset-top,0px);z-index:29;display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:var(--s-1);padding:4px;background:var(--c-surface);border-radius:var(--r-card);border:2px solid var(--c-border)}@media(max-width:640px){.course-tabs{display:flex;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none}.course-tabs::-webkit-scrollbar{display:none}.course-tab{flex:0 0 auto;scroll-snap-align:start;padding:0 var(--s-3);white-space:nowrap}}.course-tab{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:0;min-height:48px;padding:0 var(--s-1);border:0;background:transparent;color:var(--c-ink-soft);font-family:var(--f-body);font-size:var(--t-small);font-weight:var(--w-medium);text-align:center;white-space:normal;border-radius:var(--r-btn);transition:color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}.course-tab:hover{color:var(--band, var(--c-primary));background:var(--c-surface-sunk)}.course-tab.active{color:var(--band, var(--c-primary))}.course-tab.active:after{content:"";position:absolute;left:var(--s-3);right:var(--s-3);bottom:0;height:3px;border-radius:3px;background:var(--band, var(--c-primary))}.course-tab:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.course-panels{display:grid;gap:var(--s-5)}.course-hero{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-4);padding:var(--s-4);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface)}.course-hero-meter{flex:1 1 240px;display:grid;gap:var(--s-2);min-width:0}.course-hero-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-2)}.course-hero-label{font-size:var(--t-micro);font-weight:var(--w-semibold);color:var(--c-ink-soft);text-transform:uppercase;letter-spacing:.04em}.course-hero-pct{font-family:var(--f-display);font-weight:var(--w-bold);font-size:var(--t-h1);color:var(--c-ink);line-height:1}.course-hero-cta{min-height:44px}@media(max-width:480px){.course-hero{flex-direction:column;align-items:stretch}.course-hero-cta{width:100%;justify-content:center}}.course-panel{min-width:0}.course-panel[hidden]{display:none}.resume-body{display:grid;gap:var(--s-4)}.resume-prose{color:var(--c-ink);font-weight:var(--w-medium);line-height:1.7}.resume-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.resume-actions .btn-primary,.resume-actions .btn-secondary{min-height:48px;padding:0 var(--s-4)}@media(max-width:480px){.resume-actions .btn-primary,.resume-actions .btn-secondary{flex:1 1 100%;justify-content:center}}@media(prefers-reduced-motion:reduce){.course-tab{transition:none}}.pages-add{padding:var(--s-4);border:2px dashed var(--c-border);border-radius:var(--r-card);background:var(--c-surface-sunk)}.pages-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-2)}.page-card{display:flex;align-items:center;gap:var(--s-4);padding:var(--s-3) var(--s-5);border-radius:var(--r-card);background:var(--c-surface);border:2px solid var(--c-border);min-width:0}.page-thumb{position:relative;width:64px;height:64px;flex-shrink:0;border-radius:var(--r-card);overflow:hidden;background-color:var(--c-primary-soft);background-size:cover;background-position:center;background-repeat:no-repeat}.page-info{flex:1;display:grid;gap:4px;min-width:0}.page-name{font-weight:var(--w-bold);color:var(--c-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-meta{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;font-size:var(--t-micro);font-weight:var(--w-semibold);color:var(--c-ink-soft)}.page-meta .status{color:var(--c-ink-soft)}.page-meta .status.ready{color:var(--c-info)}.page-meta .status.error{color:var(--c-error-ink)}.page-chars{color:var(--c-ink-soft);font-weight:var(--w-medium)}.page-status-label{color:var(--c-ink-soft);font-weight:var(--w-semibold);font-size:var(--t-small)}.page-actions{display:flex;gap:var(--s-1);flex-wrap:wrap;justify-content:flex-end}.page-actions .icon-btn{width:38px;height:38px}[data-theme=dark] .pages-add{background:var(--c-surface-sunk)}[data-theme=dark] .page-card{background:var(--c-surface)}@media(max-width:920px){.page-card{flex-wrap:wrap}.page-actions{width:100%;justify-content:flex-start}}@media(max-width:480px){.pages-actions{width:100%}.pages-actions .btn-primary,.pages-actions .btn-secondary{flex:1;justify-content:center;min-height:44px}.page-card{flex-direction:column;align-items:flex-start;gap:var(--s-2)}.page-thumb{width:100%;height:72px}.page-actions{justify-content:flex-start}}.prompts-panel,.prompts-body{display:grid;gap:var(--s-4)}.prompts-impact{line-height:1.55}.prompts-toolbar{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.prompts-toolbar .notice{margin:0;flex:1;min-width:220px}.prompts-list{display:grid;gap:var(--s-4)}.prompt-card{padding:var(--s-4);border-radius:var(--r-card);background:var(--c-surface);display:grid;gap:var(--s-2);border:2px solid var(--c-border);min-width:0}.prompt-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.prompt-label{font-weight:var(--w-bold);color:var(--c-ink);font-size:var(--t-body)}.dirty-dot{display:inline-flex;align-items:center;gap:var(--s-1);font-size:var(--t-micro);font-weight:var(--w-medium);color:var(--c-ink-soft);background:var(--c-surface-sunk);padding:4px var(--s-3);border-radius:var(--r-pill)}.dirty-dot:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c-primary-deep)}.prompt-textarea{width:100%;min-height:160px;resize:vertical;font-family:inherit;font-size:var(--t-small);line-height:1.5;color:var(--c-ink);background:var(--c-surface-sunk);border:2px solid var(--c-border);border-radius:var(--r-btn);padding:var(--s-3)}.prompt-textarea:focus{outline:none;border-color:var(--c-focus);box-shadow:none}.prompt-textarea[aria-invalid=true]{border-color:var(--c-error-ink)}.prompt-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.prompt-count{font-size:var(--t-micro);font-weight:var(--w-semibold);color:var(--c-ink-soft)}.prompt-count.warn{color:var(--c-error-ink);font-weight:var(--w-bold)}.prompt-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}[data-theme=dark] .prompt-textarea{background:var(--c-surface-sunk)}[data-theme=dark] .notice.warn{color:var(--c-attention-deep);background:var(--c-surface-sunk)}[data-theme=dark] .notice.status-running{color:var(--c-ink-soft);background:var(--c-surface-sunk)}@media(max-width:600px){.prompt-meta{flex-direction:column;align-items:stretch}.prompt-actions .btn-primary,.prompt-actions .btn-secondary{flex:1;justify-content:center;min-height:44px}}.console{min-width:0}.console .panel{padding:var(--s-4)}.console .panel-title,.console .metric b{font-size:var(--t-h2)}.console-header{display:grid;gap:var(--s-4);min-width:0;background:var(--c-surface);border-radius:var(--r-card);padding:clamp(var(--s-4),3vw,var(--s-6));border:2px solid var(--c-border)}.console-breadcrumb{display:flex;align-items:center;gap:var(--s-1);color:var(--c-ink-soft);font-weight:var(--w-semibold);font-size:var(--t-small);flex-wrap:wrap;margin:0}.console-breadcrumb [aria-current=page]{color:var(--c-primary-deep)}.console-title-group{display:grid;gap:2px;min-width:0}.console-h1{margin:0;font-family:var(--f-display);font-weight:var(--w-bold);font-size:clamp(1.6rem,5vw,var(--t-h1));line-height:1.1;letter-spacing:-.02em;color:var(--c-ink)}.console-sub{margin:0;color:var(--c-ink-soft);font-weight:var(--w-medium)}.console-context{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;position:sticky;top:72px;z-index:20;padding:var(--s-3) var(--s-5);border-radius:var(--r-card);background:var(--c-surface-sunk);min-width:0}.context-label{color:var(--c-ink-soft);font-weight:var(--w-semibold);font-size:var(--t-small)}.context-select{flex:1;min-width:180px;max-width:340px;padding:var(--s-2) var(--s-4);border:0;border-bottom:2px solid var(--c-border-strong);border-radius:0;background:transparent;color:var(--c-ink);font-weight:var(--w-medium);font-family:inherit}.context-level{color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-small)}.module-chips{display:flex;gap:var(--s-2);overflow-x:auto;min-width:0;padding-bottom:4px;scrollbar-width:thin;scroll-margin-top:72px}.module-chip{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;flex:0 0 auto;min-height:44px;padding:0 var(--s-4);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink-soft);font-weight:var(--w-semibold);font-size:var(--t-small);border:2px solid var(--c-border);transition:border-color var(--motion-fast) var(--ease-press),color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press),transform var(--motion-fast) var(--ease-press)}.module-chip:hover{border:2px solid var(--c-border-strong);color:var(--c-primary-deep);transform:translateY(-2px)}.module-chip.active{background:var(--c-surface-sunk);color:var(--c-primary-deep);border:2px solid var(--c-border)}.module-chip:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.module-body{display:grid;gap:var(--s-5);min-width:0}.module-kpis{display:grid;grid-template-columns:1fr;gap:var(--s-4);min-width:0}.module-subnav{display:flex;gap:var(--s-2);overflow-x:auto;min-width:0;padding-bottom:4px;border-bottom:2px solid var(--c-border);scrollbar-width:thin;scroll-margin-top:72px}.subnav-chip{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;flex:0 0 auto;min-height:44px;padding:0 var(--s-4);border-radius:var(--r-btn) var(--r-btn) 0 0;background:var(--c-surface);color:var(--c-ink-soft);font-weight:var(--w-semibold);font-size:var(--t-small)}.subnav-chip.active{color:var(--c-primary-deep);background:var(--c-surface-sunk);box-shadow:none}.subnav-chip:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.overview-shortcuts{display:flex;gap:var(--s-3);flex-wrap:wrap}.stats-grid{min-width:0}.stats-rows{display:grid;gap:var(--s-2)}.stat-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);padding:var(--s-3) var(--s-5);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink);font-weight:var(--w-semibold);border:2px solid var(--c-border);min-width:0}.stat-row b{color:var(--c-ink)}.stats-courses{display:grid;gap:var(--s-4)}.stat-course{display:grid;gap:var(--s-2)}.stat-course-head{display:flex;justify-content:space-between;align-items:center;gap:var(--s-2);font-weight:var(--w-semibold);color:var(--c-ink-soft)}.stat-course-head b{color:var(--c-ink)}.stat-course small{color:var(--c-ink-soft);font-weight:var(--w-medium)}[data-theme=dark] .context-select{background:transparent}[data-theme=dark] .stat-row{background:var(--c-surface-sunk)}@media(max-width:920px){.console-context{position:sticky;top:72px}.context-select{flex:1 1 100%;max-width:none;width:100%}}@media(max-width:480px){.console-header{padding:var(--s-4)}.console-h1{font-size:var(--t-h2)}.module-chip,.subnav-chip{min-height:48px}}@media(prefers-reduced-motion:reduce){.module-chip,.subnav-chip{transition:none}}.segmented{display:inline-flex;gap:var(--s-1);padding:4px;background:var(--c-surface-sunk);border-radius:var(--r-pill)}.seg-btn{min-height:44px;padding:0 var(--s-4);border:0;border-radius:var(--r-pill);background:transparent;color:var(--c-ink-soft);font-weight:var(--w-semibold);font-size:var(--t-small);transition:background var(--motion-fast) var(--ease-press),color var(--motion-fast) var(--ease-press);white-space:nowrap}.seg-btn:hover{color:var(--c-primary)}.seg-btn.active{background:var(--c-surface-raised);color:var(--c-primary-deep);border:2px solid var(--c-border)}.fc-toolbar{display:flex;gap:var(--s-3) var(--s-4);flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:var(--s-4)}.fc-deck{display:grid;gap:var(--s-4);width:100%;max-width:720px;margin:0 auto}.fc-topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2);min-height:28px}.fc-counter{font-family:var(--f-body);font-size:var(--t-small);font-weight:var(--w-medium);color:var(--c-ink-soft)}.fc-diff{display:inline-flex;align-items:center;padding:3px var(--s-3);border-radius:var(--r-pill);background:var(--c-surface-sunk);color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-micro)}.fc-diff.easy{color:var(--c-success-ink)}.fc-diff.normal{color:var(--c-ink)}.fc-diff.hard{color:var(--c-error-ink)}.fc-progress{height:4px;background:var(--c-border);border-radius:var(--r-pill);overflow:hidden}.fc-progress-fill{display:block;height:100%;background:var(--c-primary);border-radius:inherit;transition:width var(--motion-base) var(--ease-press)}.fc-scene{perspective:1400px}.fc-card{position:relative;display:block;width:100%;min-height:300px;padding:0;background:var(--c-surface);border-radius:var(--r-card);border:2px solid var(--c-border-strong);transform-style:preserve-3d;transition:transform var(--motion-base) var(--ease-press);cursor:pointer;overflow:hidden}.fc-card:after{content:"";position:absolute;top:0;right:0;width:42px;height:42px;background:linear-gradient(135deg,transparent 0 50%,var(--c-primary-soft) 51% 100%);border-left:2px solid var(--c-border-strong);border-bottom:2px solid var(--c-border-strong);border-bottom-left-radius:var(--r-btn);transform:translateZ(2px);pointer-events:none;z-index:2}.fc-card.is-flipped{transform:rotateY(180deg)}.fc-face{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;gap:var(--s-3);align-content:center;justify-items:center;padding:var(--s-6) var(--s-6);backface-visibility:hidden;-webkit-backface-visibility:hidden;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h2);line-height:1.5;color:var(--c-ink);text-align:center;border-radius:var(--r-card)}.fc-front{background:var(--c-primary-soft)}.fc-back{background:var(--c-success-soft);transform:rotateY(180deg)}.fc-face-tag{font-family:var(--f-body);font-size:var(--t-micro);font-weight:var(--w-medium);letter-spacing:.08em;text-transform:uppercase;color:var(--c-ink-mute)}.fc-actions{display:flex;gap:var(--s-2);flex-wrap:wrap;justify-content:center}.fc-rate{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--s-2);width:100%}.fc-reveal .btn-secondary{min-width:200px}.fc-eval .btn-primary,.fc-eval .btn-secondary{flex:1 1 0;min-width:0;padding:0 var(--s-2);font-size:var(--t-body)}.fc-congrats{position:relative;display:grid;gap:var(--s-4);justify-items:center;text-align:center;padding:var(--s-7) var(--s-4) var(--s-6);border-radius:var(--r-card);background:var(--c-surface);border:2px solid var(--c-border);overflow:hidden}.fc-confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.fc-confetti-piece{position:absolute;top:calc(-1 * var(--s-3));left:var(--x, 50%);width:var(--size, var(--s-2));height:var(--size, var(--s-2));border-radius:var(--r-btn);animation:fc-confetti-fall var(--dur, var(--motion-base)) ease-in var(--delay, var(--motion-instant)) forwards;opacity:0}@keyframes fc-confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(440px) rotate(540deg);opacity:0}}.fc-congrats-score{font-family:var(--f-display);font-size:var(--t-hero);font-weight:var(--w-bold);color:var(--c-ink);line-height:1.1}.fc-congrats-unit{font-size:.55em;color:var(--c-ink-soft);margin-left:2px}.fc-congrats-msg{margin:0;color:var(--c-ink-soft);font-weight:var(--w-medium)}.fc-congrats-cta{width:100%;max-width:340px}.quiz-step{display:grid;gap:var(--s-4);width:100%;max-width:640px;margin:0 auto}.quiz-q-head{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.quiz-q-num{font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-ink-soft);text-transform:uppercase;letter-spacing:.03em}.quiz-progress{flex:1;min-width:120px;height:4px;background:var(--c-surface-sunk);border-radius:var(--r-pill);overflow:hidden}.quiz-progress-fill{display:block;height:100%;background:var(--c-primary);border-radius:inherit;transition:width var(--motion-base) var(--ease-press)}.quiz-question{font-family:var(--f-body);font-size:var(--t-h2);font-weight:var(--w-semibold);color:var(--c-ink);line-height:1.45}.quiz-conf-options{display:grid;gap:var(--s-2)}.quiz-conf-btn{width:100%;justify-content:center}.quiz-conf-btn.selected{border-color:var(--c-border-strong);background:var(--c-surface-sunk)}.quiz-options{display:grid;gap:var(--s-3)}.quiz-option{display:flex;align-items:center;text-align:left;width:100%;min-height:44px;padding:var(--s-2) var(--s-4);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink);font-family:var(--f-body);font-weight:var(--w-medium);font-size:var(--t-body);border:2px solid var(--c-border);transition:border-color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press),transform var(--motion-fast) var(--ease-press)}.quiz-option:hover:not(:disabled){border:2px solid var(--c-border-strong);background:var(--c-primary-soft)}.quiz-option:active:not(:disabled){transform:translateY(2px)}.quiz-option:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.quiz-option.correct{background:var(--c-success-soft);color:var(--c-success-ink);border:2px solid var(--c-success)}.quiz-option.incorrect{background:var(--c-error-soft);color:var(--c-error-ink);border:2px solid var(--c-error)}@keyframes pop-in{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}@keyframes shake-x{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}.quiz-option.correct{animation:pop-in .18s cubic-bezier(.2,0,0,1)}.quiz-option.incorrect{animation:shake-x .15s ease-in-out}.quiz-options.show-answer .quiz-option.correct{box-shadow:0 0 0 2px var(--c-success-soft)}.correct{animation:pop-in .18s cubic-bezier(.2,0,0,1)}.wrong{animation:shake-x .15s ease-in-out}.quiz-help{margin:0;color:var(--c-ink-mute);font-weight:var(--w-medium);font-size:var(--t-small)}.quiz-recall{display:grid;gap:var(--s-3)}.quiz-recall-input{width:100%;min-height:48px;padding:var(--s-2) var(--s-4);border-radius:var(--r-btn);border:2px solid var(--c-border);background:var(--c-surface);color:var(--c-ink);font-family:var(--f-body);font-size:var(--t-body);font-weight:var(--w-medium)}.quiz-recall-input:focus{outline:none;border-color:var(--c-accent, var(--c-ink))}.quiz-recall-input:disabled{opacity:.6}.quiz-recall-actions{display:flex;gap:var(--s-2);flex-wrap:wrap}.quiz-recall-answer{margin:0;font-weight:var(--w-semibold);color:var(--c-ink)}.quiz-feedback{display:grid;gap:var(--s-3);padding:var(--s-4);border-radius:var(--r-card);background:var(--c-surface-sunk)}.quiz-feedback-label{display:flex;align-items:center;gap:var(--s-2);margin:0;font-weight:var(--w-semibold);font-size:var(--t-body)}.quiz-feedback-label.ok{color:var(--c-success-ink)}.quiz-feedback-label.ko{color:var(--c-error-ink)}.quiz-explanation{margin:0;color:var(--c-ink);font-weight:var(--w-medium);line-height:1.6;font-size:var(--t-body)}.advice-card{display:grid;gap:var(--s-2);padding:var(--s-4);border-radius:var(--r-card);border:2px solid var(--c-border);background:var(--c-surface)}.advice-title{margin:0;font-weight:var(--w-semibold);font-size:var(--t-body);color:var(--c-ink)}.advice-text{margin:0;color:var(--c-ink-mute);font-size:var(--t-body);line-height:1.5}.advice-card .btn-primary{justify-self:start}.quiz-next{justify-self:start;min-height:48px;padding:0 var(--s-4)}.quiz-score{display:grid;gap:var(--s-4);justify-items:center;text-align:center;padding:var(--s-4)}.quiz-ring{position:relative;width:120px;height:120px;border-radius:50%;background:conic-gradient(var(--c-primary) calc(var(--pct) * 1%),var(--c-border) 0);display:grid;place-items:center}.quiz-ring:before{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border-radius:50%;background:var(--c-surface)}.quiz-ring-pct{position:relative;font-family:var(--f-display);font-weight:var(--w-bold);font-size:var(--t-hero);color:var(--c-ink);line-height:1}.quiz-score-title{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h1);color:var(--c-ink)}.quiz-score-sub{margin:0;color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-body)}.quiz-score-actions{display:flex;gap:var(--s-3);flex-wrap:wrap;justify-content:center}.quiz-score-actions .btn-primary,.quiz-score-actions .btn-secondary{min-height:48px;padding:0 var(--s-4)}.quiz-revise{display:grid;gap:var(--s-2);width:100%;text-align:left}.quiz-revise-title{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-ink-soft);text-transform:uppercase;letter-spacing:.03em}.quiz-revise-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--s-2)}.quiz-revise-item{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);width:100%;min-height:44px;padding:var(--s-2) var(--s-4);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink);font-family:var(--f-body);font-weight:var(--w-medium);font-size:var(--t-small);text-align:left;border:2px solid var(--c-border)}.quiz-revise-item:hover{border:2px solid var(--c-border-strong);background:var(--c-primary-soft)}.quiz-revise-q{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.quiz-revise-go{display:inline-flex;align-items:center;gap:var(--s-1);font-weight:var(--w-semibold);color:var(--c-primary-deep);white-space:nowrap}.quiz-correction{display:grid;gap:var(--s-3);width:100%}.quiz-correction-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--s-3)}.quiz-correction-item{display:grid;gap:var(--s-1);padding:var(--s-3) var(--s-4);border-radius:var(--r-card);background:var(--c-surface-sunk)}.quiz-correction-item.ok{border-left:4px solid var(--c-success)}.quiz-correction-item.ko{border-left:4px solid var(--c-error)}.quiz-correction-q{margin:0;font-weight:var(--w-semibold);color:var(--c-ink);font-size:var(--t-body);line-height:1.45}.quiz-correction-my{margin:0;color:var(--c-ink-soft);font-size:var(--t-small)}.quiz-correction-good{margin:0;color:var(--c-success-ink);font-size:var(--t-small);font-weight:var(--w-semibold)}.quiz-correction .quiz-explanation{margin-top:var(--s-1)}[data-theme=dark] .seg-btn.active{background:var(--c-surface-sunk)}@media(max-width:480px){.fc-card{min-height:260px}.fc-face{font-size:var(--t-body);padding:var(--s-5)}.fc-reveal .btn-secondary{min-width:100%}.fc-rate{grid-template-columns:1fr}.fc-eval .btn-primary,.fc-eval .btn-secondary{min-width:0}.quiz-score-title{font-size:var(--t-h2)}.quiz-ring{width:96px;height:96px}}@media(prefers-reduced-motion:reduce){.fc-card,.fc-progress-fill,.seg-btn,.quiz-progress-fill,.quiz-option,.fc-confetti-piece{animation:none;transition:none}.fc-confetti-piece{opacity:0}}.apprentissage-panel{display:grid;gap:var(--s-4);min-width:0}.apprentissage-panel .metric-row{grid-template-columns:1fr;gap:var(--s-4)}.apprentissage-panel .stat-tile{animation:none}.subject-metrics{display:grid;gap:var(--s-2)}.subject-metrics-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-3)}.subject-metric{display:grid;gap:var(--s-2)}.subject-metric-head{display:flex;align-items:baseline;gap:var(--s-3);flex-wrap:wrap}.subject-metric-name{font-family:var(--f-display);font-weight:var(--w-semibold);color:var(--c-ink)}.subject-metric-value{font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h2);color:var(--c-ink);margin-left:auto}.subject-metric-sub{margin:0;font-size:var(--t-small);color:var(--c-ink-soft)}.bar{height:var(--s-3);border-radius:var(--r-pill);background:var(--c-surface-sunk);overflow:hidden}.bar-fill{display:block;height:100%;border-radius:inherit;background:var(--c-primary);transition:width var(--motion-base) var(--ease-press)}.level-pill{font-size:var(--t-micro);font-weight:var(--w-medium);letter-spacing:.03em;text-transform:uppercase;padding:3px 10px;border-radius:var(--r-pill);color:var(--c-ink);background:var(--c-surface);white-space:nowrap;border:2px solid var(--c-border)}.level-mastered{color:var(--c-success-ink)}.level-learning{color:var(--c-attention-deep)}.level-new{color:var(--c-ink-soft)}.flashcard-reveal{background:var(--c-surface);border-radius:var(--r-card);border:2px solid var(--c-border);padding:var(--s-6) var(--s-6);display:grid;gap:var(--s-3);justify-items:center;text-align:center}.flashcard-q{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-h2);line-height:1.5;color:var(--c-ink)}.flashcard-a{margin:0;font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-body);line-height:1.5;color:var(--c-ink-soft)}@media(max-width:480px){.flashcard-reveal{min-height:200px;padding:var(--s-5)}.flashcard-q,.flashcard-a{font-size:var(--t-body)}}@media(prefers-reduced-motion:reduce){.bar-fill{transition:none}}.offline-banner{width:100%;padding:var(--s-3) var(--s-4);border-radius:var(--r-card);background:var(--c-surface-sunk);color:var(--c-ink-soft);font-weight:var(--w-medium);font-size:var(--t-small);display:flex;align-items:center;gap:var(--s-2)}.offline-banner:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c-streak);flex-shrink:0}.goal-panel .goal-body{display:grid;gap:var(--s-2)}.goal-panel .goal-type{font-weight:var(--w-medium);color:var(--c-ink);margin:0}.goal-track{height:var(--s-3);border-radius:var(--r-pill);background:var(--c-surface-sunk);overflow:hidden}.goal-fill{display:block;height:100%;border-radius:inherit;background:var(--c-streak);transition:width var(--motion-base) var(--ease-press)}.goal-count{font-weight:var(--w-medium);color:var(--c-ink-soft);margin:0}.goal-badge{margin-top:var(--s-2)}.goal-form{display:grid;gap:var(--s-3);margin-top:var(--s-3)}.goal-form select,.goal-form input{min-height:44px;padding:var(--s-2) var(--s-3);border:0;border-bottom:2px solid var(--c-border-strong);border-radius:0;background:transparent;color:var(--c-ink);font-family:inherit;font-size:var(--t-body)}.goal-form select:focus,.goal-form input:focus{border-color:var(--c-focus);outline:none}.rewards-panel .rewards-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--s-3)}.rewards-panel .badge-card{border-radius:var(--r-btn);background:var(--c-surface);padding:var(--s-3);display:grid;gap:var(--s-1);justify-items:center;text-align:center;border:2px solid var(--c-border)}.rewards-panel .badge-card .badge-ico{width:44px;height:44px;border-radius:var(--r-pill);display:grid;place-items:center}.rewards-panel .badge-card.unlocked{background:var(--c-primary-soft);border:2px solid var(--c-border-strong)}.rewards-panel .badge-card.unlocked .badge-ico{background:var(--c-streak);color:var(--c-surface)}.rewards-panel .badge-card.locked{opacity:.78;background:var(--c-surface-sunk)}.rewards-panel .badge-card.locked .badge-ico{background:var(--c-surface-sunk);color:var(--c-ink-mute)}.rewards-panel .badge-name{font-family:var(--f-display);font-weight:var(--w-semibold);font-size:var(--t-body);color:var(--c-ink)}.rewards-panel .badge-desc{font-size:var(--t-micro);color:var(--c-ink-soft)}.rewards-panel .badge-progress{width:100%;height:6px;border-radius:var(--r-pill);background:var(--c-surface-sunk);overflow:hidden}.rewards-panel .badge-progress-fill{display:block;height:100%;background:var(--c-streak)}.rewards-panel .badge-progress-label{font-size:var(--t-micro);color:var(--c-ink-mute)}.rewards-toast{margin-top:var(--s-3)}@media(max-width:480px){.rewards-panel .rewards-grid{grid-template-columns:repeat(2,1fr)}}.duels-panel .duels-subtitle{margin:var(--s-2) 0 0;font-size:var(--t-small);color:var(--c-ink-mute)}.duel-row{display:grid;gap:var(--s-2);padding:var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface)}.duel-row.current{border-color:var(--c-primary)}.duel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}.duel-week{font-size:var(--t-micro);color:var(--c-ink-mute)}.duel-live{font-size:var(--t-micro);font-weight:var(--w-semibold);color:var(--c-primary)}.duel-score{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-2)}.duel-side{display:inline-flex;align-items:baseline;gap:var(--s-2);font-size:var(--t-small)}.duel-side b{font-size:var(--t-title, 1.4rem);font-family:var(--f-display)}.duel-side.right{flex-direction:row-reverse}.duel-vs{font-size:var(--t-micro);color:var(--c-ink-mute)}.duel-status{margin:0;font-size:var(--t-small);color:var(--c-ink-soft);display:inline-flex;align-items:center;gap:var(--s-1)}.duels-error{margin:0;color:var(--c-error);font-size:var(--t-small)}.duels-empty,.duels-loading{margin:0;font-size:var(--t-small);color:var(--c-ink-soft);display:inline-flex;align-items:center;gap:var(--s-1)}.duel-modal-sub{margin:0;font-size:var(--t-small);color:var(--c-ink-soft)}.duel-modal-actions{display:flex;justify-content:flex-end;align-items:center;gap:var(--s-2)}.duel-msg.success{color:var(--c-success)}.duel-msg.error{color:var(--c-error)}.duel-msg{margin:0;font-size:var(--t-small)}@media(prefers-reduced-motion:reduce){.duel-row,.duel-live{transition:none}}.tutor-dock{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4)}.tutor-sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;align-items:end;background:#120f0c59;padding:var(--s-4)}.tutor-sheet-inner{width:min(760px,100%);max-height:min(82vh,760px);margin:0 auto;display:grid;gap:var(--s-4);overflow:auto;background:var(--c-surface);border:2px solid var(--c-border);border-radius:var(--r-card);padding:var(--s-5);box-shadow:var(--shadow-card)}.tutor-suggestions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2)}.tutor-messages{display:grid;gap:var(--s-3);min-height:120px}.tutor-bubble{max-width:88%;padding:var(--s-3);border-radius:var(--r-card);border:2px solid var(--c-border);background:var(--c-surface-alt)}.tutor-bubble.student{justify-self:end;background:var(--c-primary-soft)}.tutor-bubble.assistant{justify-self:start}.tutor-bubble p{margin:0;white-space:pre-wrap}.ai-label{display:inline-block;margin-top:var(--s-2);font-size:var(--t-small);color:var(--c-ink-mute)}.tutor-form{display:grid;gap:var(--s-2)}.tutor-form textarea{min-height:96px;resize:vertical;border:2px solid var(--c-border);border-radius:var(--r-input);padding:var(--s-3);background:var(--c-surface);color:var(--c-ink)}@media(max-width:720px){.tutor-dock{align-items:stretch;flex-direction:column}.tutor-suggestions{grid-template-columns:1fr}.tutor-sheet{padding:0}.tutor-sheet-inner{max-height:92vh;border-radius:var(--r-card) var(--r-card) 0 0}}@keyframes stamp-in{0%{transform:scale(1.4) rotate(-8deg);opacity:0}60%{transform:scale(.96) rotate(-4deg);opacity:1}to{transform:scale(1) rotate(-6deg);opacity:1}}@keyframes gold-frame{0%{box-shadow:0 0 #f5c51800}40%{box-shadow:0 0 0 4px #f5c5188c}to{box-shadow:0 0 0 2px #f5c5184d}}.rewards-panel .badge-card.rare,.rewards-panel .badge-card[data-rarity=rare]{border-color:var(--c-rarity-rare)}.rewards-panel .badge-card.epique,.rewards-panel .badge-card[data-rarity=epique]{border-color:var(--c-rarity-epic);background:linear-gradient(160deg,var(--c-surface) 60%,var(--c-primary-soft) 100%)}.rewards-panel .badge-card.rare .badge-ico,.rewards-panel .badge-card[data-rarity=rare] .badge-ico{background:var(--c-rarity-rare);color:#fff}.rewards-panel .badge-card.epique .badge-ico,.rewards-panel .badge-card[data-rarity=epique] .badge-ico{background:var(--c-rarity-epic);color:#fff}.rewards-panel .badge-stamp{align-self:center;padding:1px 8px;border:2px solid currentColor;border-radius:var(--r-pill);font-family:var(--f-display);font-size:var(--t-micro);font-weight:var(--w-bold);letter-spacing:.06em;text-transform:uppercase;transform:rotate(-6deg);color:var(--c-ink-soft)}.rewards-panel .badge-stamp.rare{color:var(--c-rarity-rare)}.rewards-panel .badge-stamp.epique{color:var(--c-rarity-epic)}.rewards-panel .badge-card.unlocked .badge-stamp{animation:stamp-in .3s cubic-bezier(.2,0,0,1) both}.rewards-panel .badge-card.just-unlocked{animation:gold-frame .3s ease-out both;border-color:var(--c-rarity-legendary)}[data-theme=dark] .rewards-panel .badge-card.rare,[data-theme=dark] .rewards-panel .badge-card[data-rarity=rare]{border-color:var(--c-rarity-rare)}[data-theme=dark] .rewards-panel .badge-card.epique,[data-theme=dark] .rewards-panel .badge-card[data-rarity=epique]{border-color:var(--c-rarity-epic)}[data-theme=dark] .rewards-panel .badge-stamp.rare{color:var(--c-rarity-rare)}[data-theme=dark] .rewards-panel .badge-stamp.epique{color:var(--c-rarity-epic)}[data-theme=dark] .rewards-panel .badge-card.just-unlocked{border-color:var(--c-rarity-legendary)}@media(prefers-reduced-motion:reduce){.rewards-panel .badge-stamp,.rewards-panel .badge-card.just-unlocked{animation:none}}.header-badges{display:inline-flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;justify-content:flex-end}.due-badge{display:inline-flex;align-items:center;gap:var(--s-2);min-height:44px;padding:var(--s-2) var(--s-3);border-radius:var(--r-pill);background:var(--c-primary-soft);color:var(--c-ink);font-family:var(--f-display);font-weight:var(--w-semibold);white-space:nowrap}.due-badge svg{color:var(--c-primary-deep)}.due-badge b{font-size:var(--t-h2);line-height:1}.due-badge span{font-size:var(--t-micro);text-transform:uppercase;letter-spacing:.04em;color:var(--c-ink-soft)}.due-badge.muted{background:var(--c-surface-sunk)}.student-home .streak-badge{border:2px solid var(--c-streak)}.btn-almost{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:44px;padding:0 var(--s-4);border:2px solid var(--c-attention);border-radius:var(--r-btn);background:var(--c-attention-soft);color:var(--c-attention);font-family:var(--f-body);font-weight:var(--w-semibold);font-size:var(--t-body);cursor:pointer;transition:transform var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}.btn-almost:hover:not(:disabled){background:var(--c-attention-bg-hover)}.btn-almost:active:not(:disabled){transform:translateY(2px)}.btn-almost:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.btn-almost:disabled{opacity:.6;cursor:default}.streak-cal{display:grid;gap:var(--s-2)}.streak-cal-month{margin:0;font-size:var(--t-small);color:var(--c-ink-soft);font-weight:var(--w-medium)}.streak-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--s-1);max-width:340px}.streak-cal-dow{text-align:center;font-size:var(--t-micro);font-weight:var(--w-semibold);color:var(--c-ink-mute);text-transform:uppercase}.streak-cal-day{display:grid;place-items:center;aspect-ratio:1;min-height:34px;border-radius:var(--r-btn);background:var(--c-surface-sunk);color:var(--c-ink-mute);font-size:var(--t-small);font-weight:var(--w-medium)}.streak-cal-day.on{background:var(--c-success);color:var(--c-surface);font-weight:var(--w-bold)}.streak-cal.empty .streak-cal-day{opacity:.5}.streak-cal-empty{margin:0;font-size:var(--t-small);color:var(--c-ink-soft)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.confetti-host{position:relative;overflow:hidden}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.confetti-piece{position:absolute;top:calc(-1 * var(--s-2));width:var(--s-2);height:var(--s-2);border-radius:var(--r-btn);opacity:0;animation:confetti-fall ease-in forwards}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}85%{opacity:1}to{transform:translateY(420px) rotate(540deg);opacity:0}}@media(prefers-reduced-motion:reduce){.confetti-piece{animation-name:confetti-fade;animation-duration:.8s!important;animation-delay:0ms!important}@keyframes confetti-fade{0%{opacity:.9}to{opacity:0}}}.mixed-entry{margin-top:var(--s-4)}.mixed-setup,.mixed-play,.mixed-done{max-width:640px;margin:0 auto;padding:var(--s-5);border:2px solid var(--c-border);border-radius:var(--r-card, var(--r-btn));background:var(--c-surface)}.mixed-sub{margin:var(--s-2) 0 0;color:var(--c-ink-soft);font-size:var(--t-body)}.mixed-form{margin-top:var(--s-4);display:grid;gap:var(--s-4)}.mixed-subjects{margin:0;padding:0;border:0}.mixed-subjects legend{font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-ink);padding:0;margin-bottom:var(--s-2)}.mixed-checks{display:flex;flex-wrap:wrap;gap:var(--s-2)}.mixed-check{display:inline-flex;align-items:center;gap:var(--s-2);min-height:44px;padding:0 var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-pill);cursor:pointer;font-weight:var(--w-medium);font-size:var(--t-body);color:var(--c-ink);background:var(--c-surface);transition:border-color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}.mixed-check:hover{border-color:var(--c-primary)}.mixed-check.on{border-color:var(--c-primary);background:var(--c-primary-soft)}.mixed-check:has(input:focus-visible){outline:2px solid var(--c-focus);outline-offset:2px}.mixed-check input{accent-color:var(--c-primary);width:18px;height:18px;margin:0}.mixed-check-dot{width:10px;height:10px;border-radius:50%;flex:none;border:1px solid rgb(0 0 0 / 20%)}.mixed-count-label{margin:0;font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-ink)}.segmented{display:inline-flex;gap:var(--s-1)}.seg-btn{min-width:52px;min-height:44px;padding:0 var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink);font-weight:var(--w-semibold);font-size:var(--t-body);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}.seg-btn:hover{border-color:var(--c-primary)}.seg-btn.active{border-color:var(--c-primary);background:var(--c-primary);color:var(--c-ink-on-primary)}.seg-btn:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.mixed-actions{display:flex;flex-wrap:wrap;gap:var(--s-3);justify-content:flex-end;margin-top:var(--s-2)}.mixed-crumb{display:flex;align-items:center;gap:var(--s-2);margin:0 0 var(--s-3);color:var(--c-ink-soft);font-size:var(--t-small);font-weight:var(--w-medium)}.mixed-crumb svg{color:var(--c-primary);flex:none}.mixed-done .mixed-score{display:flex;align-items:center;gap:var(--s-2);margin:var(--s-4) 0;font-family:var(--f-display);font-size:var(--t-h1, 1.6rem);font-weight:var(--w-bold);color:var(--c-success-ink, var(--c-ink))}.mixed-done .mixed-score svg{color:var(--c-success)}.mixed-note{margin:0 0 var(--s-4);color:var(--c-ink-soft);font-size:var(--t-small)}@media(prefers-reduced-motion:reduce){.mixed-check,.seg-btn{transition:none}}.exam-entry{max-width:640px;margin:0 auto}.exam-play,.exam-done{padding:var(--s-5);border:2px solid var(--c-border);border-radius:var(--r-card, var(--r-btn));background:var(--c-surface)}.exam-crumb{display:flex;align-items:center;gap:var(--s-2);margin:0 0 var(--s-3);color:var(--c-ink-soft);font-size:var(--t-small);font-weight:var(--w-medium)}.exam-crumb svg{color:var(--c-primary);flex:none}.exam-title{display:flex;align-items:center;gap:var(--s-2);margin:0 0 var(--s-3);font-size:var(--t-h2, 1.25rem);font-weight:var(--w-bold);color:var(--c-ink)}.exam-title svg{color:var(--c-success, var(--c-primary))}.exam-q-text{margin:0 0 var(--s-4);font-size:var(--t-h3, 1.1rem);font-weight:var(--w-semibold);color:var(--c-ink)}.exam-options{display:grid;gap:var(--s-2)}.exam-opt{min-height:44px;padding:var(--s-2) var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-btn);background:var(--c-surface);color:var(--c-ink);font-size:var(--t-body);font-weight:var(--w-medium);text-align:left;cursor:pointer;transition:border-color var(--motion-fast) var(--ease-press),background var(--motion-fast) var(--ease-press)}.exam-opt:hover{border-color:var(--c-primary)}.exam-opt.on{border-color:var(--c-primary);background:var(--c-primary-soft);font-weight:var(--w-semibold)}.exam-opt:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}.exam-actions{display:flex;flex-wrap:wrap;gap:var(--s-3);justify-content:flex-end;margin-top:var(--s-4)}.exam-score{display:flex;align-items:center;gap:var(--s-2);margin:var(--s-4) 0;font-family:var(--f-display);font-size:var(--t-h1, 1.6rem);font-weight:var(--w-bold);color:var(--c-success-ink, var(--c-ink))}.exam-sub{margin:0 0 var(--s-4);color:var(--c-ink-soft);font-size:var(--t-small)}.exam-detail{margin:0 0 var(--s-4);padding-left:var(--s-5);display:grid;gap:var(--s-2)}.exam-detail-item{display:grid;gap:2px;font-size:var(--t-small)}.exam-detail-item.ok .exam-detail-q::marker{color:var(--c-success)}.exam-detail-q{font-weight:var(--w-semibold);color:var(--c-ink)}.exam-detail-a{color:var(--c-ink-soft)}@media(prefers-reduced-motion:reduce){.exam-opt{transition:none}}.exam-badge{display:inline-flex;align-items:center;gap:var(--s-1);padding:2px var(--s-2);border:1px solid transparent;border-radius:var(--r-pill);font-size:var(--t-micro);font-weight:var(--w-semibold);color:var(--c-ink);background:var(--c-surface-sunk)}.exam-badge svg{flex:none}.exam-badge.soon{color:var(--c-attention);background:var(--c-attention-soft);border-color:var(--c-attention)}.exam-badge.near{color:var(--c-primary-deep);background:var(--c-primary-soft);border-color:var(--c-primary)}.exam-badge.far{color:var(--c-ink-soft);background:var(--c-surface-sunk);border-color:var(--c-border)}.exam-badge.compact{padding:1px var(--s-2);font-size:var(--t-micro)}.exam-admin{display:grid;gap:var(--s-2);max-width:320px}.exam-admin-row{display:flex;align-items:center;gap:var(--s-2)}.exam-admin-row input[type=date]{min-height:44px;padding:0 var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-input);background:var(--c-surface);color:var(--c-ink);font:inherit;font-size:var(--t-body)}.exam-admin-row input[type=date]:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px;border-color:var(--c-primary)}.exams-panel{display:grid;gap:var(--s-3)}.exams-panel-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface)}.exams-panel-title{font-weight:var(--w-semibold);color:var(--c-ink)}.exams-panel-meta,.exams-panel-empty{margin:0;color:var(--c-ink-soft);font-size:var(--t-small)}@media(prefers-reduced-motion:reduce){.exam-badge,.exam-admin-row input[type=date]{transition:none}}.fc-explain{display:grid;gap:var(--s-2);padding:var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface)}.fc-explain-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-2)}.fc-explain-title{margin:0;font-weight:var(--w-semibold);font-size:var(--t-small)}.fc-explain-lead{margin:0;font-size:var(--t-small);color:var(--c-ink-soft)}.fc-explain-modes{display:flex;gap:var(--s-2);flex-wrap:wrap}.fc-explain-modes .btn-secondary{display:inline-flex;align-items:center;gap:var(--s-2)}.fc-explain-body{font-size:var(--t-body)}.ex-panel{display:grid;gap:var(--s-4)}.ex-panel .panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.ex-gen{display:flex;align-items:center;gap:var(--s-2)}.ex-select{min-height:44px;padding:0 var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-input);background:var(--c-surface);color:var(--c-ink);font:inherit;font-size:var(--t-body)}.ex-select:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px;border-color:var(--c-primary)}.ex-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--s-2)}.ex-item{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);width:100%;padding:var(--s-3) var(--s-4);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface);color:var(--c-ink);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--motion-fast) var(--ease-press),transform var(--motion-instant) var(--ease-press)}.ex-item:hover{border-color:var(--c-border-strong)}.ex-item:active{transform:translateY(2px)}.ex-item-title{font-weight:var(--w-semibold);font-size:var(--t-body)}.ex-item-meta{display:inline-flex;align-items:center;gap:var(--s-3);color:var(--c-ink-soft);font-size:var(--t-micro)}.ex-back{justify-self:start}.ex-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);flex-wrap:wrap}.ex-head-meta{display:inline-flex;align-items:center;gap:var(--s-3);color:var(--c-ink-soft);font-size:var(--t-small)}.ex-statement{padding:var(--s-3) 0 0;border-top:2px solid var(--c-border)}.ex-questions{margin:0;padding:0;list-style:none;display:grid;gap:var(--s-4)}.ex-question{display:grid;gap:var(--s-2);padding:var(--s-4);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface)}.ex-question-head{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.ex-question-num{font-family:var(--f-display);font-weight:var(--w-bold);font-size:var(--t-small);color:var(--c-ink)}.ex-question-pts{padding:2px var(--s-3);border-radius:var(--r-pill);background:var(--c-primary-soft);color:var(--c-ink);font-size:var(--t-micro);font-weight:var(--w-semibold)}.ex-question-skill{color:var(--c-ink-mute);font-size:var(--t-micro);font-style:italic}.ex-question-text{margin:0;font-size:var(--t-body);line-height:1.5;color:var(--c-ink)}.ex-answer{width:100%;min-height:96px;resize:vertical;font-family:var(--f-body);font-size:var(--t-body);line-height:1.5;padding:var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-input);background:var(--c-surface-sunk);color:var(--c-ink)}.ex-answer:focus{outline:none;border-color:var(--c-focus);background:var(--c-surface)}.ex-save-state{margin:0;display:inline-flex;align-items:center;gap:var(--s-2);color:var(--c-ink-mute);font-size:var(--t-small);min-height:1.2em}.ex-actions{display:grid;gap:var(--s-2);justify-items:start}.ex-actions .btn-primary{display:inline-flex;align-items:center;gap:var(--s-2)}.ex-correction-list{margin:0;padding:0;list-style:none;display:grid;gap:var(--s-3);counter-reset:exq}.quiz-correction-item.mid{border-left:4px solid var(--c-attention)}.ex-correction-pts{margin:0;display:inline-flex;align-items:center;gap:var(--s-2);font-weight:var(--w-semibold);font-size:var(--t-small);color:var(--c-ink)}.ex-correction-block{margin:0;font-size:var(--t-small);color:var(--c-ink-soft);line-height:1.5}.ex-correction-block.strong,.ex-correction-block strong{color:var(--c-ink)}.ex-correction-block.ko strong{color:var(--c-error-ink)}.ex-advice strong{color:var(--c-success-ink)}.ex-general{margin:0;padding:var(--s-3) var(--s-4);border-left:4px solid var(--c-primary);background:var(--c-surface-sunk);border-radius:var(--r-btn);color:var(--c-ink);font-size:var(--t-small);line-height:1.5}@media(prefers-reduced-motion:reduce){.ex-item{transition:none}}.parent-wrap{display:grid;gap:var(--s-5);align-content:start}.parent-head{display:flex;flex-wrap:wrap;gap:var(--s-4);align-items:end;justify-content:space-between}.parent-title{margin:0;font-family:var(--f-display);font-size:var(--t-h1, 1.6rem);font-weight:var(--w-bold);color:var(--c-ink)}.parent-sub{margin:var(--s-1) 0 0;color:var(--c-ink-mute);font-size:var(--t-small)}.parent-actions{display:flex;gap:var(--s-2)}.parent-actions .btn-primary,.parent-actions .btn-secondary{display:inline-flex;align-items:center;gap:var(--s-2)}.parent-picker{display:grid;gap:var(--s-1);font-size:var(--t-small);font-weight:var(--w-semibold);color:var(--c-ink-soft);max-width:320px}.parent-picker select{padding:var(--s-2) var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-input);background:var(--c-surface);color:var(--c-ink);font:inherit}.parent-picker select:focus{outline:none;border-color:var(--c-focus)}.parent-period{margin:0;color:var(--c-ink-mute);font-size:var(--t-small)}.parent-section{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-card, 14px);padding:var(--s-4);display:grid;gap:var(--s-3)}.parent-section h2{margin:0;font-family:var(--f-display);font-size:var(--t-h3, 1.05rem);font-weight:var(--w-bold);color:var(--c-ink)}.parent-two-col{display:grid;gap:var(--s-4);grid-template-columns:1fr}@media(min-width:900px){.parent-two-col{grid-template-columns:1fr 2fr}}.parent-bars{display:flex;gap:var(--s-2);align-items:stretch;min-height:140px}.parent-bar-col{flex:1;display:grid;grid-template-rows:1fr auto auto;justify-items:center;gap:2px;min-width:0}.parent-bar{width:100%;max-width:44px;background:var(--c-primary);border-radius:4px 4px 0 0;align-self:end;min-height:2px}.parent-bar-val{font-size:var(--t-micro);color:var(--c-ink-soft);white-space:nowrap}.parent-bar-label{font-size:var(--t-micro);color:var(--c-ink-mute)}.parent-table{width:100%;border-collapse:collapse;font-size:var(--t-small)}.parent-table th{text-align:left;color:var(--c-ink-mute);font-weight:var(--w-semibold);padding:var(--s-2);border-bottom:2px solid var(--c-border-strong)}.parent-table td{padding:var(--s-2);border-bottom:1px solid var(--c-border);color:var(--c-ink)}.parent-weak-courses{margin:0;padding-left:1.2em;color:var(--c-ink);font-size:var(--t-small);display:grid;gap:var(--s-1)}.parent-empty{margin:0;color:var(--c-ink-mute);font-size:var(--t-small)}.parent-kpi{margin:0;color:var(--c-ink-soft);font-size:var(--t-body)}.parent-kpi strong{color:var(--c-ink);font-size:var(--t-h2, 1.3rem)}.parent-goals{margin:0;padding:0;list-style:none;display:grid;gap:var(--s-2)}.parent-goals li{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap}.parent-goal-label{flex:1;color:var(--c-ink);font-size:var(--t-small)}.parent-goal-state{font-size:var(--t-micro);font-weight:var(--w-semibold);padding:2px var(--s-2);border-radius:var(--r-pill, 999px);background:var(--c-surface-sunk);color:var(--c-ink-soft)}.parent-goal-state.ok{background:var(--c-success-soft);color:var(--c-success-ink)}.parent-goal-nums{font-size:var(--t-small);color:var(--c-ink-soft);font-variant-numeric:tabular-nums}@media print{body{background:#fff}.shell>.sidebar,.mobile-nav,.styleguide-toggle,.no-print{display:none!important}.shell{display:block}.main,.content{padding:0;margin:0;max-width:none}.parent-print{display:grid;gap:12px}.parent-section{border:1px solid #ccc;break-inside:avoid}.parent-bar{background:#666}}.curr-panel{display:grid;gap:var(--s-3);border:2px solid var(--c-border);border-radius:var(--r-card);background:var(--c-surface);padding:var(--s-4)}.curr-sub{margin:0;color:var(--c-ink-soft);font-size:var(--t-body)}.curr-note{margin:0;color:var(--c-ink-mute);font-size:var(--t-small)}.curr-reco{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;padding:var(--s-3);border-radius:var(--r-btn, 14px);background:var(--c-primary-soft);color:var(--c-ink);font-size:var(--t-body)}.curr-reco strong{font-weight:var(--w-semibold)}.curr-reco-btn{margin-left:auto}.curr-subject{border-top:1px solid var(--c-border);padding-top:var(--s-2)}.curr-subject>summary{cursor:pointer;font-weight:var(--w-semibold);color:var(--c-ink);padding:var(--s-1) 0}.curr-theme{margin:var(--s-2) 0 var(--s-3) var(--s-2)}.curr-theme-title{margin:0 0 var(--s-1);font-size:var(--t-small);font-weight:var(--w-semibold);color:var(--c-ink-soft);text-transform:uppercase;letter-spacing:.02em}.curr-chapters{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-1)}.curr-chapter{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;padding:var(--s-2) 0;border-bottom:1px solid var(--c-border)}.curr-chapter:last-child{border-bottom:0}.curr-chapter-title{font-weight:var(--w-medium);color:var(--c-ink)}.curr-chapter-meta{color:var(--c-ink-mute);font-size:var(--t-micro)}.curr-mastery{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:var(--w-semibold);color:var(--c-success-ink, var(--c-primary))}.curr-mastery.low{color:var(--c-warn-ink, var(--c-ink-soft))}.curr-play{min-height:36px;padding:0 var(--s-3)}.curr-none{color:var(--c-ink-mute);font-size:var(--t-micro)}.mixed-chapters{display:grid;gap:var(--s-2)}.mixed-chapters-toggle{text-align:left;background:none;border:0;padding:0;color:var(--c-primary);font-weight:var(--w-medium);cursor:pointer;font-size:var(--t-body)}.mixed-chapters .mixed-check{font-size:var(--t-micro)}
