@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Open+Sans:wght@300;400;500;600;700&display=swap";@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=IBM+Plex+Mono:wght@400;500;600&family=Instrument+Serif:ital@0;1&family=Sora:wght@300;400;500;600;700;800&display=swap";.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sr-only:focus{clip:auto;white-space:normal;background:var(--bg-2,#131c2b);width:auto;height:auto;color:var(--cyan,#22d3ee);z-index:9999;border-radius:4px;margin:0;padding:8px 16px;font-size:14px;position:fixed;top:8px;left:8px;overflow:visible}:root{--bg:#f3f3f3;--bg-2:#fff;--bg-3:#e8ecf1;--bg-4:#d1d8e0aa;--line:#e2e2e2;--line-soft:#ebebeb;--ink:#333;--ink-2:#666;--ink-3:#999;--cyan:#2ea3f2;--cyan-deep:#0693e3;--amber:#d97706;--green:#27ae60;--red:#e74c3c;--violet:#7c3aed;--mono:"JetBrains Mono", monospace;--sans:"Open Sans", Arial, sans-serif}:root[data-theme=light]{--bg:#f3f3f3;--bg-2:#fff;--bg-3:#e8ecf1;--bg-4:#d1d8e0aa;--line:#e2e2e2;--line-soft:#ebebeb;--ink:#333;--ink-2:#666;--ink-3:#999;--cyan:#2ea3f2;--cyan-deep:#0693e3;--amber:#d97706;--green:#27ae60;--red:#e74c3c;--violet:#7c3aed}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}::selection{background-color:var(--cyan-deep);color:var(--ink)}a{color:var(--cyan);text-decoration:none}a:hover{text-decoration:underline}.btn{font-family:var(--sans);cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;transition:background-color .15s,opacity .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--cyan);color:var(--bg)}.btn-primary:hover:not(:disabled){background-color:var(--cyan-deep);color:var(--ink)}.btn-secondary{background-color:var(--bg-3);color:var(--ink);border:1px solid var(--line)}.btn-secondary:hover:not(:disabled){background-color:var(--bg-4)}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-label{color:var(--ink-2);font-size:.85rem;font-weight:500}.form-input,.form-select,.form-textarea{background-color:var(--bg-3);color:var(--ink);border:1px solid var(--line);font-family:var(--sans);border-radius:8px;outline:none;padding:.65rem .85rem;font-size:.95rem;transition:border-color .15s}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--cyan)}.form-textarea{font-family:var(--mono);resize:vertical;min-height:120px}.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5l5 5 5-5' stroke='%239fb0c5' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;padding-right:2rem}.radio-group{gap:.75rem;display:flex}.radio-card{background-color:var(--bg-3);border:1px solid var(--line);cursor:pointer;border-radius:8px;align-items:center;gap:.5rem;padding:.6rem 1rem;font-size:.9rem;transition:border-color .15s;display:flex}.radio-card input{display:none}.radio-card--active{border-color:var(--cyan);color:var(--cyan)}.error-message{border:1px solid var(--red);color:var(--red);text-align:center;background-color:#f871711a;border-radius:8px;padding:.6rem 1rem;font-size:.85rem}.loading-message{color:var(--ink-3);font-family:var(--mono);font-size:.9rem}.home-wrapper{flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;min-height:100vh;padding:2rem;display:flex}.home-brand{align-items:center;gap:.75rem;display:flex}.brand-logo{font-family:var(--mono);color:var(--cyan);background-color:var(--bg-3);border:1px solid var(--line);border-radius:8px;padding:.4rem .7rem;font-size:2rem;font-weight:700}.brand-name{letter-spacing:-.02em;font-size:2rem;font-weight:700}.brand-accent{color:var(--cyan)}.home-subtitle{color:var(--ink-2);margin-top:-.5rem;font-size:1rem}.home-card{background-color:var(--bg-2);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:1.25rem;width:100%;max-width:540px;padding:2rem;display:flex}.form-label-row{justify-content:space-between;align-items:center;display:flex}.btn-link{color:var(--cyan);font-family:var(--sans);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8rem}.btn-link:hover{text-decoration:underline}.famille-grid{flex-wrap:wrap;gap:.5rem;display:flex}.famille-chip{background-color:var(--bg-3);border:1px solid var(--line);cursor:pointer;font-family:var(--sans);color:var(--ink-2);border-radius:6px;align-items:center;gap:.4rem;padding:.4rem .75rem;font-size:.85rem;transition:border-color .15s,color .15s;display:flex}.famille-chip:hover{border-color:var(--ink-3);color:var(--ink)}.famille-chip--active{border-color:var(--cyan);color:var(--cyan);background-color:#22d3ee14}.famille-chip-count{font-family:var(--mono);color:var(--ink-3);background-color:var(--bg);border-radius:4px;padding:.1rem .35rem;font-size:.7rem}.famille-chip--active .famille-chip-count{color:var(--cyan)}.form-hint{color:var(--ink-3);margin-top:.25rem;font-size:.8rem}.form-hint--warn{color:var(--amber)}.topbar{background:var(--bg-2);border-bottom:1px solid var(--line);z-index:10;justify-content:space-between;align-items:center;height:56px;padding:0 20px;display:flex;position:relative}.brand{align-items:center;gap:11px;display:flex}.brand .mark{border:2px solid var(--cyan);width:28px;height:28px;font-family:var(--mono);color:var(--cyan);box-shadow:0 0 12px -2px var(--cyan);border-radius:7px;justify-content:center;align-items:center;font-size:15px;font-weight:700;display:flex}.brand .name{letter-spacing:-.01em;font-size:16px;font-weight:700}.brand .name b{color:var(--cyan)}.topbar .exam-info{font-family:var(--mono);color:var(--ink-2);align-items:center;gap:18px;font-size:12px;display:flex}.exam-info .sep{background:var(--line);width:1px;height:16px}.progress-pills{gap:4px;display:flex}.pill{background:var(--line);border-radius:3px;width:22px;height:5px}.pill.done{background:var(--cyan)}.pill.cur{background:var(--amber);box-shadow:0 0 8px -1px var(--amber)}.chrono{font-family:var(--mono);background:var(--bg-3);border:1px solid var(--line);color:var(--amber);letter-spacing:.03em;border-radius:8px;align-items:center;gap:8px;padding:7px 14px;font-size:16px;font-weight:700;display:flex}.chrono .dot{background:var(--amber);border-radius:50%;width:7px;height:7px;animation:1.4s infinite blink}@keyframes blink{50%{opacity:.3}}.chrono.warn{border-color:var(--red);color:var(--red)}.chrono.warn .dot{background:var(--red)}.chrono.timer--warning{border-color:var(--red);color:var(--red);animation:.6s ease-in-out infinite pulse-timer}.chrono.timer--warning .dot{background:var(--red)}.chrono.timer--expired{border-color:var(--red);color:var(--red);background:#ef444426;animation:.3s ease-in-out infinite pulse-timer}.chrono.timer--expired .dot{background:var(--red)}@keyframes pulse-timer{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.05)}}.arena-shell{flex-direction:column;height:100vh;display:flex;overflow:hidden}.stage{grid-template-columns:minmax(380px,1.2fr) minmax(380px,1.4fr) minmax(280px,1fr);height:calc(100vh - 59px);display:grid}.col{overflow:hidden auto}.col::-webkit-scrollbar{width:10px}.col::-webkit-scrollbar-thumb{background:var(--line);border:3px solid var(--bg);border-radius:5px}.col::-webkit-scrollbar-track{background:0 0}.col-brief{background:var(--bg);border-right:1px solid var(--line);padding:28px 26px 60px}.tag-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:20px;display:flex}.tag{font-family:var(--mono);letter-spacing:.04em;border-radius:6px;padding:4px 10px;font-size:11px}.tag.diff{color:var(--amber);background:#f5a5241f;border:1px solid #f5a52440}.tag.lang{color:var(--cyan);background:#22d3ee1a;border:1px solid #22d3ee38}.tag.pts{background:var(--bg-3);color:var(--ink-2);border:1px solid var(--line)}.brief-title{letter-spacing:-.02em;margin-bottom:18px;font-size:22px;font-weight:700;line-height:1.3}.brief-title .inline-code,.brief-title code{font-family:var(--mono);background:var(--bg-3);color:var(--cyan);border:1px solid var(--line-soft);border-radius:5px;padding:2px 7px;font-size:.8em;font-weight:500}.section-label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);align-items:center;gap:10px;margin:28px 0 12px;font-size:11px;display:flex}.section-label:after{content:"";background:var(--line-soft);flex:1;height:1px}.example{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;margin-bottom:12px;overflow:hidden}.example-code{font-family:var(--mono);color:var(--ink);white-space:pre-wrap;word-break:break-word;tab-size:2;margin:0;padding:14px 18px;font-size:13px;line-height:1.7;overflow:visible}.col-editor{background:var(--bg-2);flex-direction:column;display:flex;overflow:hidden}.editor-tabs{background:var(--bg);border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;height:42px;padding:0 6px;display:flex}.etab{height:100%;font-family:var(--mono);color:var(--ink-2);border-bottom:2px solid #0000;align-items:center;gap:8px;padding:0 16px;font-size:12.5px;display:flex}.etab.active{color:var(--ink);border-bottom-color:var(--cyan);background:var(--bg-2)}.etab .fdot{background:var(--cyan);border-radius:50%;width:8px;height:8px}.editor-shell{flex:1;display:flex;position:relative;overflow:hidden}.code-area{flex:1;position:relative}.qcm-options-area{flex-direction:column;flex:1;gap:12px;padding:24px 20px;display:flex;overflow-y:auto}.qcm-instruction{color:var(--ink-3);font-size:13px;font-family:var(--mono);margin-bottom:4px}.qcm-options-list{flex-direction:column;gap:8px;display:flex}.qcm-option{background:var(--bg);border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:flex-start;gap:12px;padding:14px 16px;transition:border-color .15s,background-color .15s;display:flex}.qcm-option:hover{background:var(--bg-3);border-color:var(--ink-3)}.qcm-option input{display:none}.qcm-option--selected{border-color:var(--cyan);background:#22d3ee0f}.qcm-option-letter{background:var(--bg-3);border:1px solid var(--line);width:28px;height:28px;font-family:var(--mono);color:var(--ink-3);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.qcm-option--selected .qcm-option-letter{border-color:var(--cyan);color:var(--cyan);background:#22d3ee26}.qcm-option-text{padding-top:3px;font-size:14px;line-height:1.6}.ouverte-textarea{resize:none;width:100%;height:100%;color:var(--ink);font-family:var(--mono);white-space:pre-wrap;tab-size:2;caret-color:var(--cyan);background:0 0;border:none;outline:none;padding:20px 22px;font-size:14px;line-height:1.7;position:absolute;inset:0;overflow:auto}.ouverte-textarea::placeholder{color:var(--ink-3)}.ouverte-textarea::-webkit-scrollbar{width:10px}.ouverte-textarea::-webkit-scrollbar-thumb{background:var(--line);border:3px solid var(--bg-2);border-radius:5px}.col-tests{background:var(--bg);border-left:1px solid var(--line);flex-direction:column;padding:22px 20px 60px;display:flex}.tests-head{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.tests-head h3{font-size:15px;font-weight:600}.tests-summary{font-family:var(--mono);color:var(--ink-2);font-size:12px}.info-card{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;overflow:hidden}.info-row{border-bottom:1px solid var(--line-soft);justify-content:space-between;padding:11px 15px;font-size:13px;display:flex}.info-row:last-child{border-bottom:none}.info-label{color:var(--ink-3)}.info-value{color:var(--ink);font-weight:500}.col-tests-actions{margin:16px 0}.col-tests-actions .btn{width:100%}.btn-submit{font-family:var(--sans);cursor:pointer;background:var(--cyan);color:#04141a;box-shadow:0 0 16px -4px var(--cyan);border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:12px 18px;font-size:13px;font-weight:600;transition:all .14s;display:flex}.btn-submit:hover:not(:disabled){box-shadow:0 0 22px -3px var(--cyan);background:#3ddef0}.btn-submit:disabled{opacity:.5;cursor:not-allowed}.console{border:1px solid var(--line);background:#080d15;border-radius:10px;margin-top:auto;overflow:hidden}.console-head{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--line-soft);align-items:center;gap:8px;padding:9px 14px;font-size:11px;display:flex}.console-head:before{content:"";background:var(--green);border-radius:50%;width:7px;height:7px}.console-body{font-family:var(--mono);color:var(--ink-2);min-height:60px;padding:12px 14px;font-size:12px;line-height:1.7}.console-body .muted{color:var(--ink-3)}.exam-loading{min-height:100vh;color:var(--ink-3);font-family:var(--mono);justify-content:center;align-items:center;font-size:.9rem;display:flex}.rv2{background:#0f1523;width:100%;min-height:100vh}.rv2-hero{background:linear-gradient(#151d2e 0%,#0f1523 100%);border-bottom:1px solid #ffffff0f}.rv2-hero__inner{max-width:960px;margin:0 auto;padding:1.5rem 2rem 1.25rem}.rv2-hero__top{justify-content:space-between;align-items:center;gap:2rem;margin-bottom:1rem;display:flex}.rv2-hero__name{color:#fff;font-size:1.5rem;font-weight:700;font-family:var(--sans);margin:0 0 .25rem}.rv2-hero__domains{color:#94a3b8;margin:0 0 .5rem;font-size:.85rem;font-weight:500}.rv2-hero__meta{color:#64748b;font-size:.75rem;font-family:var(--mono);align-items:center;gap:.5rem;display:flex}.rv2-hero__sep{color:#334155}.rv2-hero__score{flex-shrink:0}.rv2-hero__circle{width:110px;height:110px;position:relative}.rv2-score-svg{transform:rotate(-90deg)}.rv2-hero__circle-label{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.rv2-hero__pct{color:#fff;font-size:1.7rem;font-weight:800;font-family:var(--mono);line-height:1}.rv2-hero__frac{color:#64748b;font-size:.78rem;font-family:var(--mono);margin-top:3px}.rv2-hero__chips{flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem;display:flex}.rv2-chip{background:#ffffff0d;border:1px solid #ffffff14;border-radius:6px;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.78rem;display:flex}.rv2-chip__label{color:#cbd5e1;font-weight:600}.rv2-chip__val{font-family:var(--mono);color:#64748b;font-size:.75rem}.rv2-chip__pct{font-family:var(--mono);font-size:.75rem;font-weight:700}.rv2-chip__pct--ok{color:#34d399}.rv2-chip__pct--low{color:#f87171}.rv2-hero__kpis{border-top:1px solid #ffffff0f;gap:2rem;padding-top:.75rem;display:flex}.rv2-kpi{align-items:baseline;gap:.4rem;display:flex}.rv2-kpi__val{font-size:1.3rem;font-weight:800;font-family:var(--mono)}.rv2-kpi__val--xp{color:#fbbf24}.rv2-kpi__val--streak{color:#38bdf8}.rv2-kpi__val--badges{color:#a78bfa}.rv2-kpi__label{color:#64748b;text-transform:uppercase;letter-spacing:.03em;font-size:.75rem;font-weight:500}.rv2-container{max-width:960px;margin:0 auto;padding:1.25rem 2rem 3rem}.rv2-panels{grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1rem;display:grid}.rv2-card{background:linear-gradient(135deg,#ffffff0a 0%,#ffffff05 100%);border:1px solid #ffffff12;border-radius:12px;padding:1.1rem 1.25rem}.rv2-card__title{text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin:0 0 1rem;font-size:.72rem;font-weight:700}.rv2-domain-list{flex-direction:column;gap:.7rem;display:flex}.rv2-domain__top{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}.rv2-domain__name{color:#e2e8f0;font-size:.82rem;font-weight:600}.rv2-domain__frac{font-size:.72rem;font-family:var(--mono);color:#64748b}.rv2-domain__track{background:#ffffff0f;border-radius:3px;height:5px;overflow:hidden}.rv2-domain__fill{border-radius:3px;height:100%;transition:width .8s cubic-bezier(.4,0,.2,1)}.rv2-badges{flex-direction:column;gap:.6rem;display:flex}.rv2-badge-item{align-items:center;gap:.6rem;display:flex}.rv2-badge-item__emoji{background:#ffffff0d;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:1.15rem;display:flex}.rv2-badge-item__name{color:#e2e8f0;font-size:.8rem;font-weight:600;line-height:1.3}.rv2-badge-item__desc{color:#64748b;font-size:.68rem;line-height:1.3}.rv2-actions{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.rv2-actions__left,.rv2-actions__right{gap:.5rem;display:flex}.rv2-btn{cursor:pointer;border-radius:7px;align-items:center;padding:.45rem 1rem;font-family:inherit;font-size:.8rem;font-weight:600;text-decoration:none;transition:all .15s;display:inline-flex}.rv2-btn--primary{color:#fff;background:linear-gradient(135deg,#6366f1 0%,#8b5cf6 100%);border:none;box-shadow:0 2px 8px #6366f14d}.rv2-btn--primary:hover{box-shadow:0 4px 16px #6366f166}.rv2-btn--primary:disabled{opacity:.5;cursor:wait}.rv2-btn--outline{color:#94a3b8;background:#ffffff0a;border:1px solid #ffffff1a}.rv2-btn--outline:hover{color:#e2e8f0;background:#ffffff14;border-color:#fff3}.rv2-feedback-ok{color:#34d399;font-size:.8rem;font-weight:600}.rv2-toolbar{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.rv2-filters{gap:.35rem;display:flex}.rv2-filter{color:#64748b;cursor:pointer;background:#ffffff08;border:1px solid #ffffff14;border-radius:6px;padding:.35rem .75rem;font-family:inherit;font-size:.78rem;font-weight:500;transition:all .15s}.rv2-filter:hover{color:#cbd5e1;background:#ffffff0f}.rv2-filter--on{color:#fff;background:#ffffff1f;border-color:#ffffff26}.rv2-filter--on:hover{background:#ffffff29}.rv2-filter--g.rv2-filter--on{color:#34d399;background:#34d39926;border-color:#34d3994d}.rv2-filter--r.rv2-filter--on{color:#f87171;background:#f8717126;border-color:#f871714d}.rv2-filter__n{font-family:var(--mono);opacity:.75;margin-left:.2rem;font-size:.7rem}.rv2-list{flex-direction:column;gap:3px;display:flex}.rv2-q{background:#ffffff08;border:1px solid #ffffff0f;border-radius:8px;transition:border-color .2s,box-shadow .2s;overflow:hidden}.rv2-q--ok{border-left:3px solid #34d399}.rv2-q--ko{border-left:3px solid #f87171}.rv2-q--expanded{background:#ffffff0d;border-color:#6366f14d;box-shadow:0 4px 20px #0000004d}.rv2-q__row{cursor:pointer;text-align:left;width:100%;color:inherit;background:0 0;border:none;align-items:center;gap:.5rem;padding:.65rem 1rem;font-family:inherit;transition:background .12s;display:flex}.rv2-q__row:hover{background:#ffffff08}.rv2-q__dot{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:.7rem;font-weight:700;display:flex}.rv2-q__dot.rv2-q--ok{color:#34d399;background:#34d39926}.rv2-q__dot.rv2-q--ko{color:#f87171;background:#f8717126}.rv2-q__num{color:#e2e8f0;font-size:.8rem;font-weight:700;font-family:var(--mono);flex-shrink:0}.rv2-q__type{text-transform:uppercase;letter-spacing:.04em;border-radius:4px;flex-shrink:0;padding:.12rem .5rem;font-size:.62rem;font-weight:700}.rv2-q__type--qcm{color:#38bdf8;background:#38bdf81f}.rv2-q__type--code{color:#34d399;background:#34d3991f}.rv2-q__type--pseudo{color:#a78bfa;background:#a78bfa1f}.rv2-q__type--open{color:#fbbf24;background:#fbbf241f}.rv2-q__fam{color:#64748b;flex-shrink:0;font-size:.72rem}.rv2-q__preview{color:#475569;white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:.8rem;overflow:hidden}.rv2-q__arrow{color:#475569;flex-shrink:0;margin-left:auto;font-size:.85rem;transition:transform .2s;display:inline-block}.rv2-q__arrow--up{transform:rotate(180deg)}.rv2-detail{border-top:1px solid #ffffff0f;padding:0}.rv2-detail__enonce{color:#e2e8f0;overflow-wrap:break-word;word-break:break-word;margin:0;padding:1rem 1.25rem .5rem;font-size:.9rem;line-height:1.7}.rv2-detail__code-wrap{padding:0 1.25rem}.rv2-detail__body{flex-direction:column;gap:.75rem;min-width:0;padding:.5rem 1.25rem 1.25rem;display:flex;overflow:hidden}.rv2-detail__block{flex-direction:column;gap:.3rem;display:flex}.rv2-detail__label{text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-size:.7rem;font-weight:700}.rv2-detail__pair{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.rv2-detail__pair-item{flex-direction:column;gap:.25rem;display:flex}.rv2-detail__val{color:#cbd5e1;overflow-wrap:break-word;word-break:break-word;font-size:.88rem}.rv2-detail__val--ref{color:#34d399;font-weight:600}.rv2-detail__empty{color:#475569;font-size:.85rem;font-style:italic}.rv2-detail__score-line{color:#64748b;font-size:.85rem;font-family:var(--mono)}.rv2-detail__tests{flex-direction:column;gap:3px;display:flex}.rv2-test{font-family:var(--mono);border-radius:4px;align-items:center;gap:6px;padding:3px 6px;font-size:.8rem;display:flex}.rv2-test--pass{color:#34d399}.rv2-test--fail{color:#f87171}.rv2-detail__expl{color:#94a3b8;background:#ffffff0a;border:1px solid #ffffff0f;border-radius:8px;margin:0 1.25rem 1rem;padding:.75rem 1rem;font-size:.82rem;line-height:1.65}.rv2-detail__expl-title{color:#cbd5e1;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.25rem;font-size:.7rem;font-weight:700;display:block}.rv2-detail__expl p{margin:0}.rv2-detail__feedback{color:#94a3b8;background:#8b5cf614;border:1px solid #8b5cf633;border-radius:8px;margin:0 1.25rem 1rem;padding:.75rem 1rem;font-size:.82rem;line-height:1.65}.rv2-detail__feedback-title{color:#a78bfa;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.25rem;font-size:.7rem;font-weight:700;display:block}.rv2-detail__feedback p{margin:0}@media (width<=768px){.rv2-hero__inner{padding:1.25rem 1rem}.rv2-hero__top{flex-direction:column;align-items:flex-start;gap:1rem}.rv2-hero__kpis{gap:1.25rem}.rv2-container{padding:1rem 1rem 2rem}.rv2-panels{grid-template-columns:1fr}.rv2-actions{flex-direction:column;align-items:stretch}.rv2-actions__left,.rv2-actions__right{flex-wrap:wrap;justify-content:center}.rv2-detail__pair{grid-template-columns:1fr}}.home-user-bar{background:#ffffff0a;border:1px solid #ffffff12;border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;width:100%;max-width:540px;padding:.4rem 1rem;display:flex}.home-user-name{color:var(--ink);font-size:.85rem;font-weight:600}.home-assignments{width:100%;max-width:540px}.home-assignments-title{color:var(--ink);border-bottom:2px solid var(--cyan);margin-bottom:.75rem;padding-bottom:.4rem;font-size:1rem;font-weight:700;display:inline-block}.home-assignments-grid{flex-direction:column;gap:.75rem;display:flex}.home-assignment-card{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:.6rem;padding:1rem 1.25rem;transition:box-shadow .15s;display:flex}.home-assignment-card:hover{box-shadow:0 2px 8px #00000014}.home-assignment-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.home-assignment-name{color:var(--ink);font-size:.95rem;font-weight:600}.home-assignment-badge{white-space:nowrap;border-radius:10px;padding:2px 10px;font-size:.72rem;font-weight:600}.home-assignment-badge--en_attente{color:#d97706;background:#fef3c7}.home-assignment-badge--en_cours{color:#2563eb;background:#dbeafe}.home-assignment-badge--termine{color:#16a34a;background:#dcfce7}.home-assignment-badge--expire{color:#dc2626;background:#fee2e2}.home-assignment-chips{flex-wrap:wrap;gap:.3rem;display:flex}.home-assignment-chip{background:var(--bg-3);color:var(--ink-2);border-radius:6px;padding:2px 8px;font-size:.72rem;font-weight:500}.home-assignment-meta{color:var(--ink-3);flex-wrap:wrap;gap:.75rem;font-size:.78rem;display:flex}.home-assignment-actions{margin-top:.25rem}.auth-wrapper{background:#0f1523;flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;min-height:100vh;padding:2rem;display:flex}.auth-brand{align-items:center;gap:.75rem;display:flex}.auth-brand .brand-logo{color:#22d3ee;background:#ffffff0d;border:1px solid #ffffff1a}.auth-brand .brand-name{color:#e2e8f0}.auth-card{background:#ffffff0a;border:1px solid #ffffff12;border-radius:12px;flex-direction:column;gap:1.25rem;width:100%;max-width:420px;padding:2rem;display:flex}.auth-tabs{border-bottom:1px solid #ffffff14;gap:0;margin-bottom:.25rem;display:flex}.auth-tab{font-family:var(--sans);color:#64748b;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:.65rem 0;font-size:.9rem;font-weight:600;transition:color .15s,border-color .15s}.auth-tab:hover{color:#94a3b8}.auth-tab--active{color:#e2e8f0;border-bottom-color:#6366f1}.auth-error{color:#f87171;text-align:center;background:#f871711a;border:1px solid #f871714d;border-radius:8px;padding:.55rem .85rem;font-size:.82rem}.auth-form{flex-direction:column;gap:1rem;display:flex}.auth-field{flex-direction:column;gap:.3rem;display:flex}.auth-label{color:#94a3b8;font-size:.8rem;font-weight:500}.auth-input{color:#e2e8f0;font-family:var(--sans);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;outline:none;padding:.65rem .85rem;font-size:.95rem;transition:border-color .15s}.auth-input::placeholder{color:#475569}.auth-input:focus{border-color:#6366f1}.auth-input-wrap{align-items:center;display:flex;position:relative}.auth-input--eye{width:100%;padding-right:2.5rem}.auth-eye{cursor:pointer;color:#64748b;background:0 0;border:none;align-items:center;padding:4px;display:flex;position:absolute;right:10px}.auth-eye:hover{color:#94a3b8}.auth-success{color:#22c55e;background:#22c55e1a;border:1px solid #22c55e4d;border-radius:8px;margin-bottom:.5rem;padding:.55rem .85rem;font-size:.85rem}.auth-hint{color:#64748b;margin-top:4px;font-size:.72rem}.auth-submit{font-family:var(--sans);cursor:pointer;color:#fff;background:linear-gradient(135deg,#6366f1 0%,#8b5cf6 100%);border:none;border-radius:8px;margin-top:.5rem;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;transition:box-shadow .15s,opacity .15s;box-shadow:0 2px 8px #6366f14d}.auth-submit:hover:not(:disabled){box-shadow:0 4px 16px #6366f166}.auth-submit:disabled{opacity:.5;cursor:not-allowed}@media (width<=480px){.auth-card{padding:1.25rem}}.invite-info{text-align:center;border-bottom:1px solid var(--line);margin-bottom:1.25rem;padding-bottom:1.25rem}.invite-title{margin-bottom:.5rem;font-size:1.3rem;font-weight:700}.invite-desc{color:var(--ink-2);margin-bottom:.75rem;font-size:.9rem}.invite-meta{font-family:var(--mono);color:var(--cyan);justify-content:center;gap:1.5rem;font-size:.85rem;display:flex}.cm-container{flex:1;overflow:hidden}.cm-container .cm-editor{height:100%}.code-textarea{resize:none;width:100%;height:100%;color:var(--ink);font-family:var(--mono);white-space:pre;tab-size:2;caret-color:var(--cyan);background:0 0;border:none;outline:none;padding:16px 18px;font-size:13px;line-height:1.7;position:absolute;inset:0;overflow:auto}.code-textarea::-webkit-scrollbar{width:10px}.code-textarea::-webkit-scrollbar-thumb{background:var(--line);border:3px solid var(--bg-2);border-radius:5px}.gutter{background:var(--bg-2);color:var(--ink-3);font-family:var(--mono);text-align:right;-webkit-user-select:none;user-select:none;border-right:1px solid var(--line-soft);min-width:44px;padding:16px 0;font-size:13px;line-height:1.7;overflow:hidden}.gutter div{padding:0 12px 0 0}.editor-foot{border-top:1px solid var(--line);background:var(--bg);flex-shrink:0;justify-content:space-between;align-items:center;height:52px;padding:0 16px;display:flex}.editor-foot .lang-sel{font-family:var(--mono);color:var(--ink-2);align-items:center;gap:8px;font-size:12px;display:flex}.foot-actions{gap:10px;display:flex}.btn-run{background:var(--bg-3);color:var(--ink);border:1px solid var(--line);font-family:var(--sans);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:9px 18px;font-size:13px;font-weight:600;transition:all .14s;display:flex}.btn-run:hover{background:var(--bg-4);border-color:var(--cyan-deep)}.test-cases-list{flex:1;margin-bottom:16px;overflow-y:auto}.test-case{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;margin-bottom:10px;transition:border-color .15s;overflow:hidden}.test-case.pass{border-color:#34d39959}.test-case.fail{border-color:#f8717166}.tc-head{cursor:pointer;align-items:center;gap:11px;padding:13px 15px;display:flex}.tc-status{width:22px;height:22px;font-family:var(--mono);background:var(--bg-3);color:var(--ink-3);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.test-case.pass .tc-status{color:var(--green);background:#34d39926}.test-case.fail .tc-status{color:var(--red);background:#f8717126}.tc-title{flex:1;font-size:13px;font-weight:500}.tc-title .sub{font-family:var(--mono);color:var(--ink-3);margin-top:2px;font-size:11px;display:block}.tc-time{font-family:var(--mono);color:var(--ink-3);font-size:11px}.tc-detail{max-height:0;font-family:var(--mono);padding:0 15px;font-size:12px;transition:max-height .2s;overflow:hidden}.test-case.open .tc-detail{max-height:220px;padding:0 15px 14px}.tc-detail .drow{border-top:1px solid var(--line-soft);gap:10px;padding:5px 0;display:flex}.tc-detail .drow:first-child{border-top:none}.tc-detail .dk{color:var(--ink-3);flex-shrink:0;width:64px}.tc-detail .dv{color:var(--ink)}.tc-detail .dv.exp{color:var(--green)}.tc-detail .dv.got{color:var(--red)}.tests-summary b.ok{color:var(--green)}.tests-summary b.ko{color:var(--red)}.code-block{background-color:var(--bg-3);border:1px solid var(--line);font-family:var(--mono);white-space:pre;color:var(--ink);border-radius:8px;padding:.75rem 1rem;font-size:.85rem;line-height:1.7;overflow-x:auto}.topbar-wrapper{z-index:10;position:relative}.topbar-progress{background:var(--bg-3);height:3px;overflow:hidden}.topbar-progress-fill{background:var(--cyan);border-radius:0 2px 2px 0;height:100%;transition:width .3s}.copy-code-btn{z-index:5;background:var(--bg-3);color:var(--ink-2);border:1px solid var(--line);font-family:var(--mono);cursor:pointer;opacity:.6;border-radius:5px;padding:3px 10px;font-size:11px;transition:opacity .15s,background-color .15s;position:absolute;top:8px;right:12px}.copy-code-btn:hover{opacity:1;background:var(--bg-4)}.arena-shell{--bg:#fafaf8;--bg-2:#fff;--bg-3:#f3f2ee;--bg-4:#e0dfda;--bg-card:#fff;--bg-subtle:#f3f2ee;--bg-hover:#eeeee8;--ink:#1a1a1a;--ink-2:#555550;--ink-3:#8a8a80;--ink-4:#b8b8ae;--line:#e0dfda;--line-soft:#ebe9e4;--cyan:#0f7b6c;--cyan-deep:#0a6b5d;--amber:#c75000;--green:#137333;--red:#d93025;--violet:#7c3aed;--sans:"DM Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", "Menlo", monospace;--serif:"Instrument Serif", Georgia, serif}.arena-shell,.arena-shell .topbar,.arena-shell .col-brief,.arena-shell .col-editor,.arena-shell .col-tests{font-family:var(--sans)}.arena-shell .topbar{background:var(--bg-card);border-bottom:1px solid var(--line);height:52px}.arena-shell .brand .mark{background:var(--cyan);color:#fff;width:30px;height:30px;box-shadow:none;border:none;border-radius:8px;font-size:13px}.arena-shell .brand .name b{color:var(--cyan)}.arena-shell .topbar .exam-info{font-family:var(--mono)}.arena-shell .pill.done{background:var(--cyan)}.arena-shell .pill.cur{background:var(--amber);box-shadow:0 0 8px #c750004d}.arena-shell .chrono{background:var(--bg-subtle);border:1px solid var(--line);color:var(--ink);font-family:var(--mono)}.arena-shell .chrono .dot{background:var(--amber)}.arena-shell .chrono.warn{border-color:var(--red);color:var(--red)}.arena-shell .chrono.warn .dot{background:var(--red)}.arena-shell .tag{font-family:var(--mono);letter-spacing:.03em;border-radius:20px;font-size:11px;font-weight:500}.arena-shell .tag.lang{color:var(--cyan);background:#0f7b6c0f;border:1px solid #0f7b6c26}.arena-shell .tag.diff{color:var(--amber);background:#c750000f;border:1px solid #c7500026}.arena-shell .tag.pts{background:var(--bg-subtle);color:var(--ink-2);border:1px solid var(--line)}.arena-shell .brief-title{letter-spacing:-.01em;font-size:17px;font-weight:600;line-height:1.6}.arena-shell .brief-title .inline-code,.arena-shell .brief-title code{font-family:var(--mono);background:var(--bg-subtle);color:var(--cyan);border:1px solid var(--line);border-radius:4px;padding:2px 7px;font-size:.85em}.arena-shell .col-brief{background:var(--bg);padding:28px 26px 24px}.arena-shell .qcm-options-area{padding:20px 24px}.arena-shell .qcm-instruction{font-family:var(--mono);color:var(--ink-3);font-size:13px}.arena-shell .qcm-option{border:1.5px solid var(--line);background:var(--bg-card);border-radius:10px;gap:14px;padding:16px 18px;transition:all .2s}.arena-shell .qcm-option:hover{border-color:var(--ink-4);background:var(--bg-card);transform:translateY(-1px);box-shadow:0 2px 8px #0000000a}.arena-shell .qcm-option--selected{border-color:var(--cyan);box-shadow:0 0 0 1px var(--cyan);background:#0f7b6c0a}.arena-shell .qcm-option-letter{border:1.5px solid var(--line);width:30px;height:30px;font-family:var(--mono);color:var(--ink-3);background:0 0;border-radius:50%;font-size:13px;font-weight:600}.arena-shell .qcm-option--selected .qcm-option-letter{background:var(--cyan);border-color:var(--cyan);color:#fff}.arena-shell .qcm-option-text{padding-top:4px;font-size:14px;line-height:1.55}.arena-shell .col-editor{background:var(--bg-card)}.arena-shell .editor-tabs{background:var(--bg-subtle);border-bottom:1px solid var(--line)}.arena-shell .etab{font-family:var(--mono);color:var(--ink-2);font-size:12.5px}.arena-shell .etab.active{color:var(--ink);border-bottom-color:var(--cyan);background:var(--bg-card)}.arena-shell .etab .fdot{background:var(--cyan)}.arena-shell .ouverte-textarea{font-family:var(--sans);color:var(--ink);caret-color:var(--cyan);font-size:14px;line-height:1.7}.arena-shell .ouverte-textarea::placeholder{color:var(--ink-4)}.arena-shell .col-tests{background:var(--bg);border-left:1px solid var(--line)}.arena-shell .tests-head h3{font-size:14px;font-weight:600}.arena-shell .info-card{background:var(--bg-card);border:1px solid var(--line);border-radius:10px}.arena-shell .info-row{border-bottom:1px solid var(--line-soft);font-size:13px}.arena-shell .info-label{color:var(--ink-3)}.arena-shell .info-value{color:var(--ink);font-weight:600}.arena-shell .btn-submit,.arena-shell .btn.btn-submit{background:var(--cyan);color:#fff;font-family:var(--sans);border:none;border-radius:10px;font-size:13px;font-weight:600;transition:all .2s}.arena-shell .btn-submit:hover:not(:disabled),.arena-shell .btn.btn-submit:hover:not(:disabled){background:var(--cyan-deep);transform:translateY(-1px);box-shadow:0 4px 12px #0f7b6c33}.arena-shell .btn-secondary,.arena-shell .btn.btn-secondary{background:var(--bg-card);border:1px solid var(--line);color:var(--ink-2);font-family:var(--sans);border-radius:10px;font-size:13px;font-weight:500;transition:all .15s}.arena-shell .btn-secondary:hover:not(:disabled),.arena-shell .btn.btn-secondary:hover:not(:disabled){background:var(--bg-subtle);color:var(--ink)}.arena-shell .console{background:var(--bg-subtle);border:1px solid var(--line);border-radius:10px;overflow:hidden}.arena-shell .console-head{background:var(--bg-card);border-bottom:1px solid var(--line);font-family:var(--mono);color:var(--ink-2);font-size:12px;font-weight:600}.arena-shell .console-body{color:var(--ink-3);font-size:13px;line-height:1.6}.arena-shell ::selection{background:#0f7b6c26}.arena-shell .section-label{font-family:var(--mono);color:var(--ink-3)}.arena-shell .section-label:after{background:var(--line-soft)}.arena-shell .example-code{font-family:var(--mono)}.stage--image{grid-template-columns:1fr 1fr}.panel-image{background:var(--bg);border-right:1px solid var(--line);flex-direction:column;display:flex;overflow:hidden}.panel-image__toolbar{border-bottom:1px solid var(--line-soft);background:var(--bg-2);flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.panel-image__label{font-family:var(--mono);color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:6px;font-size:.75rem;font-weight:600;display:flex}.panel-image__controls{align-items:center;gap:4px;display:flex}.panel-image__controls button{border:1px solid var(--line);background:var(--bg-2);width:28px;height:28px;color:var(--ink-2);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;font-size:14px;font-weight:600;transition:all .15s;display:flex}.panel-image__controls button:hover{border-color:var(--cyan);color:var(--cyan);background:#22d3ee0f}.panel-image__zoom-level{font-family:var(--mono);color:var(--ink-3);text-align:center;min-width:36px;font-size:.7rem}.image-viewport{flex:1;justify-content:center;align-items:center;padding:20px;display:flex;overflow:auto}.image-viewport img{object-fit:contain;border:1px solid var(--line);transform-origin:50%;cursor:zoom-in;border-radius:8px;max-width:100%;max-height:100%;transition:transform .2s;box-shadow:0 4px 16px #0000000f}.panel-question-answer{background:var(--bg-2);flex-direction:column;display:flex;overflow:hidden auto}.panel-question-answer .col-brief{background:var(--bg);border-right:none;flex-shrink:0;padding:20px 22px 12px;overflow:visible}.panel-question-answer .col-editor{flex:1;min-height:200px}.panel-question-answer .qcm-options-area{padding:16px 22px}.panel-question-answer__actions{border-top:1px solid var(--line-soft);background:var(--bg);flex-shrink:0;padding:16px 22px 24px}.panel-question-answer__actions .info-card{margin-bottom:12px}.panel-question-answer__actions .col-tests-actions{margin:12px 0 0}.panel-question-answer__actions .col-tests-actions .btn{width:100%}.lightbox-overlay{z-index:9990;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:zoom-out;background:#000000e0;justify-content:center;align-items:center;animation:.2s lightbox-fade-in;display:flex;position:fixed;inset:0}@keyframes lightbox-fade-in{0%{opacity:0}to{opacity:1}}.lightbox-img{object-fit:contain;cursor:default;border-radius:8px;max-width:92vw;max-height:90vh;box-shadow:0 12px 48px #00000080}.lightbox-close{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;transition:background .15s;display:flex;position:absolute;top:20px;right:24px}.lightbox-close:hover{background:#ffffff40}@media (width<=1080px){.stage--image{grid-template-columns:1fr}.panel-image{max-height:50vh}.stage{grid-template-rows:auto auto auto;grid-template-columns:1fr;height:auto;overflow:auto}body{overflow:auto}.arena-shell{height:auto;overflow:auto}.col{overflow:visible}.col-editor{min-height:400px}}@media (width<=768px){.stage{grid-template-rows:auto 1fr auto;grid-template-columns:1fr;height:auto;overflow:auto}.stage--image{grid-template-columns:1fr}.panel-image{max-height:40vh}body{overflow:auto}.arena-shell{height:auto;overflow:auto}.col{overflow:visible}.col-editor{min-height:350px}.col-brief,.col-tests{padding:16px 14px 24px}.topbar{padding:0 12px}.editor-foot{flex-wrap:wrap;gap:8px;height:auto;padding:8px 10px}.foot-actions{flex-wrap:wrap}}@media (width<=640px){.home-card{padding:1.25rem}.radio-group{flex-direction:column}.famille-grid{gap:.35rem}.famille-chip{padding:.3rem .6rem;font-size:.75rem}}.rec-page{color:#e2e8f0;width:100%;min-height:100vh;font-family:var(--sans);background:#0f1523}.rec-loading{color:#64748b;min-height:100vh;font-family:var(--mono);justify-content:center;align-items:center;font-size:.9rem;display:flex}.rec-header{background:linear-gradient(#151d2e 0%,#0f1523 100%);border-bottom:1px solid #ffffff0f}.rec-header__inner{justify-content:space-between;align-items:center;max-width:1100px;margin:0 auto;padding:1rem 2rem;display:flex}.rec-header__left{align-items:center;gap:.75rem;display:flex}.rec-header__logo{font-family:var(--mono);color:#22d3ee;font-size:1.3rem;font-weight:700}.rec-header__title{color:#fff;font-size:1.3rem;font-weight:700}.rec-header__accent{color:#22d3ee}.rec-header__badge{text-transform:uppercase;letter-spacing:.06em;color:#a78bfa;vertical-align:middle;background:#a78bfa1f;border:1px solid #a78bfa40;border-radius:4px;margin-left:.5rem;padding:.15rem .5rem;font-size:.65rem;font-weight:600;display:inline-block}.rec-header__right{align-items:center;gap:.75rem;display:flex}.rec-header__user{color:#94a3b8;font-size:.85rem;font-weight:500}.rec-container{flex-direction:column;gap:2rem;max-width:1100px;margin:0 auto;padding:1.5rem 2rem 3rem;display:flex}.rec-btn{font-family:var(--sans);cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:.4rem;padding:.6rem 1.25rem;font-size:.85rem;font-weight:600;text-decoration:none;transition:all .15s;display:inline-flex}.rec-btn--primary{color:#fff;background:linear-gradient(135deg,#6366f1 0%,#8b5cf6 100%);border:1px solid #0000}.rec-btn--primary:hover{box-shadow:0 4px 16px #6366f166}.rec-btn--primary:disabled{opacity:.5;cursor:not-allowed}.rec-btn--outline{color:#94a3b8;background:#ffffff0a;border:1px solid #ffffff1f}.rec-btn--outline:hover{color:#e2e8f0;background:#ffffff14}.rec-btn--sm{padding:.35rem .75rem;font-size:.78rem}.rec-btn--lg{padding:.75rem 2rem;font-size:.95rem}.rec-stats{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.rec-stat-card{text-align:center;background:linear-gradient(135deg,#ffffff0a 0%,#ffffff05 100%);border:1px solid #ffffff12;border-radius:12px;padding:1.25rem 1.5rem}.rec-stat-card__value{color:#fff;font-size:2rem;font-weight:800;font-family:var(--mono);line-height:1.2}.rec-stat-card__value--cyan{color:#22d3ee}.rec-stat-card__value--amber{color:#fbbf24}.rec-stat-card__value--green{color:#34d399}.rec-stat-card__label{color:#64748b;text-transform:uppercase;letter-spacing:.04em;margin-top:.35rem;font-size:.78rem;font-weight:500}.rec-section{flex-direction:column;gap:1rem;display:flex}.rec-section__header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.rec-section__title{color:#fff;font-size:1.1rem;font-weight:700}.rec-empty{text-align:center;color:#64748b;background:#ffffff05;border:1px dashed #ffffff14;border-radius:12px;padding:2rem;font-size:.9rem}.rec-templates-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem;display:grid}.rec-template-card{background:linear-gradient(135deg,#ffffff0a 0%,#ffffff05 100%);border:1px solid #ffffff12;border-radius:12px;flex-direction:column;gap:.5rem;padding:1.1rem 1.25rem;display:flex}.rec-template-card__top{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.rec-template-card__name{color:#fff;font-size:.95rem;font-weight:600}.rec-template-card__sessions{color:#22d3ee;white-space:nowrap;background:#22d3ee1a;border-radius:4px;padding:.15rem .5rem;font-size:.75rem}.rec-template-card__meta{color:#94a3b8;flex-wrap:wrap;gap:.3rem;font-size:.78rem;display:flex}.rec-template-card__sep{color:#334155}.rec-template-card__date{color:#475569;font-size:.72rem;font-family:var(--mono)}.rec-template-card__actions{gap:.5rem;margin-top:.25rem;display:flex}.rec-filters{gap:.35rem;display:flex}.rec-filter-btn{color:#64748b;font-family:var(--sans);cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:6px;padding:.3rem .75rem;font-size:.78rem;font-weight:500;transition:all .15s}.rec-filter-btn:hover{color:#94a3b8;border-color:#fff3}.rec-filter-btn--active{color:#e2e8f0;background:#ffffff14;border-color:#fff3}.rec-table-wrap{border:1px solid #ffffff12;border-radius:12px;overflow-x:auto}.rec-table{border-collapse:collapse;width:100%;font-size:.85rem}.rec-table thead{background:#ffffff08}.rec-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:#64748b;border-bottom:1px solid #ffffff12;padding:.75rem 1rem;font-size:.72rem;font-weight:600}.rec-table td{color:#94a3b8;border-bottom:1px solid #ffffff0a;padding:.7rem 1rem}.rec-table__row:hover{background:#ffffff08}.rec-table__name{color:#e2e8f0;font-weight:600}.rec-table__familles{text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:.78rem;overflow:hidden}.rec-table__date{font-family:var(--mono);color:#475569;white-space:nowrap;font-size:.75rem}.rec-score{font-weight:700;font-family:var(--mono);font-size:.85rem}.rec-score--good{color:#34d399}.rec-score--mid{color:#fbbf24}.rec-score--low{color:#f87171}.rec-status{text-transform:uppercase;letter-spacing:.04em;border-radius:4px;padding:.15rem .5rem;font-size:.72rem;font-weight:600;display:inline-block}.rec-status--done{color:#34d399;background:#34d3991a}.rec-status--active{color:#38bdf8;background:#38bdf81a}.rec-error{color:#f87171;text-align:center;background:#ef44441a;border:1px solid #ef44444d;border-radius:8px;max-width:1100px;margin:1rem auto 0;padding:.6rem 1rem;font-size:.85rem}.rec-form-card{background:linear-gradient(135deg,#ffffff0a 0%,#ffffff05 100%);border:1px solid #ffffff12;border-radius:14px;max-width:640px;margin:0 auto;padding:2rem 2.5rem}.rec-form-card__title{color:#fff;margin-bottom:.35rem;font-size:1.3rem;font-weight:700}.rec-form-card__subtitle{color:#64748b;margin-bottom:1.5rem;font-size:.85rem}.rec-form{flex-direction:column;gap:1.5rem;display:flex}.rec-field{flex-direction:column;gap:.4rem;display:flex}.rec-label{color:#94a3b8;font-size:.82rem;font-weight:500}.rec-label-row{justify-content:space-between;align-items:center;display:flex}.rec-link-btn{color:#6366f1;font-family:var(--sans);cursor:pointer;background:0 0;border:none;font-size:.78rem;font-weight:500}.rec-link-btn:hover{color:#818cf8}.rec-input{color:#e2e8f0;font-family:var(--sans);background:#ffffff0a;border:1px solid #ffffff1a;border-radius:8px;outline:none;padding:.65rem .85rem;font-size:.9rem;transition:border-color .15s}.rec-input:focus{border-color:#6366f1}.rec-input::placeholder{color:#475569}.rec-chips{flex-wrap:wrap;gap:.4rem;display:flex}.rec-chip{color:#94a3b8;font-family:var(--sans);cursor:pointer;background:#ffffff08;border:1px solid #ffffff1a;border-radius:6px;align-items:center;gap:.35rem;padding:.4rem .8rem;font-size:.8rem;transition:all .15s;display:inline-flex}.rec-chip:hover{color:#e2e8f0;border-color:#fff3}.rec-chip--active{color:#a5b4fc;background:#6366f126;border-color:#6366f166}.rec-chip__count{color:#475569;font-size:.68rem;font-family:var(--mono)}.rec-chip--active .rec-chip__count{color:#818cf8}.rec-radio-group{gap:.6rem;display:flex}.rec-radio-card{cursor:pointer;color:#94a3b8;background:#ffffff08;border:1px solid #ffffff1a;border-radius:8px;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.85rem;transition:all .15s;display:flex}.rec-radio-card input{display:none}.rec-radio-card--active{color:#a5b4fc;background:#6366f11a;border-color:#6366f180}.rec-hint{color:#64748b;margin-top:.2rem;font-size:.78rem}.rec-hint--warn{color:#fbbf24}.rec-success-card{text-align:center;background:linear-gradient(135deg,#ffffff0a 0%,#ffffff05 100%);border:1px solid #34d39933;border-radius:14px;flex-direction:column;align-items:center;gap:1rem;max-width:640px;margin:0 auto;padding:2.5rem;display:flex}.rec-success-card__icon{color:#34d399;background:#34d39926;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.4rem;font-weight:700;display:flex}.rec-success-card__title{color:#fff;font-size:1.2rem;font-weight:700}.rec-success-card__text{color:#94a3b8;font-size:.85rem}.rec-success-card__link-box{background:#00000040;border:1px solid #ffffff14;border-radius:8px;align-items:center;gap:.75rem;width:100%;padding:.5rem .75rem;display:flex}.rec-success-card__link{font-family:var(--mono);color:#22d3ee;word-break:break-all;text-align:left;flex:1;font-size:.78rem}.rec-success-card__actions{gap:.75rem;margin-top:.5rem;display:flex}@media (width<=768px){.rec-header__inner{flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem}.rec-header__right{gap:.4rem}.rec-container{padding:1rem}.rec-stats,.rec-templates-grid{grid-template-columns:1fr}.rec-section__header{flex-direction:column;align-items:flex-start}.rec-form-card,.rec-success-card{padding:1.5rem 1.25rem}.rec-success-card__actions{flex-direction:column}.rec-radio-group{flex-wrap:wrap}}.pseudo-fill-area{padding:16px}.pseudo-fill-code{color:#c5d1de;white-space:pre-wrap;background:#0d1117;border:1px solid #21262d;border-radius:8px;margin:0;padding:16px 20px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:14px;line-height:1.8;overflow-x:auto}.pseudo-fill-input{color:#58a6ff;vertical-align:baseline;background:#58a6ff14;border:1px dashed #58a6ff;border-radius:4px;outline:none;width:140px;margin:0 4px;padding:3px 8px;font-family:inherit;font-size:13px;display:inline-block}.pseudo-fill-input:focus{background:#58a6ff26;border-style:solid;box-shadow:0 0 0 2px #58a6ff33}.pseudo-fill-input::placeholder{color:#58a6ff66;font-style:italic}.pseudo-fill-summary{color:#8b949e;margin-top:12px;font-size:12px}.parsons-area{padding:16px}.parsons-instruction{color:#8b949e;margin-bottom:12px;font-size:13px}.parsons-lines{flex-direction:column;gap:4px;display:flex}.parsons-line{cursor:grab;-webkit-user-select:none;user-select:none;background:#161b22;border:1px solid #21262d;border-radius:6px;align-items:center;gap:10px;padding:8px 12px;transition:background .15s,border-color .15s;display:flex}.parsons-line:hover{background:#1c2333;border-color:#30363d}.parsons-line:active{cursor:grabbing;background:#1c2740;border-color:#58a6ff}.parsons-line-num{color:#58a6ff;background:#58a6ff1a;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;min-width:24px;height:24px;font-size:12px;font-weight:600;display:flex}.parsons-line-code{color:#c5d1de;white-space:pre-wrap;flex:1;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:13px}.parsons-line-arrows{flex-direction:column;flex-shrink:0;gap:2px;display:flex}.parsons-arrow{color:#8b949e;cursor:pointer;background:#8b949e1a;border:1px solid #30363d;border-radius:4px;justify-content:center;align-items:center;width:24px;height:20px;padding:0;font-size:10px;transition:background .15s,color .15s;display:flex}.parsons-arrow:hover:not(:disabled){color:#58a6ff;background:#58a6ff26;border-color:#58a6ff}.parsons-arrow:disabled{opacity:.3;cursor:not-allowed}.trace-area{padding:16px}.trace-instruction{color:#8b949e;margin-bottom:12px;font-size:13px}.trace-table-wrap{overflow-x:auto}.trace-table{border-collapse:collapse;width:100%;font-size:13px}.trace-table th,.trace-table td{text-align:center;border:1px solid #21262d;padding:6px 10px}.trace-step-header{color:#58a6ff;background:#58a6ff14;width:60px;font-weight:600}.trace-var-header{color:#58a6ff;background:#58a6ff14;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-weight:600}.trace-step-cell{color:#8b949e;background:#8b949e0d;font-weight:600}.trace-input-cell{padding:2px}.trace-input{color:#c5d1de;text-align:center;background:#0d1117;border:1px solid #21262d;border-radius:4px;outline:none;width:100%;min-width:60px;padding:4px 8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:13px}.trace-input:focus{border-color:#58a6ff;box-shadow:0 0 0 2px #58a6ff26}.trace-summary{color:#8b949e;margin-top:10px;font-size:12px}.rv2-parsons-result{margin:8px 0;padding-left:24px;list-style:decimal}.rv2-parsons-result li{color:#c5d1de;margin-bottom:4px;font-size:13px}.rv2-parsons-result code{font-family:JetBrains Mono,Fira Code,monospace;font-size:12px}.rv2-parsons-result--ref code{color:#7ee787}.rv2-trace-table{border-collapse:collapse;width:100%;margin:8px 0;font-size:12px}.rv2-trace-table td{text-align:center;color:#c5d1de;border:1px solid #21262d;padding:4px 8px;font-family:JetBrains Mono,Fira Code,monospace}.rv2-trace-table--ref td{color:#7ee787}:root{--cand-sidebar-w:210px;--cand-sidebar-w-collapsed:52px;--cand-sidebar-bg:#141825;--cand-sidebar-hover:#1e2338;--cand-accent:#0891b2;--cand-accent-deep:#0e7490}.cand-layout{min-height:100vh;display:flex}.cand-main{margin-left:var(--cand-sidebar-w);background:#f8fafc;flex:1;min-height:100vh;padding:0;transition:margin-left .2s;overflow-y:auto}.cand-sidebar{width:var(--cand-sidebar-w);background:var(--cand-sidebar-bg);z-index:100;flex-direction:column;height:100vh;transition:width .2s;display:flex;position:fixed;top:0;left:0;overflow:hidden auto}.cand-sidebar::-webkit-scrollbar{width:4px}.cand-sidebar::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.cand-sidebar-brand{border-bottom:1px solid #ffffff14;align-items:center;gap:.5rem;padding:1rem .85rem;display:flex}.cand-sidebar-mark{border:2px solid var(--cand-accent);width:28px;height:28px;font-family:var(--mono);color:var(--cand-accent);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.cand-sidebar-name{letter-spacing:-.01em;color:#fff;font-size:14px;font-weight:700;line-height:1.2}.cand-sidebar-name b{color:var(--cand-accent)}.cand-sidebar-badge{font-family:var(--mono);color:#fff6;text-transform:uppercase;letter-spacing:.08em;font-size:9px;display:block}.cand-sidebar-profile{border-bottom:1px solid #ffffff14;align-items:center;gap:.5rem;padding:.65rem .85rem;display:flex}.cand-sidebar-avatar{background:var(--cand-accent);width:28px;height:28px;color:var(--cand-sidebar-bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.cand-sidebar-user-info{flex-direction:column;flex:1;min-width:0;display:flex}.cand-sidebar-user-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.cand-sidebar-user-role{color:#ffffff73;white-space:nowrap;text-overflow:ellipsis;font-size:10px;overflow:hidden}.cand-sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:.5rem .4rem;display:flex}.cand-sidebar-link{color:#fff9;white-space:nowrap;border-radius:6px;align-items:center;gap:.55rem;padding:.5rem .65rem;font-size:13px;font-weight:500;text-decoration:none;transition:all .12s;display:flex}.cand-sidebar-link:hover{background:var(--cand-sidebar-hover);color:#ffffffe6;text-decoration:none}.cand-sidebar-link--active{color:var(--cand-accent);background:#0891b226}.cand-sidebar-link--active:hover{color:var(--cand-accent);background:#0891b233}.cand-sidebar-section-title{letter-spacing:.08em;color:#ffffff59;text-transform:uppercase;margin-bottom:.25rem;padding:0 .75rem;font-size:.65rem;font-weight:700}.cand-sidebar-domaines{padding:2px 0}.cand-sidebar-domaine{color:#94a3b8;cursor:pointer;align-items:center;gap:.4rem;padding:.35rem .75rem .35rem 2rem;font-size:.72rem;transition:all .15s;display:flex}.cand-sidebar-domaine:hover{color:#e2e8f0;background:#ffffff0a}.cand-sidebar-domaine.open{color:#e2e8f0}.cand-sidebar-domaine-dot{border-radius:50%;flex-shrink:0;width:5px;height:5px}.cand-sidebar-domaine-name{white-space:nowrap;flex:1}.cand-sidebar-domaine-count{color:#fff;background:#ffffff1f;border-radius:8px;flex-shrink:0;padding:1px 6px;font-size:.6rem;font-weight:600}.cand-sidebar-formations{padding:2px 0}.cand-sidebar-formation{color:#64748b;cursor:pointer;align-items:center;gap:.4rem;padding:.3rem .75rem .3rem 3rem;font-size:.68rem;text-decoration:none;transition:all .15s;display:flex}.cand-sidebar-formation:hover{color:#94a3b8;background:#ffffff08}.cand-sidebar-formation.active{color:#3b82f6;font-weight:600}.cand-sidebar-formation-icon{color:#60a5fa;background:#3b82f61f;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:14px;font-size:.55rem;font-weight:700;display:flex}.cand-sidebar-formation-count{color:#475569;margin-left:auto;font-size:.58rem}.cand-sidebar-toggle{color:#ffffffb3;align-items:center;gap:.5rem;padding:.5rem .75rem;display:flex}.cand-sidebar-toggle:hover{background:var(--cand-sidebar-hover);color:#ffffffe6}.cand-sidebar-icon{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.cand-sidebar-icon svg{width:16px;height:16px}.cand-sidebar-bottom{border-top:1px solid #ffffff14;flex-direction:column;gap:4px;margin-top:auto;padding:.5rem .55rem;display:flex}.cand-sidebar-version{color:var(--cyan,#4ecdc4);font-size:10px;font-family:var(--mono);letter-spacing:.3px;-webkit-user-select:all;user-select:all;padding:0 .65rem .5rem}.cand-sidebar-logout{color:#ffffff73;width:100%;font-family:var(--sans);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:.5rem;padding:.45rem .65rem;font-size:12px;transition:all .12s;display:flex}.cand-sidebar-logout:hover{color:#f87171;background:#ef44441a}.cand-sidebar-collapse-btn{color:#ffffff4d;width:100%;font-family:var(--mono);cursor:pointer;text-align:center;background:0 0;border:none;border-radius:6px;padding:.35rem;font-size:12px}.cand-sidebar-collapse-btn:hover{color:#fff9}.cand-sidebar--collapsed{width:var(--cand-sidebar-w-collapsed)}.cand-sidebar--collapsed+.cand-main,.cand-sidebar--collapsed~.cand-main{margin-left:var(--cand-sidebar-w-collapsed)}.cand-layout:has(.cand-sidebar--collapsed) .cand-main{margin-left:var(--cand-sidebar-w-collapsed)}.cand-sidebar--collapsed .cand-sidebar-nav{padding:.5rem .15rem}.cand-sidebar--collapsed .cand-sidebar-link{justify-content:center;padding:.5rem}.cand-page{max-width:1280px;padding:1.75rem 2rem 2rem}.cand-page-loading{color:#94a3b8;min-height:300px;font-family:var(--mono);justify-content:center;align-items:center;font-size:.9rem;display:flex}.cand-page-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.cand-page-title{color:#1e293b;font-size:1.4rem;font-weight:700;font-family:var(--sans);margin:0 0 .2rem}.cand-page-subtitle{color:#64748b;margin:0;font-size:.85rem}.cand-kpi-row{grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.75rem;display:grid}.cand-kpi-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;align-items:center;gap:1rem;padding:1.1rem 1.25rem;display:flex;box-shadow:0 1px 3px #0000000a}.cand-kpi-icon{border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.cand-kpi-icon--blue{color:#3b82f6;background:#eff6ff}.cand-kpi-icon--green{color:#22c55e;background:#f0fdf4}.cand-kpi-icon--violet{color:#8b5cf6;background:#f5f3ff}.cand-kpi-content{flex-direction:column;display:flex}.cand-kpi-value{color:#1e293b;font-size:1.25rem;font-weight:700;line-height:1.2}.cand-kpi-label{color:#94a3b8;font-size:.75rem;font-weight:500}.cand-section{margin-bottom:1.5rem}.cand-section-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.cand-section-title{color:#1e293b;margin:0;font-size:1rem;font-weight:700}.cand-section-count{color:#94a3b8;font-size:.8rem;font-weight:500}.cand-tests-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.cand-test-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex-direction:column;gap:.6rem;padding:1.1rem 1.25rem;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 1px 3px #0000000a}.cand-test-card:hover{border-color:#cbd5e1;box-shadow:0 2px 8px #0000000f}.cand-test-card-top{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.cand-test-status{text-transform:uppercase;letter-spacing:.03em;border-radius:20px;padding:3px 10px;font-size:.7rem;font-weight:600}.cand-test-status--en_attente{color:#3b82f6;background:#eff6ff}.cand-test-status--en_cours{color:#d97706;background:#fef3c7}.cand-test-status--termine{color:#16a34a;background:#f0fdf4}.cand-test-status--expire{color:#dc2626;background:#fef2f2}.cand-test-score{font-family:var(--mono);font-size:1rem;font-weight:700}.cand-test-score--good{color:#16a34a}.cand-test-score--mid{color:#d97706}.cand-test-score--low{color:#dc2626}.cand-test-card-name{color:#1e293b;margin:0;font-size:.95rem;font-weight:600;line-height:1.3}.cand-test-card-badges{flex-wrap:wrap;gap:4px;display:flex}.cand-test-card-badge{color:#475569;white-space:nowrap;background:#f1f5f9;border-radius:4px;padding:2px 8px;font-size:.68rem;font-weight:500}.cand-test-card-badge--more{color:#64748b;background:#e2e8f0}.cand-test-card-meta{color:#94a3b8;gap:.75rem;font-size:.75rem;display:flex}.cand-test-card-date{color:#94a3b8;font-size:.72rem}.cand-test-card-expire{color:#dc2626}.cand-test-card-actions{margin-top:auto;padding-top:.4rem}.cand-test-card-expired-label{color:#dc2626;font-size:.8rem;font-weight:500}.cand-btn{font-family:var(--sans);cursor:pointer;white-space:nowrap;border:none;border-radius:7px;justify-content:center;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.82rem;font-weight:600;text-decoration:none;transition:all .15s;display:inline-flex}.cand-btn:hover{text-decoration:none}.cand-btn:disabled{opacity:.5;cursor:not-allowed}.cand-btn--primary{background:var(--cand-accent);color:#fff;width:100%}.cand-btn--primary:hover:not(:disabled){background:var(--cand-accent-deep)}.cand-btn--outline{color:var(--cand-accent);background:0 0;border:1px solid #e2e8f0}.cand-btn--outline:hover:not(:disabled){border-color:var(--cand-accent);background:#f8fafc}.cand-btn--sm{padding:.35rem .75rem;font-size:.75rem}.cand-pagination{justify-content:center;align-items:center;gap:1rem;margin-top:1.25rem;display:flex}.cand-pagination-info{color:#64748b;font-size:.8rem;font-weight:500}.cand-empty-state{text-align:center;background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:3rem 2rem}.cand-empty-icon{color:#cbd5e1;margin-bottom:1rem}.cand-empty-text{color:#64748b;margin:0 0 .3rem;font-size:.95rem;font-weight:500}.cand-empty-sub{color:#94a3b8;margin:0;font-size:.8rem}.cand-quick-links{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-top:.5rem;display:grid}.cand-quick-link-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;align-items:center;gap:1rem;padding:1rem 1.25rem;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:flex}.cand-quick-link-card:hover{border-color:var(--cand-accent);text-decoration:none;box-shadow:0 2px 8px #0891b214}.cand-quick-link-icon{width:40px;height:40px;color:var(--cand-accent);background:#f0f9ff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.cand-quick-link-title{color:#1e293b;margin:0 0 .15rem;font-size:.9rem;font-weight:600}.cand-quick-link-desc{color:#94a3b8;margin:0;font-size:.75rem}.cand-table-toolbar{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.cand-table-search{font-family:var(--sans);color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:7px;outline:none;width:280px;padding:.5rem .85rem;font-size:.85rem;transition:border-color .15s}.cand-table-search:focus{border-color:var(--cand-accent)}.cand-table-search::placeholder{color:#94a3b8}.cand-table-count{color:#94a3b8;font-size:.8rem;font-weight:500}.cand-table-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;box-shadow:0 1px 3px #0000000a}.cand-table{border-collapse:collapse;width:100%;font-size:.82rem}.cand-table thead{background:#f8fafc;border-bottom:1px solid #e2e8f0}.cand-table th{text-align:left;color:#64748b;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;-webkit-user-select:none;user-select:none;padding:.7rem 1rem;font-size:.75rem;font-weight:600}.cand-th-sortable{cursor:pointer}.cand-th-sortable:hover{color:#1e293b}.cand-sort-icon{color:#cbd5e1;margin-left:4px;font-size:.7rem}.cand-sort-icon--active{color:var(--cand-accent)}.cand-table td{color:#1e293b;vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:.65rem 1rem}.cand-table tbody tr:last-child td{border-bottom:none}.cand-table tbody tr:hover{background:#fafbfd}.cand-td-name{white-space:nowrap;text-overflow:ellipsis;max-width:220px;font-weight:600;overflow:hidden}.cand-td-date{color:#64748b;white-space:nowrap;font-size:.78rem}.cand-td-muted{color:#94a3b8;font-size:.78rem}.cand-td-badges{flex-wrap:wrap;gap:3px;display:flex}.cand-td-badge{color:#475569;white-space:nowrap;background:#f1f5f9;border-radius:4px;padding:2px 6px;font-size:.65rem;font-weight:500}.cand-td-badge--more{color:#64748b;background:#e2e8f0}.cand-score-cell{align-items:center;gap:.5rem;display:flex}.cand-score-bar-bg{background:#e2e8f0;border-radius:3px;width:60px;height:6px;overflow:hidden}.cand-score-bar-fill{border-radius:3px;height:100%;transition:width .3s}.cand-score-bar--good{background:#22c55e}.cand-score-bar--mid{background:#f59e0b}.cand-score-bar--low{background:#ef4444}.cand-score-label{font-family:var(--mono);font-size:.82rem;font-weight:700}.cand-score--good{color:#16a34a}.cand-score--mid{color:#d97706}.cand-score--low{color:#dc2626}.cand-status-pill{text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;border-radius:20px;padding:3px 10px;font-size:.68rem;font-weight:600}.cand-status-pill--done{color:#16a34a;background:#f0fdf4}.cand-status-pill--progress{color:#d97706;background:#fef3c7}.cand-xp-badge{background:#fffbeb;border:1px solid #fde68a;border-radius:10px;flex-direction:column;align-items:center;padding:.5rem 1rem;display:flex}.cand-xp-value{font-family:var(--mono);color:#d97706;font-size:1.1rem;font-weight:700}.cand-xp-label{color:#92400e;font-size:.7rem}.cand-interview-list{flex-direction:column;gap:10px;display:flex}.cand-interview-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;align-items:center;gap:16px;padding:16px 20px;display:flex;box-shadow:0 1px 2px #00000008}.cand-interview-card--highlight{background:#eff6ff;border-color:#93c5fd;box-shadow:0 2px 8px #3b82f614}@keyframes itwSlideIn{0%{opacity:0;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}@keyframes itwFadeOut{0%{opacity:1;max-height:120px;transform:translate(0)}to{opacity:0;max-height:0;margin:0;padding:0;overflow:hidden;transform:translate(40px)}}.cand-interview-date-block{text-align:center;background:#f1f5f9;border-radius:8px;min-width:60px;padding:8px}.cand-interview-date-block--highlight{background:#dbeafe}.login-split{min-height:100vh;display:flex}.login-brand-panel{background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);flex:1;justify-content:center;align-items:center;padding:3rem;display:flex}.login-brand-content{max-width:420px}.login-brand-logo{align-items:center;gap:.6rem;margin-bottom:2rem;display:flex}.login-brand-mark{font-family:var(--mono);color:#2ea3f2;background:#2ea3f21f;border:1px solid #2ea3f240;border-radius:8px;padding:.35rem .6rem;font-size:1.5rem;font-weight:700}.login-brand-name{color:#fff;letter-spacing:-.02em;font-size:1.5rem;font-weight:700}.login-brand-accent{color:#2ea3f2}.login-brand-headline{color:#fff;margin:0 0 1rem;font-size:1.6rem;font-weight:700;line-height:1.3}.login-brand-desc{color:#94a3b8;margin:0 0 2rem;font-size:.95rem;line-height:1.6}.login-brand-features{flex-direction:column;gap:.75rem;display:flex}.login-brand-feature{color:#ffffffb3;align-items:center;gap:.6rem;font-size:.88rem;display:flex}.login-brand-feature svg{color:#2ea3f2;flex-shrink:0}.login-form-panel{background:#fff;flex:1;justify-content:center;align-items:center;padding:3rem;display:flex}.login-form-container{width:100%;max-width:400px}.login-form-container .auth-tabs{border-bottom:2px solid #e2e8f0;gap:0;margin-bottom:1.5rem;display:flex}.login-form-container .auth-tab{font-family:var(--sans);color:#94a3b8;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;margin-bottom:-2px;padding:.65rem;font-size:.9rem;font-weight:600;transition:color .15s}.login-form-container .auth-tab:hover{color:#64748b}.login-form-container .auth-tab--active{color:#2ea3f2;border-bottom-color:#2ea3f2}.login-form-container .auth-input{color:#1e293b;background:#f8fafc;border-color:#e2e8f0}.login-form-container .auth-input:focus{border-color:#2ea3f2}.login-form-container .auth-input::placeholder{color:#94a3b8}.login-form-container .auth-label{color:#475569}.login-form-container .auth-submit{color:#fff;font-family:var(--sans);cursor:pointer;background:#2ea3f2;border:none;border-radius:8px;width:100%;padding:.7rem;font-size:.9rem;font-weight:600;transition:background .15s}.login-form-container .auth-submit:hover:not(:disabled){background:#0693e3}.login-form-container .auth-submit:disabled{opacity:.5;cursor:not-allowed}.login-form-container .auth-error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-bottom:1rem;padding:.55rem .85rem;font-size:.82rem}.login-form-container .auth-success{color:#16a34a;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;margin-bottom:1rem;padding:.55rem .85rem;font-size:.82rem}.login-form-container .auth-hint{color:#94a3b8;margin-top:.25rem;font-size:.75rem}.login-form-container .auth-eye{color:#94a3b8;cursor:pointer;background:0 0;border:none;align-items:center;padding:4px;display:flex}.login-form-container .auth-eye:hover{color:#64748b}.login-form-container .auth-field{flex-direction:column;gap:.35rem;margin-bottom:1rem;display:flex}.login-form-container .auth-form{flex-direction:column;display:flex}.login-form-container .auth-input-wrap{align-items:center;display:flex;position:relative}.login-form-container .auth-input--eye{padding-right:2.5rem}.login-form-container .auth-input-wrap .auth-eye{position:absolute;right:.5rem}@media (width<=768px){.login-split{flex-direction:column}.login-brand-panel{min-height:auto;padding:2rem 1.5rem}.login-brand-headline{font-size:1.2rem}.login-brand-features{display:none}.login-form-panel{padding:2rem 1.5rem}.cand-sidebar{display:none}.cand-main{margin-left:0}.cand-kpi-row,.cand-tests-grid{grid-template-columns:1fr}}code[class*=language-],pre[class*=language-]{color:#e2e8f0;text-align:left;white-space:pre-wrap;word-spacing:normal;word-break:break-word;tab-size:2;-webkit-hyphens:none;hyphens:none;direction:ltr;background:0 0;font-family:JetBrains Mono,IBM Plex Mono,monospace;font-size:13px;line-height:1.7}pre[class*=language-]{margin:0;padding:0;overflow:visible}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#6b7280;font-style:italic}.token.punctuation{color:#94a3b8}.token.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#f87171}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#34d399}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#fbbf24}.token.atrule,.token.attr-value,.token.keyword{color:#22d3ee}.token.function,.token.class-name{color:#a78bfa}.token.regex,.token.important,.token.variable,.token.annotation{color:#fbbf24}.token.type-name,.token.generics{color:#67e8f9}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.code-highlighted{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;margin:0;padding:14px 18px;overflow:visible}.code-highlighted.code-inline{background:var(--bg-3);border:1px solid var(--line-soft);border-radius:5px;padding:2px 7px;font-size:.8em;display:inline}.learning-paths-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.25rem;margin-top:1.5rem;display:grid}.learning-path-card{background:var(--bg-2);border:1px solid var(--line);border-top:4px solid var(--cyan);cursor:pointer;border-radius:10px;padding:1.5rem;transition:box-shadow .2s,transform .15s}.learning-path-card:hover{transform:translateY(-2px);box-shadow:0 4px 20px #00000014}.learning-path-card-header{align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.learning-path-icon{font-size:1.75rem}.learning-path-card-header h3{font-family:var(--sans);color:var(--ink);margin:0;font-size:1.25rem;font-weight:700}.learning-path-card-desc{color:var(--ink-2);margin:0 0 1rem;font-size:.9rem;line-height:1.5}.learning-path-card-stats{color:var(--ink-3);gap:1rem;font-size:.8rem;display:flex}.learning-path-card-stats span:before{content:"•";margin-right:.25rem}.learning-path-hero{background:var(--bg-2);border:1px solid var(--line);border-left:5px solid var(--cyan);border-radius:10px;justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:2rem;padding:2rem;display:flex}.learning-path-hero h1{font-family:var(--sans);color:var(--ink);margin:0 0 .5rem;font-size:2rem;font-weight:700}.learning-path-hero p{color:var(--ink-2);margin:0 0 1rem;line-height:1.5}.learning-path-stats{color:var(--ink-2);flex-wrap:wrap;gap:1.25rem;font-size:.9rem;display:flex}.learning-path-stats strong{color:var(--ink);font-weight:700}.learning-programme{margin-top:1rem}.learning-programme-header{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.learning-programme-header h2{font-family:var(--sans);color:var(--ink);margin:0;font-size:1.5rem;font-weight:700}.learning-section{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;margin-bottom:1rem;overflow:hidden}.learning-section-header{cursor:pointer;justify-content:space-between;align-items:flex-start;padding:1.25rem 1.5rem;transition:background-color .15s;display:flex}.learning-section-header:hover{background:var(--bg-4)}.learning-section-badge{text-transform:uppercase;letter-spacing:.05em;color:var(--cyan-deep);margin-bottom:.25rem;font-size:.7rem;font-weight:700;display:inline-block}.learning-section-info h3{font-family:var(--sans);color:var(--ink);margin:0 0 .25rem;font-size:1.15rem;font-weight:700}.learning-section-info p{color:var(--ink-2);margin:0 0 .5rem;font-size:.85rem}.learning-section-stats{color:var(--ink-3);gap:1rem;font-size:.8rem;display:flex}.learning-section-stats span{background:var(--bg-3);text-transform:uppercase;letter-spacing:.03em;border-radius:4px;padding:.2rem .6rem;font-size:.7rem;font-weight:500}.learning-section-actions{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.learning-section-body{border-top:1px solid var(--line);padding:0 1.5rem 1.5rem}.learning-module{margin-top:1.25rem}.learning-module-header{border-bottom:1px solid var(--bg-3);justify-content:space-between;align-items:baseline;margin-bottom:.5rem;padding-bottom:.5rem;display:flex}.learning-module-header h4{font-family:var(--sans);color:var(--ink);margin:0;font-size:1rem;font-weight:700}.learning-module-stats{color:var(--ink-3);gap:.75rem;font-size:.75rem;display:flex}.learning-lesson-row{cursor:pointer;border-radius:6px;align-items:center;gap:.75rem;padding:.6rem .75rem;transition:background-color .15s;display:flex}.learning-lesson-row:hover{background:var(--bg-4)}.learning-lesson-row.completed{opacity:.7}.learning-lesson-num{font-family:var(--mono);color:var(--ink-3);text-align:right;min-width:1.5rem;font-size:.8rem}.learning-lesson-icon{font-family:var(--mono);color:var(--cyan);text-align:center;width:1.5rem;font-size:.85rem}.learning-lesson-titre{color:var(--ink);flex:1;font-size:.9rem;text-decoration:none}.learning-lesson-titre:hover{color:var(--cyan);text-decoration:underline}.learning-lesson-badges{gap:.4rem;display:flex}.learning-badge{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;border-radius:4px;padding:.15rem .5rem;font-size:.65rem;font-weight:700}.learning-badge.defi{color:var(--cyan-deep);background:#0891b21a;border:1px solid #0891b233}.learning-badge.maitrise{color:var(--amber);background:#d977061a;border:1px solid #d9770633}.learning-badge.quiz{color:var(--violet);background:#7c3aed1a;border:1px solid #7c3aed33}.learning-badge.projet{color:var(--green);background:#0596691a;border:1px solid #05966933}.learning-check{color:var(--green);font-size:1rem;font-weight:700}.progress-bar{background:var(--bg-3);border-radius:6px;width:100%;height:6px;margin-top:.75rem;overflow:hidden}.progress-bar.sm{width:120px;height:4px;margin-top:0}.progress-bar.lg{width:200px;height:10px}.progress-bar-fill{background:var(--cyan);border-radius:6px;height:100%;transition:width .3s}.learning-lesson-page{max-width:1280px;padding:1.75rem 2rem 80px}.learning-lesson-page:has(.ca-ide){max-width:100%;padding-bottom:60px;padding-left:.5rem;padding-right:.5rem;overflow:hidden}.learning-lesson-page:has(.ca-cs-layout){flex-direction:column;flex:1;max-width:100%;height:100vh;padding:0;display:flex;overflow:hidden}.learning-lesson-page:has(.ca-cs-layout) .learning-lesson-topbar{flex-shrink:0;padding:0 1rem}.learning-lesson-page:has(.ca-cs-layout) .learning-lesson-tabs{flex-shrink:0}.learning-lesson-page:has(.ca-cs-layout) .learning-lesson-tab-content{flex-direction:column;flex:1;min-height:0;padding:0;display:flex}.learning-lesson-page:has(.ca-cs-layout) .ca-cs-layout{flex:1;min-height:0}.ca-ide{overflow:hidden}.learning-lesson-loading{color:#64748b;flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:4rem 2rem;font-size:.95rem;display:flex}.learning-lesson-spinner{border:3px solid #e2e8f0;border-top-color:#3b82f6;border-radius:50%;width:32px;height:32px;animation:.7s linear infinite lesson-spin}@keyframes lesson-spin{to{transform:rotate(360deg)}}.learning-lesson-error{text-align:center;color:#64748b;flex-direction:column;align-items:center;gap:.75rem;padding:3rem 2rem;font-size:.95rem;display:flex}.learning-lesson-error-icon{color:#dc2626;background:#fef2f2;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.2rem;font-weight:700;display:flex}.learning-lesson-topbar{margin-bottom:0}.learning-breadcrumb{color:#94a3b8;flex-wrap:wrap;align-items:center;gap:0;margin-bottom:.75rem;font-size:.8rem;display:flex}.learning-breadcrumb a{color:#3b82f6;text-decoration:none;transition:color .15s}.learning-breadcrumb a:hover{color:#2563eb;text-decoration:underline}.learning-breadcrumb-sep{color:#cbd5e1;margin:0 .4rem}.learning-breadcrumb-module{color:#64748b}.learning-lesson-title-row{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.learning-lesson-title{font-family:var(--sans);color:#1e293b;margin:0;font-size:1.5rem;font-weight:700;line-height:1.3}.learning-lesson-progress-badge{color:#3b82f6;flex-shrink:0;align-items:center;gap:.5rem;font-size:.8rem;font-weight:600;display:flex}.learning-lesson-progress-bar-mini{background:#e2e8f0;border-radius:2px;width:60px;height:4px;overflow:hidden}.learning-lesson-progress-fill-mini{background:#3b82f6;border-radius:2px;height:100%;transition:width .3s}.learning-lesson-tabs{z-index:10;background:#fff;border-bottom:2px solid #e2e8f0;gap:0;margin-bottom:0;display:flex;position:sticky;top:0}.learning-lesson-tab{color:#64748b;cursor:pointer;white-space:nowrap;font-size:.9rem;font-weight:500;font-family:var(--sans);background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:.4rem;margin-bottom:-2px;padding:.75rem 1.25rem;transition:all .15s;display:flex}.learning-lesson-tab:hover{color:#1e293b;background:#f8fafc}.learning-lesson-tab.active{color:#3b82f6;border-bottom-color:#3b82f6;font-weight:600}.learning-lesson-tab.completed{color:#059669}.learning-lesson-tab.completed.active{color:#059669;border-bottom-color:#059669}.learning-lesson-tab-icon{font-size:1rem}.learning-lesson-tab-check{color:#059669;margin-left:.15rem;font-size:.75rem;font-weight:700}.learning-lesson-tab-content{min-height:400px;padding:1.5rem 0}.learning-tab-theorie{max-width:780px;padding-bottom:80px}.learning-tab-theorie-footer{border-top:1px solid #e2e8f0;margin-top:2rem;padding-top:1.5rem}.learning-content{color:#1e293b;font-size:.95rem;line-height:1.7}.learning-content-meta{color:#94a3b8;align-items:center;gap:1rem;margin-bottom:1.5rem;font-size:.8rem;display:flex}.learning-content-readtime{align-items:center;gap:.3rem;display:flex}.learning-content-words{color:#cbd5e1}.search-highlight{color:#fbbf24;background:#fbbf244d;border-radius:3px;padding:1px 4px;scroll-margin-top:100px;font-style:normal;font-weight:700}.learning-content-body h1{color:#1e293b;margin:2rem 0 1rem;font-size:1.5rem;font-weight:700;line-height:1.3}.learning-content-body h2{color:#1e293b;margin:1.75rem 0 .75rem;font-size:1.25rem;font-weight:700;line-height:1.3}.learning-content-body h3{color:#334155;margin:1.5rem 0 .5rem;font-size:1.1rem;font-weight:600}.learning-content-body p{margin:.75rem 0;line-height:1.75}.learning-content-body code{font-family:"JetBrains Mono", var(--mono), monospace;color:#e11d48;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:4px;padding:.15em .45em;font-size:.85em}.learning-content-body ul,.learning-content-body ol{margin:.75rem 0;padding-left:1.75rem}.learning-content-body li{margin:.4rem 0;line-height:1.65}.learning-content-body ol{list-style:decimal}.learning-content-body ul{list-style:outside}.learning-md-table{border-collapse:separate;border-spacing:0;border:1px solid #e2e8f0;border-radius:10px;width:100%;margin:1.25rem 0;font-size:.9rem;line-height:1.5;overflow:hidden}.learning-md-table thead{background:linear-gradient(135deg,#1e293b 0%,#334155 100%)}.learning-md-table thead th{color:#f1f5f9;text-transform:uppercase;letter-spacing:.03em;text-align:left;border-bottom:2px solid #2ea3f2;padding:.75rem 1rem;font-size:.85rem;font-weight:600}.learning-md-table tbody tr{transition:background-color .15s}.learning-md-table tbody tr:nth-child(2n){background-color:#f8fafc}.learning-md-table tbody tr:nth-child(odd){background-color:#fff}.learning-md-table tbody tr:hover{background-color:#e0f2fe}.learning-md-table tbody td{color:#334155;border-bottom:1px solid #e2e8f0;padding:.65rem 1rem}.learning-md-table tbody tr:last-child td{border-bottom:none}.learning-md-table td code,.learning-md-table th code{color:#0e7490;background:#2ea3f21a;border-radius:4px;padding:.15em .4em;font-size:.85em}.learning-md-table td strong{color:#1e293b;font-weight:600}.learning-code-block{border:1px solid #1e293b;border-radius:10px;margin:1.25rem 0;overflow:hidden}.learning-code-block-header{background:#0f172a;border-bottom:1px solid #1e293b;align-items:center;padding:.4rem 1rem;display:flex}.learning-code-copy{color:#64748b;cursor:pointer;font-size:11px;font-family:var(--sans);background:0 0;border:none;border-radius:4px;align-items:center;gap:4px;margin-left:auto;padding:3px 8px;transition:all .15s;display:inline-flex}.learning-code-copy:hover{color:#e2e8f0;background:#ffffff0f}.learning-code-copy svg{flex-shrink:0}.learning-code-copy .learning-code-copy-label:after{content:"Copier"}.learning-code-copy.copied{color:#10b981}.learning-code-copy.copied svg{display:none}.learning-code-copy.copied .learning-code-copy-label:after{content:"✓ Copie !"}.learning-code-complet{background:#7c6bf008;border:1px solid #7c6bf026;border-radius:10px;margin:1.25rem 0;overflow:hidden}.learning-code-complet summary{color:#a78bfa;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:.65rem 1rem;font-size:.85rem;font-weight:600;list-style:none;transition:background .15s;display:flex}.learning-code-complet summary::-webkit-details-marker{display:none}.learning-code-complet summary:after{content:"▶";color:#64748b;margin-left:auto;font-size:.65rem;transition:transform .2s}.learning-code-complet[open] summary:after{transform:rotate(90deg)}.learning-code-complet summary:hover{background:#7c6bf00f}.learning-code-complet summary svg{color:#7c6bf0;flex-shrink:0}.learning-code-complet>p{color:#94a3b8;margin:0;padding:.25rem 1rem 0;font-size:.82rem;font-weight:600}.learning-code-complet>.learning-code-block{margin:.5rem .75rem .75rem}.learning-code-block-lang{text-transform:uppercase;letter-spacing:.05em;color:#64748b;font-size:.7rem;font-weight:600;font-family:var(--sans)}.learning-code-block pre{color:#e2e8f0;font-family:"JetBrains Mono", var(--mono), monospace;background:#1e1e2e;margin:0;padding:1rem 1.25rem;font-size:.85rem;line-height:1.7;overflow-x:auto}.learning-code-block pre code{font-size:inherit;color:inherit;background:0 0;border:none;border-radius:0;padding:0}.learning-content-body>pre{color:#e2e8f0;font-family:"JetBrains Mono", var(--mono), monospace;background:#1e1e2e;border-radius:10px;margin:1rem 0;padding:1rem 1.25rem;font-size:.85rem;line-height:1.7;overflow-x:auto}.learning-content-body>pre code{font-size:inherit;color:inherit;background:0 0;border:none;border-radius:0;padding:0}.learning-defi-split{background:#fff;border:1px solid #e2e8f0;border-radius:10px;gap:0;min-height:520px;display:flex;overflow:hidden}.learning-defi-left{border-right:1px solid #e2e8f0;flex-direction:column;width:45%;min-width:300px;display:flex;overflow-y:auto}.learning-defi-left-header{border-bottom:1px solid #f1f5f9;padding:1rem 1.25rem}.learning-defi-type-badge{text-transform:uppercase;letter-spacing:.05em;color:#3b82f6;background:#eff6ff;border-radius:20px;padding:.25rem .75rem;font-size:.7rem;font-weight:700;display:inline-block}.learning-defi-instructions{flex:1;padding:1rem 1.25rem}.learning-defi-enonce-text{color:#334155;white-space:pre-wrap;font-size:.93rem;line-height:1.7}.learning-defi-testcases{padding:0 1.25rem 1rem}.learning-defi-section-title{text-transform:uppercase;letter-spacing:.04em;color:#64748b;margin:0 0 .5rem;font-size:.8rem;font-weight:700}.learning-defi-testcase-preview{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:.5rem;padding:.6rem .75rem}.learning-defi-tc-row{align-items:baseline;gap:.5rem;margin-bottom:.15rem;font-size:.83rem;display:flex}.learning-defi-tc-label{color:#64748b;min-width:60px;font-size:.78rem;font-weight:600}.learning-defi-tc-value{font-family:"JetBrains Mono", var(--mono), monospace;color:#1e293b;white-space:pre-wrap;background:#fff;border:1px solid #e2e8f0;border-radius:3px;padding:.1rem .35rem;font-size:.82rem}.learning-defi-hints{color:#854d0e;background:#fefce8;border-top:1px solid #fef08a;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.82rem;display:flex}.learning-defi-hint-icon{flex-shrink:0;font-size:1rem}.learning-defi-right{background:#131c2b;flex-direction:column;flex:1;min-width:0;display:flex}.learning-defi-editor-header{background:#0f172a;border-bottom:1px solid #1e293b;justify-content:space-between;align-items:center;padding:.5rem 1rem;display:flex}.learning-defi-lang-badge{text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-size:.72rem;font-weight:600}.learning-defi-reset-btn{color:#64748b;cursor:pointer;font-size:.78rem;font-family:var(--sans);background:0 0;border:none;border-radius:4px;padding:.2rem .5rem;transition:all .15s}.learning-defi-reset-btn:hover{color:#94a3b8;background:#ffffff14}.learning-defi-editor-wrap{flex:1;min-height:250px;overflow:hidden}.learning-defi-actions{background:#0f172a;border-top:1px solid #1e293b;align-items:center;gap:.75rem;padding:.6rem 1rem;display:flex}.learning-defi-verify-btn{color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;font-family:var(--sans);background:#3b82f6;border:none;border-radius:6px;align-items:center;gap:.4rem;padding:.5rem 1.25rem;transition:background .15s;display:flex}.learning-defi-verify-btn:hover:not(:disabled){background:#2563eb}.learning-defi-verify-btn:disabled{opacity:.6;cursor:not-allowed}.learning-defi-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite lesson-spin;display:inline-block}.learning-defi-error{color:#dc2626;background:#fef2f2;border-top:1px solid #fecaca;align-items:center;gap:.5rem;padding:.6rem 1rem;font-size:.85rem;display:flex}.learning-defi-error-icon{color:#fff;background:#dc2626;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:.7rem;font-weight:700;display:flex}.learning-defi-results{background:#0f172a;border-top:1px solid #1e293b;max-height:300px;overflow-y:auto}.learning-defi-success-banner{color:#34d399;background:#05966926;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.9rem;font-weight:600;display:flex}.learning-defi-success-icon{font-size:1.1rem}.learning-defi-results-summary{color:#f59e0b;border-bottom:1px solid #1e293b;padding:.5rem 1rem;font-size:.85rem;font-weight:600}.learning-defi-results-list{flex-direction:column;gap:.35rem;padding:.5rem;display:flex}.learning-test-card{border:1px solid #1e293b;border-radius:8px;overflow:hidden}.learning-test-card.passed{border-color:#0596694d}.learning-test-card.failed{border-color:#dc26264d}.learning-test-card-header{align-items:center;gap:.5rem;padding:.4rem .75rem;font-size:.82rem;font-weight:600;display:flex}.learning-test-card.passed .learning-test-card-header{color:#34d399;background:#0596691a}.learning-test-card.failed .learning-test-card-header{color:#f87171;background:#dc26261a}.learning-test-card-icon{font-size:.9rem;font-weight:700}.learning-test-card-icon.passed{color:#34d399}.learning-test-card-icon.failed{color:#f87171}.learning-test-card-title{font-size:.8rem}.learning-test-card-body{background:#0f172a;padding:.4rem .75rem .5rem}.learning-test-card-row{align-items:baseline;gap:.5rem;margin-bottom:.15rem;font-size:.8rem;display:flex}.learning-test-card-label{color:#64748b;min-width:52px;font-size:.75rem;font-weight:600}.learning-test-card-row code{font-family:"JetBrains Mono", var(--mono), monospace;color:#e2e8f0;white-space:pre-wrap;font-size:.8rem}.learning-test-card-error{color:#f87171;margin-top:.25rem;font-size:.78rem}.learning-test-card-error-type{text-transform:uppercase;letter-spacing:.04em;border-radius:4px;margin-bottom:.4rem;padding:.15rem .5rem;font-size:.7rem;font-weight:700;display:inline-block}.learning-test-card-error-type.compile{color:#f87171;background:#ef444426;border:1px solid #ef44444d}.learning-test-card-error-type.runtime{color:#fbbf24;background:#fbbf2426;border:1px solid #fbbf244d}.learning-test-card-error-block{border:1px solid #ef444440;border-radius:6px;margin-top:.5rem;overflow:hidden}.learning-test-card-error-label{text-transform:uppercase;letter-spacing:.04em;color:#f87171;background:#ef44441a;padding:.3rem .6rem;font-size:.7rem;font-weight:600}.learning-test-card-error-pre{font-family:"JetBrains Mono", var(--mono), monospace;color:#fca5a5;white-space:pre-wrap;word-break:break-word;background:#0f172acc;max-height:200px;margin:0;padding:.5rem .6rem;font-size:.75rem;line-height:1.5;overflow-y:auto}.learning-defi-solution{background:#0f172a;border-top:1px solid #1e293b}.learning-defi-solution-toggle{color:#34d399;cursor:pointer;text-align:left;width:100%;font-size:.85rem;font-weight:600;font-family:var(--sans);background:0 0;border:none;align-items:center;gap:.5rem;padding:.6rem 1rem;transition:background .15s;display:flex}.learning-defi-solution-toggle:hover{background:#05966914}.learning-defi-solution-code{color:#e2e8f0;font-family:"JetBrains Mono", var(--mono), monospace;white-space:pre-wrap;background:#1e1e2e;border-top:1px solid #1e293b;margin:0;padding:1rem 1.25rem;font-size:.85rem;line-height:1.6;overflow-x:auto}.learning-quiz-container{max-width:780px;padding-bottom:80px}.learning-quiz-score-banner{border-radius:10px;align-items:center;gap:1rem;margin-bottom:1.5rem;padding:1rem 1.5rem;display:flex}.learning-quiz-score-banner.perfect{background:#ecfdf5;border:1px solid #a7f3d0}.learning-quiz-score-banner.partial{background:#fefce8;border:1px solid #fde68a}.learning-quiz-score-circle{flex-shrink:0;align-items:baseline;gap:.15rem;display:flex}.learning-quiz-score-num{font-size:1.75rem;font-weight:800;line-height:1}.learning-quiz-score-banner.perfect .learning-quiz-score-num{color:#059669}.learning-quiz-score-banner.partial .learning-quiz-score-num{color:#d97706}.learning-quiz-score-sep{color:#94a3b8;font-size:1.1rem;font-weight:500}.learning-quiz-score-total{color:#64748b;font-size:1.1rem;font-weight:600}.learning-quiz-score-text{color:#334155;flex:1;font-size:.93rem;line-height:1.4}.learning-quiz-retry-btn{color:#3b82f6;cursor:pointer;white-space:nowrap;font-size:.85rem;font-weight:600;font-family:var(--sans);background:0 0;border:none;border-radius:6px;padding:.4rem .75rem;transition:background .15s}.learning-quiz-retry-btn:hover{background:#eff6ff}.learning-quiz-empty{text-align:center;color:#94a3b8;padding:2rem;font-size:.93rem}.learning-quiz-questions{flex-direction:column;gap:1rem;display:flex}.learning-quiz-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:1.25rem;transition:box-shadow .15s}.learning-quiz-card:hover{box-shadow:0 2px 8px #0000000a}.learning-quiz-card-header{align-items:flex-start;gap:.75rem;margin-bottom:1rem;display:flex}.learning-quiz-card-num{color:#fff;background:#3b82f6;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.8rem;font-weight:700;display:flex}.learning-quiz-card-question{color:#1e293b;flex:1;margin:0;padding-top:.15rem;font-size:.95rem;font-weight:600;line-height:1.5}.learning-quiz-card-status{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.85rem;font-weight:700;display:flex}.learning-quiz-card-status.correct{color:#059669;background:#ecfdf5}.learning-quiz-card-status.incorrect{color:#dc2626;background:#fef2f2}.learning-quiz-options-grid{flex-direction:column;gap:.4rem;display:flex}.learning-quiz-option-pill{color:#334155;cursor:pointer;text-align:left;width:100%;font-size:.9rem;font-family:var(--sans);background:#fff;border:2px solid #e2e8f0;border-radius:8px;align-items:center;gap:.6rem;padding:.6rem .9rem;transition:all .15s;display:flex}.learning-quiz-option-pill:hover:not(:disabled){background:#eff6ff;border-color:#93c5fd}.learning-quiz-option-pill:disabled{cursor:default}.learning-quiz-option-pill.selected{color:#1e40af;background:#eff6ff;border-color:#3b82f6}.learning-quiz-option-pill.correct{color:#065f46;background:#ecfdf5;border-color:#059669}.learning-quiz-option-pill.incorrect{color:#991b1b;background:#fef2f2;border-color:#dc2626}.learning-quiz-option-letter{color:#64748b;background:#f1f5f9;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.75rem;font-weight:700;display:flex}.learning-quiz-option-pill.selected .learning-quiz-option-letter{color:#fff;background:#3b82f6}.learning-quiz-option-pill.correct .learning-quiz-option-letter{color:#fff;background:#059669}.learning-quiz-option-pill.incorrect .learning-quiz-option-letter{color:#fff;background:#dc2626}.learning-quiz-option-text{flex:1;line-height:1.4}.learning-quiz-option-icon{flex-shrink:0;font-size:.9rem;font-weight:700}.learning-quiz-option-icon.correct{color:#059669}.learning-quiz-option-icon.incorrect{color:#dc2626}.learning-quiz-explanation{border-radius:8px;align-items:flex-start;gap:.5rem;margin-top:.75rem;padding:.6rem .9rem;font-size:.85rem;line-height:1.5;display:flex}.learning-quiz-explanation.correct{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.learning-quiz-explanation.incorrect{color:#9a3412;background:#fff7ed;border:1px solid #fed7aa}.learning-quiz-explanation-icon{flex-shrink:0;font-size:1rem}.learning-quiz-submit-bar{border-top:1px solid #e2e8f0;justify-content:space-between;align-items:center;margin-top:1.25rem;padding-top:1.25rem;display:flex}.learning-quiz-answered-count{color:#94a3b8;font-size:.85rem}.learning-quiz-submit-btn{color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;font-family:var(--sans);background:#3b82f6;border:none;border-radius:8px;padding:.6rem 1.5rem;transition:background .15s}.learning-quiz-submit-btn:hover:not(:disabled){background:#2563eb}.learning-quiz-submit-btn:disabled{opacity:.5;cursor:not-allowed}.learning-lesson-bottombar{bottom:0;left:calc(var(--cand-sidebar-w,46px) + 320px);z-index:50;background:#fff;border-top:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:.75rem 2rem;transition:left .25s;display:flex;position:fixed;right:0;box-shadow:0 -2px 12px #0000000f}.learning-with-sidebar--nosidebar .learning-lesson-bottombar{left:46px}.learning-bottombar-btn{color:#334155;cursor:pointer;font-size:.88rem;font-weight:500;font-family:var(--sans);background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:.4rem;min-width:120px;padding:.5rem 1rem;transition:all .15s;display:flex}.learning-bottombar-btn.prev{justify-content:flex-start}.learning-bottombar-btn.next{color:#fff;background:#3b82f6;border-color:#3b82f6;justify-content:flex-end}.learning-bottombar-btn.next:hover:not(:disabled){background:#2563eb}.learning-bottombar-btn:hover:not(:disabled):not(.next){background:#f8fafc;border-color:#94a3b8}.learning-bottombar-btn:disabled{opacity:.35;cursor:not-allowed}.learning-bottombar-arrow{font-size:1rem}.learning-bottombar-center{flex-direction:column;align-items:center;gap:.35rem;display:flex}.learning-bottombar-dots{align-items:center;gap:.4rem;display:flex}.learning-bottombar-dot{background:#e2e8f0;border-radius:50%;width:10px;height:10px;transition:background .2s}.learning-bottombar-dot.filled{background:#059669}.learning-bottombar-progress-text{color:#94a3b8;font-size:.72rem}@media (width<=900px){.learning-defi-split{flex-direction:column}.learning-defi-left{border-bottom:1px solid #e2e8f0;border-right:none;width:100%;min-width:0;max-height:300px}.learning-defi-right{min-height:350px}}@media (width<=768px){.learning-path-hero{flex-direction:column}.learning-paths-grid{grid-template-columns:1fr}.learning-section-header{flex-direction:column;gap:.75rem}.learning-section-actions{justify-content:space-between;width:100%}.learning-lesson-badges{flex-wrap:wrap}.learning-lesson-title-row{flex-direction:column;align-items:flex-start;gap:.5rem}.learning-lesson-tabs{overflow-x:auto}.learning-lesson-tab{padding:.6rem .9rem;font-size:.83rem}.learning-lesson-bottombar{padding:.5rem 1rem}.learning-bottombar-btn{min-width:auto;padding:.4rem .75rem;font-size:.82rem}.learning-quiz-score-banner{flex-direction:column;align-items:flex-start}}.ca-ide{background:#0b1120;border:1px solid #1e293b;border-radius:10px;flex-direction:column;width:85%;height:calc(85vh - 170px);min-height:470px;margin:0 auto;display:flex;overflow:hidden}.ca-cs-layout{flex-direction:column;flex:1;align-items:center;padding:20px 32px 40px;display:flex;overflow-y:auto}.ca-cs-enonce{background:#161a24;border:1px solid #ffffff0f;border-radius:12px;align-items:flex-start;gap:16px;width:100%;max-width:1300px;margin-bottom:14px;padding:18px 22px;display:flex}.ca-cs-enonce-badge{font-family:var(--mono);color:#fff;text-transform:uppercase;letter-spacing:.05em;background:#0f7b6c;border-radius:4px;flex-shrink:0;padding:3px 10px;font-size:10px;font-weight:700}.ca-cs-enonce-text{color:#9ca3af;flex:1;font-size:14px;line-height:1.65}.ca-cs-enonce-test{background:#ffffff08;border:1px solid #ffffff0a;border-radius:8px;flex-shrink:0;min-width:180px;padding:10px 12px}.ca-ide.ca-ide--codeserver{border-radius:10px;width:100%;max-width:1300px;height:600px;margin:0;position:relative}.ca-ide.ca-ide--codeserver iframe{border:none;flex:1;width:100%}.ca-cs-results{width:100%;max-width:1300px;font-family:var(--mono);border-radius:8px;justify-content:space-between;align-items:center;margin-top:12px;padding:10px 16px;font-size:12px;display:flex}.ca-cs-results.success{color:#22c55e;background:#0f7b6c26;border:1px solid #0f7b6c4d}.ca-cs-results.fail{color:#f87171;background:#dc26261a;border:1px solid #dc262633}.ca-cs-results-close{color:#fff;cursor:pointer;font-size:11px;font-family:var(--mono);background:#ffffff1a;border:none;border-radius:6px;padding:4px 12px}.ca-cs-results-close:hover{background:#fff3}.ca-ide-topbar{background:#070b14;border-bottom:1px solid #1e293b;flex-shrink:0;justify-content:space-between;align-items:center;height:38px;padding:0 12px;display:flex}.ca-ide-topbar-left{align-items:center;gap:10px;display:flex}.ca-ide-topbar-logo{color:#e2e8f0;align-items:center;gap:5px;font-size:13px;font-weight:700;display:flex}.ca-ide-topbar-logo .accent{color:#3b82f6}.ca-ide-topbar-badge{color:#60a5fa;text-transform:uppercase;letter-spacing:.5px;background:#3b82f626;border-radius:10px;padding:2px 8px;font-size:10px;font-weight:700}.ca-ide-topbar-breadcrumb{color:#475569;align-items:center;gap:5px;font-size:11px;display:flex}.ca-ide-topbar-breadcrumb .sep{color:#334155}.ca-ide-topbar-breadcrumb .current{color:#94a3b8}.ca-ide-topbar-center{color:#64748b;align-items:center;gap:6px;font-size:11px;display:flex}.ca-ide-judge-dot{background:#4ade80;border-radius:50%;width:6px;height:6px}.ca-ide-topbar-right{align-items:center;gap:6px;display:flex}.ca-ide-topbar-btn{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #1e293b;border-radius:4px;align-items:center;gap:4px;padding:3px 10px;font-family:inherit;font-size:11px;transition:all .15s;display:flex}.ca-ide-topbar-btn:hover{color:#e2e8f0;background:#ffffff0d}.ca-ide-topbar-btn.primary{color:#fff;background:#2563eb;border-color:#2563eb;font-weight:600}.ca-ide-topbar-btn.primary:hover{background:#1d4ed8}.ca-ide-topbar-btn.primary:disabled{opacity:.6;cursor:not-allowed}.ca-ide-topbar-btn.primary.loading{background:#475569;border-color:#475569}.ca-ide-topbar-btn.success{color:#fff;cursor:default;background:#059669;border-color:#059669;font-weight:600}.ca-ide-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:10px;height:10px;animation:.6s linear infinite ca-spin;display:inline-block}@keyframes ca-spin{to{transform:rotate(360deg)}}.ca-ide-body{flex:1;min-height:0;display:flex;overflow:hidden}.ca-ide-activity{background:#070b14;border-right:1px solid #1e293b;flex-direction:column;flex-shrink:0;align-items:center;gap:2px;width:42px;padding:6px 0;display:flex}.ca-ide-act-icon{cursor:pointer;color:#475569;border-radius:6px;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;transition:all .15s;display:flex;position:relative}.ca-ide-act-icon:hover{color:#94a3b8;background:#ffffff0a}.ca-ide-act-icon.active{color:#e2e8f0;background:#3b82f61a}.ca-ide-act-icon.active:before{content:"";background:#3b82f6;border-radius:1px;width:2px;position:absolute;top:6px;bottom:6px;left:-1px}.ca-ide-act-badge{color:#fff;background:#ef4444;border-radius:50%;justify-content:center;align-items:center;width:14px;height:14px;font-size:9px;font-weight:700;display:flex;position:absolute;top:1px;right:1px}.ca-ide-act-badge.ok{background:#059669}.ca-ide-act-spacer{flex:1}.ca-ide-sidebar{background:#0b1120;border-right:1px solid #1e293b;flex-direction:column;flex-shrink:0;width:240px;display:flex;overflow:hidden}.ca-ide-sidebar-header{text-transform:uppercase;letter-spacing:.8px;color:#64748b;border-bottom:1px solid #1e293b;padding:10px 12px;font-size:10px;font-weight:700}.ca-ide-sidebar-section{padding:6px 0}.ca-ide-sidebar-title{text-transform:uppercase;letter-spacing:.5px;color:#475569;cursor:pointer;align-items:center;gap:5px;padding:5px 12px;font-size:10px;font-weight:700;display:flex}.ca-ide-sidebar-title:hover{color:#94a3b8}.ca-ide-file{cursor:pointer;color:#94a3b8;align-items:center;gap:6px;padding:3px 12px 3px 24px;font-size:12px;transition:background .1s;display:flex}.ca-ide-file:hover{background:#ffffff0a}.ca-ide-file.active{color:#e2e8f0;background:#3b82f61a}.ca-ide-ficon{text-align:center;flex-shrink:0;width:16px;font-size:12px}.ca-ide-ficon.java{color:#e76f00}.ca-ide-ficon.test{color:#4ade80}.ca-ide-file-ro{color:#475569;margin-left:auto;font-size:9px;font-style:italic}.ca-ide-sidebar-enonce{border-top:1px solid #1e293b;flex:1;padding:10px 12px;overflow-y:auto}.ca-ide-enonce-badge{color:#60a5fa;text-transform:uppercase;letter-spacing:.3px;background:#3b82f626;border-radius:3px;margin-right:6px;padding:1px 6px;font-size:9px;font-weight:700}.ca-ide-enonce-text{color:#94a3b8;white-space:pre-wrap;margin-top:8px;font-size:12px;line-height:1.7}.ca-ide-tc-card{background:#ffffff08;border:1px solid #1e293b;border-radius:6px;margin:8px 0;padding:8px 10px;font-family:JetBrains Mono,monospace;font-size:11px}.ca-ide-tc-label{color:#475569;text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px;font-size:10px;font-weight:600}.ca-ide-tc-val{color:#e2e8f0;white-space:pre-wrap;margin-bottom:6px}.ca-ide-tc-val.ok{color:#4ade80}.ca-ide-center{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.ca-ide-tabs{background:#070b14;border-bottom:1px solid #1e293b;flex-shrink:0;align-items:stretch;height:36px;display:flex}.ca-ide-tab{color:#64748b;cursor:pointer;border-right:1px solid #1e293b;align-items:center;gap:6px;padding:0 14px;font-size:12px;transition:all .15s;display:flex;position:relative}.ca-ide-tab:hover{color:#94a3b8;background:#ffffff05}.ca-ide-tab.active{color:#e2e8f0;background:#131c2b}.ca-ide-tab.active:after{content:"";background:#3b82f6;height:2px;position:absolute;bottom:0;left:0;right:0}.ca-ide-tab-dot{background:#f59e0b;border-radius:50%;width:6px;height:6px}.ca-ide-breadcrumb{color:#475569;background:#0f172a;border-bottom:1px solid #1e293b;flex-shrink:0;align-items:center;gap:4px;height:24px;padding:0 12px;font-family:JetBrains Mono,monospace;font-size:11px;display:flex}.ca-ide-bc-sep{color:#334155;margin:0 2px}.ca-ide-bc-item{color:#64748b;cursor:pointer}.ca-ide-bc-item:last-child{color:#94a3b8}.ca-ide-editor{background:#131c2b;flex:1;min-height:0;overflow:auto}.ca-term{background:#080d15;border-top:2px solid #1e293b;flex-direction:column;flex-shrink:0;height:200px;min-height:100px;display:flex}.ca-term-tabs{background:#0b1120;border-bottom:1px solid #1e293b;flex-shrink:0;justify-content:space-between;align-items:stretch;height:32px;padding:0 8px;display:flex}.ca-term-tabs-left{align-items:stretch;display:flex}.ca-term-tab{color:#475569;text-transform:uppercase;letter-spacing:.4px;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:5px;padding:0 10px;font-family:inherit;font-size:11px;font-weight:600;transition:color .15s;display:flex}.ca-term-tab:hover{color:#94a3b8}.ca-term-tab.active{color:#e2e8f0;border-bottom-color:#3b82f6}.ca-term-badge{color:#f87171;background:#ef444433;border-radius:8px;padding:1px 5px;font-size:9px;font-weight:700}.ca-term-badge.ok{color:#4ade80;background:#22c55e33}.ca-term-tabs-right{align-items:center;gap:2px;display:flex}.ca-term-tabs-right button{color:#475569;cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:14px}.ca-term-tabs-right button:hover{color:#94a3b8;background:#ffffff0a}.ca-term-content{color:#94a3b8;flex:1;padding:8px 12px;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.6;overflow-y:auto}.ca-con-group{margin-bottom:4px}.ca-con-line{white-space:pre-wrap;word-break:break-word}.ca-con-line.muted{color:#475569;font-style:italic}.ca-con-line.cmd{color:#22d3ee}.ca-con-line.ok{color:#4ade80}.ca-con-line.err{color:#f87171}.ca-con-line.out{color:#94a3b8}.ca-con-line.bold{margin-top:4px;font-weight:700}.ca-con-spin{vertical-align:middle;border:2px solid #475569;border-top-color:#22d3ee;border-radius:50%;width:8px;height:8px;margin-right:4px;animation:.6s linear infinite ca-spin;display:inline-block}.ca-term-problem-row{align-items:center;gap:8px;padding:3px 0;font-size:12px;display:flex}.ca-term-problem-icon{color:#f87171;flex-shrink:0;font-size:12px}.ca-term-problem-type{color:#fbbf24;min-width:100px;font-size:11px;font-weight:600}.ca-term-problem-msg{color:#94a3b8;white-space:pre-wrap}.ca-trow{border-radius:4px;margin-bottom:3px;overflow:hidden}.ca-trow-head{align-items:center;gap:6px;padding:4px 8px;font-size:12px;font-weight:600;display:flex}.ca-trow.pass .ca-trow-head{color:#4ade80}.ca-trow.fail .ca-trow-head{color:#f87171;background:#ef44440f}.ca-trow-icon{font-size:13px}.ca-trow-badge{text-transform:uppercase;border-radius:3px;margin-left:auto;padding:1px 5px;font-size:9px;font-weight:700}.ca-trow-badge.compile{color:#f87171;background:#ef444426}.ca-trow-badge.runtime{color:#fbbf24;background:#fbbf2426}.ca-trow-detail{color:#94a3b8;padding:3px 8px 6px 26px;font-size:11px}.ca-trow-line{align-items:baseline;gap:6px;margin-bottom:2px;display:flex}.ca-trow-lbl{color:#64748b;min-width:48px;font-size:10px;font-weight:600}.ca-trow-line code{color:#e2e8f0;white-space:pre-wrap;font-family:JetBrains Mono,monospace;font-size:11px}.ca-trow-err{color:#fca5a5;white-space:pre-wrap;word-break:break-word;background:#ef444414;border-radius:4px;max-height:100px;margin:4px 0 0;padding:4px 6px;font-family:JetBrains Mono,monospace;font-size:11px;overflow-y:auto}.ca-term-solution{color:#4ade80;white-space:pre-wrap;margin:0;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.7}.ca-ide-right{background:#0b1120;border-left:1px solid #1e293b;flex-direction:column;flex-shrink:0;width:280px;display:flex;overflow:hidden}.ca-ide-right-tabs{border-bottom:1px solid #1e293b;display:flex}.ca-ide-right-tab{text-align:center;color:#475569;cursor:pointer;border-bottom:2px solid #0000;flex:1;padding:9px;font-size:11px;font-weight:600}.ca-ide-right-tab.active{color:#e2e8f0;border-bottom-color:#3b82f6}.ca-ide-right-content{flex:1;padding:10px;overflow-y:auto}.ca-ide-ai-msg{margin-bottom:10px}.ca-ide-ai-role{text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:4px;margin-bottom:4px;font-size:10px;font-weight:700;display:flex}.ca-ide-ai-role.ai{color:#a78bfa}.ca-ide-ai-role.user{color:#60a5fa}.ca-ide-ai-body{color:#94a3b8;background:#ffffff05;border:1px solid #1e293b;border-radius:6px;padding:8px 10px;font-size:12px;line-height:1.6}.ca-ide-ai-input{border-top:1px solid #1e293b;flex-shrink:0;gap:6px;padding:8px 10px;display:flex}.ca-ide-ai-input input{color:#e2e8f0;background:#ffffff0a;border:1px solid #1e293b;border-radius:6px;outline:none;flex:1;padding:6px 10px;font-family:inherit;font-size:12px}.ca-ide-ai-input input:focus{border-color:#3b82f6}.ca-ide-ai-input button{color:#fff;cursor:pointer;background:#3b82f6;border:none;border-radius:6px;width:32px;font-size:14px}.ca-ide-ai-input button:hover{background:#2563eb}.ca-ide-statusbar{color:#fffc;background:#1e40af;flex-shrink:0;justify-content:space-between;align-items:center;height:24px;padding:0 10px;font-size:11px;display:flex}.ca-ide-sb-left,.ca-ide-sb-right{align-items:center;gap:12px;display:flex}.ca-ide-sb-item{cursor:default;align-items:center;gap:4px;display:flex}.ca-ide-sb-dot{background:#4ade80;border-radius:50%;width:6px;height:6px}.ca-ide-sb-result{border-radius:3px;padding:1px 6px;font-weight:700}.ca-ide-sb-result.ok{color:#4ade80;background:#22c55e40}.ca-ide-sb-result.fail{color:#f87171;background:#ef444440}@media (width<=900px){.ca-ide{height:auto;min-height:500px}.ca-ide-activity,.ca-ide-sidebar,.ca-ide-right,.ca-ide-topbar-breadcrumb,.ca-ide-topbar-center{display:none}}.ca-ide-topbar-btn.debug{color:#f87171;border-color:#ef4444}.ca-ide-topbar-btn.debug:hover{color:#fca5a5;background:#ef444426}.ca-ide-topbar-btn.debug:disabled{opacity:.35;color:#475569;border-color:#1e293b}.ca-debug-panel{color:#94a3b8}.ca-debug-stdout{margin-bottom:10px}.ca-debug-section-title{text-transform:uppercase;letter-spacing:.5px;color:#64748b;margin-bottom:4px;font-size:10px;font-weight:700}.ca-debug-stdout-pre{color:#94a3b8;white-space:pre-wrap;background:#ffffff05;border:1px solid #1e293b;border-radius:4px;margin:0;padding:6px 8px;font-family:JetBrains Mono,monospace;font-size:11px}.ca-debug-snapshot{border:1px solid #1e293b;border-radius:6px;margin-bottom:8px;overflow:hidden}.ca-debug-snapshot-header{color:#e2e8f0;background:#ef444414;border-bottom:1px solid #1e293b;align-items:center;gap:6px;padding:5px 10px;font-size:12px;font-weight:600;display:flex}.ca-debug-bp-icon{font-size:10px}.ca-debug-vars{padding:6px 10px}.ca-var-node{font-family:JetBrains Mono,monospace;font-size:12px}.ca-var-node-row{cursor:default;border-radius:3px;align-items:center;gap:4px;padding:2px 0;transition:background .1s;display:flex}.ca-var-node-row:hover{background:#ffffff0a}.ca-var-node-arrow{color:#64748b;cursor:pointer;text-align:center;flex-shrink:0;width:12px;font-size:10px}.ca-var-node-arrow-spacer{flex-shrink:0;width:12px}.ca-var-node-children{border-left:1px solid #ffffff0f;margin-left:6px}.ca-debug-var-row{border-bottom:1px solid #ffffff08;align-items:baseline;gap:6px;padding:3px 0;font-family:JetBrains Mono,monospace;font-size:12px;display:flex}.ca-debug-var-icon{border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;font-size:9px;font-weight:700;display:inline-flex}.ca-debug-var-icon.String{color:#4ade80;background:#22c55e26}.ca-debug-var-icon.number{color:#60a5fa;background:#3b82f626}.ca-debug-var-icon.boolean{color:#f87171;background:#ef444426}.ca-debug-var-icon.object{color:#fbbf24;background:#fbbf2426}.ca-debug-var-icon.null{color:#64748b;background:#64748b26}.ca-debug-var-name{color:#e2e8f0;font-weight:600}.ca-debug-var-sep{color:#475569}.ca-debug-var-value{color:#4ade80;word-break:break-all}.ca-debug-var-value.String{color:#34d399}.ca-debug-var-value.number{color:#60a5fa}.ca-debug-var-value.boolean{color:#f87171}.ca-debug-var-value.object{color:#fbbf24}.ca-debug-var-value.null{color:#64748b;font-style:italic}.ca-resize-h{cursor:col-resize;z-index:5;background:0 0;flex-shrink:0;width:4px;transition:background .15s;position:relative}.ca-resize-h:hover,.ca-resize-h.active{background:#3b82f6}.ca-resize-v{cursor:row-resize;z-index:5;background:0 0;flex-shrink:0;height:4px;transition:background .15s;position:relative}.ca-resize-v:hover,.ca-resize-v.active{background:#3b82f6}.ca-debug-right{background:#0b1120;border-left:1px solid #1e293b;flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.ca-debug-right-header{text-transform:uppercase;letter-spacing:.8px;color:#64748b;border-bottom:1px solid #1e293b;justify-content:space-between;align-items:center;padding:8px 10px;font-size:10px;font-weight:700;display:flex}.ca-debug-right-close{color:#475569;cursor:pointer;background:0 0;border:none;border-radius:3px;padding:0 2px;font-size:14px}.ca-debug-right-close:hover{color:#e2e8f0;background:#ffffff0f}.ca-debug-right-content{flex:1;padding:8px 10px;overflow-y:auto}.ca-debug-controls{align-items:center;gap:2px;margin-left:auto;display:flex}.ca-dbg-btn{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #1e293b;border-radius:4px;justify-content:center;align-items:center;width:26px;height:22px;font-size:12px;transition:all .15s;display:flex}.ca-dbg-btn:hover:not(:disabled){color:#60a5fa;background:#3b82f626;border-color:#3b82f6}.ca-dbg-btn:disabled{opacity:.3;cursor:not-allowed}.ca-dbg-btn.stop{color:#f87171}.ca-dbg-btn.stop:hover{background:#ef444426;border-color:#ef4444}.ca-dbg-btn.remove{color:#fbbf24;font-size:11px}.ca-debug-done{color:#4ade80;background:#22c55e1f;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:700}.ca-dbg-btn.remove:hover{background:#fbbf2426;border-color:#f59e0b}.ca-debug-step-indicator{color:#64748b;text-align:center;letter-spacing:.5px;background:#ffffff05;border-bottom:1px solid #1e293b;padding:4px 10px;font-size:10px;font-weight:600}.ca-debug-snapshot.active{border-color:#3b82f6}.ca-debug-bp-label{color:#f87171;text-transform:uppercase;letter-spacing:.3px;background:#ef44441f;border-radius:3px;margin-left:auto;padding:1px 5px;font-size:9px;font-weight:600}.ca-ide-add-file-btn{color:#64748b;cursor:pointer;background:0 0;border:1px solid #1e293b;border-radius:4px;justify-content:center;align-items:center;width:20px;height:20px;margin-left:auto;font-size:14px;line-height:1;display:inline-flex}.ca-ide-add-file-btn:hover{color:#60a5fa;background:#3b82f626;border-color:#3b82f6}.ca-ide-file-del{color:#475569;cursor:pointer;border-radius:3px;margin-left:auto;padding:0 2px;font-size:14px}.ca-ide-file-del:hover{color:#f87171;background:#ef444426}.cand-sidebar--retracted{z-index:10;background:#1a1e2a;border-right:1px solid #ffffff0f;flex-direction:column;flex-shrink:0;align-items:center;width:48px;height:100vh;padding:8px 0;display:flex;position:fixed;top:0;left:0}.csr-logo{width:32px;height:32px;font-family:"IBM Plex Mono", var(--mono,monospace);color:#fff;cursor:pointer;background:#0f7b6c;border-radius:8px;justify-content:center;align-items:center;margin-bottom:14px;font-size:11px;font-weight:700;display:flex}.csr-icon{color:#6b7280;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;margin-bottom:2px;text-decoration:none;transition:all .15s;display:flex;position:relative}.csr-icon:hover{color:#fff;background:#242938}.csr-icon.active{color:#0f7b6c;background:#0f7b6c26}.csr-tip{color:#fff;white-space:nowrap;z-index:30;pointer-events:none;background:#252a3a;border-radius:5px;padding:4px 10px;font-size:11px;display:none;position:absolute;top:50%;left:50px;transform:translateY(-50%);box-shadow:0 4px 12px #0006}.csr-icon:hover .csr-tip,.csr-bottom-icon:hover .csr-tip{display:block}.csr-sep{background:#ffffff14;width:22px;height:1px;margin:6px 0}.csr-spacer{flex:1}.csr-bottom-icon{color:#6b7280;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;margin-bottom:8px;display:flex;position:relative}.csr-bottom-icon:hover{color:#fff;background:#242938}.cand-layout--lesson{--cand-sidebar-w:48px}.cand-layout--lesson .cand-main{margin-left:94px}.cand-layout--lesson .cand-sidebar--retracted{display:flex}.ca-cs-layout{flex-direction:row;flex:1;align-items:stretch;gap:12px;max-height:calc(100vh - 195px);margin-bottom:15px;padding:10px 14px;display:flex;overflow:hidden}.ca-cs-enonce-panel{flex-direction:column;flex-shrink:0;gap:10px;width:280px;display:flex;overflow-y:auto}.ca-cs-enonce-panel::-webkit-scrollbar{width:3px}.ca-cs-enonce-panel::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:2px}.ca-cs-enonce-card{background:#161a24;border:1px solid #ffffff0f;border-radius:10px;padding:14px 16px}.ca-cs-enonce-badge{font-family:"IBM Plex Mono", var(--mono,monospace);color:#fff;text-transform:uppercase;background:#0f7b6c;border-radius:4px;margin-bottom:10px;padding:2px 8px;font-size:9px;font-weight:700;display:inline-block}.ca-cs-enonce-text{color:#9ca3af;font-size:13px;line-height:1.65}.ca-cs-enonce-text strong{color:#fff}.ca-cs-enonce-test-card{background:#161a24;border:1px solid #ffffff0f;border-radius:10px;padding:12px 14px}.ca-cs-test-label{font-family:"IBM Plex Mono", var(--mono,monospace);text-transform:uppercase;letter-spacing:.05em;color:#6b7280;margin-bottom:3px;font-size:9px}.ca-cs-test-val{font-family:"IBM Plex Mono", var(--mono,monospace);font-size:11px}.ca-cs-enonce-results{font-family:"IBM Plex Mono", var(--mono,monospace);border-radius:8px;padding:10px 14px;font-size:11px}.ca-cs-enonce-results.success{color:#22c55e;background:#0f7b6c1f;border:1px solid #0f7b6c40}.ca-cs-enonce-results.fail{color:#f87171;background:#dc26261a;border:1px solid #dc262633}.ca-cs-layout .ca-ide.ca-ide--codeserver{flex:1;min-width:0;max-width:none;height:100%;margin:0}@media (width<=900px){.ca-cs-layout{flex-direction:column}.ca-cs-enonce-panel{width:100%;max-height:200px}}.ca-cs-layout.ca-cs-maximized{z-index:9999;background:#0d1117;max-height:100vh;margin:0;padding:0;position:fixed;inset:0}.ca-cs-layout.ca-cs-maximized .ca-ide.ca-ide--codeserver{border-radius:0;width:100%;height:100%}.ca-cs-layout.ca-cs-maximized .ca-ide-topbar{border-radius:0}.learning-diagram{text-align:center;background:#f8f9fa;border:1px solid #e2e8f0;border-radius:8px;margin:1.5rem 0;padding:1rem;overflow-x:auto}.learning-diagram svg{max-width:100%;height:auto}.learning-content-body .visual-schema,.learning-content-body .diagram{background:#f8f9fa;border:1px solid #e2e8f0;border-radius:8px;margin:1.5rem 0;padding:1.2rem;overflow-x:auto}.lesson-solution{max-width:860px;margin:0 auto;padding:2rem 2.5rem 3rem}.lesson-solution-header{align-items:center;gap:.6rem;margin-bottom:.5rem;display:flex}.lesson-solution-icon{font-size:1.6rem}.lesson-solution-title{color:var(--ink-1,#1a1a1a);font-size:1.4rem;font-weight:700;font-family:var(--sans);margin:0}.lesson-solution-intro{color:var(--ink-2,#555);margin:0 0 1.5rem;font-size:.9rem;line-height:1.6}.lesson-solution-steps{flex-direction:column;gap:1.8rem;display:flex}.lesson-solution-step{background:var(--bg-2,#fafaf8);border:1px solid var(--line,#e0dfda);border-radius:10px;padding:1.25rem 1.5rem}.lesson-solution-step-header{align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.lesson-solution-step-number{color:#fff;background:#0f7b6c;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.8rem;font-weight:700;display:flex}.lesson-solution-step-title{color:var(--ink-1,#1a1a1a);font-size:1rem;font-weight:600;font-family:var(--sans);margin:0}.lesson-solution-step-desc{color:var(--ink-2,#555);margin:0 0 .75rem;font-size:.88rem;line-height:1.6}.learning-code-block-filename{color:#94a3b8;font-size:.78rem;font-weight:600;font-family:var(--mono);margin-right:auto}.learning-code-block-header:has(.learning-code-block-filename) .learning-code-block-lang{margin-left:.75rem}.lesson-timer{background:var(--bg-3,#f3f2ee);border:1px solid var(--line,#e0dfda);font-family:var(--mono,"IBM Plex Mono", monospace);color:var(--ink-2,#555);white-space:nowrap;border-radius:8px;flex-shrink:0;align-items:center;gap:6px;padding:4px 12px;font-size:.78rem;display:flex}.lesson-timer-value{color:var(--ink-1,#1a1a1a);letter-spacing:.02em;font-weight:600}.ca-preview-browser{background:#1e1e2e;border-left:1px solid #2a2a3e;flex-direction:column;flex-shrink:0;width:480px;min-width:360px;max-width:55vw;animation:.25s cubic-bezier(.16,1,.3,1) ca-preview-slide;display:flex;overflow:hidden}@keyframes ca-preview-slide{0%{opacity:0;width:0}to{opacity:1;width:480px}}.ca-preview-toolbar{background:#252535;border-bottom:1px solid #333348;flex-shrink:0;align-items:center;gap:6px;min-height:36px;padding:6px 10px;display:flex}.ca-preview-toolbar-left,.ca-preview-toolbar-right{flex-shrink:0;align-items:center;gap:4px;display:flex}.ca-preview-tb-btn{color:#8b8fa3;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;padding:4px;transition:all .15s;display:flex}.ca-preview-tb-btn:hover{color:#e2e8f0;background:#ffffff0f}.ca-preview-urlbar{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.ca-preview-nav-btn{color:#6b7280;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 4px;font-size:15px;line-height:1;transition:color .15s}.ca-preview-nav-btn:hover{color:#e2e8f0}.ca-preview-url-input{color:#9ca3af;background:#1a1a2a;border:1px solid #333348;border-radius:20px;flex:1;align-items:center;gap:6px;min-width:0;padding:4px 12px;font-family:Consolas,Fira Code,monospace;font-size:12px;display:flex}.ca-preview-url-input span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ca-preview-url-field{color:#9ca3af;background:0 0;border:none;outline:none;flex:1;min-width:0;font-family:Consolas,Fira Code,monospace;font-size:12px}.ca-preview-url-field:focus{color:#e2e8f0}.ca-preview-viewport{background:#fff;border:none;flex:1;width:100%;min-height:200px}.ca-preview-console-resize{cursor:row-resize;background:#333348;flex-shrink:0;height:4px;transition:background .15s}.ca-preview-console-resize:hover{background:#6366f1}.ca-preview-console{background:#1a1a2a;flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.ca-preview-console-header{background:#1e1e30;border-top:1px solid #333348;flex-shrink:0;justify-content:space-between;align-items:center;min-height:30px;padding:0 10px;display:flex}.ca-preview-console-tabs{align-items:center;gap:0;display:flex}.ca-preview-console-tab{color:#6b7280;cursor:pointer;border-bottom:2px solid #0000;padding:6px 12px;font-size:12px;font-weight:500}.ca-preview-console-tab.active{color:#3b82f6;border-bottom-color:#3b82f6}.ca-preview-console-actions{align-items:center;gap:8px;display:flex}.ca-preview-console-count{color:#3b82f6;align-items:center;gap:4px;font-size:11px;font-weight:500;display:flex}.ca-preview-console-clear{color:#6b7280;cursor:pointer;background:0 0;border:none;align-items:center;padding:2px;transition:color .15s;display:flex}.ca-preview-console-clear:hover{color:#ef4444}.ca-preview-console-checkbox{color:#6b7280;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;font-size:11px;display:flex}.ca-preview-console-checkbox input{accent-color:#3b82f6;width:13px;height:13px}.ca-preview-console-output{flex:1;padding:4px 12px;font-family:Consolas,Fira Code,monospace;font-size:12px;line-height:1.7;overflow-y:auto}.ca-preview-console-output::-webkit-scrollbar{width:5px}.ca-preview-console-output::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:3px}.ca-console-line{word-break:break-word;border-bottom:1px solid #ffffff08;align-items:flex-start;gap:6px;padding:2px 0;display:flex}.ca-console-line.info{color:#6b7280}.ca-console-line.log{color:#e2e8f0}.ca-console-line.warn{color:#fbbf24;background:#fbbf240d}.ca-console-line.error{color:#ef4444;background:#ef44440d}.ca-console-icon{flex-shrink:0;margin-top:2px;font-size:10px}.ca-console-icon.warn{color:#fbbf24}.ca-console-icon.error{color:#ef4444}@media (width<=900px){.ca-preview-browser{z-index:999;height:100vh;position:fixed;top:0;right:0;box-shadow:-4px 0 24px #0006}}.academy-catalog{--ac-bg:#0c0e14;--ac-card:#13161f;--ac-card-hover:#191d29;--ac-glass:#ffffff08;--ac-glass-2:#ffffff0f;--ac-ink:#f0f0f0;--ac-ink-2:#9ca3af;--ac-ink-3:#6b7280;--ac-cyan:#22d3ee;--ac-violet:#a78bfa;--ac-emerald:#34d399;--ac-orange:#fb923c;--ac-pink:#f472b6;--ac-amber:#fbbf24;--ac-line:#ffffff14;--ac-line-2:#ffffff0a;--ac-sans:"Sora", "DM Sans", system-ui, sans-serif;--ac-mono:"JetBrains Mono", "IBM Plex Mono", monospace;background:var(--ac-bg);color:var(--ac-ink);font-family:var(--ac-sans);min-height:100vh;padding:0 40px 60px;position:relative;overflow-x:hidden}.academy-catalog:before{content:"";pointer-events:none;z-index:0;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.03'/%3E%3C/svg%3E");position:fixed;inset:0}.academy-catalog>*{z-index:1;position:relative}.ac-glow{filter:blur(120px);opacity:.1;pointer-events:none;z-index:0;border-radius:50%;position:fixed}.ac-glow.cyan{background:var(--ac-cyan);width:500px;height:500px;top:-100px;left:-100px}.ac-glow.violet{background:var(--ac-violet);width:400px;height:400px;top:300px;right:-50px}.ac-glow.emerald{background:var(--ac-emerald);width:350px;height:350px;bottom:-100px;left:30%}.ac-hero{text-align:center;max-width:700px;margin:0 auto;padding:50px 0 30px}.ac-eyebrow{font-family:var(--ac-mono);color:var(--ac-cyan);letter-spacing:.04em;text-transform:uppercase;background:#22d3ee14;border:1px solid #22d3ee26;border-radius:20px;align-items:center;gap:8px;margin-bottom:18px;padding:5px 14px;font-size:11px;font-weight:500;display:inline-flex}.ac-eyebrow-pulse{background:var(--ac-cyan);border-radius:50%;width:6px;height:6px;animation:2s infinite ac-pulse}@keyframes ac-pulse{0%,to{opacity:1}50%{opacity:.3}}.ac-hero h1{letter-spacing:-.03em;background:linear-gradient(135deg, #fff 30%, var(--ac-cyan) 70%, var(--ac-violet));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:14px;font-size:42px;font-weight:800;line-height:1.15}.ac-hero p{color:var(--ac-ink-2);font-size:15px;line-height:1.7}.ac-stats{border-top:1px solid var(--ac-line);border-bottom:1px solid var(--ac-line);justify-content:center;gap:48px;margin:16px 0 32px;padding:24px 0;display:flex}.ac-stat-num{letter-spacing:-.02em;text-align:center;background:linear-gradient(135deg, #fff, var(--ac-cyan));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:26px;font-weight:700}.ac-stat-label{color:var(--ac-ink-3);text-align:center;text-transform:uppercase;letter-spacing:.06em;margin-top:3px;font-size:11px}.ac-filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:28px;display:flex}.ac-filter-btn{border:1px solid var(--ac-line);color:var(--ac-ink-2);font-family:var(--ac-sans);cursor:pointer;background:0 0;border-radius:8px;padding:7px 16px;font-size:12px;font-weight:500;transition:all .2s}.ac-filter-btn:hover{color:var(--ac-ink);background:var(--ac-glass);border-color:#ffffff26}.ac-filter-btn.active{border-color:var(--ac-cyan);color:var(--ac-cyan);background:#22d3ee0f;box-shadow:0 0 16px #22d3ee1a}.ac-filter-btn--icon{align-items:center;gap:6px;padding:6px 12px;display:flex}.ac-filter-svg{align-items:center;display:flex}.ac-filter-svg svg{width:16px;height:16px}.ac-filter-label{font-size:11px}.ac-filter-count{color:var(--ac-cyan);background:#ffffff14;border-radius:10px;padding:1px 6px;font-size:10px;font-weight:700}.ac-search{border:1px solid var(--ac-line);background:var(--ac-glass);color:var(--ac-ink);font-family:var(--ac-sans);border-radius:8px;outline:none;width:220px;margin-left:auto;padding:7px 14px;font-size:12px;transition:border-color .2s}.ac-search::placeholder{color:var(--ac-ink-3)}.ac-search:focus{border-color:var(--ac-cyan)}.ac-domain{margin-bottom:40px}.ac-domain-header{align-items:center;gap:12px;margin-bottom:16px;display:flex}.ac-domain-icon{border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;display:flex}.ac-domain-title{letter-spacing:-.01em;font-size:18px;font-weight:700}.ac-domain-count{font-family:var(--ac-mono);color:var(--ac-ink-3);background:var(--ac-glass-2);border-radius:12px;padding:3px 10px;font-size:10px}.ac-grid{grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px;display:grid}.ac-card{background:var(--ac-card);border:1px solid var(--ac-line);cursor:pointer;border-radius:14px;padding:22px;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.ac-card:before{content:"";opacity:0;border-radius:14px 14px 0 0;height:3px;transition:opacity .3s;position:absolute;top:0;left:0;right:0}.ac-card:hover{background:var(--ac-card-hover);border-color:#ffffff1f;transform:translateY(-3px);box-shadow:0 12px 40px #0000004d}.ac-card:hover:before{opacity:1}.ac-card[data-color=cyan]:before{background:linear-gradient(90deg, var(--ac-cyan), transparent)}.ac-card[data-color=violet]:before{background:linear-gradient(90deg, var(--ac-violet), transparent)}.ac-card[data-color=emerald]:before{background:linear-gradient(90deg, var(--ac-emerald), transparent)}.ac-card[data-color=orange]:before{background:linear-gradient(90deg, var(--ac-orange), transparent)}.ac-card[data-color=pink]:before{background:linear-gradient(90deg, var(--ac-pink), transparent)}.ac-card[data-color=amber]:before{background:linear-gradient(90deg, var(--ac-amber), transparent)}.ac-card:hover[data-color=cyan]{border-color:#22d3ee33}.ac-card:hover[data-color=violet]{border-color:#a78bfa33}.ac-card:hover[data-color=emerald]{border-color:#34d39933}.ac-card:hover[data-color=orange]{border-color:#fb923c33}.ac-card:hover[data-color=amber]{border-color:#fbbf2433}.ac-card.coming-soon{opacity:.5;pointer-events:none}.ac-card-top{align-items:center;gap:12px;margin-bottom:10px;display:flex}.ac-card-badge{width:42px;height:42px;font-family:var(--ac-mono);color:#fff;border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:700;display:flex}.ac-card-title{letter-spacing:-.01em;flex:1;font-size:15px;font-weight:700}.ac-card-level{font-family:var(--ac-mono);background:var(--ac-glass-2);color:var(--ac-ink-3);text-transform:uppercase;letter-spacing:.05em;border-radius:6px;flex-shrink:0;padding:3px 8px;font-size:9px}.ac-card-tags{flex-wrap:wrap;gap:5px;margin-bottom:10px;display:flex}.ac-card-tag{font-family:var(--ac-mono);background:var(--ac-glass-2);color:var(--ac-ink-3);border-radius:4px;padding:2px 7px;font-size:10px}.ac-card-desc{color:var(--ac-ink-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:14px;font-size:12.5px;line-height:1.6;display:-webkit-box;overflow:hidden}.ac-card-stats{color:var(--ac-ink-3);border-top:1px solid var(--ac-line-2);align-items:center;gap:14px;padding-top:12px;font-size:11px;display:flex}.ac-card-stat .num{font-family:var(--ac-mono);color:var(--ac-ink-2);font-weight:600}.ac-card-duration{font-family:var(--ac-mono);color:var(--ac-ink-2);align-items:center;gap:4px;margin-left:auto;font-weight:600;display:inline-flex}.ac-card-progress{align-items:center;gap:10px;margin-top:10px;display:flex}.ac-card-progress-fill{border-radius:2px;height:100%}.ac-card-progress-text{font-family:var(--ac-mono);color:var(--ac-ink-3);font-size:10px}.ac-fade{opacity:0;animation:.5s forwards ac-fadeIn;transform:translateY(14px)}@keyframes ac-fadeIn{to{opacity:1;transform:translateY(0)}}.ac-card-progress{border-top:1px solid #ffffff0f;align-items:center;gap:10px;margin-top:12px;padding-top:12px;display:flex}.ac-card-progress-bar{background:#ffffff14;border-radius:3px;flex:1;height:6px;overflow:hidden}.ac-card-progress-fill{background:linear-gradient(90deg,#22d3ee,#6366f1);border-radius:3px;height:100%;transition:width .6s}.ac-card-progress-fill.completed{background:linear-gradient(90deg,#34d399,#22d3ee)}.ac-card-progress-text{color:var(--ac-ink-2);white-space:nowrap;text-align:right;min-width:48px;font-size:12px;font-weight:600}.ac-card-progress-text.completed{color:#34d399;font-size:13px}.ac-card-time-spent{color:#22d3ee;font-size:11px;font-family:var(--ac-mono);align-items:center;gap:5px;margin-top:6px;font-weight:600;display:flex}.ac-card-time-spent svg{opacity:.8;stroke:#22d3ee}.ac-card-progress-text.not-started{color:var(--ac-ink-3);text-align:center;width:100%;font-size:11px;font-weight:400}.ac-card-badges{justify-content:flex-end;gap:14px;margin-top:10px;display:flex}.ac-badge{color:#ffffff26;flex-direction:column;align-items:center;gap:3px;transition:color .4s,filter .4s,transform .3s;display:flex}.ac-badge svg{filter:drop-shadow(0 0 #0000);transition:filter .4s}.ac-badge-label{text-transform:uppercase;letter-spacing:.5px;font-size:9px;font-weight:500}.ac-badge.unlocked{color:#fbbf24;animation:.6s both ac-badgePop}.ac-badge.unlocked svg{filter:drop-shadow(0 0 6px #fbbf2480)}.ac-badge.unlocked .ac-badge-label{background:linear-gradient(90deg,#fbbf24,#f59e0b);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-weight:700}.ac-badge.unlocked:hover{transform:scale(1.15)}@keyframes ac-badgePop{0%{opacity:0;transform:scale(.5)}60%{transform:scale(1.2)}to{opacity:1;transform:scale(1)}}@media (width<=768px){.academy-catalog{padding:0 16px 40px}.ac-hero h1{font-size:28px}.ac-stats{flex-wrap:wrap;gap:20px}.ac-grid{grid-template-columns:1fr}.ac-search{width:100%;margin-top:8px;margin-left:0}}.lp-fullscreen{background:#1e1e2e;width:100%;height:100vh;overflow:hidden}:is(body:has(.lp-fullscreen) .cand-sidebar,body:has(.lp-fullscreen) .cand-sidebar--retracted,body:has(.lp-fullscreen) .cand-sidebar--collapsed){display:none!important}body:has(.lp-fullscreen) .cand-main{margin-left:0!important;padding:0!important}body:has(.lp-fullscreen) .cand-layout{padding:0!important}body:has(.lp-fullscreen) .cand-layout--lesson{--cand-sidebar-w:0px}.lp-container{background:#1e1e2e;width:100%;height:100vh;display:flex;overflow:hidden}.lp-left{background:#1a1a2e;border-right:1px solid #2a2a3e;flex-direction:column;display:flex;overflow:hidden}.lp-left-header{border-bottom:1px solid #2a2a3e;flex-shrink:0;padding:16px 20px 12px}.lp-left-header-top{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.lp-btn-exit{color:#8b8fa3;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:6px;align-items:center;gap:4px;padding:4px 12px;font-family:inherit;font-size:11px;font-weight:500;transition:all .15s;display:flex}.lp-btn-exit:hover{color:#f06292;background:#f0629226;border-color:#f062924d}.lp-left-badge{color:#7c6bf0;text-transform:uppercase;letter-spacing:1px;background:#6366f126;border:1px solid #6366f14d;border-radius:20px;align-items:center;gap:6px;padding:4px 12px;font-size:11px;font-weight:700;display:inline-flex}.lp-badge-dot{background:#7c6bf0;border-radius:50%;width:6px;height:6px;animation:2s ease-in-out infinite lp-pulse}@keyframes lp-pulse{0%,to{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}.lp-left-meta{gap:8px;margin-top:8px;display:flex}.lp-meta-tag{color:#8b8fa3;background:#262640;border-radius:4px;padding:2px 8px;font-size:11px;display:inline-block}.lp-left-title{color:#e2e8f0;margin:0;font-size:16px;font-weight:700;line-height:1.3}.lp-step-progress{background:#0c0c14;border-bottom:1px solid #ffffff0a;flex-shrink:0;align-items:center;gap:3px;padding:10px 20px;display:flex}.lp-step-dot{cursor:pointer;background:#2e2e4a;border-radius:2px;width:22px;height:4px;transition:all .3s cubic-bezier(.22,1,.36,1)}.lp-step-dot:hover{background:#5a4cc0;transform:scaleY(1.5)}.lp-step-dot.active{background:#7c6bf0;width:32px}.lp-step-dot.done{background:#4ecdc4}.lp-step-label{color:#5c5970;margin-left:auto;font-family:IBM Plex Mono,monospace;font-size:11px}.lp-left-content{scrollbar-width:thin;scrollbar-color:#3a3a5e #1a1a2e;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;padding:0 20px 40px;overflow-y:auto}.lp-left-content::-webkit-scrollbar{width:6px}.lp-left-content::-webkit-scrollbar-track{background:#1a1a2e}.lp-left-content::-webkit-scrollbar-thumb{background:#3a3a5e;border-radius:3px}.lp-left-content::-webkit-scrollbar-thumb:hover{background:#4a4a6e}.lp-left-content .learning-content{box-shadow:none;background:0 0;border:none;border-radius:0;margin:0;padding:0}.lp-left-content .learning-content-meta{display:none}.lp-left-content .learning-content-body{color:#d4d4dc;font-size:13.5px;line-height:1.75}.lp-left-content .learning-content-body h2{color:#f0eef6;border-top:1px solid #ffffff0f;margin-top:28px;padding:14px 0 8px;font-size:15px;font-weight:700}.lp-left-content .learning-content-body h3{color:#4ecdc4;text-transform:uppercase;letter-spacing:.3px;margin-top:16px;margin-bottom:4px;font-size:13px;font-weight:600}.lp-left-content .learning-content-body p{margin:6px 0}.lp-left-content .learning-content-body code:not([class*=language-]){color:#4ecdc4;background:#4ecdc41a;border-radius:3px;padding:1px 5px;font-family:Consolas,Fira Code,monospace;font-size:12.5px}.lp-left-content .learning-content-body pre{border:1px solid #ffffff14;border-radius:8px;margin:10px 0 14px;padding:14px 16px;overflow-x:auto;background:#0d1117!important}.lp-left-content .learning-content-body pre code{padding:0;font-family:Consolas,Fira Code,monospace;font-size:12.5px;line-height:1.6;background:0 0!important}.lp-left-content .learning-content-body pre code:not([class*=language-]){color:#d4d4dc}.lp-left-content .learning-content-body ul,.lp-left-content .learning-content-body ol{margin:6px 0;padding-left:18px}.lp-left-content .learning-content-body li{color:#c0bdd0;margin:3px 0}.lp-left-content .learning-content-body strong{color:#f0eef6;font-weight:600}.lp-left-content .learning-code-complet{background:#7c6bf00a;border-color:#7c6bf033}.lp-left-content .learning-code-complet summary{color:#a78bfa}.lp-left-content .learning-code-complet summary:hover{background:#7c6bf014}.lp-left-content .learning-content-body hr{border:none;border-top:1px solid #ffffff0f;margin:20px 0}.lp-left-content .learning-content-body table{border-collapse:collapse;width:100%;margin:10px 0}.lp-left-content .learning-content-body th{color:#4ecdc4;text-align:left;text-transform:uppercase;letter-spacing:.5px;background:#4ecdc414;border-bottom:1px solid #ffffff0f;padding:6px 10px;font-size:11px}.lp-left-content .learning-content-body td{border-bottom:1px solid #ffffff0a;padding:6px 10px;font-size:13px}.lp-resize-handle{cursor:col-resize;background:#2a2a3e;flex-shrink:0;width:4px;transition:background .15s}.lp-resize-handle:hover{background:#6366f1}.lp-center{background:#1e1e1e;flex-direction:column;flex:1;min-width:400px;display:flex}.lp-ide-topbar{background:#0d0d14;border-bottom:1px solid #ffffff0a;flex-shrink:0;justify-content:flex-end;align-items:center;padding:4px 8px;display:flex}.lp-btn-reset{color:#8b8fa3;cursor:pointer;background:0 0;border:1px solid #ffffff14;border-radius:4px;align-items:center;gap:4px;padding:3px 10px;font-family:inherit;font-size:11px;transition:all .15s;display:flex}.lp-btn-reset:hover{color:#f87171;background:#f871711a;border-color:#f871714d}.lp-center-loading{color:#8b8fa3;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;font-size:13px;display:flex}.lp-spinner{border:3px solid #2a2a3e;border-top-color:#7c6bf0;border-radius:50%;width:32px;height:32px;animation:.8s linear infinite lp-spin}@keyframes lp-spin{to{transform:rotate(360deg)}}.lp-center-error{color:#f87171;text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:20px;font-size:13px;display:flex}.lp-btn-retry{color:#f87171;cursor:pointer;background:#f871711a;border:1px solid #f871714d;border-radius:6px;padding:8px 20px;font-size:12px;font-weight:500;transition:all .15s}.lp-btn-retry:hover{background:#f8717133}.lp-ide-iframe{border:none;flex:1;width:100%}.lp-right{background:#fff;border-left:1px solid #e2e8f0;flex-direction:column;display:flex;overflow:hidden}.lp-right .ca-preview-browser,.lp-right .lp-preview-viewport,.lp-right .lp-preview-iframe{background:#fff}.lp-right .ca-preview-console{background:#fff;border-top:1px solid #e2e8f0}.lp-right .ca-preview-console-header{background:#f8fafc;border-bottom:1px solid #e2e8f0}.lp-right .ca-preview-console-tab{color:#3b82f6}.lp-right .ca-preview-console-output{color:#1e293b;background:#fff}.lp-right .ca-preview-console-placeholder span{color:#94a3b8}.lp-right .ca-preview-toolbar{background:#f1f5f9;border-bottom:1px solid #e2e8f0}.lp-right .ca-preview-url-input{color:#475569;background:#fff;border-color:#e2e8f0}.lp-right .ca-preview-url-field{color:#475569}.lp-right .ca-preview-url-field:focus{color:#1e293b}.lp-right .ca-preview-nav-btn{color:#64748b}.lp-right .ca-preview-nav-btn:hover{color:#1e293b}.lp-right .ca-preview-tb-btn{color:#64748b}.lp-right .ca-preview-tb-btn:hover{color:#1e293b}.lp-right .lp-right-placeholder{color:#94a3b8;background:#fff}.lp-right-header{border-bottom:1px solid #2a2a3e;flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.lp-right-title{color:#a78bfa;font-size:13px;font-weight:600}.lp-right-actions{gap:6px;display:flex}.lp-btn-preview{color:#8b8fa3;cursor:pointer;background:0 0;border:1px solid #3a3a5e;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:500;transition:all .15s}.lp-btn-preview:hover{color:#c9d1d9;border-color:#6366f1}.lp-btn-preview.active{color:#fff;background:#6366f1;border-color:#6366f1}.lp-btn-refresh{color:#8b8fa3;cursor:pointer;background:0 0;border:1px solid #3a3a5e;border-radius:6px;padding:4px 8px;font-size:14px;transition:all .15s}.lp-btn-refresh:hover{color:#c9d1d9;border-color:#6366f1}.lp-right-content{flex:1;overflow:hidden}.lp-preview-iframe,.lp-preview-viewport{background:#fff;border:none;width:100%;height:100%}.lp-right-placeholder{color:#5a5e73;text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;height:100%;padding:20px;display:flex}.lp-right-placeholder-icon{opacity:.5;font-size:40px}.lp-right-placeholder p{margin:0;font-size:13px}.lp-right-hint{color:#4a4e63;font-size:11px}.learning-code-complet-wrapper{align-items:center;gap:6px;margin:12px 0 18px;display:flex}.lp-btn-open-drawer,.lp-btn-bookmark,.lp-btn-step-download,.lp-btn-step-load-ide{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #7c6bf026;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;transition:all .2s;display:inline-flex;position:relative}.lp-btn-open-drawer:hover{color:#a78bfa;background:#7c6bf014;border-color:#7c6bf066}.lp-btn-open-drawer svg,.lp-btn-bookmark svg,.lp-btn-step-download svg,.lp-btn-step-load-ide svg{flex-shrink:0}.lp-btn-bookmark:hover{color:#f59e0b;background:#f59e0b14;border-color:#f59e0b66}.lp-btn-bookmark-saved,.lp-btn-bookmark-saved:hover{color:#f59e0b!important;background:#f59e0b1f!important;border-color:#f59e0b80!important}.lp-btn-bookmark-saved svg{fill:#f59e0b}.lp-step-done:after{content:" ✓";color:#10b981;margin-left:8px;font-weight:700}.lp-btn-step-download:hover{color:#10b981;background:#10b98114;border-color:#10b98166}.lp-btn-step-load-ide:hover{color:#3b82f6;background:#3b82f614;border-color:#3b82f666}.lp-step-loading-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;background:#0f172a99;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:fixed;inset:0}.lp-step-loading-spinner{border:4px solid #7c6bf033;border-top-color:#a78bfa;border-radius:50%;width:48px;height:48px;animation:.8s linear infinite lp-spin}.lp-step-loading-text{color:#e2e8f0;font-size:14px;font-weight:500}.lp-step-dot.bookmarked{opacity:.8;background:#f59e0b}.lp-bookmark-toast{z-index:9999;background:linear-gradient(135deg,#1e293b 0%,#0f172a 100%);border:1px solid #f59e0b40;border-radius:14px;align-items:center;gap:14px;min-width:320px;padding:14px 22px 14px 16px;animation:.35s cubic-bezier(.16,1,.3,1) lp-toast-in;display:flex;position:fixed;top:20px;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 12px 40px #0006,0 0 20px #f59e0b14}.lp-bookmark-toast-icon{background:#f59e0b1f;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.lp-bookmark-toast-content{flex:1}.lp-bookmark-toast-title{color:#f8fafc;margin-bottom:2px;font-size:13px;font-weight:600}.lp-bookmark-toast-detail{color:#94a3b8;font-size:11.5px;line-height:1.4}.lp-bookmark-toast-bar{background:linear-gradient(90deg,#f59e0b,#fbbf24);border-radius:0 0 14px 14px;height:3px;animation:3.5s linear forwards lp-toast-bar;position:absolute;bottom:0;left:0}@keyframes lp-toast-bar{0%{width:100%}to{width:0%}}@keyframes lp-toast-in{0%{opacity:0;transform:translate(-50%)translateY(-30px)scale(.95)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}.lp-step-highlight{border-left:3px solid #f59e0b;padding-left:10px;animation:2.5s ease-out lp-highlight-pulse}@keyframes lp-highlight-pulse{0%{background:#f59e0b1f}to{background:0 0}}.lp-wireframe-container{cursor:pointer;background:#f8fafc;border:1px solid #ffffff14;border-radius:12px;margin:16px 0;transition:border-color .2s,box-shadow .2s;position:relative;overflow:hidden}.lp-wireframe-container:hover{border-color:#7c6bf04d;box-shadow:0 4px 16px #0000001f}.lp-wireframe-content{pointer-events:none;height:200px;padding:8px;position:relative;overflow:hidden}.lp-wireframe-content>div{transform-origin:0 0;width:286%;transform:scale(.35)}.lp-wireframe-content:after{content:"";background:linear-gradient(#0000,#f8fafc);height:50px;position:absolute;bottom:0;left:0;right:0}.lp-wireframe-zoom-hint{color:#a78bfa;z-index:2;opacity:0;background:#0f172ad9;border-radius:6px;align-items:center;gap:5px;padding:4px 10px;font-size:11px;font-weight:500;transition:opacity .2s;display:flex;position:absolute;bottom:8px;right:8px}.lp-wireframe-container:hover .lp-wireframe-zoom-hint{opacity:1}.lp-wireframe-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9998;background:#000000b3;animation:.2s ease-out lp-fade-in;position:fixed;inset:0}.lp-wireframe-lightbox{z-index:9999;background:#fff;border-radius:16px;width:90vw;max-width:750px;max-height:85vh;padding:24px;animation:.3s cubic-bezier(.16,1,.3,1) lp-lightbox-in;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 20px 60px #0006}.lp-wireframe-lightbox-close{color:#64748b;cursor:pointer;background:#f1f5f9;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;transition:all .15s;display:flex;position:absolute;top:12px;right:14px}.lp-wireframe-lightbox-close:hover{color:#1e293b;background:#e2e8f0}.lp-wireframe-lightbox-title{color:#1e293b;margin-bottom:16px;font-size:14px;font-weight:600}.lp-wireframe-lightbox-body>div{max-width:100%!important;margin:0 auto!important}@keyframes lp-lightbox-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.9)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}.lp-drawer-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:998;background:#00000080;animation:.2s ease-out lp-fade-in;position:fixed;inset:0}@keyframes lp-fade-in{0%{opacity:0}to{opacity:1}}.lp-drawer{z-index:999;background:#12121f;border-left:1px solid #ffffff14;flex-direction:column;width:700px;max-width:90vw;height:100vh;animation:.3s cubic-bezier(.16,1,.3,1) lp-slide-in;display:flex;position:fixed;top:0;right:0;box-shadow:-8px 0 40px #0006}@keyframes lp-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.lp-drawer-header{background:#ffffff05;border-bottom:1px solid #ffffff14;flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.lp-drawer-header-left{align-items:center;gap:10px;display:flex}.lp-drawer-title{color:#e2e8f0;font-size:13px;font-weight:600}.lp-drawer-subtitle{color:#5a5a6e;margin-top:1px;font-size:11px}.lp-drawer-actions{align-items:center;gap:8px;display:flex}.lp-drawer-copy{color:#8b8fa3;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff14;border-radius:6px;align-items:center;gap:5px;padding:5px 12px;font-family:inherit;font-size:12px;transition:all .15s;display:inline-flex}.lp-drawer-copy:hover{color:#e2e8f0;background:#ffffff14}.lp-drawer-copy.copied{color:#10b981;border-color:#10b9814d}.lp-drawer-close{color:#8b8fa3;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff14;border-radius:6px;justify-content:center;align-items:center;width:30px;height:30px;font-size:14px;transition:all .15s;display:flex}.lp-drawer-close:hover{color:#ef4444;background:#ef44441a;border-color:#ef44444d}.lp-drawer-component-tabs{background:#0000004d;flex-shrink:0;gap:2px;padding:8px 12px 0;display:flex;overflow-x:auto}.lp-drawer-component-tab{color:#8b8b9e;cursor:pointer;white-space:nowrap;background:#ffffff0a;border:none;border-radius:8px 8px 0 0;padding:8px 16px;font-family:Space Grotesk,Inter,sans-serif;font-size:12px;font-weight:600;transition:all .15s}.lp-drawer-component-tab:hover{color:#d4d4dc;background:#ffffff14}.lp-drawer-component-tab.active{color:#4ecdc4;background:#4ecdc41a;border-bottom:2px solid #4ecdc4}.lp-drawer-tabs{background:#0003;border-bottom:1px solid #ffffff14;flex-wrap:wrap;flex-shrink:0;display:flex}.lp-drawer-tab{color:#8b8b9e;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;padding:10px 16px;font-family:Consolas,Fira Code,monospace;font-size:12px;transition:all .15s;display:flex}.lp-drawer-tab:hover{color:#d4d4dc;background:#ffffff08}.lp-drawer-tab.active{color:#d4d4dc;background:#7c6bf00f;border-bottom-color:#7c6bf0}.lp-drawer-tab-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.lp-drawer-tab-modified{background:#4ecdc4;border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-left:4px}.lp-drawer-code{scrollbar-width:thin;scrollbar-color:#ffffff1a transparent;flex:1;padding:0;overflow-y:auto}.lp-drawer-code::-webkit-scrollbar{width:5px}.lp-drawer-code::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}.lp-drawer-code-block{background:#0d1117;border:1px solid #ffffff14;border-radius:8px;margin:12px 16px;overflow:hidden}.lp-drawer-code-block pre{color:#c9d1d9;white-space:pre;tab-size:2;margin:0;padding:16px;font-family:Consolas,Monaco,Fira Code,monospace;font-size:13px;line-height:1.6;overflow-x:auto}.lp-drawer-code-block pre code{font-size:inherit;font-family:inherit;line-height:inherit;padding:0;background:0 0!important}.lp-drawer-code-block pre::-webkit-scrollbar{height:5px}.lp-drawer-code-block pre::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}.lp-drawer-placeholder{color:#5a5a6e;text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;height:100%;padding:60px 40px;font-size:13px;display:flex}.lp-drawer-placeholder svg{opacity:.3}.lp-project-download{margin-top:2rem;padding-bottom:2rem}.lp-btn-download-sources{color:#4ecdc4;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:8px;align-items:center;gap:8px;padding:10px 18px;font-size:.82rem;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.lp-btn-download-sources:hover{color:#6ee7de;background:#4ecdc41a;border-color:#4ecdc440}.pfr-container{--pfr-void:#0c0c14;--pfr-surface-0:#12121e;--pfr-surface-1:#181828;--pfr-surface-2:#1e1e30;--pfr-surface-3:#262640;--pfr-surface-4:#2e2e4a;--pfr-ink-0:#f0eef6;--pfr-ink-1:#c8c5d6;--pfr-ink-2:#8e8ba0;--pfr-ink-3:#5c5970;--pfr-spring:#6db33f;--pfr-spring-dim:#6db33f1f;--pfr-spring-border:#6db33f4d;--pfr-spring-glow:#6db33f26;--pfr-accent:#7c6bf0;--pfr-cyan:#4ecdc4;--pfr-amber:#f5b942;--pfr-green:#66bb6a;--pfr-ide-bg:#1e1e2e;--pfr-terminal-bg:#0e0e18;--pfr-font-ui:"IBM Plex Sans", system-ui, sans-serif;--pfr-font-code:"IBM Plex Mono", "Fira Code", monospace;--pfr-font-display:"Outfit", system-ui, sans-serif;--pfr-topbar-h:52px;--pfr-transition:.4s cubic-bezier(.4, 0, .2, 1);background:var(--pfr-void);width:100%;height:100vh;color:var(--pfr-ink-1);font-family:var(--pfr-font-ui);flex-direction:column;display:flex;overflow:hidden}.pfr-topbar{height:var(--pfr-topbar-h);background:var(--pfr-surface-2);border-bottom:1px solid #ffffff0f;flex-shrink:0;align-items:center;gap:16px;padding:0 20px;display:flex}.pfr-topbar-left{flex:1;align-items:center;gap:14px;min-width:0;display:flex}.pfr-badge{background:var(--pfr-spring-dim);border:1px solid var(--pfr-spring-border);color:var(--pfr-spring);font-size:10px;font-weight:700;font-family:var(--pfr-font-display);text-transform:uppercase;letter-spacing:1.2px;white-space:nowrap;border-radius:20px;flex-shrink:0;align-items:center;gap:6px;padding:4px 12px;display:inline-flex}.pfr-badge-dot{background:var(--pfr-spring);border-radius:50%;width:6px;height:6px;animation:2s ease-in-out infinite pfr-pulse-dot}@keyframes pfr-pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.7)}}.pfr-topbar-title{font-family:var(--pfr-font-display);color:var(--pfr-ink-0);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.pfr-topbar-meta{color:var(--pfr-ink-3);letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;font-size:11px;font-weight:500}.pfr-topbar-version{color:var(--pfr-cyan);font-size:10px;font-family:var(--pfr-font-code);white-space:nowrap}.pfr-topbar-progress{flex-shrink:0;align-items:center;gap:10px;margin-left:auto;display:flex}.pfr-progress-bar{background:var(--pfr-surface-4);border-radius:3px;width:140px;height:6px;overflow:hidden}.pfr-progress-fill{background:linear-gradient(90deg, var(--pfr-spring), #8cd453);border-radius:3px;height:100%;transition:width .6s}.pfr-progress-label{color:var(--pfr-spring);font-size:11px;font-weight:600;font-family:var(--pfr-font-display)}.pfr-mode-switcher{background:var(--pfr-surface-0);border-radius:8px;flex-shrink:0;align-items:center;gap:2px;margin-left:16px;padding:3px;display:flex}.pfr-mode-btn{color:var(--pfr-ink-3);font-family:var(--pfr-font-ui);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-size:12px;font-weight:500;transition:all .25s;display:flex}.pfr-mode-btn:hover{color:var(--pfr-ink-1);background:var(--pfr-surface-3)}.pfr-mode-btn.active{background:var(--pfr-spring);color:#fff;box-shadow:0 2px 8px #6db33f4d}.pfr-mode-btn svg{flex-shrink:0;width:14px;height:14px}.pfr-btn-reset-topbar{color:var(--pfr-spring);font-family:var(--pfr-font-ui);cursor:pointer;background:#6db33f1a;border:1px solid #6db33f4d;border-radius:6px;flex-shrink:0;align-items:center;gap:5px;padding:5px 12px;font-size:11px;font-weight:500;transition:all .2s;display:flex}.pfr-btn-reset-topbar svg{width:14px;height:14px}.pfr-btn-reset-topbar:hover{color:#8bc34a;background:#6db33f33;border-color:#6db33f80}.pfr-btn-quit{color:var(--pfr-ink-2);font-family:var(--pfr-font-ui);cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:6px;flex-shrink:0;align-items:center;gap:5px;padding:5px 12px;font-size:11px;font-weight:500;transition:all .2s;display:flex}.pfr-btn-quit:hover{color:#f06292;background:#f062921a;border-color:#f062924d}.pfr-layout{width:100%;transition:all var(--pfr-transition);flex:1;display:flex;overflow:hidden}.pfr-panel-left{background:var(--pfr-surface-1);transition:width var(--pfr-transition), min-width var(--pfr-transition);border-right:1px solid #ffffff0a;flex-direction:column;display:flex;overflow:hidden}.pfr-panel-left.pfr-mode-code{width:45%;min-width:400px}.pfr-panel-left.pfr-mode-preview{width:25%;min-width:280px}.pfr-steps-header{background:linear-gradient(180deg, var(--pfr-surface-2) 0%, var(--pfr-surface-1) 100%);border-bottom:1px solid #ffffff0a;margin:-24px -22px 20px;padding:16px 20px 12px}.pfr-sticky-current{z-index:6;background:var(--pfr-surface-2);opacity:0;pointer-events:none;border-bottom:1px solid #ffffff0f;align-items:center;gap:10px;margin:-24px -22px 0;padding:34px 22px 10px;transition:opacity .25s;display:flex;position:sticky;top:-24px}.pfr-sticky-current.visible{opacity:1;pointer-events:auto}.pfr-steps-header h3{font-family:var(--pfr-font-display);text-transform:uppercase;letter-spacing:1.5px;color:var(--pfr-ink-3);margin-bottom:12px;font-size:11px;font-weight:700}.pfr-steps-list{flex-direction:column;gap:2px;display:flex}.pfr-step-item{cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;padding:7px 12px;transition:all .2s;display:flex}.pfr-step-item:hover{background:#ffffff08}.pfr-step-item.completed .pfr-step-icon{background:var(--pfr-spring);color:#fff;border-color:var(--pfr-spring)}.pfr-step-item.current{background:var(--pfr-spring-dim);border:1px solid var(--pfr-spring-border)}.pfr-step-item.current .pfr-step-icon{background:var(--pfr-spring);color:#fff;border-color:var(--pfr-spring);box-shadow:0 0 12px #6db33f66}.pfr-step-icon{border:2px solid var(--pfr-surface-4);width:22px;height:22px;color:var(--pfr-ink-3);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:700;transition:all .2s;display:flex}.pfr-step-icon svg{width:12px;height:12px}.pfr-step-title{color:var(--pfr-ink-2);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:500;overflow:hidden}.pfr-step-item.completed .pfr-step-title{color:var(--pfr-ink-3)}.pfr-step-item.current .pfr-step-title{color:var(--pfr-ink-0);font-weight:600}.pfr-step-content{scrollbar-width:thin;scrollbar-color:var(--pfr-surface-4) transparent;flex:1;padding:24px 22px;overflow-y:auto}.pfr-step-content::-webkit-scrollbar{width:5px}.pfr-step-content::-webkit-scrollbar-thumb{background:var(--pfr-surface-4);border-radius:3px}.pfr-content-full,.pfr-panel-left.pfr-mode-preview .pfr-content-full{display:block}.pfr-step-content h2{font-family:var(--pfr-font-display);color:var(--pfr-ink-0);margin-bottom:6px;font-size:20px;font-weight:700;line-height:1.3}.pfr-step-content .pfr-step-subtitle{color:var(--pfr-ink-3);margin-bottom:20px;font-size:13px;line-height:1.5}.pfr-step-content p{color:var(--pfr-ink-1);margin-bottom:16px;font-size:13.5px;line-height:1.75}.pfr-step-content h3{font-family:var(--pfr-font-display);color:var(--pfr-ink-0);margin:24px 0 10px;font-size:15px;font-weight:700}.pfr-step-content ul{margin-bottom:16px;padding-left:18px}.pfr-step-content li{color:var(--pfr-ink-1);margin-bottom:4px;font-size:13px;line-height:1.7}.pfr-step-content li code,.pfr-step-content p code{background:var(--pfr-surface-3);font-family:var(--pfr-font-code);color:var(--pfr-spring);border-radius:4px;padding:1px 6px;font-size:12px}.pfr-step-content .lp-wireframe-container{background:var(--pfr-surface-1);border-color:#6db33f26;max-width:320px}.pfr-step-content .lp-wireframe-container:hover{border-color:var(--pfr-spring);box-shadow:0 4px 16px #6db33f26}.pfr-step-content .lp-wireframe-content{height:160px;padding:4px}.pfr-step-content .lp-wireframe-content:after{background:linear-gradient(transparent, var(--pfr-surface-1))}.pfr-step-content .lp-wireframe-zoom-hint{color:#fff;opacity:1;background:#6db33fe6;font-size:10px}.pfr-step-content pre{background:var(--pfr-surface-0);scrollbar-width:thin;scrollbar-color:var(--pfr-surface-4) transparent;border:1px solid #ffffff0f;border-radius:10px;margin:16px 0;padding:16px;overflow-x:auto}.pfr-step-content pre code{font-family:var(--pfr-font-code);color:var(--pfr-ink-1);font-size:12.5px;line-height:1.65}.pfr-step-actions{border-top:1px solid #ffffff0a;flex-wrap:wrap;gap:8px;margin-top:20px;padding-top:16px;display:flex}.pfr-btn{background:var(--pfr-surface-3);color:var(--pfr-ink-1);font-family:var(--pfr-font-ui);cursor:pointer;border:1px solid #ffffff14;border-radius:8px;align-items:center;gap:6px;padding:8px 16px;font-size:12px;font-weight:500;transition:all .2s;display:inline-flex}.pfr-btn:hover{background:var(--pfr-surface-4);color:var(--pfr-ink-0);transform:translateY(-1px);box-shadow:0 3px 10px #0000004d}.pfr-btn svg{width:14px;height:14px}.pfr-btn-primary{background:var(--pfr-spring);border-color:var(--pfr-spring);color:#fff;font-weight:600}.pfr-btn-primary:hover{color:#fff;background:#5da32f;border-color:#5da32f;box-shadow:0 3px 14px #6db33f59}.pfr-btn-sm{padding:6px 10px;font-size:11px}.pfr-btn-sm svg{width:12px;height:12px}.pfr-panel-center{background:var(--pfr-ide-bg);min-width:300px;transition:all var(--pfr-transition);flex-direction:column;flex:1;display:flex;position:relative}.pfr-ide-iframe{border:none;flex:1;width:100%}.pfr-ide-topbar{background:var(--pfr-surface-0);border-bottom:1px solid #ffffff0a;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;height:32px;padding:4px 12px;display:flex}.pfr-btn-reset{color:var(--pfr-ink-3);font-family:var(--pfr-font-ui);cursor:pointer;background:0 0;border:1px solid #ffffff14;border-radius:4px;align-items:center;gap:4px;padding:3px 10px;font-size:11px;transition:all .2s;display:flex}.pfr-btn-reset:hover{color:#f06292;background:#f062921a;border-color:#f062924d}.pfr-center-loading{color:var(--pfr-ink-2);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;font-size:14px;display:flex}.pfr-spinner{border:3px solid var(--pfr-surface-4);border-top-color:var(--pfr-spring);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite pfr-spin}@keyframes pfr-spin{to{transform:rotate(360deg)}}.pfr-center-error{color:var(--pfr-ink-2);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:20px;font-size:14px;display:flex}.pfr-btn-retry{border:1px solid var(--pfr-spring-border);background:var(--pfr-spring-dim);color:var(--pfr-spring);font-family:var(--pfr-font-ui);cursor:pointer;border-radius:8px;padding:8px 20px;font-size:13px;font-weight:500;transition:all .2s}.pfr-btn-retry:hover{background:var(--pfr-spring);color:#fff}.pfr-panel-right{background:var(--pfr-surface-1);transition:width var(--pfr-transition), opacity var(--pfr-transition);border-left:1px solid #ffffff0a;flex-direction:column;display:flex;overflow:hidden}.pfr-panel-right.pfr-collapsed{cursor:pointer;width:32px!important;min-width:32px!important}.pfr-panel-right.pfr-expanded{width:30%;min-width:280px}.pfr-preview-toggle-bar{cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:8px;width:32px;height:100%;transition:background .2s;display:flex}.pfr-preview-toggle-bar:hover{background:var(--pfr-surface-3)}.pfr-toggle-icon{width:18px;height:18px;color:var(--pfr-ink-3);transition:color .2s}.pfr-preview-toggle-bar:hover .pfr-toggle-icon{color:var(--pfr-spring)}.pfr-toggle-text{writing-mode:vertical-rl;text-orientation:mixed;color:var(--pfr-ink-3);text-transform:uppercase;letter-spacing:1.5px;font-size:10px;font-weight:600;font-family:var(--pfr-font-display)}.pfr-preview-toggle-bar:hover .pfr-toggle-text{color:var(--pfr-ink-1)}.pfr-panel-right.pfr-collapsed .pfr-preview-content{display:none}.pfr-panel-right.pfr-collapsed .pfr-preview-toggle-bar{display:flex}.pfr-panel-right.pfr-expanded .pfr-preview-toggle-bar{display:none}.pfr-panel-right.pfr-expanded .pfr-preview-content{flex-direction:column;height:100%;display:flex}.pfr-preview-header{background:var(--pfr-surface-2);border-bottom:1px solid #ffffff0a;flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.pfr-preview-header-left{align-items:center;gap:8px;display:flex}.pfr-preview-header-left span{color:var(--pfr-ink-1);font-size:12px;font-weight:600;font-family:var(--pfr-font-display)}.pfr-preview-collapse-btn{background:var(--pfr-surface-4);width:26px;height:26px;color:var(--pfr-ink-2);cursor:pointer;border:none;border-radius:6px;justify-content:center;align-items:center;transition:all .2s;display:flex}.pfr-preview-collapse-btn:hover{background:var(--pfr-spring-dim);color:var(--pfr-spring)}.pfr-preview-url-bar{background:var(--pfr-surface-0);border-bottom:1px solid #ffffff0a;flex-shrink:0;align-items:center;gap:8px;padding:6px 14px;display:flex}.pfr-preview-url-bar .pfr-url-icon{width:12px;height:12px;color:var(--pfr-spring);flex-shrink:0}.pfr-preview-url-bar input{font-family:var(--pfr-font-code);color:var(--pfr-ink-1);background:#ffffff0a;border:1px solid #ffffff14;border-radius:4px;outline:none;flex:1;padding:4px 8px;font-size:11px;transition:border-color .2s}.pfr-preview-url-bar input:focus{border-color:var(--pfr-spring);background:#ffffff0f}.pfr-url-go-btn{width:26px;height:26px;color:var(--pfr-ink-2);cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;transition:all .2s;display:flex}.pfr-url-go-btn:hover{border-color:var(--pfr-spring);color:var(--pfr-spring);background:#6db33f26}.pfr-preview-body{background:#fafafa;flex:1;overflow:hidden}.pfr-preview-iframe{border:none;width:100%;height:100%}.pfr-preview-placeholder{color:var(--pfr-ink-2);text-align:center;background:var(--pfr-surface-0);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:20px;font-size:14px;display:flex}.pfr-preview-placeholder-icon{opacity:.5;font-size:48px}.pfr-preview-placeholder p{color:var(--pfr-ink-2);margin:0;font-size:13px}.pfr-preview-placeholder .pfr-preview-hint{color:var(--pfr-ink-3);max-width:300px;font-size:12px}.pfr-bookmark-toast{z-index:9999;background:var(--pfr-surface-2);border:1px solid var(--pfr-spring-border);border-radius:12px;align-items:center;gap:12px;padding:14px 20px;animation:.4s pfr-toast-in;display:flex;position:fixed;top:20px;right:20px;box-shadow:0 8px 30px #0006}@keyframes pfr-toast-in{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.pfr-bookmark-toast-icon{flex-shrink:0}.pfr-bookmark-toast-title{color:var(--pfr-ink-0);font-size:13px;font-weight:600}.pfr-bookmark-toast-detail{color:var(--pfr-ink-3);margin-top:2px;font-size:11px}.pfr-drawer-overlay{z-index:1000;background:#0009;position:fixed;inset:0}.pfr-drawer{background:var(--pfr-surface-1);z-index:1001;border-left:1px solid #ffffff0f;flex-direction:column;width:560px;max-width:90vw;height:100vh;animation:.3s pfr-drawer-in;display:flex;position:fixed;top:0;right:0;box-shadow:-8px 0 30px #0006}@keyframes pfr-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.pfr-drawer-header{border-bottom:1px solid #ffffff0f;flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.pfr-drawer-header-left{align-items:center;gap:12px;display:flex}.pfr-drawer-title{font-family:var(--pfr-font-display);color:var(--pfr-ink-0);font-size:15px;font-weight:700}.pfr-drawer-subtitle{color:var(--pfr-ink-3);margin-top:2px;font-size:11px}.pfr-drawer-actions{align-items:center;gap:8px;display:flex}.pfr-drawer-copy{background:var(--pfr-surface-3);color:var(--pfr-ink-1);font-family:var(--pfr-font-ui);cursor:pointer;border:1px solid #ffffff14;border-radius:6px;align-items:center;gap:5px;padding:6px 14px;font-size:12px;transition:all .2s;display:flex}.pfr-drawer-copy:hover{background:var(--pfr-surface-4);color:var(--pfr-ink-0)}.pfr-drawer-copy.copied{background:var(--pfr-spring-dim);border-color:var(--pfr-spring-border);color:var(--pfr-spring)}.pfr-drawer-close{background:var(--pfr-surface-3);width:30px;height:30px;color:var(--pfr-ink-2);cursor:pointer;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:16px;transition:all .2s;display:flex}.pfr-drawer-close:hover{color:#f06292;background:#f0629226}.pfr-drawer-component-tabs{border-bottom:1px solid #ffffff0a;flex-shrink:0;gap:2px;padding:8px 16px;display:flex;overflow-x:auto}.pfr-drawer-component-tab{color:var(--pfr-ink-3);font-family:var(--pfr-font-ui);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:500;transition:all .15s}.pfr-drawer-component-tab:hover{color:var(--pfr-ink-1);background:var(--pfr-surface-3)}.pfr-drawer-component-tab.active{background:var(--pfr-spring-dim);color:var(--pfr-spring)}.pfr-drawer-tabs{border-bottom:1px solid #ffffff0a;flex-shrink:0;gap:2px;padding:6px 16px;display:flex;overflow-x:auto}.pfr-drawer-tab{color:var(--pfr-ink-3);font-family:var(--pfr-font-ui);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:5px;align-items:center;gap:6px;padding:5px 12px;font-size:11.5px;transition:all .15s;display:flex}.pfr-drawer-tab:hover{background:var(--pfr-surface-3);color:var(--pfr-ink-1)}.pfr-drawer-tab.active{background:var(--pfr-surface-2);color:var(--pfr-ink-0)}.pfr-drawer-tab-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.pfr-drawer-tab-modified{background:var(--pfr-spring);border-radius:50%;flex-shrink:0;width:5px;height:5px}.pfr-drawer-code{flex:1;padding:0;overflow-y:auto}.pfr-drawer-code pre{background:var(--pfr-surface-0);font-family:var(--pfr-font-code);color:var(--pfr-ink-1);margin:0;padding:16px;font-size:12.5px;line-height:1.65;overflow-x:auto}.pfr-btn-restore{animation:.4s pfr-restore-fade-in;color:#f59e0b!important;background:#f59e0b1f!important;border-color:#f59e0b59!important;font-weight:600!important}.pfr-btn-restore:hover{color:#fbbf24!important;background:#f59e0b38!important;border-color:#f59e0b80!important;box-shadow:0 3px 14px #f59e0b33!important}@keyframes pfr-restore-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.pfr-step-loading-overlay{z-index:9998;background:#0c0c14b3;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:fixed;inset:0}.pfr-step-loading-text{color:var(--pfr-ink-1);font-size:14px}@keyframes pfr-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.pfr-step-content>*{animation:.3s forwards pfr-fade-in}@media (width<=1100px){.pfr-panel-left.pfr-mode-code{width:40%;min-width:320px}.pfr-panel-left.pfr-mode-preview,.pfr-panel-right.pfr-expanded{width:28%;min-width:240px}.pfr-topbar-title{max-width:200px}}@media (width<=860px){.pfr-topbar{flex-wrap:wrap;gap:8px;height:auto;padding:10px 16px}.pfr-topbar-progress{order:3;width:100%}.pfr-progress-bar{flex:1}.pfr-panel-left.pfr-mode-code,.pfr-panel-left.pfr-mode-preview{width:100%!important;min-width:unset!important}.pfr-layout{flex-direction:column}.pfr-panel-center{min-height:50vh}.pfr-panel-right.pfr-expanded{height:40vh;width:100%!important;min-width:unset!important}.pfr-panel-right.pfr-collapsed{width:100%!important;height:32px!important}.pfr-preview-toggle-bar{flex-direction:row;width:100%;height:32px}.pfr-toggle-text{writing-mode:horizontal-tb}}.sd-box{background:#12162280;border:1px solid #2d3348;border-radius:8px;align-items:center;margin:12px 16px 8px;transition:border-color .2s,box-shadow .2s;display:flex;overflow:hidden}.sd-box:focus-within{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61f}.sd-input{color:#e2e8f0;background:0 0;border:none;outline:none;flex:1;min-width:0;padding:9px 12px;font-family:inherit;font-size:13px}.sd-input::placeholder{color:#64748b;font-size:12px}.sd-btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:9px 12px;transition:color .2s;display:flex}.sd-btn:hover:not(:disabled){color:#3b82f6}.sd-btn:disabled{opacity:.3;cursor:not-allowed}.sd-spinner{border:2px solid #334155;border-top-color:#3b82f6;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite sd-spin;display:inline-block}@keyframes sd-spin{to{transform:rotate(360deg)}}.sd-overlay{z-index:998;background:#00000059;animation:.2s sd-fade;position:fixed;inset:0}@keyframes sd-fade{0%{opacity:0}to{opacity:1}}.sd-drawer{z-index:999;background:#161b2e;border-left:1px solid #232942;flex-direction:column;width:420px;height:100vh;transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;right:0;transform:translate(100%);box-shadow:-6px 0 24px #00000059}.sd-drawer--open{transform:translate(0)}.sd-header{border-bottom:1px solid #232942;flex-shrink:0;justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.sd-header-title{color:#cbd5e1;font-size:14px;font-weight:500}.sd-count{color:#fbbf24;font-size:15px;font-weight:700}.sd-query{color:#fbbf24;font-style:italic;font-weight:600}.sd-close{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px;transition:color .2s,background .2s;display:flex}.sd-close:hover{color:#f1f5f9;background:#ffffff0f}.sd-body{flex:1;padding:8px 16px 16px;overflow-y:auto}.sd-body::-webkit-scrollbar{width:5px}.sd-body::-webkit-scrollbar-track{background:0 0}.sd-body::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}.sd-body::-webkit-scrollbar-thumb:hover{background:#475569}.sd-empty{text-align:center;flex-direction:column;align-items:center;padding:60px 20px;display:flex}.sd-empty-title{color:#94a3b8;margin:16px 0 6px;font-size:15px;font-weight:600}.sd-empty-hint{color:#64748b;margin:0;font-size:12px}.sd-card{cursor:pointer;border-bottom:1px solid #1e2540;padding:14px 16px;transition:background .15s;animation:.25s both sd-up}@keyframes sd-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sd-card:hover{background:#3b82f60f}.sd-card:last-child{border-bottom:none}.sd-card-module{color:#64748b;letter-spacing:.5px;margin-bottom:4px;font-size:11px;font-weight:600}.sd-card-title{color:#e2e8f0;margin-bottom:6px;font-size:14px;font-weight:700;line-height:1.35}.sd-card-excerpt{margin-top:4px}.sd-card-excerpt p{color:#94a3b8;word-break:break-word;margin:0 0 6px;font-size:13px;line-height:1.5}.sd-hl{color:#fbbf24;background:#fbbf244d;border-radius:3px;padding:1px 4px;font-style:normal;font-weight:700}.sd-badge{letter-spacing:.5px;color:#e2e8f0;background:#2563eb;border-radius:4px;padding:3px 10px;font-size:10px;font-weight:700;display:inline-block}.sd-footer{color:#64748b;text-align:center;border-top:1px solid #232942;flex-shrink:0;padding:12px 20px;font-size:12px}@media (width<=768px){.sd-drawer{width:100%}}:root{--bg-sidebar:#1a1e2a;--bg-sidebar-hover:#242938;--bg-sidebar-active:#2d3348;--ink-sidebar:#a0a4b8;--ink-sidebar-active:#fff}.learning-with-sidebar{height:100vh;display:flex;overflow:hidden}.learning-with-sidebar>.ls-main{overflow:hidden auto}.learning-with-sidebar .ls-main .content-scroll,.learning-with-sidebar .ls-main .lesson-page,.learning-with-sidebar .ls-main .lesson-content,.learning-with-sidebar .ls-main [class*=lesson-container]{width:100%;max-width:none}.ls-sidebar{background:var(--bg-sidebar);width:320px;color:var(--ink-sidebar);top:0;left:var(--cand-sidebar-w,210px);z-index:8;border-right:1px solid #ffffff0f;flex-direction:column;flex-shrink:0;height:calc(100vh - 56px);display:flex;position:fixed;overflow:hidden}.ls-header{border-bottom:1px solid #ffffff14;flex-shrink:0;padding:16px 20px}.ls-brand{align-items:center;gap:10px;margin-bottom:14px;display:flex}.ls-brand-mark{background:var(--accent,#0f7b6c);width:28px;height:28px;font-family:var(--mono,"IBM Plex Mono", monospace);color:#fff;border-radius:6px;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.ls-brand-name{color:#fff;font-size:14px;font-weight:700}.ls-brand-name b{color:var(--accent,#0f7b6c)}.ls-course{background:#ffffff0d;border-radius:8px;align-items:center;gap:10px;padding:8px 12px;display:flex}.ls-course-icon{width:36px;height:36px;font-family:var(--mono,"IBM Plex Mono", monospace);color:#fff;background:#e76f00;border-radius:8px;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:flex}.ls-course-info{flex:1}.ls-course-title{color:#fff;font-size:14px;font-weight:600}.ls-course-meta{color:var(--ink-sidebar);margin-top:2px;font-size:11px}.ls-progress{align-items:center;gap:10px;margin-top:12px;display:flex}.ls-progress-bar{background:#ffffff1a;border-radius:2px;flex:1;height:4px;overflow:hidden}.ls-progress-fill{background:var(--green,#22c55e);border-radius:2px;width:0%;height:100%;transition:width .3s}.ls-progress-text{font-family:var(--mono,"IBM Plex Mono", monospace);color:var(--ink-sidebar);white-space:nowrap;font-size:11px}.ls-nav{flex:1;padding:8px 0 16px;overflow-y:auto}.ls-nav::-webkit-scrollbar{width:4px}.ls-nav::-webkit-scrollbar-track{background:0 0}.ls-nav::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.ls-nav{scrollbar-width:thin;scrollbar-color:#ffffff26 transparent}.ls-section{margin-bottom:2px}.ls-section-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:10px 20px;transition:background .15s;display:flex}.ls-section-header:hover{background:var(--bg-sidebar-hover)}.ls-section-num{font-family:var(--mono,"IBM Plex Mono", monospace);color:var(--ink-sidebar);text-align:center;background:#ffffff14;border-radius:4px;min-width:24px;padding:2px 6px;font-size:10px;font-weight:600}.ls-section-title{color:#ccc;flex:1;font-size:13px;font-weight:600}.ls-section-arrow{color:var(--ink-sidebar);font-size:10px;transition:transform .2s}.ls-section.open .ls-section-arrow{transform:rotate(90deg)}.ls-section-count{font-family:var(--mono,"IBM Plex Mono", monospace);color:var(--ink-sidebar);font-size:10px}.ls-lessons{padding:0 0 4px;display:none}.ls-section.open .ls-lessons{display:block}.ls-section .ls-lessons--animated{max-height:0;transition:max-height .25s ease-out;display:block;overflow:hidden}.ls-section.open .ls-lessons--animated{max-height:2000px;transition:max-height .4s ease-in}.ls-lesson{cursor:pointer;color:var(--ink-sidebar);align-items:center;gap:10px;padding:7px 20px 7px 44px;font-size:12.5px;transition:all .15s;display:flex}.ls-lesson:hover{background:var(--bg-sidebar-hover);color:#ddd}.ls-lesson.active{background:var(--bg-sidebar-active);color:var(--ink-sidebar-active)}.ls-lesson.completed{color:var(--green,#22c55e)}.ls-lesson-dot{background:#fff3;border-radius:50%;flex-shrink:0;width:6px;height:6px}.ls-lesson.active .ls-lesson-dot{background:var(--accent,#0f7b6c);box-shadow:0 0 6px var(--accent,#0f7b6c)}.ls-lesson.completed .ls-lesson-dot{background:var(--green,#22c55e)}.ls-lesson-title{flex:1}.ls-lesson-check{opacity:0;font-size:11px;transition:opacity .2s}.ls-lesson.completed .ls-lesson-check{opacity:1;color:var(--green,#22c55e)}.learning-with-sidebar--nosidebar{height:100vh;display:flex}.learning-with-sidebar--nosidebar .ls-main{flex-direction:column;flex:1;height:100vh;margin-left:46px;display:flex;overflow:hidden}.learning-with-sidebar--nosidebar .ls-main .learning-lesson-page{flex-direction:column;flex:1;max-width:100%;height:auto;padding:0;display:flex;overflow:hidden}.ls-main{z-index:1;flex:1;min-width:0;margin-left:320px;position:relative;overflow:hidden auto}.ls-main::-webkit-scrollbar{width:6px}.ls-main::-webkit-scrollbar-thumb{background:#00000026;border-radius:3px}.ls-main .learning-lesson-page{max-width:none;height:auto;overflow:visible}.ls-sidebar-toggle{z-index:1001;background:var(--bg-sidebar);color:#fff;cursor:pointer;border:1px solid #ffffff1a;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;transition:background .15s;display:none;position:fixed;top:10px;left:10px}.ls-sidebar-toggle:hover{background:var(--bg-sidebar-hover)}.ls-sidebar-overlay{z-index:999;background:#00000080;display:none;position:fixed;inset:0}@media (width<=900px){.ls-sidebar{z-index:1000;transition:transform .25s;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:4px 0 24px #0000004d}.ls-sidebar.open{transform:translate(0)}.ls-sidebar-toggle{display:flex}.ls-sidebar-overlay.visible{display:block}.ls-main{width:100%}}@media (width<=600px){.ls-sidebar{width:280px}}.lsr-sidebar{z-index:9;background:#1e2233;border-right:1px solid #ffffff0f;flex-direction:column;flex-shrink:0;align-items:center;width:46px;height:100vh;padding:8px 0;transition:width .25s;display:flex;position:fixed;top:0;left:48px;overflow:hidden}.lsr-course-mini{width:32px;height:32px;font-family:"IBM Plex Mono", var(--mono,monospace);color:#fff;cursor:pointer;background:#e76f00;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin-bottom:10px;font-size:10px;font-weight:700;display:flex}.lsr-sep{background:#ffffff14;flex-shrink:0;width:22px;height:1px;margin:4px 0}.lsr-pills-scroll{scrollbar-width:none;flex-direction:column;flex:1;align-items:center;gap:4px;padding-bottom:60px;display:flex;overflow:hidden auto}.lsr-pills-scroll::-webkit-scrollbar{display:none}.lsr-pill{width:32px;height:32px;font-family:"IBM Plex Mono", var(--mono,monospace);color:#6b7280;cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin-bottom:3px;font-size:10px;font-weight:600;text-decoration:none;transition:all .15s;display:flex;position:relative}.lsr-pill:hover{color:#fff;background:#242938}.lsr-pill.active{color:#0f7b6c;background:#0f7b6c26}.lsr-tip{color:#fff;white-space:nowrap;z-index:30;pointer-events:none;background:#252a3a;border-radius:5px;padding:4px 10px;font-size:11px;display:none;position:absolute;top:50%;left:50px;transform:translateY(-50%);box-shadow:0 4px 12px #0006}.lsr-pill:hover .lsr-tip{display:block}.tdm-projets-gallery{max-width:900px;margin:0 auto;padding:1.5rem}.tdm-projets-header{text-align:center;margin-bottom:2rem}.tdm-projets-header h2{color:var(--ink-1,#1e293b);margin:0 0 6px;font-size:1.3rem;font-weight:700}.tdm-projets-subtitle{color:var(--ink-3,#94a3b8);margin:0;font-size:.85rem}.tdm-projets-group{margin-bottom:2rem}.tdm-projets-niveau{color:var(--ink-2,#475569);border-bottom:2px solid var(--line,#e2e8f0);margin:0 0 12px;padding-bottom:8px;font-size:.95rem;font-weight:600}.tdm-projets-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;display:grid}.tdm-projet-card{cursor:pointer;background:#fff;border-radius:14px;transition:transform .2s,box-shadow .2s;position:relative;overflow:hidden;box-shadow:0 1px 4px #0000000f}.tdm-projet-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px #0000001a}.tdm-projet-wireframe{background:#f8fafc;height:180px;padding:8px;position:relative;overflow:hidden}.tdm-projet-wireframe>div{transform-origin:0 0;pointer-events:none;width:286%;transform:scale(.35)}.tdm-projet-wireframe:after{content:"";background:linear-gradient(#0000,#f8fafc);height:40px;position:absolute;bottom:0;left:0;right:0}.tdm-projet-placeholder{color:#94a3b8;background:#f1f5f9;justify-content:center;align-items:center;height:180px;font-size:.85rem;display:flex}.tdm-projet-info{padding:12px 14px}.tdm-projet-titre{color:#1e293b;margin-bottom:4px;font-size:.9rem;font-weight:600}.tdm-projet-meta{color:#94a3b8;gap:12px;font-size:.75rem;display:flex}.tdm-projet-zoom-hint{color:#fff;opacity:0;background:#0f172ab3;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;transition:opacity .2s;display:flex;position:absolute;top:8px;right:8px}.tdm-projet-card:hover .tdm-projet-zoom-hint{opacity:1}.tdm-projets-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:998;background:#0009;animation:.2s lp-fade-in;position:fixed;inset:0}.tdm-projets-lightbox{z-index:999;background:#fff;border-radius:16px;width:90vw;max-width:750px;max-height:85vh;padding:28px;animation:.3s cubic-bezier(.16,1,.3,1) lp-lightbox-in;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 20px 60px #00000059}.tdm-projets-lightbox-close{color:#64748b;cursor:pointer;background:#f1f5f9;border:none;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:flex;position:absolute;top:14px;right:16px}.tdm-projets-lightbox-close:hover{color:#1e293b;background:#e2e8f0}.tdm-projets-lightbox-title{color:#1e293b;margin-bottom:4px;font-size:1.1rem;font-weight:700}.tdm-projets-lightbox-meta{color:#94a3b8;margin-bottom:20px;font-size:.8rem}.tdm-projets-lightbox-body>div{max-width:100%!important;margin:0 auto!important}.tdm-projets-lightbox-link{color:#fff;background:#2563eb;border-radius:8px;margin-top:20px;padding:10px 24px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .2s;display:inline-block}.tdm-projets-lightbox-link:hover{background:#1d4ed8}
