@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cinzel-latin-600-normal-Dd5YO2UX.woff2) format("woff2"),url(/assets/cinzel-latin-600-normal-CH_LB4su.woff) format("woff")}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-latin-700-normal-Dkw14w9r.woff2) format("woff2"),url(/assets/cinzel-latin-700-normal-C-gK7hA8.woff) format("woff")}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cinzel-latin-ext-600-normal-BEFdM_VE.woff2) format("woff2"),url(/assets/cinzel-latin-ext-600-normal-BY9Mq9iK.woff) format("woff")}@font-face{font-family:Cinzel;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/cinzel-latin-ext-700-normal-C24KFjuG.woff2) format("woff2"),url(/assets/cinzel-latin-ext-700-normal-CORa-yIv.woff) format("woff")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-500-normal-BsRWmXhO.woff2) format("woff2"),url(/assets/cormorant-garamond-latin-500-normal-zIXX3Q-H.woff) format("woff")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cormorant-garamond-latin-600-normal-Co1r35X9.woff2) format("woff2"),url(/assets/cormorant-garamond-latin-600-normal-2CBVLo0M.woff) format("woff")}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-500-italic-Y14P-dkT.woff2) format("woff2"),url(/assets/cormorant-garamond-latin-500-italic-DhNIfkTX.woff) format("woff")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-ext-500-normal-CH1kM7og.woff2) format("woff2"),url(/assets/cormorant-garamond-latin-ext-500-normal-DYeaGGzO.woff) format("woff")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cormorant-garamond-latin-ext-600-normal-DaBc-lu7.woff2) format("woff2"),url(/assets/cormorant-garamond-latin-ext-600-normal-Dk3-quAP.woff) format("woff")}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-ext-500-italic-CE7zdTnu.woff2) format("woff2"),url(/assets/cormorant-garamond-latin-ext-500-italic-CalKM9tT.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2) format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2) format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2) format("woff2"),url(/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-ext-600-normal-DxxdqCpr.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-600-normal-VcznFIpX.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-ext-700-normal-BQnZhY3m.woff2) format("woff2"),url(/assets/space-grotesk-latin-ext-700-normal-HVCqSBdx.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff")}:root{color-scheme:light;overflow-y:auto;scrollbar-gutter:stable;--brand-start: #2e7daf;--brand-end: #1e5f8a;--brand-gradient: linear-gradient(135deg, var(--brand-start) 0%, var(--brand-end) 100%);--font-mono: "IBM Plex Mono", monospace;--font-display: "Space Grotesk", sans-serif;--bg-page: #f5f7fa;--bg-card: #ffffff;--bg-subtle: #f5f7fb;--bg-hover: #f0f2f8;--text-primary: #262b38;--text-secondary: #63697b;--text-muted: #8991a3;--text-on-brand: #ffffff;--border-color: #e4e7ee;--border-color-strong: #d3d8e3;--shadow-sm: 0 2px 8px rgba(23, 28, 43, .06);--shadow-md: 0 4px 16px rgba(23, 28, 43, .1);--shadow-lg: 0 8px 28px rgba(23, 28, 43, .14);--color-success-bg: #d4edda;--color-success-text: #155724;--color-error-bg: #fdecea;--color-error-text: #c0392b;--color-warning-bg: #fff3cd;--color-warning-text: #856404;--color-info-bg: #f0f7ff;--color-info-text: #2f6fa8;--code-bg: #2d3748;--code-header-bg: #1a202c;--code-text: #e2e8f0;--code-muted: #8b9bb4;--code-inline-bg: #f5f7fa;--code-inline-text: #b35900;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--brand-start: #6fbee8;--brand-end: #4a9bc9;--bg-page: #12141b;--bg-card: #1b1e28;--bg-subtle: #21242f;--bg-hover: #262a37;--text-primary: #e7e9f0;--text-secondary: #a4aabd;--text-muted: #767c8e;--border-color: #2b2f3d;--border-color-strong: #383d4e;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .35);--shadow-md: 0 4px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 8px 28px rgba(0, 0, 0, .55);--color-success-bg: rgba(72, 187, 120, .15);--color-success-text: #68d391;--color-error-bg: rgba(245, 101, 101, .15);--color-error-text: #fc8181;--color-warning-bg: rgba(236, 201, 75, .15);--color-warning-text: #f6e05e;--color-info-bg: rgba(102, 126, 234, .15);--color-info-text: #90a4f0;--code-inline-bg: #262a37;--code-inline-text: #e8a575}}:root[data-theme=dark]{color-scheme:dark;--brand-start: #6fbee8;--brand-end: #4a9bc9;--bg-page: #12141b;--bg-card: #1b1e28;--bg-subtle: #21242f;--bg-hover: #262a37;--text-primary: #e7e9f0;--text-secondary: #a4aabd;--text-muted: #767c8e;--border-color: #2b2f3d;--border-color-strong: #383d4e;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .35);--shadow-md: 0 4px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 8px 28px rgba(0, 0, 0, .55);--color-success-bg: rgba(72, 187, 120, .15);--color-success-text: #68d391;--color-error-bg: rgba(245, 101, 101, .15);--color-error-text: #fc8181;--color-warning-bg: rgba(236, 201, 75, .15);--color-warning-text: #f6e05e;--color-info-bg: rgba(102, 126, 234, .15);--color-info-text: #90a4f0;--code-inline-bg: #262a37;--code-inline-text: #e8a575}body{background-color:var(--bg-page);color:var(--text-primary);transition:background-color .2s ease,color .2s ease}.auth-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--brand-gradient);padding:20px}.auth-card{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-lg);padding:40px;width:100%;max-width:500px}.auth-header{text-align:center;margin-bottom:30px}.auth-header h1{color:var(--text-primary);font-family:var(--font-display);margin:0 0 10px;font-size:28px}.auth-header p{color:var(--text-secondary);margin:0;font-size:14px}.auth-form{display:flex;flex-direction:column;gap:20px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{color:var(--text-primary);font-family:var(--font-mono);font-size:13px;font-weight:500}.form-group label:after{content:":";color:var(--text-muted)}.form-group input{padding:12px 15px;border:1px solid var(--border-color);border-radius:6px;font-size:14px;background:var(--bg-card);color:var(--text-primary);transition:all .3s ease}.form-group input:focus{outline:none;border-color:var(--brand-start);box-shadow:0 0 0 3px #2e7daf26}.form-group input.error{border-color:var(--color-error-text)}.form-group input:disabled{background-color:var(--bg-subtle);cursor:not-allowed}.password-input-wrapper{position:relative;display:flex}.password-input-wrapper input{flex:1;padding-right:84px}.password-toggle-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;padding:6px 8px;font-family:var(--font-mono);font-size:12px;line-height:1;cursor:pointer;color:var(--text-secondary)}.password-toggle-btn:hover{color:var(--text-primary)}.password-toggle-btn:disabled{cursor:not-allowed;opacity:.5}.error-message{color:var(--color-error-text);font-size:12px;margin-top:4px}.alert{padding:12px 15px;border-radius:6px;margin-bottom:20px;font-size:14px}.alert-error{background-color:var(--color-error-bg);color:var(--color-error-text);border:1px solid var(--color-error-text)}.alert-success{background-color:var(--color-success-bg);color:var(--color-success-text);border:1px solid var(--color-success-text)}.alert-warning{background-color:var(--color-warning-bg);color:var(--color-warning-text);border:1px solid var(--color-warning-text)}.form-options{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;width:100%;margin:-10px 0 10px}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;color:var(--text-secondary)}.checkbox-label input[type=checkbox]{cursor:pointer;width:16px;height:16px}.checkbox-label span{-webkit-user-select:none;user-select:none}.forgot-link{color:var(--brand-start);text-decoration:none;font-size:14px;font-weight:500}.forgot-link:hover{text-decoration:underline}.password-strength{margin-top:8px}.strength-bar{height:4px;background-color:var(--border-color);border-radius:2px;overflow:hidden;margin-bottom:6px}.strength-fill{height:100%;transition:all .3s ease;border-radius:2px}.strength-label{font-size:12px;font-weight:500;display:block}.btn{padding:12px 24px;border:none;border-radius:6px;font-family:var(--font-mono);font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease}.btn-primary{background:var(--brand-gradient);color:#fff}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 15px #2e7daf59}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-block{width:100%;margin-top:10px}.auth-footer{text-align:center;margin-top:25px;padding-top:25px;border-top:1px solid var(--border-color)}.auth-footer p{color:var(--text-secondary);font-size:14px;margin:0}.auth-footer a{color:var(--brand-start);text-decoration:none;font-weight:500}.auth-footer a:hover{text-decoration:underline}.loading-container{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px}.spinner{width:50px;height:50px;border:4px solid var(--bg-subtle);border-top:4px solid var(--brand-start);border-radius:50%;animation:spin 1s linear infinite}@media(max-width:1024px){.auth-card{max-width:90%}}@media(max-width:768px){.auth-card{max-width:95%;padding:35px 25px}.auth-header h1{font-size:24px}.form-row{grid-template-columns:1fr}.form-options{flex-direction:column;align-items:flex-start;gap:10px}.forgot-link{margin-left:24px}}@media(max-width:480px){.auth-container{padding:10px}.auth-card{max-width:100%;padding:25px 15px;border-radius:8px}.auth-header h1{font-size:22px}.auth-header p,.form-group label{font-size:13px}.form-group input{padding:10px 12px;font-size:13px}.form-row{grid-template-columns:1fr;gap:20px}.btn{padding:10px 20px;font-size:13px}.alert{padding:10px 12px;font-size:13px}.strength-label{font-size:11px}.checkbox-label{font-size:13px}.forgot-link{font-size:13px;margin-left:0}.auth-footer{font-size:13px}}@media(max-width:360px){.auth-card{padding:20px 12px}.auth-header h1{font-size:20px}}.main-layout{min-height:100vh;width:100%;display:flex;flex-direction:column;background-color:var(--bg-page)}.main-content{flex:1;display:flex;flex-direction:column}.main-header{background:var(--bg-card);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100}.header-container{max-width:1400px;margin:0 auto;padding:0 40px;height:70px;display:flex;align-items:center;justify-content:space-between;gap:40px}.header-brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text-primary);font-weight:700;font-size:20px;transition:opacity .2s ease}.header-brand:hover{opacity:.8}.brand-icon{height:28px;width:auto;display:block}.brand-icon-text{height:28px;min-width:28px;padding:0 6px;display:flex;align-items:center;justify-content:center;border-radius:6px;background:#f7df1e;color:#1a1a1a;font-weight:700;font-size:13px;letter-spacing:.02em}.brand-text{font-family:var(--font-display);font-weight:600;letter-spacing:.01em;background:var(--brand-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.header-nav{display:flex;align-items:center;gap:8px;flex:1}.nav-link{display:flex;align-items:center;gap:8px;padding:10px 20px;text-decoration:none;color:var(--text-secondary);font-family:var(--font-mono);font-size:14px;font-weight:500;border-radius:8px;border-bottom:2px solid transparent;transition:all .2s ease}.nav-link:hover{background:var(--bg-subtle);color:var(--brand-start)}.nav-link-active{background:transparent;color:var(--brand-start);font-weight:600;border-bottom-color:var(--brand-start)}.nav-link-active:before{content:">";margin-right:2px}.nav-link-active:hover{background:var(--bg-subtle)}.nav-icon{font-size:18px}.header-user{display:flex;align-items:center;gap:16px}.theme-toggle{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--border-color);background:var(--bg-subtle);font-size:16px;cursor:pointer;transition:all .2s ease}.theme-toggle:hover{background:var(--bg-hover);transform:rotate(15deg)}.user-info{display:flex;align-items:center;gap:10px;text-decoration:none;padding:4px 8px 4px 4px;border-radius:20px;transition:background .2s ease}.user-info:hover{background:var(--bg-subtle)}.user-avatar{width:36px;height:36px;border-radius:50%;background:var(--brand-gradient);color:var(--text-on-brand);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;flex-shrink:0}.user-name{color:var(--text-primary);font-size:14px;font-weight:500}.btn-logout{padding:8px 16px;background:var(--bg-subtle);border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-logout:hover{background:var(--color-error-text);border-color:var(--color-error-text);color:#fff}.menu-toggle{display:none;flex-direction:column;gap:4px;background:none;border:none;cursor:pointer;padding:8px}.menu-toggle span{width:24px;height:2px;background:var(--text-primary);transition:.3s}.page-header-simple{padding:40px 40px 30px;text-align:center}.page-header-simple h1{color:var(--text-primary);font-family:var(--font-display);margin:0 0 10px;font-size:32px;font-weight:600}.page-header-simple p{color:var(--text-secondary);margin:0;font-size:16px}.main-footer{background:var(--bg-card);border-top:1px solid var(--border-color)}.footer-container{max-width:1400px;margin:0 auto;padding:24px 40px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.footer-copyright{color:var(--text-muted);font-family:var(--font-mono);font-size:12px}.footer-links{display:flex;gap:24px;flex-wrap:wrap}.footer-links a{color:var(--text-secondary);text-decoration:none;font-family:var(--font-mono);font-size:12px}.footer-links a:hover{color:var(--brand-start);text-decoration:underline}@media(max-width:1024px){.header-container{padding:0 30px}.page-header-simple{padding:30px 30px 20px}}@media(max-width:768px){.header-container{padding:0 20px;height:60px}.brand-text{display:none}.header-nav{position:fixed;inset:60px 0 0;background:var(--bg-card);flex-direction:column;align-items:stretch;padding:20px;gap:10px;transform:translate(-100%);transition:transform .3s ease}.header-nav.nav-open{transform:translate(0)}.nav-link{padding:16px 20px;font-size:16px;justify-content:flex-start}.menu-toggle{display:flex}.user-name{display:none}.btn-logout{padding:8px 12px;font-size:13px}.page-header-simple h1{font-size:26px}.page-header-simple p{font-size:14px}.footer-container{padding:20px;flex-direction:column;text-align:center}.footer-links{justify-content:center}}@media(max-width:480px){.header-container{padding:0 15px}.brand-icon{height:24px}.page-header-simple{padding:20px 15px 15px}.page-header-simple h1{font-size:22px}}.nav-link[data-nouveaux]{--lueur-teinte: 212, 175, 90;animation:lueur-sceau 2.6s ease-in-out infinite}.nav-link[data-nouveaux] .nav-icon{filter:brightness(1.25) saturate(1.15)}.nav-link[data-nouveaux="1"]{--lueur-alpha: .32;--lueur-rayon: 9px}.nav-link[data-nouveaux="2"]{--lueur-alpha: .52;--lueur-rayon: 15px}.nav-link[data-nouveaux="3"]{--lueur-alpha: .78;--lueur-rayon: 22px}@keyframes lueur-sceau{0%,to{box-shadow:0 0 var(--lueur-rayon) rgba(var(--lueur-teinte),calc(var(--lueur-alpha) * .5))}50%{box-shadow:0 0 calc(var(--lueur-rayon) * 1.7) rgba(var(--lueur-teinte),var(--lueur-alpha))}}@media(prefers-reduced-motion:reduce){.nav-link[data-nouveaux]{animation:none;box-shadow:0 0 var(--lueur-rayon) rgba(var(--lueur-teinte),var(--lueur-alpha))}}.dashboard-page{--dash-accent: #2e7daf;--dash-accent-soft: #eaf3fa;--dash-rule: #c7d6e3;--dash-public: #2f9e6e;--dash-protected: #c98a2c;--dash-private: #8a93a6;--dash-comment: #7aa875;--dash-string: #d68c67;--dash-keyword: #c586c0;max-width:1200px;margin:0 auto;padding:0 40px 60px;display:flex;flex-direction:column;gap:44px}:root[data-theme=dark] .dashboard-page{--dash-accent: #6fbee8;--dash-accent-soft: rgba(111, 190, 232, .12);--dash-rule: #34424f;--dash-public: #58c896;--dash-protected: #e3a857;--dash-private: #7c879c}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .dashboard-page{--dash-accent: #6fbee8;--dash-accent-soft: rgba(111, 190, 232, .12);--dash-rule: #34424f;--dash-public: #58c896;--dash-protected: #e3a857;--dash-private: #7c879c}}.dashboard-hero{border-radius:10px;overflow:hidden;box-shadow:0 2px 10px var(--shadow-sm);margin-top:20px}.hero-file-tab{background:var(--code-header-bg);color:var(--code-muted);font-family:IBM Plex Mono,monospace;font-size:12px;padding:10px 20px;display:flex;align-items:center;gap:8px}.hero-file-tab:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--dash-public);flex-shrink:0}.hero-content{background:var(--code-bg);padding:28px 28px 32px;font-family:IBM Plex Mono,monospace;font-size:15px;line-height:1.8}.hero-comment-line{color:var(--dash-comment);margin:0;white-space:pre-wrap}.hero-greeting{color:var(--code-text);font-size:20px;font-weight:500}.hero-greeting strong{color:var(--dash-string);font-weight:600}.hero-tag{color:var(--dash-keyword);font-weight:500}.dashboard-properties{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;padding:8px 0}.dashboard-properties-eyebrow{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);padding:10px 24px 4px}.property-row{display:flex;align-items:baseline;gap:10px;padding:10px 24px;font-family:IBM Plex Mono,monospace;font-size:14px}.property-visibility{font-weight:700;width:14px;flex-shrink:0}.property-visibility.is-public{color:var(--dash-public)}.property-visibility.is-protected{color:var(--dash-protected)}.property-visibility.is-private{color:var(--dash-private)}.property-name{color:var(--text-secondary)}.property-value{color:var(--text-primary);font-weight:600;margin-left:auto}.dashboard-section{display:flex;flex-direction:column;gap:24px}.section-header{display:flex;justify-content:space-between;align-items:baseline;gap:16px}.section-header h2{font-family:Space Grotesk,sans-serif;color:var(--text-primary);font-size:22px;font-weight:600;margin:0}.section-header-eyebrow{display:block;font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.06em;color:var(--dash-accent);margin-bottom:4px}.btn-view-all{color:var(--dash-accent);text-decoration:none;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:500;white-space:nowrap;transition:opacity .2s ease}.btn-view-all:hover{opacity:.75}.modules-preview{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.module-preview-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;overflow:hidden;text-decoration:none;color:inherit;display:flex;flex-direction:column;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.module-preview-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px var(--shadow-md);border-color:var(--dash-accent)}.module-preview-header{background:var(--dash-accent-soft);border-bottom:1px solid var(--dash-rule);padding:12px 20px;display:flex;align-items:center;gap:8px}.module-preview-keyword{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;color:var(--dash-keyword)}.module-preview-badge{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;color:var(--dash-accent)}.module-preview-body{padding:18px 20px 20px;display:flex;flex-direction:column;flex:1}.module-preview-title{font-family:Space Grotesk,sans-serif;color:var(--text-primary);font-size:17px;font-weight:600;margin:0 0 10px}.module-preview-description{color:var(--text-secondary);font-size:14px;line-height:1.6;margin:0 0 20px;flex:1}.module-preview-footer{border-top:1px dashed var(--dash-rule);padding-top:14px;display:flex;justify-content:flex-end}.preview-link-text{font-family:IBM Plex Mono,monospace;color:var(--dash-accent);font-size:13px;font-weight:500}.loading-state{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;padding:60px 20px;text-align:center}.loading-state p{font-family:IBM Plex Mono,monospace;color:var(--text-muted);font-size:13px;margin:0}.empty-state{background:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;padding:60px 20px;text-align:center}.empty-state p{font-family:IBM Plex Mono,monospace;color:var(--text-muted);font-size:13px;margin:0}.spinner{width:50px;height:50px;border:4px solid var(--bg-subtle);border-top:4px solid var(--dash-accent);border-radius:50%;animation:spin 1s linear infinite}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2.5s}}@media(max-width:1024px){.dashboard-page{padding:0 30px 50px;gap:36px}.modules-preview{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.dashboard-page{padding:0 20px 40px;gap:28px}.hero-content{padding:22px 20px 26px;font-size:14px}.hero-greeting{font-size:17px}.modules-preview{grid-template-columns:1fr}.section-header{flex-direction:column;align-items:flex-start;gap:8px}}@media(max-width:480px){.dashboard-page{padding:0 15px 30px}.hero-content{padding:18px 16px 22px}.property-row{padding:10px 16px}.section-header h2{font-size:19px}.module-preview-body{padding:16px}}.page-container{width:100%;min-height:100vh;background-color:var(--bg-page)}.page-with-sidebar{display:flex;flex:1;background-color:var(--bg-page)}.page-header{background:var(--brand-gradient);color:var(--text-on-brand);padding:40px;display:flex;justify-content:space-between;align-items:center}.page-header-content h1{font-family:var(--font-display);margin:0 0 10px;font-size:32px;font-weight:600}.page-header-content p{margin:0;font-size:16px;opacity:.9}.user-welcome{text-align:right}.page-content{flex:1;padding:40px;max-width:1600px;margin:0 auto;width:100%}.sidebar{width:280px;background:var(--bg-card);border-right:1px solid var(--border-color);align-self:stretch;transition:transform .3s ease}.sidebar-sticky{display:flex;flex-direction:column;position:sticky;top:70px;max-height:calc(100vh - 70px)}.sidebar-header{padding:20px;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center}.sidebar-header h3{margin:0;font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--text-primary)}.sidebar-close{display:none;background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-secondary)}.sidebar-content{flex:1;padding:20px 0;overflow-y:auto;height:max-content}.sidebar-modules{list-style:none;padding:0;margin:0}.sidebar-module{margin-bottom:5px}.sidebar-module-link{display:flex;align-items:center;gap:12px;padding:12px 20px 12px 17px;border-left:3px solid transparent;text-decoration:none;color:var(--text-primary);transition:background .2s ease,border-color .2s ease}.sidebar-module-link:hover{background:var(--bg-hover)}.sidebar-module-link.active{background:var(--bg-subtle);border-left-color:var(--brand-start);color:var(--brand-start)}.sidebar-module-link .module-order{width:24px;height:24px;background:var(--brand-start);color:var(--text-on-brand);border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:12px;font-weight:600;flex-shrink:0}.sidebar-module-link .module-title{font-family:var(--font-mono);font-size:14px;font-weight:500}.sidebar-module-link.active .module-title{font-weight:600}.sidebar-footer{padding:20px;border-top:1px solid var(--border-color)}.btn-back-to-modules{display:block;text-align:center;padding:10px;background:var(--bg-subtle);color:var(--brand-start);text-decoration:none;border-radius:6px;font-family:var(--font-mono);font-size:13px;transition:background .2s ease}.btn-back-to-modules:hover{background:var(--bg-hover)}.sidebar-toggle{display:none;position:fixed;top:20px;left:20px;z-index:1001;background:var(--bg-card);border:none;padding:10px;border-radius:6px;box-shadow:0 2px 10px var(--shadow-md);cursor:pointer;flex-direction:column;gap:4px}.sidebar-toggle span{width:20px;height:2px;background:var(--text-primary);display:block;transition:.3s}.sidebar-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:999}.section{margin-bottom:40px}.section-header{margin-bottom:30px}.section-header h2{color:var(--text-primary);font-family:var(--font-display);margin:0 0 5px;font-size:24px}.section-subtitle{color:var(--text-secondary);margin:0;font-size:14px}.module-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.module-card{background:var(--bg-card);border-radius:12px;padding:24px;box-shadow:0 2px 10px var(--shadow-sm);text-decoration:none;color:inherit;transition:transform .2s ease,box-shadow .2s ease;display:flex;flex-direction:column}.module-card:hover{transform:translateY(-4px);box-shadow:0 4px 20px var(--shadow-md)}.module-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.module-number{background:var(--brand-gradient);color:var(--text-on-brand);font-family:var(--font-mono);padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600}.module-title{color:var(--text-primary);font-family:var(--font-display);font-size:20px;font-weight:600;margin:0 0 12px}.module-description{color:var(--text-secondary);font-size:14px;line-height:1.6;margin:0 0 20px;flex:1}.module-footer{display:flex;justify-content:flex-end}.module-link-text{color:var(--brand-start);font-size:14px;font-weight:500}.chapitres-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.chapitre-card{background:var(--bg-card);border-radius:8px;padding:20px;box-shadow:0 2px 8px var(--shadow-sm);text-decoration:none;color:inherit;transition:transform .2s ease,box-shadow .2s ease;display:flex;flex-direction:column}.chapitre-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px var(--shadow-md)}.chapitre-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.chapitre-number{background:var(--brand-start);color:var(--text-on-brand);font-family:var(--font-mono);padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600}.chapitre-title{color:var(--text-primary);font-family:var(--font-display);font-size:16px;font-weight:600;margin:0 0 10px}.chapitre-description{color:var(--text-secondary);font-size:13px;line-height:1.5;margin:0 0 16px;flex:1}.chapitre-footer{display:flex;justify-content:flex-end}.chapitre-link-text{color:var(--brand-start);font-size:13px;font-weight:500}.chapitre-page-header{margin-bottom:30px}.breadcrumb{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:20px;color:var(--text-secondary)}.breadcrumb a{color:var(--brand-start);text-decoration:none}.breadcrumb a:hover{text-decoration:underline}.chapitre-page-title{color:var(--text-primary);font-family:var(--font-display);margin:0 0 10px;font-size:32px;font-weight:600}.chapitre-page-title .chapitre-number{display:block;font-family:var(--font-mono);font-size:13px;color:var(--brand-start);font-weight:500;margin-bottom:8px}.chapitre-page-description{color:var(--text-secondary);font-size:16px;line-height:1.6;margin:0}.content-tabs{display:flex;gap:10px;border-bottom:2px solid var(--border-color);margin-bottom:30px}.tab{padding:12px 24px;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:15px;font-weight:500;color:var(--text-secondary);transition:color .2s ease,border-color .2s ease}.tab:hover{color:var(--brand-start)}.tab-active{color:var(--brand-start);border-bottom-color:var(--brand-start)}.tab-content{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.exercices-list{display:flex;flex-direction:column;gap:24px}.exercice-item{background:var(--bg-card);border-radius:8px;padding:24px;box-shadow:0 2px 8px var(--shadow-sm)}.exercice-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.exercice-header h3{color:var(--text-primary);margin:0;font-size:20px}.exercice-meta{display:flex;gap:10px;align-items:center}.difficulty{padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500}.difficulty-easy{background:var(--color-success-bg);color:var(--color-success-text)}.difficulty-medium{background:var(--color-warning-bg);color:var(--color-warning-text)}.difficulty-hard{background:var(--color-error-bg);color:var(--color-error-text)}.points-badge{background:var(--color-warning-bg);color:var(--color-warning-text);padding:4px 10px;border-radius:12px;font-size:12px;font-weight:500}.exercice-description{color:var(--text-secondary);font-size:15px;line-height:1.6;margin:0 0 16px}.exercice-instructions{background:var(--bg-subtle);padding:16px;border-radius:6px;margin-bottom:16px}.exercice-instructions h4{color:var(--text-primary);margin:0 0 10px;font-size:14px;font-weight:600}.exercice-instructions p{color:var(--text-secondary);margin:0;font-size:14px;line-height:1.6}.code-block{margin-bottom:20px}.code-block h4{color:var(--text-primary);margin:0 0 10px;font-size:14px;font-weight:600}.code-block pre{background:var(--code-bg);color:var(--code-text);padding:20px;border-radius:8px;overflow-x:auto;margin:0}.code-block code{font-family:Courier New,monospace;font-size:14px;line-height:1.5}.badge{display:inline-block;padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase}.badge-draft{background:var(--color-warning-bg);color:var(--color-warning-text)}.module-detail-header{background:var(--bg-card);border-radius:12px;padding:30px;box-shadow:0 2px 10px var(--shadow-sm);margin-bottom:30px}.module-badge{background:var(--brand-gradient);color:var(--text-on-brand);font-family:var(--font-mono);padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600;display:inline-block;margin-bottom:16px}.module-detail-header h1{color:var(--text-primary);font-family:var(--font-display);margin:0 0 12px;font-size:32px;font-weight:600}.module-detail-description{color:var(--text-secondary);font-size:16px;line-height:1.6;margin:0}.empty-state{background:var(--bg-card);border-radius:8px;padding:60px 20px;text-align:center}.empty-state h3{color:var(--text-primary);margin:0 0 10px;font-size:20px}.empty-state p{color:var(--text-secondary);margin:0;font-size:15px}@media(max-width:1180px){.sidebar{position:fixed;top:0;height:100vh;z-index:1000;transform:translate(-100%)}.sidebar-sticky{position:static;max-height:none;height:100%}.sidebar-open{transform:translate(0)}.sidebar-close{display:block}.sidebar-toggle{display:flex}.sidebar-overlay{display:block}}@media(max-width:1024px){.page-content{padding:30px 20px}.module-list,.chapitres-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.page-header{flex-direction:column;gap:20px;padding:30px 20px;text-align:center}.page-header-content h1{font-size:26px}.user-welcome{text-align:center}.page-content{padding:20px 15px}.module-list,.chapitres-grid{grid-template-columns:1fr}.chapitre-page-title{font-size:26px}.content-tabs{overflow-x:auto}.tab{white-space:nowrap}}@media(max-width:480px){.page-header-content h1{font-size:22px}.page-header-content p{font-size:14px}.module-card,.chapitre-card{padding:16px}.module-title{font-size:18px}.chapitre-page-title{font-size:22px}.theorie-item,.exercice-item{padding:20px}.theorie-header,.exercice-header{flex-direction:column;align-items:flex-start;gap:10px}.exercice-meta{width:100%}}.content-progress{display:flex;gap:20px;padding:20px;background:var(--bg-card);border-radius:12px;margin-bottom:30px;box-shadow:0 2px 8px var(--shadow-sm)}.progress-item{display:flex;align-items:center;gap:8px;font-size:15px;color:var(--text-secondary)}.progress-icon{font-size:20px}.content-section{margin-bottom:40px}.theory-container{background:var(--bg-card);border-radius:12px;padding:40px;margin-bottom:30px;box-shadow:0 2px 12px var(--shadow-sm)}.section-header-small{margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid var(--border-color)}.section-number{display:inline-block;background:var(--brand-gradient);color:var(--text-on-brand);font-family:var(--font-mono);padding:4px 12px;border-radius:20px;font-size:13px;font-weight:600;margin-bottom:10px}.section-header-small h2{color:var(--text-primary);font-family:var(--font-display);font-size:28px;font-weight:600;margin:10px 0}.time-badge{display:inline-block;background:var(--color-info-bg);color:var(--color-info-text);padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500;margin-top:10px}.theory-content{font-size:16px;line-height:1.8;color:var(--text-primary);display:flow-root;max-width:860px;margin-left:auto;margin-right:auto}.theory-content h2,.theory-content h3,.theory-content h4{margin-top:36px;margin-bottom:16px;color:var(--text-primary)}.theory-content h2{font-size:1.375em;padding-bottom:10px;border-bottom:2px solid var(--border-color)}.theory-content h3{font-size:1.15em}.theory-content h2:first-child,.theory-content h3:first-child{margin-top:0}.theory-content p{margin-bottom:16px}.theory-content ul,.theory-content ol{margin:16px 0;padding-left:28px}.theory-content li{margin:8px 0}.theory-content li::marker{color:var(--brand-start)}.theory-content strong{color:var(--text-primary)}.theory-content code{background:var(--bg-subtle);padding:2px 6px;border-radius:4px;font-family:Fira Code,Courier New,Courier,monospace;font-size:.9em;color:var(--code-inline-text);word-break:break-word}.theory-content pre{position:relative;background:var(--code-bg);color:var(--code-text);padding:36px 20px 20px;border-radius:10px;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:24px 0;max-width:100%;box-shadow:0 4px 14px var(--shadow-md)}.theory-content pre:before{content:"JS";position:absolute;top:0;left:0;right:0;height:28px;display:flex;align-items:center;padding:0 16px;background:var(--code-header-bg);color:var(--code-muted);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:11px;font-weight:700;letter-spacing:.08em;border-radius:10px 10px 0 0}.theory-content pre code{background:none;padding:0;color:inherit;font-size:.9em;word-break:normal}.theory-content table{display:block;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:24px 0;border-collapse:collapse;font-size:.95em;border-radius:10px;box-shadow:0 2px 10px var(--shadow-sm)}.theory-content table thead,.theory-content table tbody,.theory-content table tr{display:table;width:100%;table-layout:fixed}.theory-content table th,.theory-content table td{padding:12px 18px;text-align:left;border-bottom:1px solid var(--border-color);vertical-align:top}.theory-content table th{background:var(--bg-subtle);color:var(--text-primary);font-weight:600;font-size:.9em}.theory-content table tbody tr:last-child th,.theory-content table tbody tr:last-child td{border-bottom:none}.theory-content table tbody tr:hover{background:var(--bg-hover)}.content-divider{height:0;border-top:2px dashed var(--border-color-strong);margin:40px 0}.exercises-section{background:var(--bg-subtle);padding:40px;border-radius:12px;margin-top:40px}.section-header-large{text-align:center;margin-bottom:40px}.section-header-large h2{color:var(--text-primary);font-size:32px;font-weight:700;margin:0 0 10px}.section-header-large p{color:var(--text-secondary);font-size:16px;margin:0}.exercices-grid{display:grid;gap:30px}.exercice-card{background:var(--bg-card);border-radius:12px;padding:30px;box-shadow:0 2px 12px var(--shadow-sm);transition:transform .2s ease,box-shadow .2s ease}.exercice-card:hover{transform:translateY(-4px);box-shadow:0 8px 24px var(--shadow-md)}.exercice-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.exercice-number{background:var(--brand-gradient);color:var(--text-on-brand);font-family:var(--font-mono);padding:6px 16px;border-radius:20px;font-size:13px;font-weight:600}.exercice-meta{display:flex;gap:12px}.exercice-title{color:var(--text-primary);font-family:var(--font-display);font-size:24px;font-weight:600;margin:0 0 15px}.exercice-description{color:var(--text-secondary);font-size:16px;line-height:1.6;margin:0 0 20px}.exercice-instructions{background:var(--color-info-bg);border-left:4px solid var(--color-info-text);padding:16px 20px;margin:20px 0;border-radius:6px}.exercice-instructions strong{color:var(--text-primary);display:block;margin-bottom:8px}.exercice-instructions p{margin:0;color:var(--text-secondary);line-height:1.6}.code-block{background:var(--code-bg);border-radius:8px;overflow:hidden;margin:20px 0}.code-header{background:var(--code-header-bg);color:var(--code-muted);padding:10px 20px;font-size:13px;font-weight:600}.code-block pre{margin:0;padding:20px;overflow-x:auto}.code-block code{font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.6;color:var(--code-text)}.btn-block{width:100%;margin-top:20px}.chapter-navigation{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:60px;padding-top:30px;border-top:2px solid var(--border-color)}.nav-slot{display:flex;min-width:0}.nav-slot.nav-next{margin-left:auto}.nav-btn{display:inline-flex;align-items:center;gap:10px;max-width:320px;text-align:left}.nav-btn-arrow{font-size:18px;flex-shrink:0}.nav-btn-text{display:flex;flex-direction:column;min-width:0}.nav-btn-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;opacity:.75}.nav-btn-title{font-family:var(--font-display);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-end-badge{font-family:var(--font-mono);color:var(--text-muted);font-size:14px}@media(max-width:600px){.chapter-navigation{flex-direction:column;align-items:stretch}.nav-slot.nav-next{margin-left:0}.nav-btn{max-width:none;width:100%}}@media(max-width:768px){.content-progress{flex-direction:column;gap:12px}.theory-container{padding:24px 18px}.section-header-small h2{font-size:22px}.theory-content{font-size:15px}.theory-content pre{padding:32px 14px 16px;margin-left:-18px;margin-right:-18px;border-radius:0}.theory-content pre:before{border-radius:0}.theory-content table{font-size:.85em;margin-left:-18px;margin-right:-18px;width:calc(100% + 36px);border-radius:0}.theory-content table th,.theory-content table td{padding:10px 14px}.exercises-section{padding:24px}.section-header-large h2{font-size:24px}.exercice-card{padding:20px}.exercice-card-header{flex-direction:column;align-items:flex-start;gap:12px}.exercice-title{font-size:20px}}.theory-content img{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px var(--shadow-md);margin:30px 0;display:block}.theory-content figure{margin:40px 0;padding:0}.theory-content figure img{margin:0 0 15px;width:100%}.theory-content figcaption{text-align:center;font-size:14px;color:var(--text-secondary);font-style:italic;line-height:1.6;padding:0 20px}.theory-image{margin:40px 0;text-align:center}.theory-image img{max-width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px var(--shadow-md);margin:0 auto 15px}.theory-image figcaption{text-align:center;font-size:14px;color:var(--text-secondary);font-style:italic;line-height:1.6;padding:0 20px}.theory-image.size-small img,.theory-content .size-small img{max-width:min(400px,100%)}.theory-image.size-medium img,.theory-content .size-medium img{max-width:min(600px,100%)}.theory-image.size-large img,.theory-content .size-large img{max-width:min(800px,100%)}.theory-image.size-full img,.theory-content .size-full img{max-width:100%}.theory-image.align-left img,.theory-content .align-left img{margin-left:0;margin-right:auto}.theory-image.align-left figcaption,.theory-content .align-left figcaption{text-align:left}.theory-image.align-center img,.theory-content .align-center img{margin-left:auto;margin-right:auto}.theory-image.align-right img,.theory-content .align-right img{margin-left:auto;margin-right:0}.theory-image.align-right figcaption,.theory-content .align-right figcaption{text-align:right}.theory-content .float-left{float:left;margin-top:var(--img-mt, 10px);margin-right:var(--img-mr, 30px);margin-bottom:var(--img-mb, 20px);margin-left:var(--img-ml, 0)}.theory-content .float-right{float:right;margin-top:var(--img-mt, 10px);margin-right:var(--img-mr, 0);margin-bottom:var(--img-mb, 20px);margin-left:var(--img-ml, 30px)}.theory-content .float-left:not([class*=size-]),.theory-content .float-right:not([class*=size-]){max-width:min(400px,100%)}.theory-image.float-left img,.theory-image.float-right img{margin-left:0;margin-right:0}.theory-content .clear{clear:both}.theory-image-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin:40px 0}.theory-image-grid figure{margin:0}.theory-image-grid img{width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px var(--shadow-md)}.theory-image-grid figcaption{margin-top:10px;font-size:13px;color:var(--text-secondary);text-align:center;font-style:italic}.theory-images-row{display:flex;gap:20px;margin:40px 0;flex-wrap:wrap}.theory-images-row figure{flex:1;min-width:250px;margin:0}.theory-images-row img{width:100%;height:auto;border-radius:8px;box-shadow:0 4px 12px var(--shadow-md)}.theory-images-row figcaption{margin-top:10px;font-size:13px;color:var(--text-secondary);text-align:center;font-style:italic}.image-highlight{background:var(--bg-subtle);border:2px solid var(--border-color-strong);border-radius:12px;padding:30px;margin:40px 0;text-align:center}.image-highlight img{margin:0 auto;box-shadow:0 6px 20px var(--shadow-lg)}.image-highlight figcaption{margin-top:20px;font-size:15px;color:var(--text-secondary);font-weight:500;font-style:normal}@media(max-width:768px){.theory-content .float-left,.theory-content .float-right{float:none;max-width:100%;margin:20px 0}.theory-image-grid{grid-template-columns:1fr}.theory-images-row{flex-direction:column}.theory-image.size-small img,.theory-image.size-medium img,.theory-content .size-small img,.theory-content .size-medium img{max-width:100%}.image-highlight{padding:20px}}.fullscreen-editor{position:fixed;inset:0;background:#1e1e1e;z-index:9999;display:flex;flex-direction:column;overflow:hidden}.editor-header{background:#2d2d30;color:#fff;padding:12px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #3e3e42;flex-shrink:0}.editor-header-left{display:flex;align-items:center;gap:15px}.editor-header-left h2{margin:0;font-size:16px;font-weight:600;color:#fff}.editor-id{font-size:12px;color:#999;background:#3e3e42;padding:4px 10px;border-radius:4px}.editor-header-right{display:flex;gap:10px}.editor-form{display:flex;flex:1;overflow:hidden;min-height:0}.editor-sidebar{width:280px;background:#252526;border-right:1px solid #3e3e42;display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0}.editor-sidebar-section{padding:20px;border-bottom:1px solid #3e3e42}.editor-sidebar-section h3{margin:0 0 15px;font-size:13px;font-weight:600;color:#fff;text-transform:uppercase;letter-spacing:.5px}.editor-sidebar .form-group{margin-bottom:15px}.editor-sidebar .form-label{display:block;margin-bottom:6px;font-size:13px;color:#ccc;font-weight:500}.editor-sidebar .form-control{width:100%;padding:8px 10px;background:#3c3c3c;border:1px solid #555;border-radius:4px;color:#fff;font-size:13px}.editor-sidebar .form-control:focus{outline:none;border-color:#007acc;background:#2d2d30}.editor-sidebar select.form-control{cursor:pointer}.insert-buttons{display:flex;flex-direction:column;gap:6px}.insert-buttons .btn{justify-content:flex-start;text-align:left;padding:8px 12px;font-size:13px;background:#3c3c3c;border:1px solid #555;color:#ccc;transition:all .2s}.insert-buttons .btn:hover{background:#505050;border-color:#666;color:#fff}.editor-actions{padding:20px;margin-top:auto}.editor-actions .btn-primary{width:100%;padding:12px;font-size:14px;font-weight:600}.editor-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.editor-main-header{padding:15px 20px;background:#2d2d30;border-bottom:1px solid #3e3e42;display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.editor-main-header .form-label{margin:0;font-size:13px;font-weight:600;color:#fff;text-transform:uppercase;letter-spacing:.5px}.editor-hint{font-size:12px;color:#999;font-style:italic}.monaco-wrapper{flex:1;min-height:0;overflow:hidden}.editor-loading{height:100%;display:flex;align-items:center;justify-content:center;background:#1e1e1e;color:#9ca3af;font-size:.9rem}.editor-preview{width:500px;background:#f5f7fa;border-left:1px solid #3e3e42;display:flex;flex-direction:column;overflow:hidden;flex-shrink:0}.editor-preview-header{padding:15px 20px;background:#fff;border-bottom:1px solid #e0e0e0;flex-shrink:0}.editor-preview-header h3{margin:0;font-size:14px;font-weight:600;color:#333;text-transform:uppercase;letter-spacing:.5px}.editor-preview-content{flex:1;padding:30px;overflow-y:auto;background:#fff}.editor-preview-content.theory-content{font-size:14px;line-height:1.6}.editor-preview-content.theory-content h2{font-size:22px;margin-top:20px}.editor-preview-content.theory-content h3{font-size:18px;margin-top:16px}.editor-preview-content.theory-content pre{font-size:12px;padding:15px}@media(max-width:1200px){.editor-preview{width:400px}}@media(max-width:900px){.editor-sidebar{width:240px}.editor-preview{display:none}}@media(max-width:768px){.editor-sidebar{position:absolute;left:-280px;top:53px;bottom:0;z-index:100;transition:left .3s ease}.editor-sidebar.open{left:0}.editor-header-left h2{font-size:14px}.editor-id{display:none}}.editor-sidebar::-webkit-scrollbar,.editor-preview-content::-webkit-scrollbar{width:10px}.editor-sidebar::-webkit-scrollbar-track{background:#1e1e1e}.editor-sidebar::-webkit-scrollbar-thumb{background:#555;border-radius:5px}.editor-sidebar::-webkit-scrollbar-thumb:hover{background:#666}.editor-preview-content::-webkit-scrollbar-track{background:#f5f7fa}.editor-preview-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:5px}.editor-preview-content::-webkit-scrollbar-thumb:hover{background:#999}.btn-block{display:block;width:100%}.cheat-sheet-overlay{position:fixed;inset:0;background:#00000080;z-index:10000;display:flex;justify-content:flex-end}.cheat-sheet-panel{width:420px;max-width:100%;height:100%;background:#252526;border-left:1px solid #3e3e42;display:flex;flex-direction:column;overflow:hidden;animation:cheat-sheet-slide-in .2s ease}@media(prefers-reduced-motion:reduce){.cheat-sheet-panel{animation:none}}@keyframes cheat-sheet-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.cheat-sheet-header{padding:16px 20px;background:#2d2d30;border-bottom:1px solid #3e3e42;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.cheat-sheet-header h2{margin:0;font-size:15px;font-weight:600;color:#fff}.cheat-sheet-close{background:none;border:none;color:#ccc;font-size:16px;cursor:pointer;padding:4px 8px}.cheat-sheet-close:hover{color:#fff}.cheat-sheet-content{flex:1;overflow-y:auto;padding:8px 20px 20px}.cheat-sheet-section h3{color:#9cdcfe;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin:20px 0 10px}.cheat-sheet-item{margin-bottom:10px}.cheat-sheet-label{display:block;color:#ccc;font-size:12px;margin-bottom:4px}.cheat-sheet-code{background:#1e1e1e;color:#d4d4d4;padding:8px 10px;border-radius:4px;font-family:Fira Code,Courier New,Courier,monospace;font-size:12.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word;margin:0}.js-error-technical{margin-top:10px}.js-error-technical summary{cursor:pointer;color:#999;font-size:12px;-webkit-user-select:none;user-select:none}.js-error-technical summary:hover{color:#ccc}.js-error-technical pre{margin-top:8px}.fullscreen-editor .alert{border-radius:0;margin:0!important;padding:12px 20px;border:none;border-bottom:1px solid rgba(0,0,0,.1)}.fullscreen-editor .alert-success{background:#155724;color:#d4edda}.fullscreen-editor .alert-error{background:#721c24;color:#f8d7da}.admin-page{width:100%;max-width:1400px;margin:0 auto;padding:40px;box-sizing:border-box}.admin-header{margin-bottom:40px}.admin-header h1{color:var(--text-primary);font-family:var(--font-display);font-size:36px;font-weight:700;margin:0 0 10px}.admin-header p{color:var(--text-secondary);font-size:18px;margin:0}.admin-tabs{display:flex;gap:10px;margin-bottom:30px;border-bottom:2px solid var(--border-color)}.admin-tab{padding:12px 24px;background:none;border:none;border-bottom:3px solid transparent;color:var(--text-secondary);font-size:15px;font-weight:500;cursor:pointer;transition:all .2s ease;margin-bottom:-2px}.admin-tab:hover{color:var(--brand-start);background:var(--bg-subtle)}.admin-tab-active{color:var(--brand-start);border-bottom-color:var(--brand-start)}.admin-content{background:var(--bg-card);border-radius:12px;padding:30px;box-shadow:0 2px 10px var(--shadow-sm)}.manager-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.manager-header h2{color:var(--text-primary);font-family:var(--font-display);font-size:24px;font-weight:600;margin:0}.btn{padding:10px 20px;border:none;border-radius:6px;font-family:var(--font-mono);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:8px}.btn-primary{background:var(--brand-gradient);color:var(--text-on-brand)}.btn-primary:hover{background:linear-gradient(135deg,#24688f,#164a6d);transform:translateY(-2px);box-shadow:0 4px 12px #2e7daf66}.btn-secondary{background:var(--bg-subtle);color:var(--text-secondary);border:1px solid var(--border-color)}.btn-secondary:hover{background:var(--border-color-strong)}.btn-danger{background:var(--color-error-text);color:var(--text-on-brand)}.btn-danger:hover{background:var(--color-error-text)}.btn-sm{padding:6px 12px;font-size:13px}.admin-table{width:100%;border-collapse:collapse}.admin-table thead{background:var(--bg-subtle)}.admin-table th{padding:12px 16px;text-align:left;color:var(--text-primary);font-family:var(--font-mono);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px}.admin-table td{padding:16px;border-bottom:1px solid var(--border-color);color:var(--text-secondary);font-size:14px}.admin-table tbody tr:hover{background:var(--bg-subtle)}.admin-table-actions{display:flex;gap:8px}.badge{display:inline-block;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600}.badge-success{background:var(--color-success-bg);color:var(--color-success-text)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge-danger{background:var(--color-error-bg);color:var(--color-error-text)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--bg-card);border-radius:12px;padding:30px;max-width:600px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px var(--shadow-lg)}.modal-header{margin-bottom:24px}.modal-header h3{color:var(--text-primary);font-size:24px;font-weight:600;margin:0}.modal-body{margin-bottom:24px}.modal-footer{display:flex;justify-content:flex-end;gap:12px}.form-group{margin-bottom:20px}.form-label{display:block;color:var(--text-primary);font-size:14px;font-weight:500;margin-bottom:8px}.form-control{width:100%;padding:10px 14px;border:1px solid var(--border-color);border-radius:6px;font-size:14px;color:var(--text-primary);transition:border-color .2s ease}.form-control:focus{outline:none;border-color:var(--brand-start);box-shadow:0 0 0 3px #2e7daf26}textarea.form-control{min-height:100px;resize:vertical;font-family:inherit}.form-check{display:flex;align-items:center;gap:8px}.form-hint{margin:8px 0 0;color:var(--text-secondary);font-size:13px}.content-manager-layout{display:flex;align-items:flex-start;gap:24px}.content-manager-sidebar{flex:0 0 280px;width:280px;border:1px solid var(--border-color);border-radius:10px;overflow:hidden;max-height:70vh;overflow-y:auto}.content-manager-sidebar-item{width:100%;display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--bg-card);border:none;border-bottom:1px solid var(--border-color);cursor:pointer;text-align:left;font-family:inherit}.content-manager-sidebar-item:last-child{border-bottom:none}.content-manager-sidebar-item:hover{background:var(--bg-subtle)}.content-manager-sidebar-item.active{background:var(--bg-subtle);box-shadow:inset 3px 0 0 var(--brand-start)}.content-manager-sidebar-order{font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--text-on-brand);background:var(--brand-gradient);padding:3px 9px;border-radius:12px;flex-shrink:0}.content-manager-sidebar-title{color:var(--text-primary);font-weight:500;font-size:14px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-manager-sidebar-count{color:var(--text-secondary);font-size:12px;flex-shrink:0}.content-manager-main{flex:1;min-width:0}.content-manager-empty{border:1px dashed var(--border-color);border-radius:10px;padding:60px 20px;text-align:center;color:var(--text-secondary)}.module-panel-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.module-panel-order{font-family:var(--font-mono);font-size:12px;font-weight:700;color:var(--text-on-brand);background:var(--brand-gradient);padding:3px 10px;border-radius:12px;flex-shrink:0}.module-panel-title{color:var(--text-primary);font-weight:600;font-size:18px;flex:1}.module-panel-count{color:var(--text-secondary);font-size:13px}.module-panel-description{color:var(--text-secondary);font-size:14px;line-height:1.5;margin:0 0 20px}.module-panel-actions{margin-top:4px}.module-group .admin-table{border-top:1px solid var(--border-color)}.module-group-add{margin:12px 0 16px}@media(max-width:900px){.content-manager-layout{flex-direction:column}.content-manager-sidebar{width:100%;max-height:240px}}.chapitre-subgroup{border-top:1px solid var(--border-color)}.chapitre-subgroup-header{display:flex;align-items:baseline;gap:10px;padding:10px 18px;background:var(--bg-card)}.chapitre-subgroup-order{font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--brand-start);text-transform:uppercase;letter-spacing:.5px;flex-shrink:0}.chapitre-subgroup-title{color:var(--text-primary);font-weight:500;font-size:14px}.chapitre-subgroup-add{margin:10px 18px 16px}.form-check input[type=checkbox]{width:18px;height:18px;cursor:pointer}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state h3{color:var(--text-secondary);font-size:18px;margin:0 0 10px}.empty-state p{color:var(--text-muted);font-size:14px;margin:0}.spinner{width:40px;height:40px;border:4px solid var(--border-color);border-top-color:var(--brand-start);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.alert{padding:12px 16px;border-radius:6px;margin-bottom:20px;font-size:14px}.alert-success{background:var(--color-success-bg);color:var(--color-success-text);border:1px solid var(--color-success-text)}.alert-error{background:var(--color-error-bg);color:var(--color-error-text);border:1px solid var(--color-error-text)}@media(max-width:768px){.admin-page{padding:20px}.admin-header h1{font-size:28px}.admin-tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-tab{white-space:nowrap}.admin-content{padding:20px}.manager-header{flex-direction:column;align-items:flex-start;gap:16px}.admin-table{display:block;overflow-x:auto}.modal{max-width:100%;margin:20px}}.preview-live-banner{background:var(--color-info-bg);color:var(--color-info-text);border-radius:8px;padding:10px 16px;margin-bottom:20px;font-size:13.5px;font-style:italic}.preview-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;color:var(--text-muted);text-align:center}.preview-empty p{margin:8px 0;font-size:18px}.preview-empty .text-muted{font-size:14px;color:var(--text-muted)}.account-page{--account-public: #2f9e6e;--account-protected: #c98a2c;--account-private: #8a93a6;min-height:100vh;background:var(--bg-page);padding:40px 20px 80px}:root[data-theme=dark] .account-page{--account-public: #58c896;--account-protected: #e3a857;--account-private: #7c879c}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .account-page{--account-public: #58c896;--account-protected: #e3a857;--account-private: #7c879c}}.account-container{max-width:720px;margin:0 auto}.account-container h1{color:var(--text-primary);font-family:var(--font-display);font-size:28px;margin-bottom:24px}.account-section{background:var(--bg-card);border-radius:12px;padding:30px;box-shadow:var(--shadow-sm);margin-bottom:24px}.account-section h2{color:var(--text-primary);font-family:var(--font-display);font-size:18px;margin-bottom:16px}.account-section-description{color:var(--text-secondary);font-size:14px;line-height:1.6;margin-bottom:20px}.account-properties-eyebrow{display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px}.account-properties{border:1px solid var(--border-color);border-radius:8px}.account-property-row{display:flex;align-items:baseline;gap:10px;padding:12px 18px;font-family:var(--font-mono);font-size:14px;border-bottom:1px solid var(--border-color)}.account-property-row:last-child{border-bottom:none}.account-property-visibility{font-weight:700;width:14px;flex-shrink:0}.account-property-visibility.is-public{color:var(--account-public)}.account-property-visibility.is-protected{color:var(--account-protected)}.account-property-visibility.is-private{color:var(--account-private)}.account-property-name{color:var(--text-secondary)}.account-property-value{color:var(--text-primary);font-weight:600;margin-left:auto}.account-action{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0;border-bottom:1px solid var(--border-color)}.account-action:last-of-type{border-bottom:none}.account-action h3{color:var(--text-primary);font-family:var(--font-display);font-size:15px;margin-bottom:4px}.account-action p{color:var(--text-secondary);font-size:13px;margin:0}.account-action-danger h3{color:var(--color-error-text)}.btn-secondary{background:var(--bg-subtle);color:var(--text-primary);border:1px solid var(--border-color-strong)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover)}.btn-danger{background:var(--color-error-text);color:#fff;border:none}.btn-danger:hover:not(:disabled){opacity:.9}.btn-danger:disabled,.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.account-delete-confirm{margin-top:16px;padding:20px;background:var(--color-error-bg);border-radius:8px}.account-delete-confirm p{color:var(--text-primary);font-size:14px;margin-bottom:12px}.account-delete-confirm input{width:100%;padding:10px 12px;border:1px solid var(--border-color-strong);border-radius:6px;background:var(--bg-card);color:var(--text-primary);font-size:14px;margin-bottom:12px}.account-delete-confirm-actions{display:flex;gap:10px;justify-content:flex-end}@media(max-width:600px){.account-action{flex-direction:column;align-items:flex-start}.account-action button{width:100%}.account-delete-confirm-actions{flex-direction:column-reverse}.account-delete-confirm-actions button{width:100%}}.revelation-fond{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;background:#0c0804b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:revelation-fond-entree .25s ease forwards}@keyframes revelation-fond-entree{0%{opacity:0}to{opacity:1}}.revelation-carte{position:relative;width:min(100%,430px);max-height:calc(100vh - 40px);overflow-y:auto;background:var(--tr-bg, #1b140d);color:var(--tr-ink, #ede3cc);border:1px solid var(--tr-rule, #d4af5a);border-radius:14px;padding:26px 28px 22px;text-align:center;box-shadow:0 24px 60px #0000008c;animation:revelation-carte-entree .32s cubic-bezier(.2,.9,.3,1.2) forwards;--e: 1.5px;--m-etain: var(--tr-etain, #9d8c6d);--m-argent: var(--tr-argent, #b8bfc6);--m-or: var(--tr-orfevre, #e0bb5f);--m-halo: color-mix(in srgb, var(--tr-orfevre, #e0bb5f), transparent 45%)}@keyframes revelation-carte-entree{0%{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}.revelation-annonce{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--tr-ink-soft, #b9aa8c);margin:0 0 18px;display:flex;align-items:center;justify-content:center;gap:10px}.revelation-compte{border:1px solid color-mix(in srgb,var(--tr-rule, #d4af5a),transparent 55%);border-radius:999px;padding:2px 8px;letter-spacing:.08em}.revelation-scene{position:relative;height:152px;display:flex;align-items:center;justify-content:center;margin-bottom:16px}.revelation-medaillon.seal-medallion{width:112px;height:112px;font-size:44px;color:var(--tr-bg, #1b140d);text-shadow:0 1px 2px rgba(0,0,0,.35);background:radial-gradient(circle at 30% 22%,#ffffff6b,#fff0 24%),radial-gradient(circle at 34% 26%,var(--t-haut) 0%,var(--t) 46%,var(--t-bas) 100%);animation:revelation-coulee .72s cubic-bezier(.18,.85,.3,1.1) backwards}@keyframes revelation-coulee{0%{transform:scale(.15);opacity:0}38%{transform:scale(1.14);opacity:1}58%{transform:scale(.94) translateY(2px)}78%{transform:scale(1.03)}to{transform:scale(1)}}.revelation-glyphe{display:block;animation:revelation-empreinte .4s ease .5s backwards}@keyframes revelation-empreinte{0%{opacity:0;transform:scale(1.5)}to{opacity:1;transform:scale(1)}}.revelation-onde{position:absolute;width:112px;height:112px;border-radius:50%;border:2px solid color-mix(in srgb,var(--tr-rule, #d4af5a),transparent 40%);opacity:0;animation:revelation-onde .6s ease-out .42s backwards}@keyframes revelation-onde{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.9)}}@media(prefers-reduced-motion:reduce){.revelation-fond,.revelation-carte,.revelation-medaillon.seal-medallion,.revelation-glyphe,.revelation-onde{animation:none}.revelation-onde{display:none}}.revelation-titre{font-family:Cinzel,serif;font-weight:700;font-size:25px;letter-spacing:.04em;margin:0 0 8px;color:var(--tr-ink, #ede3cc)}.revelation-description{font-family:Cormorant Garamond,serif;font-style:italic;font-size:16px;line-height:1.5;color:var(--tr-ink-soft, #b9aa8c);margin:0 0 20px}.revelation-lecture{margin:0 0 22px;padding:16px 0 4px;border-top:1px solid color-mix(in srgb,var(--tr-rule, #d4af5a),transparent 60%);display:flex;flex-direction:column;gap:14px;text-align:left}.revelation-ligne{display:grid;grid-template-columns:136px minmax(0,1fr);align-items:start;gap:12px}.revelation-ligne dt{display:flex;align-items:center;gap:8px;font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--tr-ink-soft, #b9aa8c);padding-top:2px}.revelation-ligne dd{margin:0;display:flex;flex-direction:column;min-width:0}.revelation-ligne dd strong{font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;letter-spacing:.02em;color:var(--tr-ink, #ede3cc)}.revelation-ligne dd span{font-family:Cormorant Garamond,serif;font-style:italic;font-size:14px;color:var(--tr-ink-soft, #b9aa8c)}.revelation-vignette{flex:none;margin-right:7px}.revelation-actions{display:flex;justify-content:center}.revelation-bouton{font-family:IBM Plex Mono,monospace;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--tr-bg, #1b140d);background:var(--tr-rule, #d4af5a);border:0;border-radius:999px;padding:10px 26px;cursor:pointer;transition:filter .2s ease,transform .2s ease}.revelation-bouton:hover{filter:brightness(1.08);transform:translateY(-1px)}.revelation-bouton:focus-visible{outline:2px solid var(--tr-ink, #ede3cc);outline-offset:3px}@media(max-width:480px){.revelation-carte{padding:22px 18px 18px}.revelation-ligne{grid-template-columns:1fr;gap:4px}}.trophy-room-page{--tr-bg: #ede3cc;--tr-bg-deep: #e3d5b3;--tr-ink: #2b1d0e;--tr-ink-soft: #5b4a34;--tr-rule: #b08d3f;--tr-wax-blank: #cdc3a8;--tr-wax-blank-shade: #ab9d7d;--tr-wax-blank-deep: #8d7f61;--tr-vert-haut: #7aa87e;--tr-vert: #3b5d40;--tr-vert-bas: #1e3220;--tr-tenne-haut: #e09455;--tr-tenne: #a85b21;--tr-tenne-bas: #63300d;--tr-or-haut: #e8c96f;--tr-or: #a8791f;--tr-or-bas: #63430b;--tr-purpure-haut: #9b74b5;--tr-purpure: #5b3a73;--tr-purpure-bas: #301c43;--tr-gules-haut: #cc6a51;--tr-gules: #8c2f1b;--tr-gules-bas: #4d1207;--tr-etain: #8a7a5f;--tr-argent: #8f959b;--tr-orfevre: #c9a227;background:var(--tr-bg);border-radius:16px;padding:24px clamp(16px,4vw,56px) 28px;display:flex;flex-direction:column;gap:22px;color:var(--tr-ink)}:root[data-theme=dark] .trophy-room-page{--tr-bg: #1b140d;--tr-bg-deep: #241a10;--tr-ink: #ede3cc;--tr-ink-soft: #b9aa8c;--tr-rule: #d4af5a;--tr-wax-blank: #3f3427;--tr-wax-blank-shade: #2f271c;--tr-wax-blank-deep: #221c13;--tr-vert-haut: #9ccfa0;--tr-vert: #5c8b63;--tr-vert-bas: #2f4f36;--tr-tenne-haut: #efab72;--tr-tenne: #c97a3b;--tr-tenne-bas: #74401a;--tr-or-haut: #f5dc93;--tr-or: #d4af5a;--tr-or-bas: #7f6220;--tr-purpure-haut: #c095d6;--tr-purpure: #8b63a8;--tr-purpure-bas: #4e3063;--tr-gules-haut: #ec8574;--tr-gules: #c1503a;--tr-gules-bas: #722416;--tr-etain: #9d8c6d;--tr-argent: #b8bfc6;--tr-orfevre: #e0bb5f}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .trophy-room-page{--tr-bg: #1b140d;--tr-bg-deep: #241a10;--tr-ink: #ede3cc;--tr-ink-soft: #b9aa8c;--tr-rule: #d4af5a;--tr-wax-blank: #3f3427;--tr-wax-blank-shade: #2f271c;--tr-wax-blank-deep: #221c13;--tr-vert-haut: #9ccfa0;--tr-vert: #5c8b63;--tr-vert-bas: #2f4f36;--tr-tenne-haut: #efab72;--tr-tenne: #c97a3b;--tr-tenne-bas: #74401a;--tr-or-haut: #f5dc93;--tr-or: #d4af5a;--tr-or-bas: #7f6220;--tr-purpure-haut: #c095d6;--tr-purpure: #8b63a8;--tr-purpure-bas: #4e3063;--tr-gules-haut: #ec8574;--tr-gules: #c1503a;--tr-gules-bas: #722416;--tr-etain: #9d8c6d;--tr-argent: #b8bfc6;--tr-orfevre: #e0bb5f}}.trophy-room-hero{text-align:center;padding-bottom:14px;border-bottom:1px solid var(--tr-rule);position:relative}.trophy-room-crest{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:6px}.trophy-emblem{width:36px;height:36px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;color:var(--tr-bg);background:radial-gradient(circle at 35% 30%,var(--tr-rule),var(--tr-gules) 75%);box-shadow:0 2px 6px #00000040}.trophy-room-hero h1{font-family:Cinzel,serif;font-weight:700;font-size:clamp(23px,2.7vw,31px);letter-spacing:.05em;margin:0;color:var(--tr-ink)}.trophy-room-subtitle{font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--tr-ink-soft);margin:0}.trophy-hall{display:grid;grid-template-columns:minmax(150px,210px) minmax(0,1fr) minmax(150px,210px);gap:clamp(16px,3vw,44px);align-items:center}.trophy-lozenge-wrap{display:flex;flex-direction:column;align-items:center;gap:22px}.seal-lozenge{display:flex;flex-direction:column;align-items:center;gap:clamp(8px,1.2vw,16px);width:100%}.seal-row{display:flex;justify-content:center;gap:clamp(8px,1.2vw,16px)}.seal{appearance:none;border:0;padding:0;background:none;font:inherit;color:inherit;cursor:pointer;display:block;line-height:0;border-radius:50%;opacity:0;transform:translateY(10px) scale(.94);animation:seal-stamp .5s ease forwards;animation-delay:var(--seal-delay, 0s)}.seal:focus-visible{outline:2px solid var(--tr-rule);outline-offset:6px}@media(prefers-reduced-motion:reduce){.seal{opacity:1;transform:none;animation:none}}@keyframes seal-stamp{to{opacity:1;transform:translateY(0) scale(1)}}.seal-medallion{width:clamp(44px,5vw,72px);height:clamp(44px,5vw,72px);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:clamp(17px,2vw,26px);line-height:1;position:relative;transition:transform .25s ease,box-shadow .25s ease;box-shadow:inset 0 -5px 9px #00000038,inset 0 3px 5px #ffffff24,var(--sertissure, 0 0 0 0 transparent),0 3px 8px #00000038}.seal:hover .seal-medallion,.seal:focus-visible .seal-medallion{transform:translateY(-3px) scale(1.06)}.seal-category-progression{--t-haut: var(--tr-vert-haut);--t: var(--tr-vert);--t-bas: var(--tr-vert-bas)}.seal-category-streak{--t-haut: var(--tr-tenne-haut);--t: var(--tr-tenne);--t-bas: var(--tr-tenne-bas)}.seal-category-achievement{--t-haut: var(--tr-or-haut);--t: var(--tr-or);--t-bas: var(--tr-or-bas)}.seal-category-special{--t-haut: var(--tr-purpure-haut);--t: var(--tr-purpure);--t-bas: var(--tr-purpure-bas)}.seal-category-grade{--t-haut: var(--tr-gules-haut);--t: var(--tr-gules);--t-bas: var(--tr-gules-bas)}.seal-earned .seal-medallion,.trophy-legend-swatch{background:radial-gradient(circle at 30% 22%,#ffffff6b,#fff0 24%),radial-gradient(circle at 34% 26%,var(--t-haut) 0%,var(--t) 46%,var(--t-bas) 100%)}.seal-earned .seal-medallion{color:var(--tr-bg);text-shadow:0 1px 1px rgba(0,0,0,.3)}.seal-locked .seal-medallion{background:radial-gradient(circle at 30% 22%,#ffffff2e,#fff0 26%),radial-gradient(circle at 34% 26%,var(--tr-wax-blank) 0%,var(--tr-wax-blank-shade) 52%,var(--tr-wax-blank-deep) 100%);color:transparent}.seal-locked{opacity:.9}.seal-earned{--m-etain: var(--tr-etain);--m-argent: var(--tr-argent);--m-or: var(--tr-orfevre);--m-halo: color-mix(in srgb, var(--tr-orfevre), transparent 55%)}.seal-locked{--m-etain: color-mix(in srgb, var(--tr-etain), var(--tr-wax-blank) 25%);--m-argent: color-mix(in srgb, var(--tr-argent), var(--tr-wax-blank) 30%);--m-or: color-mix(in srgb, var(--tr-orfevre), var(--tr-wax-blank) 30%);--m-halo: transparent}.seal,.trophy-legend-bezel{--e: 1px}.seal-medallion:before,.seal-medallion:after{content:"";position:absolute;border-radius:50%;pointer-events:none}.seal-medallion:after{inset:var(--anneau-inset, 0);background:var(--anneau-motif, none);-webkit-mask:radial-gradient(closest-side,#0000 calc(100% - var(--anneau-ep, 0%)),#000 calc(100% - var(--anneau-ep, 0%)));mask:radial-gradient(closest-side,#0000 calc(100% - var(--anneau-ep, 0%)),#000 calc(100% - var(--anneau-ep, 0%)))}.seal-medallion:before{inset:var(--dents-inset, 0);background:var(--dents-motif, none);-webkit-mask:radial-gradient(closest-side,#0000 calc(100% - var(--dents-ep, 0%)),#000 calc(100% - var(--dents-ep, 0%)));mask:radial-gradient(closest-side,#0000 calc(100% - var(--dents-ep, 0%)),#000 calc(100% - var(--dents-ep, 0%)))}.seal-rarity-commun{--sertissure: 0 0 0 0 transparent}.seal-rarity-peu-commun{--sertissure: 0 0 0 calc(1 * var(--e)) color-mix(in srgb, var(--m-etain), transparent 40%);--anneau-inset: calc(-2 * var(--e));--anneau-ep: 15%;--anneau-motif: repeating-conic-gradient( from 0deg, var(--m-etain) 0deg 4deg, transparent 4deg 9deg )}.seal-rarity-rare{--sertissure: 0 0 0 calc(1.5 * var(--e)) var(--m-etain), 0 0 0 calc(4 * var(--e)) color-mix(in srgb, var(--tr-ink), transparent 80%);--anneau-inset: calc(-3.5 * var(--e));--anneau-ep: 19%;--anneau-motif: repeating-conic-gradient( from 0deg, color-mix(in srgb, var(--m-etain), #000 18%) 0deg 6deg, color-mix(in srgb, var(--m-etain), #fff 18%) 6deg 12deg )}.seal-rarity-tres-rare{--sertissure: 0 0 0 calc(3 * var(--e)) var(--m-argent), 0 0 0 calc(4 * var(--e)) color-mix(in srgb, var(--tr-ink), transparent 45%);--anneau-inset: calc(-3 * var(--e));--anneau-ep: 20%;--anneau-motif: repeating-conic-gradient( from 0deg, color-mix(in srgb, var(--m-argent), #fff 35%) 0deg 9deg, color-mix(in srgb, var(--m-argent), #000 30%) 9deg 18deg );--dents-inset: calc(-6 * var(--e));--dents-ep: 17%;--dents-motif: repeating-conic-gradient( from 6deg, var(--m-argent) 0deg 8deg, transparent 8deg 20deg )}.seal-rarity-souverain{--sertissure: 0 0 0 calc(2 * var(--e)) var(--m-or), 0 0 0 calc(6.5 * var(--e)) color-mix(in srgb, var(--tr-ink), transparent 70%), 0 0 calc(24 * var(--e)) calc(3 * var(--e)) var(--m-halo);--anneau-inset: calc(-6.5 * var(--e));--anneau-ep: 30%;--anneau-motif: repeating-conic-gradient( from 0deg, color-mix(in srgb, var(--m-or), #000 30%) 0deg 3deg, color-mix(in srgb, var(--m-or), #fff 45%) 3deg 6deg );--dents-inset: calc(-10 * var(--e));--dents-ep: 16%;--dents-motif: repeating-conic-gradient( from 0deg, var(--m-or) 0deg 2.5deg, transparent 2.5deg 18deg )}.seal-detail{min-height:76px;width:min(100%,460px);text-align:center;border-top:1px solid color-mix(in srgb,var(--tr-rule),transparent 55%);padding-top:16px}.seal-detail-title{font-family:Cormorant Garamond,serif;font-weight:600;font-size:19px;letter-spacing:.03em;color:var(--tr-ink);margin:0 0 4px;display:flex;align-items:baseline;justify-content:center;gap:10px;flex-wrap:wrap}.seal-detail-rarity{font-family:IBM Plex Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--tr-ink-soft)}.seal-detail-text,.seal-detail-hint{font-family:Cormorant Garamond,serif;font-size:15px;font-style:italic;color:var(--tr-ink-soft);margin:0;line-height:1.5}.seal-detail-hint{opacity:.75}.trophy-legend-title{font-family:Cinzel,serif;font-size:13px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--tr-ink);margin:0 0 2px}.trophy-legend-intro{font-family:Cormorant Garamond,serif;font-style:italic;font-size:13px;color:var(--tr-ink-soft);margin:0 0 14px}.trophy-legend-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}.trophy-legend-item{display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:10px}.trophy-legend-text{display:flex;flex-direction:column;min-width:0}.trophy-legend-label{font-family:IBM Plex Mono,monospace;font-size:11px;letter-spacing:.02em;color:var(--tr-ink)}.trophy-legend-sense{font-family:Cormorant Garamond,serif;font-style:italic;font-size:13px;color:var(--tr-ink-soft)}.trophy-legend-swatch{width:14px;height:14px;border-radius:50%;justify-self:center;box-shadow:inset 0 -2px 3px #00000040,0 1px 2px #0003}.trophy-legend-bezel{--e: .55px;--m-etain: var(--tr-etain);--m-argent: var(--tr-argent);--m-or: var(--tr-orfevre);--m-halo: color-mix(in srgb, var(--tr-orfevre), transparent 70%);position:relative;width:26px;height:26px;border-radius:50%;justify-self:center;background:radial-gradient(circle at 34% 26%,var(--tr-wax-blank),var(--tr-wax-blank-deep) 85%);box-shadow:var(--sertissure, 0 0 0 0 transparent)}.trophy-legend-bezel:before,.trophy-legend-bezel:after{content:"";position:absolute;border-radius:50%;pointer-events:none}.trophy-legend-bezel:after{inset:var(--anneau-inset, 0);background:var(--anneau-motif, none);-webkit-mask:radial-gradient(closest-side,#0000 calc(100% - var(--anneau-ep, 0%)),#000 calc(100% - var(--anneau-ep, 0%)));mask:radial-gradient(closest-side,#0000 calc(100% - var(--anneau-ep, 0%)),#000 calc(100% - var(--anneau-ep, 0%)))}.trophy-legend-bezel:before{inset:var(--dents-inset, 0);background:var(--dents-motif, none);-webkit-mask:radial-gradient(closest-side,#0000 calc(100% - var(--dents-ep, 0%)),#000 calc(100% - var(--dents-ep, 0%)));mask:radial-gradient(closest-side,#0000 calc(100% - var(--dents-ep, 0%)),#000 calc(100% - var(--dents-ep, 0%)))}.trophy-legend-bezel.seal-rarity-commun{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tr-ink),transparent 70%)}.loading-state,.empty-state{background:var(--tr-bg-deep);border-radius:12px;padding:60px 20px;text-align:center}.loading-state .spinner{width:40px;height:40px;margin:0 auto 20px}.loading-state p,.empty-state p{font-family:Cormorant Garamond,serif;font-style:italic;color:var(--tr-ink-soft);font-size:16px;margin:0}.spinner{width:50px;height:50px;border:4px solid var(--tr-wax-blank);border-top:4px solid var(--tr-gules);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media(max-width:900px){.trophy-hall{grid-template-columns:1fr;gap:28px}.trophy-legend-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px 18px}.trophy-lozenge-wrap{order:-1}}@media(max-width:480px){.trophy-room-page{padding:28px 12px 24px}.seal-detail{min-height:92px}}.legal-page{min-height:100vh;background:var(--bg-page);padding:40px 20px 80px}.legal-container{max-width:800px;margin:0 auto;background:var(--bg-card);border-radius:12px;padding:40px;box-shadow:var(--shadow-sm);color:var(--text-primary)}.legal-back{display:inline-block;margin-bottom:24px;color:var(--brand-start);text-decoration:none;font-family:var(--font-mono);font-size:13px;font-weight:500}.legal-back:hover{text-decoration:underline}.legal-container h1{font-family:var(--font-display);font-size:28px;margin-bottom:8px;color:var(--text-primary)}.legal-updated{color:var(--text-muted);font-size:13px;margin-bottom:32px}.legal-container h2{font-family:var(--font-display);font-size:19px;margin-top:32px;margin-bottom:12px;color:var(--text-primary);padding-bottom:8px;border-bottom:1px solid var(--border-color)}.legal-container p{color:var(--text-secondary);line-height:1.7;margin-bottom:14px}.legal-container ul{margin:0 0 14px;padding-left:24px;color:var(--text-secondary);line-height:1.7}.legal-container li{margin-bottom:6px}.legal-container a{color:var(--brand-start)}.legal-container code{background:var(--code-inline-bg);color:var(--code-inline-text);padding:2px 6px;border-radius:4px;font-size:.9em}.legal-table{width:100%;border-collapse:collapse;margin:16px 0 24px;font-size:14px}.legal-table th,.legal-table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border-color);color:var(--text-secondary)}.legal-table th{background:var(--bg-subtle);color:var(--text-primary);font-weight:600}@media(max-width:600px){.legal-container{padding:24px 18px}.legal-container h1{font-size:22px}.legal-table{display:block;overflow-x:auto}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}.container{max-width:1200px;margin:0 auto;padding:0 20px}.text-center{text-align:center}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mt-4{margin-top:2rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}
