*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.left-0{left:0}.left-4{left:1rem}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-16{top:4rem}.top-4{top:1rem}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.mx-4{margin-left:1rem;margin-right:1rem}.mb-10{margin-bottom:2.5rem}.mb-4{margin-bottom:1rem}.ml-2{margin-left:.5rem}.ml-72{margin-left:18rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-20{height:5rem}.h-9{height:2.25rem}.h-\[560px\]{height:560px}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-72{width:18rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-full{width:100%}.max-w-5xl{max-width:64rem}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.scale-\[0\.98\]{--tw-scale-x:0.98;--tw-scale-y:0.98}.scale-\[0\.98\],.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1\.5{gap:.375rem}.gap-3{gap:.75rem}.gap-6{gap:1.5rem}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:.75rem}.rounded-xl{border-radius:.5rem}.border{border-width:1px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-primary{--tw-border-opacity:1;border-color:rgb(51 54 151/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-slate-100{--tw-border-opacity:1;border-color:rgb(241 245 249/var(--tw-border-opacity,1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-slate-200\/50{border-color:rgb(226 232 240/.5)}.border-t-transparent{border-top-color:transparent}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-background{--tw-bg-opacity:1;background-color:rgb(248 249 250/var(--tw-bg-opacity,1))}.bg-error-container{--tw-bg-opacity:1;background-color:rgb(255 218 214/var(--tw-bg-opacity,1))}.bg-primary-fixed{--tw-bg-opacity:1;background-color:rgb(225 224 255/var(--tw-bg-opacity,1))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-surface-container-high{--tw-bg-opacity:1;background-color:rgb(231 232 233/var(--tw-bg-opacity,1))}.bg-surface-container-low{--tw-bg-opacity:1;background-color:rgb(243 244 245/var(--tw-bg-opacity,1))}.bg-tertiary-fixed{--tw-bg-opacity:1;background-color:rgb(255 220 191/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/50{background-color:rgb(255 255 255/.5)}.bg-white\/80{background-color:rgb(255 255 255/.8)}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-6{padding:1.5rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.pl-4{padding-left:1rem}.pt-6{padding-top:1.5rem}.text-right{text-align:right}.font-body{font-family:Inter,sans-serif}.font-headline{font-family:Manrope,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-\[\#333697\]{--tw-text-opacity:1;color:rgb(51 54 151/var(--tw-text-opacity,1))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.text-on-error-container{--tw-text-opacity:1;color:rgb(147 0 10/var(--tw-text-opacity,1))}.text-on-surface{--tw-text-opacity:1;color:rgb(25 28 29/var(--tw-text-opacity,1))}.text-on-surface-variant{--tw-text-opacity:1;color:rgb(69 70 82/var(--tw-text-opacity,1))}.text-on-tertiary-fixed-variant{--tw-text-opacity:1;color:rgb(106 59 0/var(--tw-text-opacity,1))}.text-outline{--tw-text-opacity:1;color:rgb(117 118 132/var(--tw-text-opacity,1))}.text-primary{--tw-text-opacity:1;color:rgb(51 54 151/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.line-through{text-decoration-line:line-through}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgb(0 0 0/0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-2xl,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0/0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-indigo-500\/5{--tw-shadow-color:rgb(99 102 241/0.05);--tw-shadow:var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-indigo-50{--tw-ring-opacity:1;--tw-ring-color:rgb(238 242 255/var(--tw-ring-opacity,1))}.blur{--tw-blur:blur(8px)}.blur,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{--tr-green:#59B37F;--tr-green-hover:oklch(49% 0.13 155);--tr-green-50:oklch(97% 0.03 162);--tr-green-100:oklch(93% 0.07 162);--tr-green-200:oklch(86% 0.12 162);--tr-navy:#261E47;--tr-navy-50:oklch(96% 0.02 275);--tr-mint:#F0FCFF;--tr-blue:#59B37F;--tr-blue-hover:oklch(49% 0.13 155);--tr-blue-50:oklch(97% 0.03 162);--tr-blue-100:oklch(93% 0.07 162);--tr-blue-200:oklch(86% 0.12 162);--tr-blue-600:#59B37F;--tr-blue-900:#261E47;--cream:#FFFFFF;--cream-2:oklch(98% 0.012 165);--paper:#FFFFFF;--ink:#000000;--ink-2:#261E47;--ink-3:oklch(44% 0.045 275);--ink-muted:oklch(60% 0.025 270);--line:oklch(91% 0.008 168);--line-soft:oklch(95% 0.004 168);--green:#59B37F;--green-50:oklch(97% 0.03 162);--amber:#B86E16;--amber-50:#FBF0DC;--rose:#C23D5B;--rose-50:#FBE6EB;--shadow-sm:0 1px 2px rgba(38,30,71,0.05),0 2px 6px rgba(38,30,71,0.04);--shadow-md:0 2px 8px rgba(38,30,71,0.08),0 8px 24px rgba(38,30,71,0.06);--shadow-lg:0 8px 24px rgba(38,30,71,0.12),0 24px 48px rgba(38,30,71,0.07);--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;--sans:"Montserrat",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--serif:"Montserrat",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:var(--sans);background:var(--cream);color:var(--ink);-webkit-font-smoothing:antialiased;font-feature-settings:"ss01","cv11";font-size:14px;line-height:1.45}button{border:none;background:none;cursor:pointer}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.serif{font-family:var(--serif);font-weight:400;letter-spacing:-.015em}.mono{font-family:var(--mono);font-feature-settings:"tnum"}.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--cream-2);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.sb-brand{display:flex;align-items:center;gap:10px;padding:6px 10px 22px}.sb-brand img{width:30px;height:30px}.sb-brand .name{font-family:var(--serif);font-size:18px;font-weight:500;letter-spacing:-.01em}.sb-brand .name em{font-style:normal;color:var(--tr-blue)}.sb-section-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);padding:14px 10px 6px}.sb-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);color:var(--ink-2);font-size:14px;font-weight:500;cursor:pointer;width:100%;text-align:left;transition:background .12s}.sb-item:hover{background:rgba(79,63,232,.05)}.sb-item.active{background:var(--paper);box-shadow:var(--shadow-sm)}.sb-item.active,.sb-item.active .sb-icon{color:var(--tr-blue)}.sb-icon{width:18px;height:18px;color:var(--ink-3);flex-shrink:0}.sb-count{margin-left:auto;font-size:12px;color:var(--ink-muted);font-variant-numeric:tabular-nums}.sb-footer{margin-top:auto;display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:12px 12px 10px;border-radius:10px;transition:background .12s}.sb-footer:hover{background:var(--cream)}.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:none;background:transparent;cursor:pointer;font-size:13px;color:var(--ink-2);border-radius:8px;font-family:inherit;text-align:left}.menu-item:hover{background:var(--cream);color:var(--ink)}.sb-avatar{width:32px;height:32px;border-radius:50%;background:var(--tr-blue);color:white;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px}.sb-user-name{font-size:13px;font-weight:600}.sb-user-role{font-size:11px;color:var(--ink-muted)}.main{min-width:0;background:var(--cream)}.topbar{justify-content:space-between;padding:16px 32px;border-bottom:1px solid var(--line);background:var(--cream);position:sticky;top:0;z-index:10}.breadcrumb,.topbar{display:flex;align-items:center}.breadcrumb{gap:8px;font-size:13px;color:var(--ink-muted)}.breadcrumb .sep{opacity:.5}.breadcrumb .cur{color:var(--ink);font-weight:500}.topbar-actions{gap:12px}.tb-search,.topbar-actions{display:flex;align-items:center}.tb-search{gap:8px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 12px;width:280px;color:var(--ink-muted);font-size:13px}.tb-search kbd{font-family:var(--mono);font-size:10px;background:var(--cream-2);padding:2px 6px;border-radius:4px;color:var(--ink-3)}.icon-btn{width:36px;height:36px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:var(--ink-3);position:relative}.icon-btn:hover{background:var(--paper);color:var(--ink)}.icon-btn .dot{position:absolute;top:8px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--rose);border:2px solid var(--cream)}.page{padding:32px;max-width:1400px;margin:0 auto}.page-header{margin-bottom:28px}.student-list-header{margin-bottom:18px}.page-title{font-family:var(--serif);font-size:32px;font-weight:700;letter-spacing:-.01em;line-height:1.1}.page-sub{color:var(--ink-3);margin-top:6px;font-size:15px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.card-pad{padding:20px}.card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line-soft)}.card-header h3{font-size:14px;font-weight:700;letter-spacing:-.005em}.card-header .link{color:var(--tr-blue);font-size:12px;font-weight:500}.btn{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--r-sm);font-size:13px;font-weight:500;transition:all .12s;border:1px solid transparent}.btn-primary{background:var(--tr-blue);color:white}.btn-primary:hover{background:var(--tr-blue-hover);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--paper);border-color:var(--line);color:var(--ink)}.btn-secondary:hover{border-color:var(--ink-muted)}.btn-ghost{color:var(--ink-3)}.btn-ghost:hover{background:var(--paper);color:var(--ink)}.btn-lg{padding:10px 18px;font-size:14px}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:500;background:var(--cream-2);color:var(--ink-3)}.pill.blue{background:var(--tr-blue-50);color:var(--tr-blue)}.pill.green{background:var(--green-50);color:var(--green)}.pill.amber{background:var(--amber-50);color:var(--amber)}.pill.rose{background:var(--rose-50);color:var(--rose)}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.avatar{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;background:var(--tr-blue-50);color:var(--tr-blue);flex-shrink:0}.avatar.sm{width:28px;height:28px;font-size:11px}.avatar.lg{width:56px;height:56px;font-size:18px}.avatar.c0{background:#F0EEFF;color:#4F3FE8}.avatar.c1{background:#E6F4EC;color:#2F8A5C}.avatar.c2{background:#FBF0DC;color:#B86E16}.avatar.c3{background:#FBE6EB;color:#C23D5B}.avatar.c4{background:#E4EEF7;color:#2B5A8A}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.kpi{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;position:relative;overflow:hidden}.kpi-label{font-size:12px;color:var(--ink-3);font-weight:500}.kpi-value{font-family:var(--serif);font-size:36px;font-weight:700;letter-spacing:-.02em;line-height:1;margin-top:8px}.kpi-value .unit{font-size:18px;color:var(--ink-3);margin-left:4px}.kpi-delta{margin-top:10px;font-size:12px;color:var(--green);font-weight:500;display:inline-flex;align-items:center;gap:4px}.kpi-delta.neg{color:var(--rose)}.kpi-spark{position:absolute;bottom:16px;right:16px;opacity:.6}.hero-session{background:linear-gradient(135deg,#261E47,#3D2E68 60%,#59B37F);color:white;border-radius:var(--r-xl);padding:28px 32px;margin-bottom:24px;position:relative;overflow:hidden;box-shadow:0 12px 32px rgba(38,30,71,.28)}.hero-session:before{content:"";position:absolute;top:-80px;right:-80px;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.15),transparent 70%)}.hero-session:after{content:"∫";position:absolute;right:48px;bottom:-30px;font-family:var(--serif);font-size:220px;line-height:1;color:rgba(255,255,255,.08);font-style:italic}.hero-eyebrow{font-size:12px;font-weight:500;opacity:.75;letter-spacing:.06em;text-transform:uppercase}.hero-title{font-family:var(--serif);font-size:28px;font-weight:400;margin-top:8px;letter-spacing:-.015em}.hero-meta,.hero-title{position:relative;z-index:1}.hero-meta{display:flex;gap:28px;margin-top:20px}.hero-meta-item{font-size:13px;opacity:.85}.hero-meta-item strong{display:block;font-size:16px;opacity:1;margin-top:2px;font-weight:500}.hero-cta{margin-top:24px;display:flex;gap:10px;position:relative;z-index:1}.hero-cta .btn-primary{background:white;color:var(--tr-blue);font-weight:600}.hero-cta .btn-primary:hover{background:rgba(255,255,255,.92)}.hero-cta .btn-ghost{color:white;border:1px solid rgba(255,255,255,.3)}.hero-cta .btn-ghost:hover{background:rgba(255,255,255,.1)}.two-col{display:grid;grid-template-columns:2fr 1fr;gap:20px}.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.row{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid var(--line-soft);transition:background .1s}.row:last-child{border-bottom:none}.row:hover{background:var(--cream);cursor:pointer}.row-main{flex:1;min-width:0}.row-title{font-weight:500;font-size:14px}.row-sub{font-size:12px;color:var(--ink-muted);margin-top:2px}.session-row{display:grid;grid-template-columns:76px 1fr auto;gap:16px;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line-soft);transition:background .1s;cursor:pointer}.session-row:hover{background:var(--cream)}.session-row:last-child{border-bottom:none}.session-time{font-family:var(--serif);font-size:22px;font-weight:400;letter-spacing:-.01em;color:var(--ink)}.session-time .dur{display:block;font-family:var(--sans);font-size:11px;color:var(--ink-muted);font-weight:500;margin-top:2px}.sessions-page{max-width:1400px}.sessions-page .quick-actions-row{margin-bottom:18px}.sessions-page .quick-action-card{gap:14px;padding:14px 18px}.sessions-page .qa-icon{width:42px;height:42px;border-radius:12px}.sessions-page .qa-icon svg{width:20px;height:20px}.sessions-page .qa-title{font-size:14px}.sessions-header{display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.session-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}.session-summary-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px}.session-summary-card span{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted)}.session-summary-card strong{display:block;margin-top:8px;font-family:var(--serif);font-size:34px;line-height:1;letter-spacing:-.03em;color:var(--ink)}.session-summary-card small{display:block;margin-top:8px;font-size:12px;color:var(--ink-3)}.session-summary-card.green{border-top:3px solid var(--tr-green)}.session-summary-card.muted{border-top:3px solid var(--line)}.next-session-card{display:flex;align-items:center;gap:16px;margin-bottom:18px;padding:10px 16px;background:color-mix(in oklch,var(--tr-blue) 4%,var(--paper));border:1px solid color-mix(in oklch,var(--tr-blue) 22%,var(--line));border-left:3px solid var(--tr-blue);border-radius:var(--r-lg)}.next-session-kicker{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--tr-blue);white-space:nowrap;flex-shrink:0}.next-session-main{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.next-session-time{font-size:14px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.next-session-name{font-size:14px;font-weight:600;color:var(--ink)}.next-session-dur{font-size:12px;color:var(--ink-3);white-space:nowrap}.next-session-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.session-calendar-panel{margin-bottom:18px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);overflow-x:auto}.session-calendar-head{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);background:#FCFBF8}.session-calendar-head span{display:block;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted)}.session-calendar-head strong{display:block;margin-top:3px;font-size:14px;color:var(--ink)}.calendar-period-nav{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:3px;border:1px solid var(--line-soft);border-radius:999px;background:var(--paper);white-space:nowrap}.calendar-nav-btn{width:32px;height:32px;border:0;border-radius:999px;background:transparent;color:var(--ink-2);font-size:20px;line-height:1;display:grid;place-items:center;cursor:pointer;transition:background .12s,color .12s,transform .12s}.calendar-nav-btn:hover:not(:disabled){background:var(--cream);color:var(--ink)}.calendar-nav-btn:active:not(:disabled){transform:scale(.96)}.calendar-nav-btn:disabled{opacity:.35;cursor:default}.calendar-nav-btn:focus-visible,.calendar-today-btn:focus-visible,.calendar-view-switch button:focus-visible,.session-access-btn:focus-visible,.session-tab:focus-visible{outline:2px solid color-mix(in oklch,var(--tr-blue) 52%,white);outline-offset:2px}.calendar-period-label{min-width:210px;padding:2px 12px 3px;text-align:center}.calendar-period-label span{display:block;font-size:9px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted)}.calendar-period-label strong{display:block;margin-top:0;font-size:13px;color:var(--ink)}.calendar-today-bar{display:inline-flex;align-items:center;min-height:34px;padding:3px;border:1px solid var(--line-soft);border-radius:999px;background:var(--paper);white-space:nowrap}.calendar-today-btn{border:1px solid color-mix(in oklch,var(--tr-blue) 24%,var(--line));background:var(--tr-blue-50);color:var(--tr-blue);min-height:30px;padding:6px 13px;border-radius:999px;font-size:12px;font-weight:800;cursor:pointer;transition:background .12s,color .12s,border-color .12s,box-shadow .12s,transform .12s}.calendar-today-btn:hover{border-color:var(--tr-blue);background:color-mix(in oklch,var(--tr-blue-50) 70%,white)}.calendar-today-btn:active{transform:scale(.98)}.calendar-today-btn.active{background:var(--tr-blue);color:white;border-color:var(--tr-blue);box-shadow:0 0 0 3px color-mix(in oklch,var(--tr-blue) 16%,transparent)}.calendar-view-switch{display:inline-flex;gap:3px;padding:3px;background:var(--cream);border:1px solid var(--line-soft);border-radius:999px}.calendar-view-switch button{border:0;background:transparent;color:var(--ink-3);min-height:30px;padding:6px 13px;border-radius:999px;font-size:12px;font-weight:750;cursor:pointer;transition:background .12s,color .12s,box-shadow .12s,transform .12s}.calendar-view-switch button:hover{color:var(--ink);background:rgba(255,255,255,.5)}.calendar-view-switch button:active{transform:scale(.98)}.calendar-view-switch button.active{background:var(--tr-blue);color:white;box-shadow:0 1px 2px rgba(38,30,71,.08),0 0 0 2px color-mix(in oklch,var(--tr-blue) 14%,transparent)}.session-view-switch{display:inline-flex;gap:4px;padding:4px;margin-bottom:14px;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm)}.session-view-tab{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--ink-3);min-height:38px;padding:0 18px;border-radius:9px;font-size:13px;font-weight:750;cursor:pointer;transition:background .12s,color .12s,box-shadow .12s,transform .12s}.session-view-tab svg{opacity:.75}.session-view-tab:hover{color:var(--ink);background:var(--cream)}.session-view-tab:active{transform:scale(.98)}.session-view-tab.active{background:var(--tr-blue);color:white;box-shadow:0 1px 3px rgba(38,30,71,.14)}.session-view-tab.active svg{opacity:1}.session-view-tab:focus-visible{outline:2px solid var(--tr-blue);outline-offset:2px}.calendar-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-left:auto}.calendar-legend span{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:650;color:var(--ink-2);letter-spacing:0;text-transform:none}.calendar-legend span:before{content:"";width:8px;height:8px;border-radius:999px;background:var(--legend-color)}.calendar-legend .solo{--legend-color:#1A73E8}.calendar-legend .duo{--legend-color:#9334E6}.calendar-legend .exam{--legend-color:#E8710A}.session-toast{max-width:460px;padding:8px 11px;border-radius:999px;background:var(--tr-green-50);color:var(--tr-green);font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-calendar-grid{--calendar-hour-height:32px;--calendar-day-height:768px;display:grid;grid-template-columns:64px repeat(5,minmax(178px,1fr));min-width:1080px;background:var(--paper);align-items:stretch}.calendar-swipe-zone{touch-action:pan-y;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.calendar-swipe-zone:active{cursor:grabbing}.calendar-time-rail{padding-top:54px;border-right:1px solid var(--line);background:#FCFBF8}.calendar-time-rail span{display:block;height:var(--calendar-hour-height);padding:0 10px 0 0;text-align:right;font-family:var(--mono);font-size:10px;color:var(--ink-muted)}.calendar-week-empty{grid-column:2/-1;min-height:calc(54px + var(--calendar-day-height));display:grid;place-items:center;align-content:center;gap:5px;border-right:1px solid var(--line-soft);background:repeating-linear-gradient(135deg,#FCFBF8,#FCFBF8 10px,var(--paper) 10px,var(--paper) 20px);color:var(--ink-muted);text-align:center}.calendar-week-empty strong{color:var(--ink);font-size:14px;font-weight:750}.calendar-week-empty span{font-size:12px;font-weight:650;letter-spacing:0;text-transform:none}.calendar-day{min-height:calc(54px + var(--calendar-day-height));border-right:1px solid var(--line-soft);background:transparent}.calendar-day:last-child{border-right:none}.calendar-day.is-outside{background:#F7F4EE}.calendar-day.is-today{background:linear-gradient(180deg,color-mix(in oklch,var(--tr-blue-50) 82%,white),rgba(255,255,255,0) 70%);box-shadow:inset 0 0 0 2px color-mix(in oklch,var(--tr-blue) 28%,transparent)}.calendar-day-head{height:54px;display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:12px;border-bottom:1px solid var(--line-soft)}.calendar-day-head span{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted)}.calendar-day-head strong{font-family:var(--serif);font-size:24px;line-height:1;color:var(--ink)}.calendar-day.is-today .calendar-day-head{background:color-mix(in oklch,var(--tr-blue-50) 72%,white)}.calendar-day.is-today .calendar-day-head span,.calendar-day.is-today .calendar-day-head strong{color:var(--tr-blue)}.calendar-slots{position:relative;height:var(--calendar-day-height);background:linear-gradient(var(--line-soft) 1px,transparent 1px) 0 0 /100% var(--calendar-hour-height),linear-gradient(90deg,rgba(255,255,255,.48),rgba(255,255,255,0))}.calendar-now{position:absolute;left:0;right:0;height:0;border-top:2px solid #ea4335;z-index:3;pointer-events:none}.calendar-now-dot{position:absolute;left:-4px;top:-5px;width:9px;height:9px;border-radius:50%;background:#EA4335;box-shadow:0 0 0 3px color-mix(in oklch,#EA4335 22%,transparent)}.calendar-now-time{position:absolute;right:6px;top:-9px;font-size:10px;font-weight:800;letter-spacing:.02em;color:#EA4335;background:var(--paper);padding:1px 5px;border-radius:999px;line-height:1.5}.calendar-session{position:absolute;left:8px;right:8px;border:1px solid var(--session-border,var(--line-soft));border-left:4px solid var(--session-color,var(--tr-blue));border-radius:8px;background:var(--cream);padding:7px 9px 7px 8px;text-align:left;color:var(--ink);box-shadow:0 1px 2px rgba(38,30,71,.04);transition:border-color .12s,box-shadow .12s,transform .12s,background .12s;overflow:hidden;z-index:1}.calendar-session.solo{--session-color:#1A73E8;--session-border:color-mix(in oklch,#1A73E8 24%,var(--line));background:color-mix(in oklch,#1A73E8 9%,white)}.calendar-session.duo{--session-color:#9334E6;--session-border:color-mix(in oklch,#9334E6 24%,var(--line));background:color-mix(in oklch,#9334E6 9%,white)}.calendar-session.exam{--session-color:#E8710A;--session-border:color-mix(in oklch,#E8710A 28%,var(--line));background:color-mix(in oklch,#E8710A 10%,white)}.calendar-session:hover{border-color:var(--session-color,var(--tr-blue));box-shadow:0 8px 18px rgba(38,30,71,.08);transform:translateY(-1px)}.calendar-session.is-next{border-color:var(--session-color,var(--tr-blue));box-shadow:0 0 0 2px color-mix(in oklch,var(--session-color,var(--tr-blue)) 18%,transparent),0 10px 22px rgba(38,30,71,.1)}.calendar-session span{display:block;font-family:var(--mono);font-size:11px;color:var(--session-color,var(--tr-blue));font-weight:700}.calendar-session strong{display:block;margin-top:2px;font-size:12px;font-weight:750;line-height:1.2}.calendar-session small{display:block;margin-top:1px;font-size:11px;line-height:1.25;color:var(--ink-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(132px,1fr));min-width:980px;background:var(--paper)}.month-weekday{height:36px;display:flex;align-items:center;padding:0 10px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line);background:#FCFBF8;color:var(--ink-muted);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.month-weekday:nth-child(7){border-right:none}.month-day{min-height:118px;padding:8px;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);background:var(--paper)}.month-day:nth-child(7n){border-right:none}.month-day.is-outside{background:#F7F4EE;color:var(--ink-muted)}.month-day.is-today{background:color-mix(in oklch,var(--tr-blue-50) 78%,white);box-shadow:inset 0 0 0 2px color-mix(in oklch,var(--tr-blue) 32%,transparent)}.month-day-number{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:24px;margin-bottom:6px}.month-day-number span{min-height:18px;padding:3px 7px;border-radius:999px;background:var(--tr-blue);color:white;font-size:10px;font-weight:800}.month-day-number span:empty{display:none}.month-day-number strong{font-family:var(--mono);font-size:12px;color:var(--ink-2)}.month-day.is-today .month-day-number strong{color:var(--tr-blue)}.month-day-sessions{display:grid;gap:5px}.month-session{width:100%;min-height:28px;border:1px solid var(--session-border,var(--line-soft));border-left:4px solid var(--session-color,var(--tr-blue));border-radius:7px;background:var(--session-bg,var(--cream));padding:4px 6px;display:grid;grid-template-columns:38px minmax(0,1fr);gap:6px;align-items:center;text-align:left}.month-session.solo{--session-color:#1A73E8;--session-border:color-mix(in oklch,#1A73E8 22%,var(--line));--session-bg:color-mix(in oklch,#1A73E8 8%,white)}.month-session.duo{--session-color:#9334E6;--session-border:color-mix(in oklch,#9334E6 22%,var(--line));--session-bg:color-mix(in oklch,#9334E6 8%,white)}.month-session.exam{--session-color:#E8710A;--session-border:color-mix(in oklch,#E8710A 24%,var(--line));--session-bg:color-mix(in oklch,#E8710A 9%,white)}.month-session span{font-family:var(--mono);font-size:10px;color:var(--session-color,var(--tr-blue));font-weight:750}.month-session strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:11px;font-weight:750}.month-day-sessions em{font-size:11px;font-style:normal;color:var(--ink-muted)}.sessions-panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.sessions-control-callout{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;background:linear-gradient(135deg,color-mix(in oklch,var(--tr-green) 10%,white),color-mix(in oklch,var(--tr-blue) 7%,white));border-bottom:1px solid color-mix(in oklch,var(--tr-green) 18%,var(--line))}.sessions-control-callout>div{display:flex;align-items:center;gap:12px;min-width:0}.sessions-control-kicker{flex-shrink:0;display:inline-flex;align-items:center;min-height:24px;padding:4px 9px;border-radius:999px;background:var(--paper);border:1px solid color-mix(in oklch,var(--tr-green) 24%,var(--line));color:var(--tr-green);font-size:10px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.sessions-control-callout strong{min-width:0;color:var(--ink);font-size:13px;font-weight:760}.sessions-control-callout small{color:var(--ink-3);font-size:12px;line-height:1.35;text-align:right}.sessions-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-bottom:1px solid var(--line);background:#FCFBF8}.session-tabs{display:inline-flex;gap:4px;padding:3px;background:var(--cream);border:1px solid var(--line-soft);border-radius:999px;overflow-x:auto}.session-tab{border:0;background:transparent;color:var(--ink-3);border-radius:999px;padding:7px 11px;font-size:12px;font-weight:650;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.session-tab strong{min-width:20px;height:20px;display:inline-grid;place-items:center;border-radius:999px;background:rgba(255,255,255,.72);color:var(--ink-muted);font-size:11px}.session-tab.active{background:var(--paper);color:var(--ink);box-shadow:0 1px 2px rgba(38,30,71,.08)}.session-tab.active strong{background:var(--tr-blue-50);color:var(--tr-blue)}.sessions-toolbar-note{margin-left:auto;font-size:12px;color:var(--ink-muted);white-space:nowrap}.sessions-table-wrap{overflow-x:auto}.sessions-table{width:100%;min-width:1060px;border-collapse:collapse}.sessions-table th{height:40px;padding:0 14px;background:var(--paper);border-bottom:1px solid var(--line);color:var(--ink-muted);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-align:left}.session-sort-btn{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;margin:-4px -7px;padding:5px 7px;border-radius:7px;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;white-space:nowrap}.session-sort-btn:hover{background:var(--cream);color:var(--ink)}.session-sort-btn.active{background:var(--tr-green-50);color:var(--tr-green)}.session-sort-btn .sort-mark{width:17px;height:17px;display:inline-grid;place-items:center;border-radius:999px;background:color-mix(in oklch,var(--ink-muted) 12%,transparent);font-size:11px;line-height:1}.session-sort-btn.active .sort-mark{background:var(--tr-green);color:white}.sessions-table td{padding:13px 14px;border-bottom:1px solid var(--line-soft);vertical-align:middle;font-size:13px}.sessions-table tr:last-child td{border-bottom:none}.sessions-table tbody tr{transition:background .12s}.sessions-table tbody tr:hover{background:var(--cream)}.sessions-table tbody tr.is-next-row{background:color-mix(in oklch,var(--tr-blue-50) 58%,white)}.sessions-table .is-past{color:color-mix(in oklch,var(--ink) 82%,white)}.sessions-empty-state{min-height:110px;display:grid;place-items:center;gap:5px;text-align:center;color:var(--ink-muted)}.sessions-empty-state strong{color:var(--ink);font-size:14px;font-weight:750}.sessions-empty-state span{max-width:460px;font-size:12px}.session-date-cell{display:flex;align-items:center;gap:10px}.sdc-time-card{flex-shrink:0;width:86px;border-radius:10px;background:var(--paper);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:8px 6px;text-align:center}.sdc-time-card.is-next{background:color-mix(in oklch,var(--tr-blue-50) 70%,white);border-color:color-mix(in oklch,var(--tr-blue) 25%,var(--line))}.sdc-time-card.is-past{background:var(--cream);border-color:var(--line-soft)}.sdc-hour{display:block;font-family:var(--serif);font-size:15px;font-weight:700;color:var(--ink-2);line-height:1.1}.sdc-time-card.is-next .sdc-hour{color:var(--tr-blue)}.sdc-dur,.sdc-time-card.is-past .sdc-hour{color:var(--ink-muted)}.sdc-dur{display:block;font-size:9px;letter-spacing:.03em;margin-top:2px}.sdc-date{display:block;margin-top:5px;padding-top:5px;border-top:1px solid var(--line-soft);width:100%;font-size:10px;font-weight:600;color:var(--ink-3);letter-spacing:.01em}.session-date-cell strong{display:none}.session-hour-cell{font-family:var(--mono);font-size:13px;color:var(--ink);white-space:nowrap}.session-student{border:0;background:transparent;padding:0;display:flex;align-items:center;gap:10px;color:inherit;text-align:left;min-width:260px}.session-student strong{display:block;font-size:13px;font-weight:650;color:var(--ink)}.session-student small{display:block;margin-top:2px;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;color:var(--ink-muted)}.session-format{display:inline-flex;align-items:center;min-height:24px;padding:3px 9px;border-radius:999px;background:var(--format-bg,var(--cream));border:1px solid var(--format-border,var(--line-soft));color:var(--format-color,var(--ink-2));font-size:11px;font-weight:650;white-space:nowrap}.session-format.solo{--format-bg:color-mix(in oklch,#1A73E8 9%,white);--format-border:color-mix(in oklch,#1A73E8 22%,var(--line));--format-color:#1A73E8}.session-format.duo{--format-bg:color-mix(in oklch,#9334E6 9%,white);--format-border:color-mix(in oklch,#9334E6 22%,var(--line));--format-color:#7B2CBF}.session-format.exam{--format-bg:color-mix(in oklch,#E8710A 10%,white);--format-border:color-mix(in oklch,#E8710A 24%,var(--line));--format-color:#B85B00}.session-duration{font-family:var(--mono);font-size:12px;color:var(--ink-2);white-space:nowrap}.session-report,.session-status{display:inline-flex;align-items:center;min-height:23px;padding:3px 8px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}.session-status.upcoming{background:var(--tr-green-50);color:var(--tr-green)}.session-status.next{background:var(--tr-blue-50);color:var(--tr-blue)}.session-status.past{background:var(--cream);color:var(--ink-muted)}.session-status.moved{background:var(--amber-50);color:var(--amber)}.session-report{background:#F3F0EA;color:var(--ink-2)}.session-report.late{background:var(--amber-50);color:var(--amber)}.session-action-cell{width:42px;text-align:right}.session-access-btn{border:1px solid color-mix(in oklch,var(--tr-blue) 26%,var(--line));background:var(--tr-blue-50);color:var(--tr-blue);min-height:30px;padding:5px 10px;border-radius:999px;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:750;white-space:nowrap}.session-access-btn.past{background:var(--cream);border-color:var(--line-soft);color:var(--ink-2)}.th-menu-cell{position:relative}.th-btn{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;padding:4px 6px;margin:-4px -6px;border-radius:6px;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;white-space:nowrap}.th-btn:hover{background:rgba(20,15,40,.06);color:var(--ink)}.th-btn .th-caret{opacity:.4;flex-shrink:0}.th-btn.filtered{color:var(--tr-green)}.th-btn-actionable{gap:7px;min-height:28px;padding:5px 8px;margin:-5px -8px;border:1px solid transparent;background:rgba(20,15,40,.045);color:var(--ink-2);box-shadow:none}.th-btn-actionable.filtered,.th-btn-actionable.sorted,.th-btn-actionable:hover{border-color:transparent;background:rgba(20,15,40,.075);color:var(--ink)}.th-action-icons{display:inline-flex;align-items:center;gap:3px;color:var(--tr-green)}.th-filter-icon{width:13px;height:13px;flex:0 0 auto}.th-sort-icon{width:15px;font:900 10px/1 var(--sans)}.th-count,.th-sort-icon{height:15px;border-radius:999px;background:var(--tr-green);color:#fff;display:inline-flex;align-items:center;justify-content:center}.th-count{min-width:15px;padding:0 4px;font:800 9.5px/1 var(--sans)}.col-menu-overlay{position:fixed;inset:0;z-index:60}.col-menu{position:absolute;top:calc(100% - 4px);left:0;z-index:61;min-width:216px;background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px rgba(20,15,40,.14);padding:6px;text-transform:none;letter-spacing:0}.col-menu-item{display:flex;width:100%;align-items:center;gap:8px;border:0;background:transparent;border-radius:7px;padding:7px 9px;font:600 12.5px/1.2 var(--sans);color:var(--ink-2);cursor:pointer;text-align:left}.col-menu-item:hover{background:var(--cream);color:var(--ink)}.col-menu-item.is-active{color:var(--tr-green)}.col-menu-item.clear{color:var(--ink-muted);font-weight:500}.col-menu-sep{height:1px;background:var(--line);margin:6px 4px}.col-menu-title{padding:5px 9px 3px;font:800 10px/1.2 var(--sans);letter-spacing:.07em;text-transform:uppercase;color:var(--ink-muted)}.col-menu-check{display:flex;align-items:center;gap:8px;padding:6px 9px;border-radius:7px;font:600 12.5px/1.2 var(--sans);color:var(--ink);cursor:pointer}.col-menu-check:hover{background:var(--cream)}.col-menu-check input{accent-color:var(--tr-green);margin:0;flex-shrink:0}.col-menu-check em{margin-left:auto;font-style:normal;font-size:11px;color:var(--ink-3)}.student-table-wrap{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper);overflow:visible}.student-table th:first-child{border-top-left-radius:var(--r-lg)}.student-table th:last-child{border-top-right-radius:var(--r-lg)}.student-table{width:100%;min-width:920px;border-collapse:collapse;table-layout:fixed}.student-table th{height:38px;padding:0 14px;border-bottom:1px solid var(--line);background:var(--cream);color:var(--ink-muted);font:600 11px/1 var(--sans);text-align:left;text-transform:uppercase;letter-spacing:.04em}.student-table th:first-child{width:26%}.student-table th:nth-child(2){width:19%}.student-table th:nth-child(3){width:13%}.student-table th:nth-child(4){width:14%}.student-table th:nth-child(5){width:22%}.student-table th:nth-child(6){width:6%}.student-table td{height:58px;padding:10px 14px;border-bottom:1px solid var(--line-soft);color:var(--ink);font:500 13px/1.35 var(--sans);vertical-align:middle}.student-table-row{cursor:pointer;transition:background .12s}.student-table-row:last-child td{border-bottom:none}.student-table-row:hover td{background:var(--tr-blue-50)}.student-name-cell{display:flex;align-items:center;gap:10px;min-width:0}.student-table-name{color:var(--ink);font:600 13px/1.2 var(--sans)}.student-table-meta{margin-top:3px;color:var(--ink-muted);font:500 11px/1.25 var(--sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-table-score{font-family:var(--serif);font-size:18px;font-weight:400;letter-spacing:-.01em}.student-table td .tr{margin-left:6px;color:var(--green);font:700 11px/1 var(--sans)}.student-table td .tr.neg{color:var(--rose)}.class-stack{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.class-chip{min-width:42px;justify-content:center;font-weight:750}.specialty-chip{max-width:100%;height:24px;padding:0 8px;border-radius:6px;background:rgba(20,87,180,.07);color:var(--tr-blue);font:600 11px/1 var(--sans);overflow:hidden;text-overflow:ellipsis}.format-pill,.specialty-chip{display:inline-flex;align-items:center;white-space:nowrap}.format-pill{min-height:26px;padding:0 9px;border:1px solid var(--line-soft);border-radius:999px;background:var(--cream);color:var(--ink-2);font:650 12px/1 var(--sans)}.student-status-cell{display:flex;flex-direction:column;gap:5px;animation:status-slide-in .22s cubic-bezier(.22,1,.36,1) both}@keyframes status-slide-in{0%{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}.student-table-row:first-child .student-status-cell{animation-delay:.04s}.student-table-row:nth-child(2) .student-status-cell{animation-delay:.08s}.student-table-row:nth-child(3) .student-status-cell{animation-delay:.12s}.student-table-row:nth-child(4) .student-status-cell{animation-delay:.16s}.student-table-row:nth-child(5) .student-status-cell{animation-delay:.2s}.student-status-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;background:oklch(95% .04 145);color:var(--tr-green);font:700 11px/1 var(--sans);white-space:nowrap;width:-moz-fit-content;width:fit-content}.student-status-badge:before{content:"";display:block;width:6px;height:6px;border-radius:50%;background:var(--tr-green);flex-shrink:0}.student-end-date{font-size:11px;font-weight:550;color:var(--ink-muted);white-space:nowrap;padding-left:2px}.table-tag{display:inline-flex;align-items:center;height:24px;padding:0 8px;border-radius:6px;border:1px solid var(--line-soft);font:600 12px/1 var(--sans)}.table-tag.neutral{background:var(--cream);color:var(--ink-2)}.table-muted{color:var(--ink-muted);font-family:var(--mono)}.next-exam{display:flex;align-items:center;gap:8px;min-width:0}.exam-countdown{display:inline-block;height:22px;line-height:22px;padding:0 7px;border-radius:5px;background:var(--tr-green-100);color:var(--tr-green);font:700 11px var(--mono);letter-spacing:.02em;white-space:nowrap;vertical-align:middle}.exam-countdown.urgent{background:var(--amber);color:#fff;letter-spacing:.04em}.next-exam span,.next-exam strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.next-exam strong{color:var(--ink);font:650 12px/1.15 var(--sans)}.next-exam div>span{margin-top:3px;color:var(--ink-muted);font:500 11px/1.15 var(--sans)}.student-open-cell{text-align:right}.table-open{width:30px;height:30px;padding:0;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink-2);font:700 0/1 var(--sans);cursor:pointer;opacity:0;transition:opacity .12s,border-color .12s,color .12s,background .12s}.table-open:after{content:"›";font-size:18px;line-height:1}.sessions-table tbody tr:hover .table-open,.student-table-row:hover .table-open,.table-open:focus-visible{opacity:1}.table-open:hover{border-color:var(--tr-blue);color:var(--tr-blue);background:rgba(20,87,180,.06)}.empty-box{margin-top:16px;padding:32px;border:1px dashed var(--line);border-radius:var(--r-lg);background:var(--paper);color:var(--ink-muted);text-align:center;font-size:13px}@media (max-width:980px){.student-table-wrap{overflow-x:auto}.student-table{min-width:860px}}@media (max-width:620px){.student-table-wrap{border-radius:var(--r-md)}.student-table{min-width:780px}.student-table td,.student-table th{padding-left:10px;padding-right:10px}.table-open{opacity:1}}.progress{height:6px;background:var(--cream-2);border-radius:3px;overflow:hidden}.progress-fill{height:100%;background:var(--tr-blue);border-radius:3px}.progress.warn .progress-fill{background:var(--amber)}.progress.crit .progress-fill{background:var(--rose)}.ph-img{background:repeating-linear-gradient(45deg,var(--cream-2),var(--cream-2) 6px,var(--cream) 6px,var(--cream) 12px);border:1px dashed var(--line);border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;color:var(--ink-muted);font-family:var(--mono);font-size:11px}@keyframes tr-orbit{0%{transform:rotate(0deg) translateX(var(--oi-r)) rotate(0deg)}to{transform:rotate(1turn) translateX(var(--oi-r)) rotate(-1turn)}}@keyframes tr-orbit-rev{0%{transform:rotate(0deg) translateX(var(--oi-r)) rotate(0deg)}to{transform:rotate(-1turn) translateX(var(--oi-r)) rotate(1turn)}}@keyframes tr-pulse{0%{opacity:.4;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(2.2)}}@keyframes box-slide-out{0%{transform:scaleX(1);transform-origin:left}to{transform:scaleX(0);transform-origin:right}}.login-wrap{min-height:100vh;display:grid;grid-template-columns:54% 46%;background:var(--cream)}.login-left{background:linear-gradient(145deg,#0F0B1F,#1E1640 55%,#2D2258);color:white;padding:44px 48px;flex-direction:column;overflow:hidden}.login-brand,.login-left{display:flex;position:relative}.login-brand{align-items:center;gap:12px;z-index:2}.login-brand-name{font-family:var(--serif);font-size:18px;font-weight:500;letter-spacing:-.01em;color:rgba(255,255,255,.9)}.login-brand-name em{font-style:italic;font-weight:400;color:rgba(255,255,255,.65)}.login-hero{flex:1;position:relative;z-index:2;display:flex;flex-direction:column;justify-content:center;padding:28px 0}.login-hero h1{font-family:var(--serif);font-size:44px;font-weight:700;line-height:1.1;letter-spacing:-.025em;color:white}.login-hero h1 em{font-style:italic;color:#59B37F}.login-hero .accent{width:48px;height:3px;background:#59B37F;border-radius:2px;margin-top:26px}.login-symbols{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}.login-oi{position:absolute;top:50%;left:50%;width:var(--oi-sz,40px);height:var(--oi-sz,40px);margin-top:calc(var(--oi-sz, 40px) * -.5);margin-left:calc(var(--oi-sz, 40px) * -.5);display:flex;align-items:center;justify-content:center;animation:tr-orbit var(--oi-dur,30s) linear infinite;animation-delay:var(--oi-delay,0s);opacity:.55}.login-oi.rev{animation-name:tr-orbit-rev}.login-oi-badge{justify-content:center;width:100%;height:100%;border-radius:50%;border:1px solid;font-family:var(--serif);font-size:calc(var(--oi-sz, 40px) * .5);font-weight:700;letter-spacing:-.02em}.login-oi-badge,.login-stats{display:flex;align-items:center}.login-stats{gap:0;position:relative;z-index:2;padding-top:22px;border-top:1px solid rgba(255,255,255,.1);flex-wrap:wrap}.login-stat-item{display:flex;align-items:baseline;gap:7px;padding:0 16px}.login-stat-item:first-child{padding-left:0}.login-stat-sep{color:rgba(255,255,255,.22);font-size:16px;line-height:1}.login-stat-n{font-family:var(--serif);font-size:22px;font-weight:700;letter-spacing:-.03em;color:white}.login-stat-l{font-size:11px;opacity:.52;letter-spacing:.02em}.login-right{padding:56px 48px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--paper)}.login-form{width:100%;max-width:380px}.login-form h2{font-family:var(--serif);font-size:30px;font-weight:400;letter-spacing:-.015em;line-height:1.15}.login-form p.sub{color:var(--ink-3);margin-top:6px;margin-bottom:28px;font-size:14px}.box-reveal-content{opacity:0;transform:translateY(16px);transition:opacity .35s ease,transform .35s ease}.box-reveal-content.is-shown{opacity:1;transform:translateY(0)}.box-reveal-curtain{position:absolute;inset:0;border-radius:3px;z-index:10;transform-origin:left;animation:none}.box-reveal-curtain.is-slide{animation:box-slide-out .38s ease forwards}.mf-wrap{margin-bottom:14px}.mf-label{display:block;font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:6px}.mf-input{display:block;width:100%;padding:10px 38px 10px 14px;border:1px solid var(--line);border-radius:8px;background:#F9F8FC;font-size:14px;color:var(--ink);transition:border .15s,box-shadow .15s;outline:none}.mf-input:focus{border-color:var(--tr-blue);box-shadow:0 0 0 3px var(--tr-blue-50)}.mf-eye{position:absolute;top:50%;right:10px;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--ink-muted);display:flex;padding:2px}.mf-eye:hover{color:var(--ink)}.mf-error{font-size:11px;color:oklch(48% .14 25);margin-top:5px;padding-left:2px}.mf-input.has-error{border-color:oklch(72% .1 25);box-shadow:0 0 0 3px oklch(95% .04 25)}.role-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:0}.role-opt{padding:10px 8px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);text-align:center;font-size:12px;font-weight:500;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--ink-2);cursor:pointer;transition:border-color .12s,background .12s}.role-opt svg{width:20px;height:20px;color:var(--ink-3)}.role-opt.active{border-color:var(--tr-blue);background:var(--tr-blue-50)}.role-opt.active,.role-opt.active svg{color:var(--tr-blue)}.login-submit{position:relative;width:100%;height:42px;background:linear-gradient(to bottom right,#f0eff6,#e8e7f2);border:1px solid var(--line);border-radius:8px;font-size:13px;font-weight:700;color:var(--ink);cursor:pointer;overflow:hidden;margin-top:6px;transition:background .2s,box-shadow .2s}.login-submit:hover{background:linear-gradient(to bottom right,#eae9f4,#dddcee)}.login-btn-g1{left:0;right:0;background:linear-gradient(90deg,transparent,#59B37F,transparent)}.login-btn-g1,.login-btn-g2{position:absolute;bottom:-1px;height:1px;opacity:0;transition:opacity .3s}.login-btn-g2{left:20%;right:20%;background:linear-gradient(to right,transparent,var(--tr-blue),transparent);filter:blur(3px)}.login-submit:hover .login-btn-g1,.login-submit:hover .login-btn-g2{opacity:1}.login-submit.is-loading{opacity:.65;cursor:not-allowed}.login-submit.is-loading .login-btn-g1,.login-submit.is-loading .login-btn-g2{opacity:0}.login-error{background:oklch(97% .02 25);border:1px solid oklch(85% .06 25);border-radius:8px;padding:10px 12px;font-size:13px;color:oklch(40% .1 25);margin-bottom:14px}.login-role-choice{width:100%;max-width:380px;animation:fadeInUp .28s ease both}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.login-role-cards{display:flex;flex-direction:column;gap:10px;margin-top:24px}.login-role-card{display:flex;align-items:center;gap:14px;padding:16px;border:1.5px solid var(--line);border-radius:12px;background:var(--paper);cursor:pointer;text-align:left;width:100%;transition:border-color .12s,background .12s,box-shadow .12s}.login-role-card:hover{border-color:var(--tr-blue);background:var(--tr-blue-50);box-shadow:0 2px 8px rgba(89,179,127,.12)}.login-role-card-icon{width:44px;height:44px;border-radius:10px;flex-shrink:0;background:var(--cream);display:flex;align-items:center;justify-content:center;color:var(--tr-blue)}.login-role-card-label{font-weight:600;font-size:14px;color:var(--ink)}.login-role-card-desc{font-size:12px;color:var(--ink-muted);margin-top:2px}.session-layout{display:grid;grid-template-columns:1fr 360px;gap:20px;align-items:start}.session-layout .card{align-self:start}.visio-frame{background:#0F0D1F;border-radius:var(--r-lg);aspect-ratio:16/9;position:relative;overflow:hidden;box-shadow:var(--shadow-lg)}.visio-main{position:absolute;inset:0;background:radial-gradient(ellipse at 30% 40%,rgba(89,179,127,.22),transparent 55%),radial-gradient(ellipse at 70% 70%,rgba(61,46,104,.7),transparent 50%),#130E24}.visio-main,.visio-student-avatar{display:flex;align-items:center;justify-content:center}.visio-student-avatar{width:120px;height:120px;border-radius:50%;background:linear-gradient(135deg,#59B37F,#261E47);color:white;font-family:var(--serif);font-size:48px;font-weight:400;box-shadow:0 0 0 6px rgba(255,255,255,.06),0 0 0 12px rgba(255,255,255,.03)}.visio-name{position:absolute;bottom:18px;left:18px;background:rgba(0,0,0,.5);color:white;padding:6px 12px;border-radius:var(--r-sm);font-size:13px;font-weight:500;backdrop-filter:blur(8px);display:flex;align-items:center;gap:8px}.visio-name .live{width:8px;height:8px;border-radius:50%;background:#FF4D6D;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.visio-self{top:14px;right:14px;width:140px;aspect-ratio:4/3;background:linear-gradient(135deg,#261E47,#0F0B1F);border-radius:var(--r-sm);align-items:center;justify-content:center;color:white;font-family:var(--serif);font-size:22px;box-shadow:0 4px 12px rgba(0,0,0,.4);border:2px solid rgba(255,255,255,.08)}.visio-controls,.visio-self{position:absolute;display:flex}.visio-controls{bottom:14px;left:50%;transform:translateX(-50%);gap:8px;background:rgba(0,0,0,.5);padding:8px;border-radius:999px;backdrop-filter:blur(12px)}.visio-btn{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.1);color:white;display:flex;align-items:center;justify-content:center;transition:background .12s}.visio-btn:hover{background:rgba(255,255,255,.18)}.visio-btn.end{background:#E33252}.visio-btn.end:hover{background:#C23D5B}.visio-duration{position:absolute;top:14px;left:14px;background:rgba(0,0,0,.5);color:white;font-family:var(--mono);font-size:12px;padding:6px 10px;border-radius:var(--r-sm);backdrop-filter:blur(8px)}.bilan-field{margin-bottom:16px}.bilan-field label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:8px;text-transform:uppercase;letter-spacing:.04em}.bilan-field label .num{background:var(--tr-blue-50);color:var(--tr-blue);width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;letter-spacing:0;text-transform:none}.bilan-field input,.bilan-field textarea{width:100%;border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;background:var(--paper);font-size:14px;line-height:1.5;resize:vertical;font-family:inherit;transition:border .12s,box-shadow .12s}.bilan-field input:focus,.bilan-field textarea:focus{outline:none;border-color:var(--tr-blue);box-shadow:0 0 0 3px var(--tr-blue-50)}.chip-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;background:var(--cream-2);color:var(--ink-2);border:1px solid var(--line-soft)}.chip.add{background:var(--paper);border-style:dashed;color:var(--ink-muted);cursor:pointer}.chip.add:hover{border-color:var(--tr-blue);color:var(--tr-blue)}.student-hero{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-xl);padding:24px;display:flex;gap:24px;align-items:center;margin-bottom:20px}.student-hero .avatar.lg{width:72px;height:72px;font-size:24px}.student-hero-name{font-family:var(--serif);font-size:28px;font-weight:400;letter-spacing:-.015em}.student-hero-meta{color:var(--ink-3);font-size:13px;margin-top:4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.student-hero-meta .sep{opacity:.4}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:24px}.tab{padding:10px 16px;font-size:13px;font-weight:500;color:var(--ink-3);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .12s}.tab:hover{color:var(--ink)}.tab.active{color:var(--tr-blue);border-bottom-color:var(--tr-blue)}.grade-chart{height:160px;position:relative;margin-top:12px}.bilan-card{padding:20px;border-bottom:1px solid var(--line-soft)}.bilan-card:last-child{border-bottom:none}.bilan-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.bilan-head h4{font-family:var(--serif);font-size:18px;font-weight:400;letter-spacing:-.01em}.bilan-head .date{font-size:12px;color:var(--ink-muted)}.bilan-sect{margin-top:12px}.bilan-sect-label{font-size:11px;font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.bilan-sect ul{list-style:none;padding:0}.bilan-sect ul li{display:flex;gap:8px;font-size:13px;color:var(--ink-2);padding:3px 0}.bilan-sect ul li:before{content:"";width:14px;height:14px;border-radius:4px;background:var(--green-50);color:var(--green);display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}.bilan-sect.axes ul li:before{background:var(--amber-50)}@media (max-width:900px){.sessions-header{align-items:flex-start;flex-direction:column}.next-session-card,.session-summary-grid{grid-template-columns:1fr}.next-session-actions{justify-content:flex-start}.session-calendar-head{min-width:1080px}.sessions-control-callout,.sessions-control-callout>div,.sessions-toolbar{align-items:flex-start;flex-direction:column}.sessions-control-callout>div{gap:8px}.sessions-control-callout small{text-align:left}.calendar-period-label{min-width:170px}.sessions-toolbar-note{margin-left:0;white-space:normal}.sessions-table{min-width:1080px}}.mobile-frame{width:390px;height:844px;background:var(--paper);border-radius:40px;border:10px solid #1a1a1a;box-shadow:var(--shadow-lg);position:relative;overflow:hidden;margin:32px auto}.mobile-status{height:44px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;font-size:14px;font-weight:600}.tweaks-panel{position:fixed;bottom:20px;right:20px;z-index:1000;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow-lg);min-width:260px;font-size:13px}.tweaks-panel h4{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin-bottom:10px}.tweaks-roles{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.tweaks-role{padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);font-size:12px;font-weight:500;text-align:center}.tweaks-role.active{background:var(--tr-blue-50);border-color:var(--tr-blue);color:var(--tr-blue)}.dash-layout{display:block;min-height:calc(100vh - 57px)}.dash-main{padding:28px 32px;min-width:0;display:flex;flex-direction:column;gap:20px}.dash-welcome{display:flex;align-items:flex-end;justify-content:space-between}.dash-date{font-size:12px;color:var(--ink-muted);font-weight:500;margin-bottom:4px}.dash-greeting{font-family:var(--serif);font-size:30px;font-weight:700;letter-spacing:-.015em;line-height:1;margin:0}.section-eyebrow{font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-muted)}.dash-actions-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.dash-actions-row>.card{background:linear-gradient(180deg,color-mix(in oklch,var(--tr-green-50) 58%,white) 0,var(--paper) 48%);border-color:color-mix(in oklch,var(--tr-green) 16%,var(--line))}.dash-actions-row>.card:nth-child(2){background:linear-gradient(180deg,color-mix(in oklch,var(--amber-50) 34%,white) 0,var(--paper) 50%);border-color:color-mix(in oklch,var(--amber) 16%,var(--line))}.session-list{padding:0 20px 12px}.session-item{display:grid;grid-template-columns:70px 72px 1fr auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line-soft)}.session-item:last-child{border-bottom:none}.session-item.is-next{margin:0 -8px;padding:10px 8px;border-radius:var(--r-md);background:color-mix(in oklch,var(--tr-green-50) 72%,white);border-bottom-color:transparent}.session-item-countdown{display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.02em;padding:3px 7px;border-radius:6px;background:var(--line-soft);color:var(--ink-muted);white-space:nowrap}.session-item.is-next .session-item-countdown{background:color-mix(in oklch,var(--tr-green) 14%,white);color:var(--tr-green)}.session-item-datetime{display:flex;flex-direction:column;gap:1px}.session-item-day{font-size:10px;font-weight:600;color:var(--ink-muted);text-transform:uppercase;letter-spacing:.04em}.session-item-time{font-family:var(--mono);font-size:12px;font-weight:500;color:var(--ink)}.session-item-name{font-size:13px;font-weight:500;line-height:1.3}.session-item-format{font-size:11px;color:var(--ink-muted);margin-top:1px}.session-item-dur{font-size:11px;color:var(--ink-muted);white-space:nowrap}.session-next-btn{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:6px 10px;border-radius:8px;background:var(--tr-green);color:white;font-size:11px;font-weight:700;white-space:nowrap;box-shadow:var(--shadow-sm)}.session-next-btn:hover{background:var(--tr-green-hover)}.session-next-actions{display:inline-flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:6px;min-width:0}.session-item.is-next .session-next-actions{grid-column:1/-1}.session-inline-action{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:6px 10px;border:1px solid color-mix(in oklch,var(--tr-green) 18%,var(--line));border-radius:8px;background:var(--paper);color:var(--tr-green);font:inherit;font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer}.session-inline-action:hover{border-color:var(--tr-green);background:color-mix(in oklch,var(--tr-green-50) 68%,white)}.session-next-actions .quick-actions-row.compact{gap:6px}.session-next-actions .quick-actions-row.compact .quick-action-card{min-height:30px;padding:6px 9px}.dq-see-all{font-size:12px;font-weight:500;color:var(--tr-blue);padding:0}.action-toggle,.dq-see-all{background:none;border:none;cursor:pointer;font-family:inherit}.action-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:16px 20px;border-bottom:1px solid var(--line-soft)}.action-count-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--amber-50);color:var(--amber);font-size:10px;font-weight:700}.action-list{padding:12px 20px 16px;display:flex;flex-direction:column;gap:10px}.action-object{border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--paper);padding:12px;transition:border-color .12s,background .12s}.action-object.high{border-color:color-mix(in oklch,var(--amber) 35%,var(--line-soft));background:color-mix(in oklch,var(--amber-50) 45%,white)}.action-object-main{display:flex;align-items:center;justify-content:space-between;gap:12px}.action-object-title{font-size:13px;font-weight:700;color:var(--ink)}.action-object-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.action-object-meta span{padding:4px 7px;border-radius:8px;background:rgba(255,255,255,.72);border:1px solid var(--line-soft);color:var(--ink-3);font-size:10px;font-weight:600}.action-meta-person{display:inline-flex;align-items:center;gap:4px}.action-meta-urgence{font-weight:700!important;letter-spacing:.04em}.action-meta-urgence.high{background:color-mix(in oklch,var(--amber) 14%,white)!important;border-color:color-mix(in oklch,var(--amber) 35%,transparent)!important;color:color-mix(in oklch,var(--amber) 75%,oklch(20% .05 50))!important}.action-meta-urgence.low{background:var(--cream)!important;border-color:var(--line-soft)!important;color:var(--ink-muted)!important}.action-object.is-done{border-color:color-mix(in oklch,var(--tr-green) 25%,var(--line-soft));background:color-mix(in oklch,var(--tr-green) 6%,var(--paper))}.action-done-btn{opacity:1!important;width:auto!important;height:28px!important;padding:0 10px!important;font-size:11px!important;font-weight:700!important;white-space:nowrap;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink-3);cursor:pointer;transition:border-color .12s,color .12s,background .12s}.action-done-btn:after{display:none!important}.action-done-btn:hover{border-color:var(--tr-green);color:var(--tr-green);background:color-mix(in oklch,var(--tr-green) 8%,white)}.action-done-btn.done{background:color-mix(in oklch,var(--tr-green) 12%,white);color:var(--tr-green);border-color:color-mix(in oklch,var(--tr-green) 40%,transparent)}.action-object .table-open{opacity:1;width:auto;height:28px;padding:0 10px;font-size:11px;font-weight:700;white-space:nowrap}.action-object .table-open:after{display:none}.dash-bottom-row{display:grid;grid-template-columns:minmax(0,3fr) minmax(240px,1fr);gap:16px;align-items:stretch}.stats-card{min-width:0;background:linear-gradient(180deg,color-mix(in oklch,var(--tr-green-50) 64%,white) 0,var(--paper) 46%);border-color:color-mix(in oklch,var(--tr-green) 20%,var(--line))}.dash-stats-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line-soft)}.dash-stats-title{font-size:14px;font-weight:800;color:var(--ink);letter-spacing:-.01em;margin-right:auto}.stat-tabs{display:flex;gap:2px;background:var(--cream);border-radius:8px;padding:3px}.stat-tab{padding:5px 14px;border-radius:6px;font-size:12px;font-weight:600;color:var(--ink-muted);background:none;border:none;cursor:pointer;transition:all .12s;font-family:inherit}.stat-tab.active{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}.month-nav{gap:6px}.month-nav,.month-nav-btn{display:flex;align-items:center}.month-nav-btn{width:28px;height:28px;border-radius:6px;background:none;border:1px solid var(--line);justify-content:center;cursor:pointer;color:var(--ink-2);transition:background .12s}.month-nav-btn:hover:not(:disabled){background:var(--cream)}.month-nav-btn:disabled{opacity:.35;cursor:default}.month-arrow{display:block;font-size:18px;line-height:1;transform:translateY(-1px)}.month-nav-label{font-size:13px;font-weight:600;color:var(--ink);min-width:48px;text-align:center}.stat-blocks{padding:20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat-panel{border:1px solid var(--line-soft);border-radius:var(--r-md);padding:14px;background:color-mix(in oklch,var(--cream-2) 50%,white)}.stat-panel-soft{background:color-mix(in oklch,var(--tr-green-50) 56%,white)}.stat-annual-trends{grid-column:1/-1}.stat-main-copy{min-width:0}.stat-block-lbl{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:6px}.stat-block-row{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}.stat-num{font-family:var(--serif);font-size:28px;font-weight:700;letter-spacing:-.025em;color:var(--ink)}.stat-of{font-size:12px;color:var(--ink-muted);flex:1}.stat-pct{font-size:12px;font-weight:700}.stat-bar{height:4px;background:var(--line);border-radius:99px;overflow:hidden}.type-breakdown{margin-top:12px;display:flex;flex-direction:column;gap:7px}.type-row{display:grid;grid-template-columns:88px 1fr 36px;align-items:center;gap:8px}.type-row-label{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-muted)}.type-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.type-row-bar{height:5px;background:var(--cream);border-radius:99px;overflow:hidden}.type-row-fill{height:100%;border-radius:99px;transition:width .3s}.type-row-nums{font-size:11px;font-weight:600;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}.of-total{font-weight:400;color:var(--ink-muted)}.stat-chart-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.stat-chart-panel{min-width:0;display:grid;grid-template-rows:auto 1fr;gap:12px}.stat-chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.stat-chart-sub{font-size:12px;color:var(--ink-muted);font-weight:600}.stat-pie-wrap{display:grid;place-items:center;min-height:136px;min-width:0}.pie-svg{width:clamp(126px,13vw,148px);height:clamp(126px,13vw,148px);display:block;border-radius:50%;border:1px solid var(--line-soft);box-shadow:inset 0 0 0 1px rgba(255,255,255,.38),0 8px 16px rgba(22,34,28,.06);overflow:visible}.pie-svg path{stroke:rgba(255,255,255,.92);stroke-width:1.4;vector-effect:non-scaling-stroke}.pie-svg text{fill:#fff;font-size:10px;font-weight:900;font-family:var(--sans);font-variant-numeric:tabular-nums;text-shadow:0 1px 3px rgba(0,0,0,.32);pointer-events:none}.pie-mini-legend{display:flex;flex-wrap:wrap;gap:6px 10px;padding-top:2px;color:var(--ink-3);font-size:11px;font-weight:700}.pie-mini-legend span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.pie-mini-legend strong{color:var(--ink);font-weight:900;font-variant-numeric:tabular-nums}.pie-mini-legend i{width:7px;height:7px;border-radius:50%;flex:0 0 auto}.pie-mini-legend.two{justify-content:center}.pie-ref-layout{display:grid;grid-template-columns:minmax(128px,.95fr) minmax(108px,.8fr);align-items:center;gap:14px;min-width:0}.pie-ref-legend{display:grid;align-content:center;justify-items:start;gap:9px;padding:0;min-width:0}.pie-ref-legend span{width:100%;justify-content:flex-start;font-size:11px;line-height:1.15;color:var(--ink-2)}.pie-ref-legend i{width:9px;height:9px}.progression-score{display:flex;align-items:baseline;gap:7px;margin-top:8px;font-family:var(--serif);font-size:26px;font-weight:700;letter-spacing:-.025em;color:var(--tr-green)}.progression-score.compact{margin-top:0;flex-direction:column;align-items:flex-end;gap:0;font-size:22px;line-height:1;white-space:nowrap}.progression-score span{font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:0;color:var(--ink-muted)}.best-progressions{display:grid;gap:8px;min-width:0}.best-progressions.compact{gap:7px;padding-top:2px}.progression-card{gap:10px;background:color-mix(in oklch,var(--tr-green-50) 45%,white)}.progression-card .stat-chart-head{align-items:center}.best-progressions-title{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.best-progression-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.best-progression-student{display:flex;align-items:center;gap:8px;min-width:0}.best-progression-student strong{display:block;font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.best-progression-student small{display:block;font-size:10px;color:var(--ink-muted)}.mini-avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:white;font-size:10px;font-weight:800;flex:0 0 auto}.best-progression-value{font-size:12px;font-weight:800;color:var(--tr-green);font-variant-numeric:tabular-nums;white-space:nowrap}.top3-list{display:flex;flex-direction:column;gap:6px}.top3-row{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;background:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.7)}.top3-rank{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;font-size:9px;font-weight:800;flex:0 0 auto;letter-spacing:0}.rank-gold .top3-rank{background:#f5c842;color:#7a5500}.rank-silver .top3-rank{background:#cdd5de;color:#404a57}.rank-bronze .top3-rank{background:#dba97a;color:#6b3210}.top3-info{flex:1;min-width:0}.top3-info strong{display:block;font-size:12px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.top3-bar-track{height:3px;background:color-mix(in oklch,var(--tr-green) 18%,transparent);border-radius:2px;margin-top:5px;overflow:hidden}.top3-bar-fill{height:100%;background:var(--tr-green);border-radius:2px}.top3-value{display:flex;align-items:baseline;gap:2px;flex:0 0 auto}.top3-pts{font-size:16px;font-weight:800;color:var(--tr-green);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.top3-unit{font-size:10px;font-weight:700;color:var(--ink-muted);letter-spacing:0}.annual-histogram-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}.annual-histogram{border:1px solid var(--line-soft);border-radius:8px;padding:12px;background:var(--paper)}.annual-histogram-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:12px}.annual-histogram-head span{font-size:13px;color:var(--ink);font-weight:850;letter-spacing:-.01em}.annual-histogram-head strong{font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums;display:inline-flex;flex-direction:column;align-items:flex-end;gap:2px;line-height:1.05}.annual-histogram-head strong small{font:inherit;font-size:8px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.annual-histogram-bars{min-height:154px;grid-template-columns:repeat(6,minmax(22px,1fr));display:grid;gap:11px;align-items:end;padding:6px 4px 0;border-top:1px solid var(--line-soft);background:linear-gradient(0deg,rgba(33,42,37,.06) 1px,transparent 0);background-size:100% 38px}.annual-histogram-col{height:100%;min-width:0;display:grid;grid-template-rows:18px 1fr auto;gap:6px;justify-items:center}.annual-histogram-value{font-size:9px;color:var(--ink-muted);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.annual-histogram-track{width:18px;max-width:18px;height:100%;display:flex;align-items:end;border-radius:3px 3px 0 0;overflow:hidden;background:var(--cream)}.annual-histogram-fill{width:100%;border-radius:3px 3px 0 0;background:var(--tr-green)}.annual-histogram.navy .annual-histogram-fill{background:var(--tr-navy)}.annual-histogram.amber .annual-histogram-fill{background:var(--amber)}.annual-histogram-label{font-size:10px;color:var(--ink-muted)}.level-rows{display:flex;flex-direction:column;gap:7px}.level-row{display:grid;grid-template-columns:52px 1fr 20px;align-items:center;gap:8px}.level-label{font-size:11px;color:var(--ink-muted)}.level-track{height:5px;background:var(--cream);border-radius:99px;overflow:hidden}.level-fill{height:100%;background:var(--tr-green);border-radius:99px;transition:width .3s}.level-count{font-size:11px;font-weight:600;text-align:right}.dashboard-news-card,.news-column{height:100%}.dashboard-news-card{background:linear-gradient(180deg,color-mix(in oklch,var(--tr-navy-50) 48%,white) 0,var(--paper) 50%);border-color:color-mix(in oklch,var(--tr-navy) 12%,var(--line))}.news-list{padding:0 20px 12px}.news-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line-soft);align-items:flex-start}.news-item:last-child{border-bottom:none}.news-icon{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.news-icon.note{background:oklch(96% .04 145);color:var(--tr-green)}.news-icon.annulation{background:var(--amber-50);color:var(--amber)}.news-name{font-size:13px;font-weight:500}.news-desc{font-size:12px;margin-top:2px}.news-desc,.news-time{color:var(--ink-muted)}.news-time{font-size:11px;margin-top:3px}.mentor-billing-page{max-width:1360px}.billing-hero{margin-bottom:14px}.billing-period-controls{display:grid;justify-items:end;gap:8px}.billing-period-controls select{min-width:180px;min-height:36px;padding:0 34px 0 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink-2);font-size:12px;font-weight:750}.billing-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:0;padding:16px 18px 2px}.billing-kpi{min-width:0;padding:16px 18px;border:1px solid var(--line-soft);border-radius:12px;background:color-mix(in oklch,var(--cream-2) 38%,white)}.billing-kpi.is-primary{background:var(--tr-navy);border-color:var(--tr-navy);color:white}.billing-kpi small,.billing-kpi span{display:block;font-size:11px;font-weight:700;color:var(--ink-muted)}.billing-kpi.is-primary small,.billing-kpi.is-primary span{color:rgba(255,255,255,.68)}.billing-kpi strong{display:block;margin:10px 0 0;font-size:27px;line-height:1;letter-spacing:-.025em;font-variant-numeric:tabular-nums}.billing-kpi>strong+small{margin-top:6px}.kpi-split{display:flex;align-items:stretch;gap:18px;margin-top:10px}.kpi-split-item{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1}.kpi-split-item strong{margin:0;font-size:26px;line-height:1;letter-spacing:-.025em;font-variant-numeric:tabular-nums;font-weight:850}.kpi-split-item small{margin-top:5px;font-size:11px;font-weight:700;color:var(--ink-muted);text-transform:none}.kpi-split-sep{width:1px;align-self:stretch;background:var(--line);margin:1px 0}.kpi-split-item.is-muted strong{color:var(--ink-muted)}.billing-annual-card,.billing-documents-card,.billing-info-card{margin-bottom:14px}.billing-main-card{min-width:0;margin-bottom:14px}.billing-month-panel{margin-top:24px}.billing-card{background:var(--paper);border-color:color-mix(in oklch,var(--tr-green) 10%,var(--line));overflow:hidden}.billing-card-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid var(--line-soft);background:color-mix(in oklch,var(--cream-2) 36%,white)}.billing-card-head.compact{align-items:flex-start}.billing-card-head h3{font-size:16px;font-weight:700;line-height:1.1;letter-spacing:-.01em}.billing-card-note{margin-top:5px;color:var(--ink-muted);font-size:11px;font-weight:650}.billing-info-grid{display:grid;grid-template-columns:minmax(420px,1.45fr) minmax(280px,.85fr);gap:12px;padding:14px}.billing-info-panel{min-width:0;border:1px solid var(--line-soft);border-radius:14px;background:color-mix(in oklch,var(--cream-2) 32%,white);overflow:hidden}.billing-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 15px 0}.billing-panel-head h4{color:var(--ink);font-size:13px;font-weight:850;letter-spacing:-.01em}.billing-panel-head p{margin-top:3px;color:var(--ink-muted);font-size:11px;font-weight:650}.balance-panel{background:var(--tr-navy);border-color:var(--tr-navy);color:white}.balance-inline{display:grid;grid-template-columns:1fr 1px 1fr 1px auto;align-items:center;height:100%;padding:22px 20px}.balance-divider{background:rgba(255,255,255,.14);height:100%;min-height:54px;align-self:stretch}.balance-col{display:flex;flex-direction:column;gap:5px;padding:0 18px}.balance-col:first-child{padding-left:0}.balance-col:last-child{padding-right:0}.balance-label{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,.58)}.balance-amount{display:block;font-size:32px;font-weight:800;line-height:1;letter-spacing:-.04em;color:white;font-variant-numeric:tabular-nums}.balance-amount.is-dim{font-size:26px;color:rgba(255,255,255,.78)}.balance-meta{display:block;font-size:10.5px;font-weight:600;color:rgba(255,255,255,.48);line-height:1.4}.balance-cta-col{justify-content:center;padding:0 24px}.balance-virement-btn{display:flex;align-items:center;gap:8px;padding:11px 20px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);border-radius:9px;white-space:nowrap;color:white;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.balance-virement-btn:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.38)}.billing-top-grid{display:grid;grid-template-columns:2fr 1fr;gap:14px;margin-top:20px;margin-bottom:14px;align-items:stretch}.billing-top-left{display:flex;flex-direction:column;gap:12px;min-width:0}.billing-top-grid .billing-hero-card{max-width:none;margin-top:0;margin-bottom:0;flex:1}.billing-top-grid .billing-bank-band{max-width:none;margin-bottom:0}.billing-top-grid .billing-annual-card{margin-bottom:0;display:flex;flex-direction:column}.billing-top-grid .billing-annual-card .annual-mini-grid{grid-template-columns:1fr 1fr;flex:1}.billing-top-grid .billing-annual-card .annual-mini-grid>div{border-left:none;border-right:none;border-top:none;border-radius:0}.billing-top-grid .billing-annual-card .annual-mini-grid>div:last-child{border-bottom:none}.billing-hero-card{background:var(--paper);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin-top:20px;margin-bottom:12px;max-width:860px}.billing-hero-top{display:flex;align-items:center;justify-content:space-between;padding:13px 24px;background:color-mix(in oklch,var(--cream-2) 42%,white);border-bottom:none}.billing-hero-top-label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-muted)}.billing-tooltip-wrap{position:relative;display:inline-flex;align-items:center;cursor:help}.billing-tooltip{position:absolute;top:calc(100% + 7px);left:0;transform:none;background:var(--ink);color:white;font-size:11px;font-weight:600;letter-spacing:0;padding:7px 11px;border-radius:8px;white-space:nowrap;pointer-events:none;z-index:20;opacity:0;transition:opacity .13s;text-transform:none}.billing-tooltip:after{content:"";position:absolute;bottom:100%;left:8px;border:5px solid transparent;border-bottom:5px solid var(--ink)}.billing-tooltip-wrap:hover .billing-tooltip{opacity:1}.billing-hero-top-right{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.billing-hero-top-amount{font-family:var(--serif);font-size:20px;font-weight:700;letter-spacing:-.025em;color:var(--ink-2);font-variant-numeric:tabular-nums}.billing-hero-top-detail{font-size:10px;font-weight:600;color:var(--ink-muted);letter-spacing:.01em;font-variant-numeric:tabular-nums}.billing-hero-divider{height:1px;background:var(--line-soft)}.billing-hero-main{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:28px 24px}.billing-hero-main-label{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-muted);margin-bottom:10px}.billing-hero-big-amount{display:block;font-family:var(--serif);font-size:58px;font-weight:800;line-height:1;letter-spacing:-.045em;color:var(--ink);font-variant-numeric:tabular-nums}.billing-hero-sub{display:block;margin-top:9px;font-size:11px;font-weight:600;color:var(--ink-muted)}.billing-virement-pill{display:flex;align-items:center;gap:8px;padding:13px 24px;flex-shrink:0;background:var(--tr-navy);color:white;border:none;border-radius:999px;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,box-shadow .15s;white-space:nowrap}.billing-virement-pill:hover{background:color-mix(in oklch,var(--tr-navy) 85%,black);box-shadow:0 4px 18px rgba(38,30,71,.28)}.billing-bank-band{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:860px;padding:14px 20px;background:var(--paper);border:1px solid var(--line-soft);border-radius:12px;margin-bottom:14px}.billing-bank-cols{display:flex;align-items:center;flex:1}.billing-bank-sep{width:1px;height:34px;background:var(--line-soft);flex-shrink:0;margin:0 18px}.billing-bank-col{display:flex;flex-direction:column;gap:4px}.billing-bank-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted)}.billing-bank-val{font-size:13px;font-weight:600;letter-spacing:.02em}.billing-bank-input,.billing-bank-val{font-family:var(--mono);color:var(--ink)}.billing-bank-input{font-size:12px;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:var(--cream);max-width:240px}.billing-siret-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--tr-green)}.billing-bank-edit-btn{font-size:12px;font-weight:700;color:var(--tr-blue);background:none;border:none;cursor:pointer;padding:6px 10px;border-radius:7px;white-space:nowrap;transition:background .12s}.billing-bank-edit-btn:hover{background:var(--tr-blue-50)}.billing-invoices-section{border-top:1px solid var(--line-soft);margin-top:4px;padding:0 0 2px}.billing-invoices-head{display:flex;align-items:flex-start;justify-content:space-between;padding:14px 18px 12px}.billing-invoices-head h4{font-size:13px;font-weight:850;letter-spacing:-.01em;color:var(--ink)}.billing-invoices-head p{margin-top:3px;font-size:11px;font-weight:650;color:var(--ink-muted)}.billing-row-impact{white-space:nowrap}.billing-impact-yes{color:var(--tr-green)}.billing-impact-no,.billing-impact-yes{display:inline-flex;align-items:center;font-size:11px;font-weight:800}.billing-impact-no{color:var(--amber)}.annual-mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;padding:14px}.billing-annual-card .annual-mini-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.annual-mini-grid>div{padding:12px;border:1px solid var(--line-soft);background:var(--paper)}.annual-mini-grid span{display:block;color:var(--ink-muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.annual-mini-grid strong{display:block;margin-top:6px;color:var(--ink);font-size:20px;line-height:1;font-variant-numeric:tabular-nums}.billing-table-wrap{overflow-x:auto;overflow-y:auto;max-height:314px;border-radius:0 0 10px 10px}.billing-month-content{display:grid;gap:0;padding-top:2px}.billing-table{width:100%;border-collapse:collapse;min-width:980px}.billing-table td,.billing-table th{padding:13px 18px;border-bottom:1px solid var(--line-soft);text-align:left;white-space:nowrap}.billing-table th{color:var(--ink-muted);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.billing-table td{color:var(--ink-2);font-size:13px}.billing-row-sub{display:block;margin-top:2px;color:var(--ink-muted);font-size:11px;font-weight:600}.billing-table tbody tr:last-child td{border-bottom:0}.billing-amount{font-weight:850;font-variant-numeric:tabular-nums}.billing-status{display:inline-flex;align-items:center;min-height:24px;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}.billing-status.paid{background:var(--tr-green-50);color:var(--tr-green)}.billing-status.ready{background:var(--tr-navy-50);color:var(--tr-navy)}.billing-status.moved{background:color-mix(in oklch,var(--tr-green-50) 70%,white);color:var(--tr-green)}.billing-status.todo{background:var(--amber-50);color:var(--amber)}.billing-status.warn{background:color-mix(in oklch,var(--amber-50) 70%,var(--rose-50));color:#9f4d10}.billing-status.blocked,.billing-status.unpaid{background:var(--rose-50);color:var(--rose)}.billing-status.carry{background:var(--amber-50);color:#9f4d10}.billing-status.planned,.billing-status.postponed{background:color-mix(in oklch,var(--ink-muted) 14%,white);color:var(--ink-muted)}.billing-status.postponed{text-decoration:line-through}.billing-kpis-3{grid-template-columns:repeat(3,minmax(0,1fr))}.billing-kpis-2{grid-template-columns:repeat(2,minmax(0,1fr))}.billing-kpis+.billing-kpis{padding-top:12px}.billing-kpi.is-format span{color:var(--ink)}.billing-kpi.is-format .kpi-split{margin-top:12px;gap:16px}.billing-kpi.is-format .kpi-split-item strong{font-size:21px}.billing-kpi.is-format .kpi-split-item small{margin-top:4px}.billing-row-postponed{opacity:.5}.billing-amount-zero{color:var(--ink-muted);font-weight:700}.billing-table-month thead th{position:sticky;top:0;z-index:2;background:var(--paper)}.billing-table-month tfoot .billing-total-row td{position:sticky;bottom:0;z-index:2;background:var(--paper);border-top:1.5px solid var(--line);border-bottom:0;font-weight:850;color:var(--ink-2)}.ta-right{text-align:right}.billing-table-month{min-width:620px}.invoice-table{width:100%;border-collapse:collapse}.invoice-table td,.invoice-table th{padding:14px 20px;text-align:left;white-space:nowrap}.invoice-table thead th{color:var(--ink-muted);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--paper);z-index:2}.invoice-table tbody tr{border-bottom:1px solid var(--line-soft);cursor:pointer;transition:background .12s ease}.invoice-table tbody tr:last-child{border-bottom:0}.invoice-table tbody tr:hover{background:var(--tr-blue-50)}.invoice-table td{font-size:13px;color:var(--ink-2)}.invoice-period{font-weight:700;color:var(--ink);font-size:14px}.invoice-period-sub{display:block;margin-top:2px;font-size:11px;color:var(--ink-muted)}.invoice-num{font-family:JetBrains Mono,ui-monospace,monospace;font-size:12px;letter-spacing:.03em;color:var(--ink-3)}.invoice-amount{font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink)}.invoice-dl{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:0;cursor:pointer;color:var(--tr-blue);font-size:13px;font-weight:600;white-space:nowrap}.invoice-dl:hover{color:var(--tr-blue-hover);text-decoration:underline}.invoice-dl svg{flex-shrink:0}.billing-subsection{margin:14px 18px 18px;border:1px solid color-mix(in oklch,var(--tr-green) 14%,var(--line));border-radius:12px;background:color-mix(in oklch,var(--tr-green-50) 20%,white);overflow:hidden}.billing-subsection .billing-panel-head{padding-bottom:14px;border-bottom:1px solid var(--line-soft);background:color-mix(in oklch,var(--tr-green-50) 42%,white)}.billing-subsection+.billing-subsection{margin-top:0}.billing-payout{display:grid;gap:1px;padding:14px}.billing-payout>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-soft)}.billing-payout>div:last-child{border-bottom:0}.billing-payout span{color:var(--ink-muted);font-size:12px;font-weight:700}.billing-payout strong{color:var(--ink);font-size:13px;text-align:right}.billing-payout input{min-width:0;max-width:210px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);font-size:12px;font-weight:650;text-align:right}.monthly-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;padding:14px}.monthly-summary>div{padding:13px;border:1px solid var(--line-soft);background:color-mix(in oklch,var(--cream-2) 48%,white)}.monthly-summary>div:first-child{grid-column:1/-1}.monthly-summary span{display:block;color:var(--ink-muted);font-size:11px;font-weight:750}.monthly-summary strong{display:block;margin-top:5px;color:var(--ink);font-size:22px;line-height:1;font-variant-numeric:tabular-nums}.statement-list{padding:8px 14px 14px}.statement-list-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding-top:14px}.statement-list-grid .statement-row{min-width:0;align-items:stretch;flex-direction:column;padding:13px;border:1px solid var(--line-soft);border-radius:12px;background:color-mix(in oklch,var(--cream-2) 34%,white)}.statement-list-grid .statement-row:last-child{border-bottom:1px solid var(--line-soft)}.statement-list-grid .table-open{white-space:nowrap;align-self:flex-start}.subscription-list{display:grid;gap:1px;padding:8px 14px 14px}.subscription-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-soft)}.subscription-row:last-child{border-bottom:0}.subscription-row span,.subscription-row strong{display:block}.subscription-row strong{font-size:13px;color:var(--ink)}.subscription-row span{margin-top:2px;color:var(--ink-muted);font-size:11px;font-weight:650}.subscription-row small{min-width:48px;color:var(--tr-green);font-size:11px;font-weight:850;text-align:right;white-space:nowrap}.subscription-table{width:100%;border-collapse:collapse;font-size:12px}.subscription-table thead th{padding:8px 14px;text-align:left;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);border-bottom:1px solid var(--line-soft)}.subscription-table tbody td{padding:10px 14px;border-bottom:1px solid var(--line-soft);vertical-align:top}.subscription-table tbody tr:last-child td{border-bottom:0}.subscription-table tbody td strong{display:block;font-size:13px;font-weight:650;color:var(--ink)}.sub-plan{display:block;margin-top:2px;font-size:11px;font-weight:550;color:var(--ink-muted)}.sub-engagement{display:inline-block;padding:2px 8px;background:var(--tr-green-tint,oklch(95% .04 145));color:var(--tr-green);font-size:11px;font-weight:700;border-radius:99px}.sub-end{font-size:12px;font-weight:600;color:var(--ink)}.sub-renewal{font-size:11px;font-weight:700;color:var(--tr-green);white-space:nowrap}.statement-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-soft)}.statement-row:last-child{border-bottom:0}.statement-row>div span,.statement-row>div strong{display:block}.statement-row>div strong{font-size:13px}.statement-row>div span{margin-top:2px;color:var(--ink-muted);font-size:11px;font-weight:600}@media (max-width:1180px){.dash-actions-row,.dash-bottom-row{grid-template-columns:1fr}.dashboard-news-card,.news-column{height:auto}.billing-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.billing-info-grid{grid-template-columns:1fr 1fr}.billing-annual-card .annual-mini-grid,.statement-list-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:720px){.billing-period-controls{justify-items:stretch;width:100%}.balance-inline,.billing-info-grid,.billing-kpis{grid-template-columns:1fr}.balance-inline{gap:12px}.balance-divider{display:none}.balance-col{padding:0}.annual-mini-grid,.billing-annual-card .annual-mini-grid,.monthly-summary,.statement-list-grid{grid-template-columns:1fr}.monthly-summary>div:first-child{grid-column:auto}.billing-card-head{align-items:flex-start;flex-direction:column}.session-item{grid-template-columns:46px 40px 1fr}.session-item-dur,.session-next-btn{grid-column:3;justify-self:start}.dash-stats-head{align-items:flex-start;flex-direction:column}.stat-blocks,.stat-chart-grid{grid-template-columns:1fr}.pie-ref-layout{grid-template-columns:minmax(126px,auto) minmax(112px,1fr)}.annual-histogram-grid{grid-template-columns:1fr}.annual-histogram-bars{min-height:138px}}.quick-actions-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:0}.quick-action-card{display:flex;align-items:center;gap:18px;padding:20px 22px;border-radius:var(--r-lg);border:1.5px solid var(--line);background:var(--paper);cursor:pointer;text-align:left;transition:box-shadow .15s,border-color .15s,transform .12s;position:relative;overflow:hidden}.quick-action-card:before{content:"";position:absolute;inset:0;opacity:0;transition:opacity .15s;pointer-events:none}.quick-action-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.quick-action-card.indispo{border-color:color-mix(in oklch,var(--tr-green) 22%,var(--line));background:linear-gradient(135deg,color-mix(in oklch,var(--tr-green-50) 48%,white) 0,var(--paper) 60%)}.quick-action-card.indispo:hover{border-color:var(--tr-green)}.quick-action-card.deplacer{border-color:color-mix(in oklch,var(--tr-navy) 22%,var(--line));background:linear-gradient(135deg,color-mix(in oklch,var(--tr-navy) 8%,white) 0,var(--paper) 60%)}.quick-action-card.deplacer:hover{border-color:var(--tr-navy)}.qa-icon{flex-shrink:0;width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center}.indispo .qa-icon{background:color-mix(in oklch,var(--tr-green) 14%,white);color:var(--tr-green)}.deplacer .qa-icon{background:color-mix(in oklch,var(--tr-navy) 12%,white);color:var(--tr-navy)}.qa-body{flex:1;min-width:0}.qa-title{font-size:15px;font-weight:700;color:var(--ink);margin-bottom:3px;letter-spacing:-.01em}.qa-desc{font-size:12px;color:var(--ink-muted);line-height:1.4}.qa-arrow{flex-shrink:0;font-size:18px;color:var(--ink-3);transition:transform .15s}.quick-action-card:hover .qa-arrow{transform:translateX(3px)}.session-card-header{align-items:center;gap:12px}.session-header-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.quick-actions-row.compact{display:flex;align-items:center;gap:8px;margin:0}.quick-actions-row.compact .quick-action-card{gap:7px;min-height:34px;padding:7px 10px;border-radius:999px;border-width:1px;background:var(--paper)}.quick-actions-row.compact .quick-action-card:hover{transform:none;box-shadow:var(--shadow-sm)}.quick-actions-row.compact .qa-icon{width:22px;height:22px;border-radius:999px}.quick-actions-row.compact .qa-icon svg{width:13px;height:13px}.quick-actions-row.compact .qa-title{margin:0;font-size:12px;font-weight:700;white-space:nowrap}.quick-actions-row.compact .qa-arrow,.quick-actions-row.compact .qa-desc{display:none}.modal-overlay{position:fixed;inset:0;background:rgba(20,15,40,.45);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:900;padding:24px}.modal-box{background:var(--paper);border-radius:20px;border:1px solid var(--line);box-shadow:0 24px 64px rgba(20,15,40,.22);width:100%;max-width:520px;overflow:hidden}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 24px 18px;border-bottom:1px solid var(--line-soft)}.modal-eyebrow{font-size:10px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--tr-green);margin-bottom:4px}.modal-title{font-size:18px;font-weight:700;color:var(--ink);margin:0;letter-spacing:-.02em}.modal-close{background:none;border:none;font-size:18px;color:var(--ink-muted);cursor:pointer;line-height:1;padding:2px 4px;border-radius:6px;margin-top:-2px;flex-shrink:0}.modal-close:hover{background:var(--line-soft);color:var(--ink)}.modal-body{padding:20px 24px;display:flex;flex-direction:column;gap:14px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 24px 20px;border-top:1px solid var(--line-soft)}.form-group{display:flex;flex-direction:column;gap:5px}.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-label{font-size:12px;font-weight:700;color:var(--ink-2);letter-spacing:.01em}.form-label-opt{font-weight:500;color:var(--ink-muted)}.form-input{padding:9px 12px;border-radius:10px;border:1.5px solid var(--line);background:var(--cream);color:var(--ink);font-size:13px;font-family:inherit;transition:border-color .15s;outline:none}.form-input:focus{border-color:var(--tr-green)}.form-textarea{resize:vertical;min-height:60px}.form-select{border-radius:10px;border:1.5px solid var(--line);background:var(--cream);color:var(--ink);font-size:13px;font-family:inherit;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding:9px 30px 9px 12px}.form-select:focus{border-color:var(--tr-green)}.form-check{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:13px;color:var(--ink-2)}.form-check input[type=checkbox]{width:16px;height:16px;border-radius:4px;accent-color:var(--tr-green);cursor:pointer;flex-shrink:0}.session-radio-list{display:flex;flex-direction:column;gap:6px;max-height:200px;overflow-y:auto}.session-radio-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;border:1.5px solid var(--line-soft);cursor:pointer;transition:border-color .12s,background .12s}.session-radio-item:hover{border-color:var(--line);background:var(--cream)}.session-radio-item.is-selected{border-color:var(--tr-green);background:color-mix(in oklch,var(--tr-green-50) 45%,white)}.session-radio-item input[type=radio]{accent-color:var(--tr-green);flex-shrink:0}.session-radio-info strong{display:block;font-size:13px;font-weight:600;color:var(--ink)}.session-radio-info span{font-size:11.5px;color:var(--ink-muted);margin-top:1px;display:block}.modal-success{display:flex;flex-direction:column;align-items:center;text-align:center;padding:32px 24px 28px;gap:10px}.modal-success-icon{width:52px;height:52px;border-radius:50%;background:color-mix(in oklch,var(--tr-green) 15%,white);color:var(--tr-green);font-size:22px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:4px}.modal-success-title{font-size:16px;font-weight:700;color:var(--ink)}.modal-success-sub{font-size:12.5px;color:var(--ink-muted);line-height:1.5;max-width:340px}@media (max-width:520px){.pie-ref-layout{grid-template-columns:1fr;justify-items:center;gap:10px}.pie-ref-legend{width:100%;grid-template-columns:repeat(2,minmax(0,1fr))}.pie-ref-legend span{white-space:normal}}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.hover\:bg-surface-container-highest:hover{--tw-bg-opacity:1;background-color:rgb(225 227 228/var(--tw-bg-opacity,1))}.hover\:bg-white\/80:hover{background-color:rgb(255 255 255/.8)}.hover\:underline:hover{text-decoration-line:underline}