@import url("https://api.fontshare.com/v2/css?f[]=satoshi@300,400,500,600,700,800&display=swap");@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap");:root{--font-body:"Satoshi",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono",monospace;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-xl:1rem;--radius-2xl:1.5rem;--radius-full:9999px;--transition-fast:150ms ease;--transition-base:250ms ease;--transition-slow:350ms ease}[data-theme=dark]{--bg-primary:#090b11;--bg-surface:#10131c;--bg-elevated:#181c28;--bg-hover:#1f2433;--bg-overlay:rgba(0,0,0,.55);--text-primary:#eef0f4;--text-secondary:#9ca3b4;--text-muted:#525c6f;--text-inverse:#111827;--accent:#fff;--accent-hover:#fdfdfd;--accent-subtle:rgba(21,101,192,.12);--accent-gradient:linear-gradient(135deg,#1c1387,#599ede);--border:#1c2030;--border-strong:#2a2f42;--border-focus:#1565c0;--success:#10b981;--error:#ef4444;--warning:#f59e0b;--shadow-sm:0 1px 3px rgba(0,0,0,.35);--shadow-md:0 4px 14px rgba(0,0,0,.3);--shadow-lg:0 14px 44px rgba(0,0,0,.38);--navbar-bg:rgba(16,19,28,.82);--navbar-border:rgba(28,32,48,.7);--card-bg:#10131c;--card-border:#1c2030;--input-bg:#141722;--input-border:#242838;--popup-bg:#12151f}[data-theme=light]{--bg-primary:#f5f6fa;--bg-surface:#fff;--bg-elevated:#f0f1f5;--bg-hover:#e6e8ee;--bg-overlay:rgba(0,0,0,.35);--text-primary:#111827;--text-secondary:#4b5563;--text-muted:#9ca3af;--text-inverse:#f1f3f7;--accent:#0c3777;--accent-hover:#d2d9e0;--accent-subtle:rgba(13,71,161,.08);--accent-gradient:linear-gradient(135deg,#1c1387,#599ede);--border:#e2e4ea;--border-strong:#d1d5db;--border-focus:#0d47a1;--success:#059669;--error:#dc2626;--warning:#d97706;--shadow-sm:0 1px 3px rgba(0,0,0,.06);--shadow-md:0 4px 14px rgba(0,0,0,.08);--shadow-lg:0 14px 44px rgba(0,0,0,.1);--navbar-bg:hsla(0,0%,100%,.82);--navbar-border:rgba(226,228,234,.7);--card-bg:#fff;--card-border:#e2e4ea;--input-bg:#f5f6fa;--input-border:#d1d5db;--popup-bg:#fff}*,:after,:before{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;transition:background var(--transition-base),color var(--transition-base)}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button{cursor:pointer;border:none;background:none}button,input,select,textarea{font-family:var(--font-body)}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1 1;padding-top:64px}.app-footer{display:none}.navbar{position:fixed;top:0;left:0;right:0;height:64px;z-index:1000;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 1.75rem;background:var(--navbar-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--navbar-border);transition:background var(--transition-base),border-color var(--transition-base)}.navbar-logo{display:flex;align-items:center;justify-content:center;gap:.5rem}.navbar-logo img{height:60px;width:auto}.navbar-logo-text{font-size:1.4rem;font-weight:700;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.navbar-actions{justify-content:flex-end;gap:.75rem}.navbar-actions,.theme-toggle{display:flex;align-items:center}.theme-toggle{width:40px;height:40px;border-radius:var(--radius-md);justify-content:center;color:var(--text-secondary);transition:all var(--transition-fast)}.theme-toggle:hover{background:var(--bg-hover);color:var(--text-primary)}.theme-toggle svg{width:20px;height:20px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-weight:600;font-size:.875rem;padding:.55rem 1.15rem;border-radius:var(--radius-md);transition:all var(--transition-fast);white-space:nowrap}.btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:0 2px 8px rgba(13,71,161,.3)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(13,71,161,.4)}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-strong)}.btn-secondary:hover{background:var(--bg-hover);border-color:var(--text-muted)}.btn-ghost{color:var(--text-secondary);padding:.5rem .85rem}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-danger{color:var(--error)}.btn-danger:hover{background:rgba(239,68,68,.08)}.btn-sm{font-size:.8125rem;padding:.4rem .85rem}.overlay{position:fixed;inset:0;z-index:2000;background:var(--bg-overlay);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}.popup{background:var(--popup-bg);border:1px solid var(--border-strong);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:min(460px,92vw);max-height:90vh;overflow-y:auto;animation:popIn .25s ease}.popup-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem .75rem}.popup-header h2{font-size:1.15rem;font-weight:700}.popup-close{width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:var(--text-muted);transition:all var(--transition-fast)}.popup-close:hover{background:var(--bg-hover);color:var(--text-primary)}.popup-body{padding:.75rem 1.5rem 1.5rem}.auth-tabs{display:flex;gap:0;margin-bottom:1.25rem;background:var(--bg-elevated);border-radius:var(--radius-md);padding:.25rem;position:relative}.auth-tabs-indicator{position:absolute;top:.25rem;left:.25rem;width:calc(50% - .25rem);height:calc(100% - .5rem);background:var(--accent-gradient);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:0}.auth-tabs-indicator.right{transform:translateX(100%)}.auth-tab{flex:1 1;padding:.6rem;font-size:.875rem;font-weight:600;text-align:center;border-radius:var(--radius-sm);color:var(--text-muted);transition:color var(--transition-fast);position:relative;z-index:1}.auth-tab:hover{color:var(--text-secondary)}.auth-tab.active{color:#fff}@keyframes slideFromRight{0%{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}@keyframes slideFromLeft{0%{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:translateX(0)}}.auth-form-slide.slide-from-right{animation:slideFromRight .3s ease forwards}.auth-form-slide.slide-from-left{animation:slideFromLeft .3s ease forwards}.form-group{margin-bottom:1rem}.form-row-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:.75rem;gap:.75rem}.form-label{display:block;font-size:.8125rem;font-weight:600;color:var(--text-secondary);margin-bottom:.35rem}.form-input,.form-select{width:100%;padding:.65rem .85rem;font-size:.875rem;background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.form-input:focus,.form-select:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-subtle)}.form-input::placeholder{color:var(--text-muted)}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%239ca3b4' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .85rem center;padding-right:2.5rem}.form-error{color:var(--error);font-size:.8125rem;margin-top:.5rem}.autocomplete-list{position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background:var(--popup-bg);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);max-height:200px;overflow-y:auto;z-index:10;list-style:none;padding:.25rem}.autocomplete-item{padding:.5rem .75rem;font-size:.875rem;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-primary);transition:background var(--transition-fast)}.autocomplete-item:hover{background:var(--bg-hover)}.autocomplete-other{color:var(--text-muted);font-style:italic;border-top:1px solid var(--border);margin-top:.25rem;padding-top:.5rem}.form-submit{width:100%;margin-top:.5rem}.home{max-width:860px;margin:0 auto;padding:3.5rem 1.5rem 4rem}.home-hero{text-align:center;margin-bottom:3.5rem}.home-hero h1{font-size:2.5rem;font-weight:800;margin-bottom:2rem;letter-spacing:-.03em;line-height:1.15}.home-hero h1 span,.text-accent{background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.text-accent{font-weight:700}.home-hero-text{font-size:1.05rem;line-height:1.8;color:var(--text-secondary);max-width:640px;margin:2rem auto 0}.home-hero-text p{margin-bottom:1rem}.home-hero-text p:last-child{margin-bottom:0}.home-hero-cta{font-weight:600;color:var(--accent)}.home-cards{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1.5rem;gap:1.5rem}.home-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);padding:2rem 1.75rem;display:flex;flex-direction:column;align-items:flex-start;gap:1rem;transition:all var(--transition-base);position:relative;overflow:hidden;cursor:pointer}.home-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent-gradient);opacity:0;transition:opacity var(--transition-base)}.home-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:var(--shadow-lg)}.home-card:hover:before{opacity:1}.home-card-icon{width:48px;height:48px;border-radius:var(--radius-lg);background:var(--accent-subtle);display:flex;align-items:center;justify-content:center;color:var(--accent)}.home-card-icon svg{width:24px;height:24px}.home-card h3{font-size:1.2rem;font-weight:700;letter-spacing:-.01em}.home-card p{font-size:.9rem;color:var(--text-secondary);line-height:1.6}.home-card-arrow{margin-top:auto;color:var(--accent);font-weight:600;font-size:.875rem;display:flex;align-items:center;gap:.35rem;opacity:0;transform:translateX(-8px);transition:all var(--transition-base)}.home-card:hover .home-card-arrow{opacity:1;transform:translateX(0)}.page-placeholder{max-width:860px;margin:0 auto;padding:3rem 1.5rem}.page-placeholder h1{font-size:2rem;font-weight:800;margin-bottom:.75rem;letter-spacing:-.02em}.page-placeholder p{color:var(--text-secondary);font-size:1rem}.page-coming-soon{display:inline-flex;align-items:center;gap:.5rem;margin-top:1.5rem;padding:.6rem 1.2rem;background:var(--accent-subtle);color:var(--accent);border-radius:var(--radius-full);font-size:.875rem;font-weight:600}.account-info{gap:1rem}.account-info,.account-row{display:flex;flex-direction:column}.account-row{gap:.2rem}.account-label{font-size:.75rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.account-value{font-size:.95rem;color:var(--text-primary);font-weight:500}.account-divider{height:1px;background:var(--border);margin:.25rem 0}.runner-layout{height:calc(100vh - 72px);display:grid;grid-template-columns:1fr 1fr;grid-gap:1.5rem;gap:1.5rem;padding:1.5rem;max-width:1800px;width:100%;margin:0 auto;overflow:hidden}.runner-section{display:flex;flex-direction:column;gap:.75rem;min-height:0}.runner-section-header{display:flex;justify-content:space-between;align-items:center}.runner-section-header h2{font-size:.8rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.runner-badge{font-size:.7rem;font-weight:600;padding:.2rem .6rem;background:var(--accent-subtle);color:var(--accent);border-radius:var(--radius-full)}.runner-editor-container{overflow:hidden;position:relative}.runner-console,.runner-editor-container{flex:1 1;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.runner-console{padding:1.25rem;overflow-y:auto;line-height:1.65;min-height:0}.runner-console,.runner-input-area textarea{font-family:var(--font-mono);font-size:.85rem}.runner-input-area textarea{width:100%;min-height:80px;padding:.85rem;background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-lg);color:var(--text-primary);resize:vertical;transition:border-color var(--transition-fast)}.runner-input-area textarea:focus{outline:none;border-color:var(--border-focus)}.runner-actions{display:flex;gap:.5rem}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.typing-heading{display:inline}.typing-cursor{display:inline;font-weight:300;color:var(--accent);animation:blink .75s step-end infinite;margin-left:1px}@keyframes popIn{0%{opacity:0;transform:scale(.96) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up{animation:slideUp .5s ease forwards}.animate-slide-up-delay{animation:slideUp .5s ease .15s forwards;opacity:0}.spinner{width:16px;height:16px;border:2px solid hsla(0,0%,100%,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.exercise-card{will-change:opacity,transform}.exercise-card.card-hidden{opacity:0;transform:translateY(28px)}.exercise-card.card-visible{opacity:1;transform:translateY(0);transition:opacity .38s ease,transform .38s cubic-bezier(.22,1,.36,1)}.exercise-card.card-visible:first-child{transition-delay:0s}.exercise-card.card-visible:nth-child(2){transition-delay:.04s}.exercise-card.card-visible:nth-child(3){transition-delay:.08s}.exercise-card.card-visible:nth-child(4){transition-delay:.12s}.exercise-card.card-visible:nth-child(5){transition-delay:.16s}.exercise-card.card-visible:nth-child(6){transition-delay:.2s}.exercise-card.card-visible:nth-child(7){transition-delay:.24s}.exercise-card.card-visible:nth-child(8){transition-delay:.28s}.exercise-card.card-visible:nth-child(9){transition-delay:.32s}.exercise-card.card-visible:nth-child(10){transition-delay:.36s}.exercise-card.card-visible:nth-child(11){transition-delay:.4s}.exercise-card.card-visible:nth-child(12){transition-delay:.44s}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.page-reveal{opacity:0}.page-reveal.page-revealed{animation:pageFadeIn .35s ease forwards}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.classiques-page{max-width:1100px;margin:0 auto;padding:2.5rem 1.5rem 4rem}.classiques-header{margin-bottom:2rem}.classiques-header h1{font-size:2rem;font-weight:800;margin-bottom:.5rem;letter-spacing:-.02em}.classiques-header p{color:var(--text-secondary);font-size:1rem}.classiques-filters{display:flex;align-items:center;gap:.75rem;margin-bottom:2rem;flex-wrap:wrap}.classiques-search{flex:1 1;min-width:200px;width:auto}.classiques-filter-select{width:190px;flex-shrink:0}.classiques-filter-input{width:160px;flex-shrink:0;padding:.65rem .85rem;font-size:.875rem;background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.classiques-filter-input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-subtle)}.classiques-filter-input::placeholder{color:var(--text-muted)}.btn-back{display:inline-flex;align-items:center;gap:.35rem;font-size:.82rem;padding:.3rem .7rem;margin-bottom:.75rem;color:var(--text-muted);border-radius:var(--radius-md);transition:background var(--transition-fast),color var(--transition-fast)}.btn-back:hover{background:var(--bg-hover);color:var(--text-primary)}.classiques-empty,.classiques-error,.classiques-loading{text-align:center;padding:3rem 1rem;color:var(--text-muted);font-size:.95rem;display:flex;align-items:center;justify-content:center;gap:.5rem}.classiques-error{color:var(--error)}.classiques-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));grid-gap:1.25rem;gap:1.25rem}.classiques-content-wrapper{position:relative}.classiques-guest{max-height:calc(100vh - 220px);overflow-y:auto;-ms-overflow-style:none;scrollbar-width:none}.classiques-guest.locked{overflow:hidden}.classiques-guest::-webkit-scrollbar{display:none}.classiques-guest .classiques-grid{pointer-events:none;padding-bottom:4rem}.guest-overlay{position:fixed;bottom:0;left:0;right:0;height:50vh;display:flex;align-items:flex-end;justify-content:center;padding-bottom:3rem;background:linear-gradient(to bottom,transparent 0,var(--bg-primary) 40%);z-index:50;pointer-events:none;opacity:0;transform:translateY(40px);transition:opacity .5s ease,transform .5s cubic-bezier(.4,0,.2,1)}.guest-overlay.revealed{opacity:1;transform:translateY(0);pointer-events:auto}.guest-overlay-content{text-align:center;max-width:420px}.guest-overlay-content h2{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.guest-overlay-content p{font-size:.9rem;color:var(--text-secondary);margin-bottom:1.25rem;line-height:1.5}.guest-overlay-buttons{display:flex;gap:.75rem;justify-content:center}.exercise-card-disabled{cursor:default;opacity:.85}.exercise-card-disabled:hover{transform:none;box-shadow:none;border-color:var(--card-border)}.exercise-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);padding:1.5rem;display:flex;flex-direction:column;gap:.65rem;cursor:pointer;transition:all var(--transition-base);position:relative;overflow:hidden}.exercise-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent-gradient);opacity:0;transition:opacity var(--transition-base)}.exercise-card:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:var(--shadow-lg)}.exercise-card:hover:before{opacity:1}.exercise-card-top{display:flex;justify-content:space-between;align-items:center}.exercise-difficulty{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.exercise-points{font-size:.8rem;font-weight:600;color:var(--accent)}.exercise-card-title{font-size:1.1rem;font-weight:700;letter-spacing:-.01em}.exercise-card-desc{font-size:.85rem;color:var(--text-secondary);line-height:1.55}.exercise-card-footer{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto;padding-top:.5rem}.exercise-tag{font-size:.7rem;font-weight:600;padding:.2rem .55rem;border-radius:var(--radius-full);background:var(--accent-subtle);color:var(--accent)}.exercise-tag-secondary{background:var(--bg-elevated);color:var(--text-muted)}.exercise-tag-concours{background:rgba(245,158,11,.12);color:var(--warning)}.exercise-card-top-left{display:flex;align-items:center;gap:.5rem}.exercise-type-badge{font-size:.65rem;font-weight:700;padding:.18rem .5rem;border-radius:var(--radius-full);letter-spacing:.02em}.exercise-type-badge.type-code{background:var(--accent-subtle);color:var(--accent)}.exercise-type-badge.type-fill{background:rgba(245,158,11,.12);color:var(--warning)}.exercise-type-badge.type-mystery{background:rgba(13,71,161,.12);color:#1976d2}[data-theme=light] .exercise-type-badge.type-mystery{color:#0d47a1}.exercise-card-code-preview{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.6rem .75rem;overflow:hidden;max-height:5.5rem}.exercise-card-code-preview code{font-family:var(--font-mono);font-size:.72rem;line-height:1.5;color:var(--text-secondary);white-space:pre;display:block}.exercise-card.type-mystery:before{background:linear-gradient(135deg,#0d47a1,#1976d2)}.exercise-card.type-fill:before{background:linear-gradient(135deg,#f59e0b,#fbbf24)}.exercise-card-completed{border-color:var(--success)}.exercise-card-completed:before{background:var(--success)!important;opacity:1!important}.exercise-completed-badge{position:absolute;bottom:.75rem;right:.75rem;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-full);background:var(--success);color:#fff;z-index:2;box-shadow:0 2px 8px rgba(16,185,129,.35)}.exercise-completed-topbar-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .65rem;border-radius:var(--radius-full);background:rgba(16,185,129,.15);color:var(--success);font-size:.78rem;font-weight:600;letter-spacing:.01em}.exercise-mystery-panel{display:flex;flex-direction:column;flex:1 1;min-height:0}.exercise-mystery-code{flex:1 1;min-height:0}.exercise-mystery-answer-section{border-top:1px solid var(--border);padding:1rem;flex-shrink:0}.exercise-mystery-label{display:block;font-size:.8rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.5rem}.exercise-mystery-input{resize:vertical;min-height:60px;font-family:var(--font-mono);font-size:.9rem;line-height:1.6}.exercise-page{display:flex;flex-direction:column;height:calc(100vh - 64px);overflow:hidden;padding-top:46px}.exercise-topbar{display:flex;align-items:center;gap:1rem;padding:.45rem 1.25rem;border-bottom:1px solid var(--border);background:var(--bg-surface);position:fixed;top:64px;left:0;right:0;z-index:500;box-shadow:0 2px 8px rgba(0,0,0,.12)}.exercise-topbar-info{display:flex;align-items:center;gap:.75rem;flex:1 1;min-width:0}.exercise-topbar-info h1{font-size:1.05rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.exercise-difficulty-badge{font-size:.7rem;font-weight:700;text-transform:uppercase;padding:.2rem .6rem;border-radius:var(--radius-full);background:var(--accent-subtle);color:var(--accent);flex-shrink:0}.exercise-points-badge{font-size:.75rem;font-weight:600;color:var(--text-muted);flex-shrink:0}.exercise-topbar-actions{display:flex;gap:.5rem;flex-shrink:0}.exercise-layout{flex:1 1;display:grid;grid-template-columns:1fr 1fr;grid-gap:0;gap:0;overflow:hidden}.exercise-statement{border-right:1px solid var(--border);overflow-y:auto}.exercise-statement-inner{padding:1.5rem}.exercise-statement-header{display:flex;align-items:baseline;gap:.75rem;margin-bottom:1rem}.exercise-statement-header h2{margin-bottom:0}.exercise-source-tag{display:inline-flex;align-items:center;padding:.2rem .65rem;border-radius:var(--radius-full);background:var(--accent-subtle);color:var(--text-secondary);font-size:.75rem;font-weight:600;letter-spacing:.02em;border:1px solid var(--border);white-space:nowrap}.exercise-statement h2{font-size:1rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:1rem}.exercise-desc{font-size:.95rem;line-height:1.7;color:var(--text-primary);margin-bottom:1.5rem}.exercise-desc.markdown-body p{margin-bottom:.75rem}.exercise-desc.markdown-body p:last-child{margin-bottom:0}.exercise-desc.markdown-body code{font-family:var(--font-mono);font-size:.85rem;background:var(--bg-elevated);padding:.15rem .4rem;border-radius:var(--radius-sm);color:var(--accent)}.exercise-desc.markdown-body pre{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.85rem 1rem;overflow-x:auto;margin:.75rem 0}.exercise-desc.markdown-body pre code{background:none;padding:0;color:var(--text-primary)}.exercise-desc.markdown-body ol,.exercise-desc.markdown-body ul{padding-left:1.5rem;margin-bottom:.75rem}.exercise-desc.markdown-body li{margin-bottom:.3rem}.exercise-desc.markdown-body strong{font-weight:700}.exercise-desc.markdown-body em{font-style:italic}.exercise-desc .katex{font-size:1.05em;color:var(--text-primary)}.exercise-desc .katex-display{margin:1rem 0;overflow-x:auto;overflow-y:hidden;padding:.5rem 0}.exercise-examples h3{font-size:.85rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem}.exercise-example{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:.85rem 1rem;margin-bottom:.75rem}.exercise-example-label{font-size:.8rem;font-weight:600;color:var(--text-secondary);margin-bottom:.5rem}.exercise-example-row{display:flex;align-items:baseline;gap:.5rem;font-size:.85rem;margin-bottom:.25rem}.exercise-example-key{font-weight:600;color:var(--text-muted);white-space:nowrap}.exercise-example-row code{font-family:var(--font-mono);font-size:.82rem;color:var(--accent);background:var(--accent-subtle);padding:.1rem .4rem;border-radius:var(--radius-sm)}.exercise-tags-section{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1.5rem}.exercise-workspace{display:flex;flex-direction:column;overflow:hidden}.exercise-editor-wrapper{flex:1 1;display:flex;flex-direction:column;min-height:0}.exercise-editor-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;font-size:.8rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);flex-shrink:0}.exercise-editor{flex:1 1;min-height:0}.exercise-output-panel{flex-shrink:0;max-height:40%;display:flex;flex-direction:column;border-top:1px solid var(--border)}.exercise-output-header{padding:.5rem 1rem;font-size:.8rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);flex-shrink:0}.exercise-output-body{padding:.75rem 1rem;overflow-y:auto;flex:1 1;min-height:80px}.exercise-output-empty{color:var(--text-muted);font-size:.85rem;font-style:italic}.exercise-run-result{display:flex;flex-direction:column;gap:.5rem}.exercise-stdout{color:var(--text-primary)}.exercise-stderr,.exercise-stdout{font-family:var(--font-mono);font-size:.85rem;line-height:1.6;white-space:pre-wrap;word-break:break-word}.exercise-stderr{color:var(--error)}.exercise-exec-time{font-size:.75rem;color:var(--text-muted)}.exercise-submit-result{border-radius:var(--radius-md);padding:1rem}.exercise-submit-result.success{background:rgba(16,185,129,.08);border:1px solid var(--success)}.exercise-submit-result.fail{background:rgba(239,68,68,.08);border:1px solid var(--error)}.exercise-submit-header{font-size:1rem;font-weight:700;margin-bottom:.5rem}.exercise-submit-result.success .exercise-submit-header{color:var(--success)}.exercise-submit-result.fail .exercise-submit-header{color:var(--error)}.exercise-submit-score{font-size:.9rem;color:var(--text-secondary);margin-bottom:.75rem}.exercise-test-list{display:flex;flex-direction:column;gap:.5rem}.exercise-test-item{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.5rem;font-size:.85rem;padding:.5rem .65rem;border-radius:var(--radius-sm)}.exercise-test-item.passed{color:var(--success)}.exercise-test-item.failed{color:var(--error)}.exercise-test-icon{font-weight:700;width:1.2em;flex-shrink:0}.exercise-test-desc{flex:1 1}.exercise-test-detail{width:100%;padding-left:1.7em;display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;color:var(--text-secondary)}.exercise-test-detail code{font-family:var(--font-mono);font-size:.78rem;background:var(--bg-elevated);padding:.1rem .35rem;border-radius:var(--radius-sm)}.exercise-test-error{color:var(--error)}.exercise-error-state,.exercise-loading,.exercise-login-prompt{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center;gap:1rem;flex:1 1}.exercise-login-prompt h2{font-size:1.3rem;font-weight:700}.exercise-error-state p,.exercise-login-prompt p{color:var(--text-secondary)}@media (max-width:768px){.navbar{padding:0 1rem}.home{padding:2rem 1rem 3rem}.home-hero h1{font-size:1.75rem}.home-hero-text{font-size:.95rem}.home-cards,.runner-layout{grid-template-columns:1fr}.runner-layout{grid-template-rows:1fr 1fr;padding:1rem}.popup{width:95vw}.classiques-filters{flex-direction:column}.classiques-filter-input,.classiques-filter-select{width:100%}.classiques-grid,.exercise-layout{grid-template-columns:1fr}.exercise-layout{grid-template-rows:auto 1fr}.exercise-statement{border-right:none;border-bottom:1px solid var(--border);max-height:40vh}.exercise-topbar{flex-wrap:wrap;gap:.5rem}.exercise-topbar-info h1{font-size:.9rem}}@media (max-width:480px){.home-hero h1{font-size:1.45rem}.navbar-logo-text{font-size:1.1rem}}.learning-level-section{margin-top:2rem}.learning-level-section h3{margin:0 0 .25rem;font-size:1rem;font-weight:600}.helper-text{color:var(--text-muted);font-size:.85rem;margin:0 0 1rem}.level-cards-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.75rem;gap:.75rem;margin-top:.75rem}.level-selection-card{padding:.85rem;border:2px solid var(--border);border-radius:8px;cursor:pointer;transition:all .3s ease}.level-selection-card.selected,.level-selection-card:hover{border-color:var(--border-focus)}.level-selection-card.selected{background:rgba(21,101,192,.1)}.level-selection-card h4{margin:.35rem 0 .25rem;font-size:.9rem}.level-selection-card p{margin:0;font-size:.78rem;color:var(--text-muted);line-height:1.35}.level-badge{display:inline-block;padding:.2rem .6rem;background:var(--accent-gradient);color:#fff;border-radius:12px;font-size:.7rem;font-weight:600}.learning-progress-compact{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;background:var(--bg-surface);border-radius:8px}.level-indicator{font-weight:600;color:var(--accent);font-size:.85rem;white-space:nowrap}.mini-progress-bar{width:100px;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.mini-progress-fill{height:100%;background:var(--accent);transition:width .3s ease}.progress-text{font-size:.8rem;font-weight:600;color:var(--text-muted)}.learning-progress-full{padding:1.5rem;background:var(--bg-surface);border-radius:12px;border:1px solid var(--border)}.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.progress-header h3{margin:0;font-size:1rem}.progress-percentage{font-size:1.5rem;font-weight:700;color:var(--accent)}.progress-bar-container{width:100%;height:12px;background:var(--border);border-radius:6px;overflow:hidden;margin-bottom:.75rem}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),#8b5cf6);transition:width .5s ease}.progress-details{margin:0;font-size:.85rem;color:var(--text-muted)}.navbar-learning{flex:1 1;display:flex;justify-content:center}.learning-path-page{max-width:1200px;margin:0 auto;padding:2rem 1.5rem}.learning-header{margin-bottom:2.5rem}.learning-header h1{margin:0 0 1.5rem;font-size:1.75rem;font-weight:700}.learning-levels-overview{margin-bottom:2.5rem}.learning-levels-overview h2{font-size:1.2rem;margin-bottom:1rem}.levels-timeline{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.5rem}.level-timeline-item{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;min-width:160px;flex-shrink:0;transition:all .2s}.level-timeline-item.current{border-color:var(--accent);background:rgba(99,102,241,.08)}.level-timeline-item.locked{opacity:.5}.level-timeline-badge{font-size:1.2rem;width:32px;text-align:center}.level-timeline-info strong{display:block;font-size:.8rem}.level-timeline-difficulty{font-size:.7rem;color:var(--text-muted)}.learning-exercises{margin-top:2rem}.learning-exercises h2{font-size:1.2rem;margin-bottom:1rem}.no-exercises-msg{color:var(--text-muted);font-style:italic}.mini-cours-section{background:var(--bg-surface);border-left:4px solid var(--accent);padding:1.5rem;border-radius:8px;margin-bottom:2rem}.mini-cours-section h3{margin-top:0;color:var(--accent)}.mini-cours-content{line-height:1.6}.mini-cours-content p{margin:.5rem 0}.mini-cours-card{margin-top:1.25rem;border-radius:var(--radius-lg);border:1px solid var(--border);overflow:hidden;background:var(--bg-elevated)}.mini-cours-toggle{display:flex;align-items:center;gap:.5rem;width:100%;padding:.7rem 1rem;background:transparent;border:none;cursor:pointer;color:var(--text-primary);font-size:.875rem;font-weight:600;text-align:left;transition:background var(--transition-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none}.mini-cours-toggle:hover{background:var(--bg-hover)}.mini-cours-toggle.open{border-bottom:1px solid var(--border)}.mini-cours-icon{font-size:1rem;flex-shrink:0}.mini-cours-label{flex:1 1}.mini-cours-chevron{font-size:.7rem;opacity:.5;transition:transform var(--transition-fast);flex-shrink:0}.mini-cours-toggle.open .mini-cours-chevron{transform:rotate(180deg)}.mini-cours-body{padding:1rem 1.25rem;font-size:.875rem;line-height:1.7;color:var(--text-primary)}.mini-cours-body p{margin-bottom:.65rem}.mini-cours-body p:last-child{margin-bottom:0}.mini-cours-body code{font-family:var(--font-mono);font-size:.82em;background:var(--accent-subtle);color:var(--accent);padding:.15em .4em;border-radius:var(--radius-sm)}.mini-cours-body pre{background:var(--bg-surface);border:1px solid var(--border);padding:.75rem 1rem;border-radius:var(--radius-md);overflow-x:auto;margin:.65rem 0}.mini-cours-body pre code{background:none;padding:0;color:var(--text-primary)}.mini-cours-body ol,.mini-cours-body ul{padding-left:1.5rem;margin-bottom:.65rem}.mini-cours-body li{margin-bottom:.25rem}.mini-cours-body strong{font-weight:700}.mini-cours-body .katex{font-size:1em;color:var(--text-primary)}.level-up-banner{background:linear-gradient(135deg,#10b981,#059669);color:#fff;padding:1.5rem;border-radius:12px;text-align:center;margin-top:1.5rem;font-size:1.1rem;font-weight:600}.level-up-banner button{margin-top:1rem;background:#fff;color:#059669;border:none;padding:.75rem 2rem;border-radius:8px;font-weight:600;cursor:pointer;transition:opacity .2s}.level-up-banner button:hover{opacity:.9}.learning-exercise-wrapper{position:relative}.completion-badge{position:absolute;top:1rem;right:1rem;width:32px;height:32px;background:#10b981;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:700;z-index:2}.learning-next-action{margin-top:1rem;text-align:center}.home-card.learning-card{border:2px solid var(--accent);background:rgba(99,102,241,.04)}@media (max-width:600px){.level-cards-grid{grid-template-columns:1fr}.levels-timeline{flex-direction:column}.level-timeline-item{min-width:auto}.navbar-learning{display:none}}[data-theme=dark] .logo-light,[data-theme=light] .logo-dark{display:none!important}.ab-page{max-width:760px;margin:0 auto;padding:4rem 2rem 7rem}.ab-kicker{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);margin-bottom:1.5rem}.ab-title{font-size:clamp(2rem,5vw,3.2rem);font-weight:800;line-height:1.1;letter-spacing:-.035em;color:var(--text-primary);margin:0 0 1.75rem}.ab-title em{font-style:normal;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.ab-lead{font-size:1.2rem;line-height:1.7;color:var(--text-secondary);max-width:580px;border-left:3px solid var(--border-strong);padding-left:1.25rem;margin:0}.ab-body{margin-top:4.5rem;display:flex;flex-direction:column;gap:3.5rem}.ab-col-text h2{font-size:1.1rem;font-weight:700;color:var(--text-primary);letter-spacing:-.01em;margin:0 0 1rem}.ab-col-text p{font-size:1rem;line-height:1.8;color:var(--text-secondary);margin:0 0 1rem}.ab-col-text p:last-child{margin-bottom:0}.ab-topics{list-style:none;padding:0;margin:1.5rem 0 0;display:flex;flex-wrap:wrap;gap:.5rem 1.25rem}.ab-topics li{font-family:var(--font-mono);font-size:.78rem;color:var(--text-muted);position:relative;padding-left:.85rem}.ab-topics li:before{content:"–";position:absolute;left:0;color:var(--text-muted);opacity:.4}.ab-fade{opacity:0;transform:translateY(20px);transition:opacity .55s ease,transform .55s ease}.ab-in{opacity:1;transform:none}.ab-founder{margin-top:5rem;padding-top:3rem;border-top:1px solid var(--border);display:grid;grid-template-columns:88px 1fr;grid-gap:2rem;gap:2rem;align-items:start}@media (max-width:520px){.ab-founder{grid-template-columns:1fr}}.ab-founder-photo-wrap{width:90px;height:90px;border-radius:10px;overflow:hidden;background:var(--bg-elevated);flex-shrink:0}.ab-founder-photo{width:100%;height:100%;object-fit:cover;display:block}.ab-founder-tag{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);margin:0 0 .5rem}.ab-founder-name{font-size:1.25rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .3rem;color:var(--text-primary)}.ab-founder-name a{color:inherit;text-decoration:none;border-bottom:1.5px solid var(--border-strong);transition:border-color var(--transition-fast),color var(--transition-fast)}.ab-founder-name a:hover{color:var(--text-primary);border-bottom-color:var(--text-primary)}.ab-founder-role{font-size:.85rem;color:var(--text-muted);margin:0 0 1rem}.ab-founder-bio{font-size:.95rem;line-height:1.75;color:var(--text-secondary);white-space:pre-line;margin:0 0 1.25rem}.ab-founder-contacts{display:flex;gap:.6rem}.ab-founder-contacts a{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:7px;color:var(--text-muted);background:var(--bg-elevated);border:1px solid var(--border);transition:color var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast)}.ab-founder-contacts a:hover{color:var(--text-primary);background:var(--bg-hover);border-color:var(--border-strong)}.ab-founder-contacts a.ab-contact-linkedin{color:#0077b5;border-color:rgba(0,119,181,.25);background:rgba(0,119,181,.07)}.ab-founder-contacts a.ab-contact-linkedin:hover{color:#0077b5;background:rgba(0,119,181,.15);border-color:rgba(0,119,181,.4)}.footer{border-top:1px solid var(--border);padding:.85rem 2rem;margin-top:auto;flex-shrink:0}.footer-inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.footer-brand-logo{font-family:var(--font-mono);font-size:.82rem;font-weight:700;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-decoration:none}.footer-links-row{display:flex;align-items:center;gap:1.5rem}.footer-links-row a{font-size:.78rem;color:var(--text-muted);text-decoration:none;transition:color var(--transition-fast)}.footer-links-row a:hover{color:var(--text-primary)}.footer-copy{font-size:.75rem;color:var(--text-muted);opacity:.55}.footer-seo{display:none}@media (max-width:600px){.footer-inner{flex-direction:column;align-items:flex-start;gap:.4rem}.footer-links-row{gap:1rem}}