:root{--sky:#0ea5e9;--sky-l:#e0f2fe;--sky-d:#0284c7;--sky-h:#38bdf8;--violet:#7c3aed;--violet-ui:#a855f7;--bg:#f1f7fb;--bg-page:#e8f4fb;--white:#fff;--text:#1e293b;--muted:#64748b;--subtle:#94a3b8;--border:#e2e8f0;--orange:#fb923c;--orange-d:#c2410c;--green:#4ade80;--red:#f87171;--grey:#cbd5e1;--shadow-card:0 2px 8px rgba(0,0,0,.06);--radius-lg:18px;--radius-md:14px;--radius-btn:12px;--radius-pill:99px}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%;overflow:hidden}body{font-family:'Nunito',sans-serif;background:var(--bg-page);color:var(--text);display:flex;justify-content:center;align-items:flex-start}#app{width:100%;max-width:430px;height:100dvh;background:var(--bg);display:flex;flex-direction:column;overflow:hidden;position:relative;user-select:none;-webkit-user-select:none}.screen{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;transition:opacity .2s}.screen.hidden{display:none}.scroll-area{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding-bottom:80px}.scroll-area::-webkit-scrollbar{display:none}.navbar{background:var(--white);border-top:1px solid var(--border);display:flex;justify-content:space-around;align-items:flex-end;padding:8px 0 max(20px,env(safe-area-inset-bottom));flex-shrink:0;z-index:10}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;touch-action:manipulation;padding:0 8px}.nav-icon{font-size:22px;line-height:1}.nav-lbl{font-size:9px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.nav-item.active .nav-lbl{color:var(--sky)}.nav-badge{position:absolute;top:-2px;right:-4px;background:var(--orange);color:#fff;font-size:9px;font-weight:900;border-radius:99px;min-width:16px;height:16px;padding:0 4px;display:flex;align-items:center;justify-content:center;border:2px solid var(--white);line-height:1}.nav-item{position:relative}#screen-loading{background:#0a0e14;justify-content:center;align-items:center;z-index:100;position:relative;overflow:hidden;}#screen-loading{background:#000 !important;}.loading-bg{position:absolute;inset:0;background-color:#0a0e14;background-image:url('/images/loading-bg.jpg');background-size:cover;background-position:center;}
.loading-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.1) 0%,rgba(0,0,0,.0) 40%,rgba(0,0,0,.55) 75%,rgba(0,0,0,.85) 100%);}
.loading-content{position:absolute;bottom:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:10px;padding:0 24px 48px;color:#fff;}
.loading-logo{font-size:0;display:none;}
.loading-title{font-size:32px;font-weight:900;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.6);letter-spacing:.02em;}
.loading-sub{font-size:13px;font-weight:700;color:rgba(255,255,255,.85);text-shadow:0 1px 6px rgba(0,0,0,.5);}
.loading-bar-track{width:220px;height:5px;background:rgba(255,255,255,.25);border-radius:99px;overflow:hidden;}
.loading-bar-fill{height:100%;background:linear-gradient(90deg,#0ea5e9,#38bdf8);border-radius:99px;width:0;transition:width .3s;}
@keyframes fadeInBg{0%{opacity:0;transform:scale(1.04);}100%{opacity:1;transform:scale(1);}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}.home-header{background:linear-gradient(160deg,#0ea5e9 0%,#38bdf8 100%);padding:14px 16px 12px;position:relative;overflow:hidden;flex-shrink:0}.home-header::after{content:'';position:absolute;top:-30px;right:-30px;width:160px;height:160px;background:rgba(255,255,255,.1);border-radius:50%;pointer-events:none}.header-row1{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;position:relative;z-index:2}.header-logo{font-size:16px;font-weight:900;color:#fff}.chip-streak{background:var(--orange);border-radius:99px;padding:4px 12px;font-size:11px;font-weight:800;color:#fff}.header-date{font-size:10px;color:rgba(255,255,255,.75);margin-bottom:12px;position:relative;z-index:2}.header-card{background:rgba(255,255,255,.2);border-radius:var(--radius-md);padding:12px 13px;display:flex;align-items:center;gap:12px;position:relative;z-index:2}.header-card-text{flex:1}.header-card-title{font-size:12px;font-weight:900;color:#fff;margin-bottom:2px}.header-card-sub{font-size:9px;color:rgba(255,255,255,.8);margin-bottom:7px;line-height:1.4}.seg-bar{height:5px;border-radius:99px;display:flex;overflow:hidden;margin-bottom:5px}.seg-bar-hint{font-size:9px;color:rgba(255,255,255,.85)}.home-section{padding:14px 14px 0}.sec-title{font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--sky);margin-bottom:12px;padding-bottom:7px;border-bottom:2px solid var(--sky-l)}.home-card{background:var(--white);border-radius:var(--radius-lg);padding:14px;box-shadow:var(--shadow-card);margin-bottom:14px}.memory-row{display:flex;align-items:center;gap:12px}.brain-wrap{position:relative;width:52px;height:52px;flex-shrink:0}.brain-icon{font-size:42px;line-height:1}.brain-num{position:absolute;top:-4px;right:-4px;background:var(--sky);color:#fff;font-size:11px;font-weight:900;border-radius:99px;min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;padding:0 5px;border:2px solid #fff;box-shadow:0 1px 4px rgba(14,165,233,.3)}.memory-info{flex:1}.memory-count{font-size:22px;font-weight:900;color:var(--sky);line-height:1}.memory-label{font-size:11px;font-weight:700;color:var(--muted);margin-bottom:8px}.altimeter-row{display:flex;align-items:center;gap:12px}.alti-icon-wrap{font-size:36px;flex-shrink:0}.alti-info{flex:1}.alti-level-name{font-size:13px;font-weight:900;color:var(--text)}.alti-label{font-size:10px;font-weight:700;color:var(--muted);margin-bottom:6px}.alti-bar-track{height:7px;border-radius:99px;background:var(--border);overflow:hidden;margin-bottom:4px}.alti-bar-fill{height:100%;border-radius:99px;transition:width .6s ease}.alti-score{font-size:11px;font-weight:800;color:var(--muted)}.alti-citation{margin-top:10px;padding:10px 12px;background:var(--bg);border-radius:var(--radius-md);border-left:3px solid var(--sky);font-size:11px;font-style:italic;color:var(--muted);line-height:1.5}.themes-hint{font-size:11px;font-style:italic;color:var(--sky);margin-bottom:10px}.theme-grid{display:flex;gap:7px;margin-bottom:12px}.theme-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--bg);border-radius:var(--radius-md);padding:9px 3px;cursor:pointer;transition:all .15s}.theme-item:hover{transform:translateY(-1px)}.theme-item.priority{background:var(--sky-l);border:1.5px solid rgba(14,165,233,.25)}.theme-emoji{font-size:20px}.theme-item.priority .theme-emoji{font-size:26px}.theme-name-lbl{font-size:8px;font-weight:700;color:var(--muted);text-align:center;line-height:1.2}.theme-dot{width:6px;height:6px;border-radius:50%;background:var(--sky)}.modes-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.mode-card{background:var(--white);border-radius:var(--radius-lg);padding:14px 10px;box-shadow:var(--shadow-card);display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;transition:all .15s}.mode-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.1)}.mode-emoji{font-size:28px}.mode-name{font-size:12px;font-weight:800;color:var(--text);text-align:center}.progress-section .roue-row{display:flex;align-items:center;gap:16px;margin-bottom:12px}.circ-wrap{position:relative;flex-shrink:0}.circ-wrap svg{display:block}.circ-inner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.circ-total{font-size:18px;font-weight:900;color:var(--sky)}.circ-lbl{font-size:7px;font-weight:800;color:var(--subtle);text-transform:uppercase}.roue-legend{display:flex;flex-direction:column;gap:5px}.leg-row{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700;color:var(--muted)}.leg-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.progress-note{font-size:9px;color:var(--subtle);margin-top:4px;font-weight:700}.theme-bars{display:flex;flex-direction:column;gap:8px;margin-top:10px}.theme-bar-row{display:flex;align-items:center;gap:8px}.theme-bar-icon{font-size:14px;flex-shrink:0}.theme-bar-track{flex:1;height:6px;border-radius:99px;display:flex;overflow:hidden;background:var(--border)}.theme-bar-pct{font-size:9px;font-weight:800;color:var(--muted);width:28px;text-align:right}.badges-scroll{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.badges-scroll::-webkit-scrollbar{display:none}.badge-pill{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;background:rgba(255,255,255,.15);border:1.5px solid rgba(255,255,255,.3);border-radius:99px;padding:5px 10px;font-size:11px;font-weight:800;color:rgba(255,255,255,.7);flex-shrink:0}.badge-pill.earned{background:rgba(255,255,255,.9);border-color:#fff;color:var(--sky-d)}.badge-pill.locked{color:rgba(255,255,255,.45);border-color:rgba(255,255,255,.2)}.histo-list{border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card)}.histo-item{display:flex;align-items:center;gap:10px;padding:11px 13px;background:var(--white);border-bottom:1px solid var(--border)}.histo-item:last-child{border-bottom:none}.histo-icon{width:32px;height:32px;border-radius:10px;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.histo-text{flex:1}.histo-name{font-size:11px;font-weight:800;color:var(--text)}.histo-meta{font-size:9px;color:var(--muted)}.histo-score{font-size:14px;font-weight:900}.citation-card{background:var(--white);border-left:4px solid var(--sky);border-radius:0 var(--radius-lg) var(--radius-lg) 0;padding:14px 16px 18px;box-shadow:var(--shadow-card);margin-bottom:24px}.citation-text{font-size:12px;font-style:italic;color:var(--text);line-height:1.6;margin-bottom:6px}.citation-author{font-size:10px;color:var(--muted);font-weight:700}.btn-primary{background:var(--sky);border:none;border-radius:var(--radius-btn);padding:11px 18px;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;color:#fff;cursor:pointer;touch-action:manipulation;touch-action:manipulation;transition:all .15s;width:100%}.btn-primary:hover{background:var(--sky-d)}.btn-gradient{background:linear-gradient(90deg,var(--sky),var(--violet));border:none;border-radius:var(--radius-btn);padding:12px 18px;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;color:#fff;cursor:pointer;touch-action:manipulation;transition:opacity .15s;width:100%}.btn-gradient:hover{opacity:.9}.btn-secondary{background:var(--bg);border:2px solid var(--border);border-radius:var(--radius-btn);padding:10px 18px;font-family:'Nunito',sans-serif;font-size:12px;font-weight:800;color:var(--muted);cursor:pointer;touch-action:manipulation;transition:all .15s}.btn-secondary:hover{border-color:var(--sky);color:var(--sky)}.mode-screen-header{background:linear-gradient(160deg,#0ea5e9,#38bdf8);padding:max(16px,env(safe-area-inset-top)) 16px 16px;display:flex;align-items:center;gap:12px;flex-shrink:0}.back-btn{background:rgba(255,255,255,.2);border:none;border-radius:99px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;color:#fff;flex-shrink:0}.mode-screen-title{font-size:16px;font-weight:900;color:#fff}.mode-screen-sub{font-size:11px;color:rgba(255,255,255,.8);font-weight:700}.config-body{padding:16px}.config-section{margin-bottom:18px}.config-label{font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--sky);margin-bottom:10px}.year-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.year-btn{padding:10px 4px;border-radius:var(--radius-btn);font-size:12px;font-weight:800;border:2px solid var(--border);background:var(--white);color:var(--muted);cursor:pointer;text-align:center;transition:all .15s;font-family:'Nunito',sans-serif}.year-btn.active{background:var(--sky);border-color:var(--sky);color:#fff}.theme-select-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.theme-sel-btn{padding:10px 6px;border-radius:var(--radius-btn);font-size:11px;font-weight:800;border:2px solid var(--border);background:var(--white);color:var(--muted);cursor:pointer;text-align:center;display:flex;flex-direction:column;align-items:center;gap:3px;transition:all .15s;font-family:'Nunito',sans-serif}.theme-sel-btn .tse{font-size:20px}.theme-sel-btn.active{background:var(--sky-l);border-color:var(--sky);color:var(--sky-d)}.count-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.count-btn{padding:10px 4px;border-radius:var(--radius-btn);font-size:12px;font-weight:800;border:2px solid var(--border);background:var(--white);color:var(--muted);cursor:pointer;text-align:center;transition:all .15s;font-family:'Nunito',sans-serif}.count-btn.active{background:var(--sky);border-color:var(--sky);color:#fff}.toggle-row{display:flex;align-items:center;justify-content:space-between;background:var(--white);border-radius:var(--radius-btn);padding:12px 14px;box-shadow:var(--shadow-card)}.toggle-info{display:flex;align-items:center;gap:10px}.toggle-emoji{font-size:20px}.toggle-text{font-size:12px;font-weight:800;color:var(--text)}.toggle-sub{font-size:10px;font-weight:700;color:var(--muted)}.toggle-switch{width:44px;height:24px;background:var(--border);border-radius:99px;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}.toggle-switch.on{background:var(--sky)}.toggle-knob{position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}.toggle-switch.on .toggle-knob{left:23px}.config-summary{background:var(--sky-l);border-radius:var(--radius-md);padding:11px 14px;margin-bottom:16px;font-size:12px;font-weight:700;color:var(--sky-d)}.config-summary strong{font-weight:900}.session-header{background:linear-gradient(160deg,#0ea5e9,#38bdf8);padding:max(14px,env(safe-area-inset-top)) 16px 12px;flex-shrink:0}.session-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:8px}.session-title{font-size:13px;font-weight:900;color:#fff;flex:1}.session-timer-wrap{background:rgba(255,255,255,.2);border-radius:99px;padding:4px 10px;display:flex;align-items:center;gap:5px;flex-shrink:0}.session-timer-txt{font-size:12px;font-weight:800;color:#fff}.session-prog{font-size:10px;font-weight:700;color:rgba(255,255,255,.85);margin-bottom:5px}.session-bar{height:4px;background:rgba(255,255,255,.3);border-radius:99px;overflow:hidden}.session-bar-fill{height:100%;background:#fff;border-radius:99px;transition:width .3s}.nav-grid-bar{background:var(--white);border-top:1px solid var(--border);padding:8px 12px max(8px,env(safe-area-inset-bottom));flex-shrink:0}.nav-grid-inner{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;max-height:80px;overflow-y:auto}.nav-grid-inner::-webkit-scrollbar{display:none}.ngdot{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;cursor:pointer;border:1.5px solid var(--border);background:var(--bg);color:var(--muted);transition:all .1s;flex-shrink:0}.ngdot.mastered{background:var(--violet-ui);border-color:var(--violet-ui);color:#fff}.ngdot.consolidate{background:var(--orange);border-color:var(--orange);color:#fff}.ngdot.skipped{background:var(--white);border-color:var(--grey);color:var(--subtle)}.ngdot.current{box-shadow:0 0 0 2.5px var(--sky);transform:scale(1.12);z-index:1}.q-zone{flex:1;overflow-y:auto;padding:12px 14px 8px}.q-zone::-webkit-scrollbar{display:none}.q-card{background:var(--white);border-radius:var(--radius-lg);padding:14px;box-shadow:var(--shadow-card);margin-bottom:10px}.q-num{font-size:10px;font-weight:800;color:var(--muted);margin-bottom:7px;display:flex;align-items:center;gap:6px}.q-theme-chip{background:var(--sky-l);border-radius:99px;padding:2px 8px;font-size:9px;font-weight:800;color:var(--sky-d)}.q-text{font-size:13px;font-weight:700;line-height:1.55;color:var(--text)}.q-image{width:100%;border-radius:10px;margin-top:10px;display:block}.answers-list{display:flex;flex-direction:column;gap:7px;margin-bottom:10px}.ans-btn{background:var(--white);border:2px solid var(--border);border-radius:var(--radius-btn);padding:11px 14px;font-size:12px;font-weight:700;color:var(--text);cursor:pointer;touch-action:manipulation;text-align:left;transition:all .15s;font-family:'Nunito',sans-serif;display:flex;align-items:flex-start;gap:8px;width:100%}.ans-btn:hover:not(:disabled){border-color:var(--sky);background:var(--sky-l)}.ans-btn:disabled{cursor:default}.ans-btn.selected-correct{background:#f0fdf4;border-color:var(--green);color:#166534}.ans-btn.selected-wrong{background:#fff1f2;border-color:var(--red);color:#991b1b}.ans-btn.reveal-correct{background:#f0fdf4;border-color:var(--green);color:#166534}.ans-letter{font-size:10px;font-weight:900;background:var(--bg);border-radius:5px;padding:2px 5px;flex-shrink:0;margin-top:1px}.ans-btn.selected-correct .ans-letter{background:#dcfce7}.ans-btn.selected-wrong .ans-letter{background:#fee2e2}.ans-btn.reveal-correct .ans-letter{background:#dcfce7}.feedback-box{border-radius:var(--radius-md);padding:12px 14px;margin-bottom:10px;display:flex;align-items:flex-start;gap:10px}.fb-mastered{background:#ede9fe;border:2px solid var(--violet-ui)}.fb-consolidate{background:#fff7ed;border:2px solid var(--orange)}.fb-icon{font-size:22px;flex-shrink:0}.fb-content{}.fb-title{font-size:13px;font-weight:900}.fb-title.m{color:var(--violet)}.fb-title.c{color:var(--orange-d)}.fb-sub{font-size:11px;font-weight:700;color:var(--muted);margin-top:2px}.fb-explication{margin-top:6px;font-size:11px;font-weight:700;color:var(--muted);font-style:italic;display:none}.session-actions{display:flex;gap:8px;padding:0 0 4px}.btn-skip-q{flex:1;padding:11px;border-radius:var(--radius-btn);font-size:12px;font-weight:800;background:var(--bg);border:2px solid var(--border);color:var(--muted);cursor:pointer;font-family:'Nunito',sans-serif;transition:all .15s}.btn-skip-q:hover{border-color:var(--sky);color:var(--sky)}.btn-continue-q{flex:2;padding:11px;border-radius:var(--radius-btn);font-size:12px;font-weight:800;background:linear-gradient(90deg,var(--sky),var(--violet));color:#fff;border:none;cursor:pointer;font-family:'Nunito',sans-serif;transition:opacity .15s}.btn-continue-q:disabled{opacity:.4;cursor:not-allowed;background:var(--border);color:var(--muted)}.btn-continue-q:not(:disabled):hover{opacity:.9}.results-header{background:linear-gradient(160deg,#0ea5e9,#7c3aed);padding:max(20px,env(safe-area-inset-top)) 20px 24px;text-align:center;flex-shrink:0}.results-score-big{font-size:56px;font-weight:900;color:#fff;line-height:1}.results-mention{font-size:16px;font-weight:800;color:rgba(255,255,255,.9);margin-top:4px}.results-subtitle{font-size:12px;color:rgba(255,255,255,.75);margin-top:3px}.results-body{padding:16px}.results-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;margin-bottom:14px}.stat-card{background:var(--white);border-radius:var(--radius-md);padding:12px 8px;text-align:center;box-shadow:var(--shadow-card)}.stat-val{font-size:20px;font-weight:900}.stat-lbl{font-size:9px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.results-theme-breakdown{margin-bottom:14px}.results-card{background:var(--white);border-radius:var(--radius-lg);padding:14px;box-shadow:var(--shadow-card)}.results-card-title{font-size:11px;font-weight:900;color:var(--sky);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px}.theme-result-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}.theme-result-name{font-size:11px;font-weight:700;color:var(--text);flex:1}.theme-result-pct{font-size:12px;font-weight:900;width:40px;text-align:right}.stats-header{background:linear-gradient(160deg,#0ea5e9,#38bdf8);padding:max(16px,env(safe-area-inset-top)) 16px 16px;flex-shrink:0}.stats-title{font-size:18px;font-weight:900;color:#fff}.stats-sub{font-size:11px;color:rgba(255,255,255,.8)}.settings-header{background:linear-gradient(160deg,#0ea5e9,#38bdf8);padding:max(16px,env(safe-area-inset-top)) 16px 16px;flex-shrink:0}.settings-title{font-size:18px;font-weight:900;color:#fff}.settings-body{padding:16px}.settings-section-title{font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--sky);margin:16px 0 10px}.settings-row{background:var(--white);border-radius:var(--radius-btn);padding:13px 14px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-card);margin-bottom:7px}.settings-row-info{display:flex;flex-direction:column;gap:2px;}.settings-row-label{font-size:13px;font-weight:800;color:var(--text)}.settings-row-sub{font-size:11px;font-weight:700;color:var(--muted)}.settings-input{font-family:'Nunito',sans-serif;font-size:16px;font-weight:800;border:2px solid var(--border);border-radius:8px;padding:5px 9px;color:var(--text);background:var(--bg)}.settings-input:focus{outline:none;border-color:var(--sky)}.btn-escale{background:var(--bg);border:2px solid var(--border);border-radius:var(--radius-btn);padding:10px 14px;font-family:'Nunito',sans-serif;font-size:12px;font-weight:800;color:var(--muted);cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:6px}.btn-escale:hover{border-color:var(--orange);color:var(--orange)}.resume-card{background:var(--white);border:2px solid var(--orange);border-radius:var(--radius-lg);margin:14px 14px 0;box-shadow:var(--shadow-card);overflow:hidden}.resume-card-header{background:linear-gradient(90deg,#fff7ed,#fffbeb);padding:12px 14px 10px;border-bottom:1px solid var(--border)}.resume-card-icon-title{display:flex;align-items:center;gap:10px;margin-bottom:4px}.resume-card-icon{font-size:22px;flex-shrink:0}.resume-card-title{font-size:14px;font-weight:900;color:var(--orange-d)}.resume-card-progress{font-size:11px;font-weight:700;color:var(--muted)}.resume-card-actions{display:flex;flex-direction:column;gap:0}.btn-resume-flight{padding:12px 14px;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;color:var(--orange-d);background:transparent;border:none;cursor:pointer;text-align:left;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);transition:background .15s}.btn-resume-flight:hover{background:var(--sky-l)}.btn-cancel-flight{padding:12px 14px;font-family:'Nunito',sans-serif;font-size:12px;font-weight:700;color:var(--red);background:transparent;border:none;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:3px;transition:background .15s}.btn-cancel-flight:hover{background:#fff1f2}.btn-cancel-comment{font-size:10px;font-weight:700;color:var(--subtle);font-style:italic}.spacer{height:20px}.text-sky{color:var(--sky)}.text-violet{color:var(--violet-ui)}.text-orange{color:var(--orange)}.text-green{color:var(--green)}.fc-menu-section{padding:14px 14px 0}.fc-deck-btn{background:var(--white);border-radius:var(--radius-lg);padding:14px 16px;box-shadow:var(--shadow-card);display:flex;align-items:center;gap:12px;cursor:pointer;transition:all .15s;margin-bottom:9px;border:2px solid transparent}.fc-deck-btn:hover{border-color:var(--sky);transform:translateY(-1px)}.fc-deck-icon{font-size:24px;flex-shrink:0}.fc-deck-info{flex:1}.fc-deck-label{font-size:13px;font-weight:800;color:var(--text)}.fc-deck-meta{font-size:10px;font-weight:700;color:var(--muted);margin-top:2px}.fc-deck-count{font-size:18px;font-weight:900;color:var(--sky);flex-shrink:0}.fc-deck-due{font-size:10px;font-weight:800;color:var(--orange);text-align:right}.fc-scene{width:100%;perspective:900px;margin-bottom:12px}.fc-card{width:100%;position:relative;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.34,1.2,.64,1);cursor:pointer}.fc-card.flipped{transform:rotateY(180deg)}.fc-face{position:relative;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:var(--radius-lg);padding:22px 18px;background:var(--white);box-shadow:var(--shadow-card);min-height:200px;display:flex;flex-direction:column;justify-content:space-between}.fc-face-back{position:absolute;top:0;left:0;width:100%;transform:rotateY(180deg);background:linear-gradient(135deg,#f0f7ff,#e8f0fe);border:2px solid var(--sky);overflow-y:auto;min-height:200px;max-height:none;}.fc-face-label{font-size:9px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:var(--subtle);margin-bottom:12px}.fc-face-label.back{color:var(--sky)}.fc-face-label.fc-lang-label{text-align:center;text-transform:none;letter-spacing:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.fc-face-label.fc-lang-label .fc-lang-seq{font-size:11px;letter-spacing:1px;line-height:1;filter:grayscale(1);opacity:.5;transition:all .15s}.fc-face-label.fc-lang-label.explicit .fc-lang-seq{font-size:15px;filter:grayscale(0);opacity:1}.fc-face-label.fc-lang-label .fc-lang-instr{font-size:9px;font-weight:800;color:var(--subtle)}.fc-face-label.fc-lang-label.explicit .fc-lang-instr{color:var(--sky-d);font-size:10px}.fc-q-text{font-size:14px;font-weight:700;color:var(--text);line-height:1.6;flex:1;display:flex;align-items:center;text-align:center;justify-content:center;padding:8px 0;white-space:pre-line}.fc-sigle{font-size:3rem;font-weight:900;color:var(--text);letter-spacing:4px;text-align:center;flex:1;display:flex;align-items:center;justify-content:center}.fc-a-text{font-size:12px;font-weight:700;color:var(--text);line-height:1.7;white-space:pre-line;flex:1;padding:4px 0}.fc-flip-hint{font-size:10px;font-weight:700;color:var(--subtle);text-align:center;margin-top:8px}.fc-nav-bar{background:var(--white);border-top:1px solid var(--border);padding:7px 12px max(7px,env(safe-area-inset-bottom));flex-shrink:0;display:none;}.histo-sheet-overlay{position:fixed;inset:0;background:rgba(15,23,42,.4);z-index:200;display:flex;align-items:flex-end;opacity:0;pointer-events:none;transition:opacity .25s;}.histo-sheet-overlay.open{opacity:1;pointer-events:all;}.histo-sheet{background:var(--white);width:100%;max-width:430px;margin:0 auto;border-radius:20px 20px 0 0;padding-bottom:max(16px,env(safe-area-inset-bottom));transform:translateY(100%);transition:transform .3s cubic-bezier(.34,1.1,.64,1);max-height:88vh;display:flex;flex-direction:column;overscroll-behavior:contain;}.histo-sheet-overlay.open .histo-sheet{transform:translateY(0);}.histo-sheet-handle{width:36px;height:4px;border-radius:99px;background:var(--border);margin:10px auto 0;flex-shrink:0;}.histo-sheet-header{padding:12px 16px 10px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}.histo-sheet-title{font-size:14px;font-weight:900;color:var(--text);}.histo-sheet-close{background:var(--bg);border:none;border-radius:99px;width:28px;height:28px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--muted);font-family:'Nunito',sans-serif;}.histo-sheet-body{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:10px 12px max(40px,env(safe-area-inset-bottom));flex:1;}@keyframes badgeUnlock{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.15);opacity:1}80%{transform:scale(.95)}100%{transform:scale(1);opacity:1}}@keyframes badgeShimmer{0%{box-shadow:0 0 0 0 rgba(14,165,233,.6)}50%{box-shadow:0 0 0 8px rgba(14,165,233,0)}100%{box-shadow:0 0 0 0 rgba(14,165,233,0)}}.badge-new-unlock{animation:badgeUnlock .5s cubic-bezier(.34,1.4,.64,1) forwards,badgeShimmer 1.2s ease .5s 2;}.badge-toast{position:fixed;bottom:max(80px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%) translateY(120px);width:calc(100% - 32px);max-width:398px;background:var(--text);border-radius:14px;padding:12px 16px;display:flex;align-items:center;gap:12px;box-shadow:0 8px 24px rgba(0,0,0,.25);z-index:300;opacity:0;transition:transform .35s cubic-bezier(.34,1.1,.64,1),opacity .35s;}.badge-toast.show{transform:translateX(-50%) translateY(0);opacity:1;}.badge-toast-icon{font-size:28px;flex-shrink:0;}.badge-toast-label{font-size:10px;font-weight:800;color:var(--sky);text-transform:uppercase;letter-spacing:.06em;}.badge-toast-title{font-size:14px;font-weight:900;color:#fff;margin-top:1px;}.badge-toast-desc{font-size:10px;font-weight:700;color:rgba(255,255,255,.65);margin-top:1px;}
.fc-nav-inner{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;max-height:76px;overflow-y:auto;}
.fc-nav-inner::-webkit-scrollbar{display:none;}
.fcndot{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;cursor:pointer;border:1.5px solid var(--border);background:var(--bg);color:var(--muted);transition:all .1s;flex-shrink:0;}
.fcndot.fc-knew{background:var(--violet-ui);border-color:var(--violet-ui);color:#fff;}
.fcndot.fc-review{background:var(--orange);border-color:var(--orange);color:#fff;}
.fcndot.fc-current{box-shadow:0 0 0 2.5px var(--sky);transform:scale(1.12);z-index:1;}
.fc-actions-fixed{
position:fixed;bottom:0;left:50%;transform:translateX(-50%);
width:100%;max-width:390px;
background:var(--white);border-top:1px solid var(--border);
padding:10px 14px 18px;
display:flex;flex-direction:column;gap:8px;
z-index:100;box-shadow:0 -4px 16px rgba(0,0,0,.08);
}.fc-actions-row{display:flex;gap:8px}.btn-fc-knew{flex:1;padding:12px;border-radius:var(--radius-btn);background:#f0fdf4;border:2px solid var(--green);color:#166534;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;cursor:pointer;transition:all .15s}.btn-fc-knew:hover{background:var(--green);color:#fff}.btn-fc-review{flex:1;padding:12px;border-radius:var(--radius-btn);background:#fff7ed;border:2px solid var(--orange);color:var(--orange-d);font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;cursor:pointer;transition:all .15s}.btn-fc-review:hover{background:var(--orange);color:#fff}.btn-fc-reread{width:100%;padding:10px;border-radius:var(--radius-btn);background:var(--bg);border:2px solid var(--border);color:var(--muted);font-family:'Nunito',sans-serif;font-size:12px;font-weight:800;cursor:pointer;transition:all .15s}.btn-fc-reread:hover{border-color:var(--sky);color:var(--sky)}.fc-prog-bar{height:4px;background:rgba(255,255,255,.3);border-radius:99px;overflow:hidden;margin-top:6px}.fc-prog-fill{height:100%;background:#fff;border-radius:99px;transition:width .3s}.fc-results-row{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:14px}
/* ── Images verso flashcard ── */
.fc-imgs-single { width:100%; margin-top:10px; cursor:pointer; position:relative; }
.fc-imgs-single img { width:100%; border-radius:10px; object-fit:contain; max-height:220px; display:block; }
.fc-imgs-double { display:flex; gap:6px; margin-top:10px; }
.fc-imgs-double img { width:100%; border-radius:10px; object-fit:contain; display:block; }
.fc-imgs-grid { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }

/* ── Chargement image flashcard : espace réservé + skeleton ──
   Tant que fc-img-loading est présent, le cadre a une hauteur minimale
   (fond neutre) qui masque le texte alt brut du navigateur pendant le
   téléchargement. Dès le onload (voir renderCardImgs), la classe est
   retirée et l'image apparaît en fondu. */
.fc-img-box { position:relative; border-radius:10px; overflow:hidden; }
.fc-img-box.fc-img-loading,
.fc-img-cell.fc-img-loading { min-height:150px; background:var(--bg); }
/* La grille (3+ images) a déjà aspect-ratio:1 + fond réservé nativement,
   pas besoin d'un min-height qui casserait ce ratio pendant le chargement. */
.fc-img-box img, .fc-img-cell img, .fc-imgs-grid .fc-thumb img { opacity:0; transition:opacity .3s ease; }
.fc-img-box img.loaded, .fc-img-cell img.loaded, .fc-imgs-grid .fc-thumb img.loaded { opacity:1; }
.fc-imgs-double .fc-img-cell { position:relative; flex:1; cursor:pointer; border-radius:10px; overflow:hidden; }
.fc-img-skeleton {
  position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px;
  background:linear-gradient(100deg, var(--bg) 30%, #e4eef5 50%, var(--bg) 70%);
  background-size:200% 100%; animation:fcImgShimmer 1.3s ease-in-out infinite;
  transition:opacity .25s ease; border-radius:10px;
}
.fc-img-skeleton.hide { opacity:0; pointer-events:none; }
.fc-img-skeleton-icon { font-size:22px; opacity:.35; }
@keyframes fcImgShimmer { 0% { background-position:200% 0; } 100% { background-position:-200% 0; } }
.fc-imgs-grid .fc-thumb {
  flex: 0 0 calc(33.33% - 4px); aspect-ratio:1;
  border-radius:8px; overflow:hidden; cursor:pointer;
  position:relative; background:var(--bg);
  border:1.5px solid var(--border);
}
.fc-imgs-grid .fc-thumb img { width:100%; height:100%; object-fit:cover; }
.fc-zoom-hint {
  display:flex; align-items:center; gap:4px;
  font-size:10px; font-weight:700; color:var(--muted);
  margin-top:6px; justify-content:center;
}
.fc-zoom-icon-overlay {
  position:absolute; top:6px; right:6px;
  background:rgba(255,255,255,.85); border-radius:99px;
  width:24px; height:24px;
  display:flex; align-items:center; justify-content:center;
  font-size:13px; pointer-events:none;
}
/* Lightbox */
.fc-lightbox {
  position:fixed; inset:0; z-index:9999;
  background:rgba(0,0,0,.92);
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  padding:16px;
}
.fc-lightbox-img {
  width:100%; max-height:85vh;
  border-radius:12px; object-fit:contain;
  touch-action:pinch-zoom; /* zoom natif au doigt sur mobile */
}
.fc-lightbox-nav {
  display:flex; align-items:center; gap:16px;
  margin-top:16px;
}
.fc-lightbox-btn {
  width:44px; height:44px; border-radius:99px;
  background:rgba(255,255,255,.15); border:none;
  color:#fff; font-size:20px; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
}
.fc-lightbox-btn:disabled { opacity:.3; cursor:default; }
.fc-lightbox-counter {
  font-size:12px; font-weight:800; color:rgba(255,255,255,.7);
  min-width:50px; text-align:center;
}
.fc-lightbox-close {
  position:absolute; top:16px; right:16px;
  width:36px; height:36px; border-radius:99px;
  background:rgba(255,255,255,.15); border:none;
  color:#fff; font-size:18px; cursor:pointer;
}
/* ── Icône duo navbar Mémoire (💪🧠) ── */
.nav-memory-duo {
  position:relative;
  width:48px; height:32px;
  display:flex; align-items:center; justify-content:center;
  flex-shrink:0;
}
.nav-memory-duo .duo-muscle {
  position:absolute; left:0; top:2px;
  font-size:24px; line-height:1; z-index:1;
}
.nav-memory-duo .duo-brain {
  position:absolute; left:14px; top:2px;
  font-size:24px; line-height:1; z-index:2;
}
.nav-memory-duo .duo-badge {
  position:absolute;
  border-radius:99px;
  display:flex; align-items:center; justify-content:center;
  font-family:'Nunito',sans-serif;
  font-weight:900;
  border:2px solid #fff;
  z-index:10;
}
.nav-memory-duo .duo-badge-qcu {
  width:16px; height:16px; font-size:8px;
  background:#fb923c; color:#fff;
  top:0; left:0;
}
.nav-memory-duo .duo-badge-fc {
  width:16px; height:16px; font-size:8px;
  background:#0ea5e9; color:#fff;
  top:0; right:0;
}

/* ══════════════════════════════
   TUTO CONTEXTUEL
══════════════════════════════ */
#tuto-overlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: none;
  /* pointer-events none sur l'overlay — seule la bulle intercepte les clics */
  pointer-events: none;
}
#tuto-overlay.active { display: block; }

/* Fond sombre — pointer-events none pour laisser passer les clics vers l'app */
#tuto-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(15,23,42,.72);
  z-index: 2000;
  pointer-events: none;
  display: none;
}
#tuto-backdrop.active { display: block; }
#tuto-backdrop.no-dark { background: transparent; }

#tuto-highlight {
  position: fixed;
  border: 3px solid var(--sky);
  border-radius: 14px;
  z-index: 2001;
  transition: all .35s cubic-bezier(.4,0,.2,1);
  pointer-events: none;
  /* box-shadow vers l'extérieur = fond sombre, intérieur reste clair */
  box-shadow: 0 0 0 9999px rgba(15,23,42,.72);
}
#tuto-highlight.no-shadow { box-shadow: none; border: none; }

#tuto-bubble {
  position: fixed;
  bottom: 80px; /* au-dessus de la navbar (~64px) */
  left: 50%;
  transform: translateX(-50%);
  background: #1e293b;
  border-radius: 18px;
  padding: 16px 18px;
  width: calc(100% - 32px);
  max-width: 420px;
  z-index: 2020; /* au-dessus de la navbar (2010) */
  box-shadow: 0 12px 40px rgba(0,0,0,.5);
  pointer-events: all;
  max-height: 72vh;
  overflow-y: auto;
}

.tuto-step-lbl  { font-size:9px; font-weight:900; color:var(--sky); text-transform:uppercase; letter-spacing:.08em; margin-bottom:5px; }
.tuto-title     { font-size:15px; font-weight:900; color:#fff; margin-bottom:6px; line-height:1.3; }
.tuto-desc      { font-size:11px; font-weight:700; color:rgba(255,255,255,.78); line-height:1.6; }
.tuto-note      { margin-top:8px; padding:8px 10px; background:rgba(14,165,233,.15); border-radius:10px; border-left:3px solid var(--sky); font-size:10px; font-weight:700; color:rgba(255,255,255,.7); line-height:1.5; font-style:italic; }
.tuto-actions   { display:flex; align-items:center; justify-content:space-between; margin-top:14px; }
.tuto-dots      { display:flex; gap:4px; flex:1; justify-content:center; }
.tuto-dot       { width:5px; height:5px; border-radius:50%; background:rgba(255,255,255,.25); transition:all .25s; }
.tuto-dot.active{ background:var(--sky); width:16px; border-radius:99px; }
.tuto-btn-skip  { font-size:10px; font-weight:700; color:rgba(255,255,255,.35); background:none; border:none; cursor:pointer; font-family:'Nunito',sans-serif; padding:0; }
.tuto-actions-left { display:flex; align-items:center; gap:10px; }
.tuto-btn-prev  { background:none; border:1.5px solid rgba(56,189,248,.5); border-radius:10px; padding:8px 16px; font-size:12px; font-weight:800; color:var(--sky); cursor:pointer; font-family:'Nunito',sans-serif; transition:opacity .15s; white-space:nowrap; }
.tuto-btn-prev:hover { opacity:.8; }
.tuto-btn-next  { background:var(--sky); border:none; border-radius:10px; padding:9px 18px; font-size:12px; font-weight:800; color:#fff; cursor:pointer; font-family:'Nunito',sans-serif; transition:opacity .15s; white-space:nowrap; }
.tuto-btn-next:hover { opacity:.9; }
/* Navbar visible et onglet actif pendant le tuto */
.navbar { z-index: 2010; }
.nav-item.tuto-nav-active .nav-lbl { color: var(--sky); font-weight: 900; }
.nav-item.tuto-nav-active .nav-icon { transform: scale(1.15); }

#fc-free-modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.72);z-index:8000;display:none;align-items:center;justify-content:center;padding:20px;}
#fc-free-modal-overlay.open{display:flex;}
#fc-free-modal{background:#fff;border-radius:18px;padding:20px 20px 16px;max-width:400px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.3);}
#fc-free-modal-icon{font-size:32px;text-align:center;margin-bottom:8px;}
#fc-free-modal-title{font-size:14px;font-weight:900;color:var(--text);text-align:center;margin-bottom:12px;}
#fc-free-modal-body{font-size:12px;font-weight:700;color:var(--muted);line-height:1.7;margin-bottom:16px;}
#fc-free-modal-btn{display:block;width:100%;background:linear-gradient(90deg,var(--sky),var(--violet));border:none;border-radius:12px;padding:12px;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;color:#fff;cursor:pointer;}
#logo-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:9000;display:none;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s;}
#logo-lightbox.open{opacity:1;pointer-events:all;}
#logo-lightbox img{max-width:85vw;max-height:85vh;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.5);transform:scale(.9);transition:transform .3s cubic-bezier(.34,1.1,.64,1);}
#logo-lightbox.open img{transform:scale(1);}

.citation-more{display:flex;align-items:center;justify-content:flex-end;margin-top:10px;font-size:10px;font-weight:800;color:var(--sky);cursor:pointer;}
.citation-sheet-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:500;display:flex;align-items:flex-end;opacity:0;pointer-events:none;transition:opacity .25s;}
.citation-sheet-overlay.open{opacity:1;pointer-events:all;}
.citation-sheet{background:#fff;border-radius:20px 20px 0 0;padding:20px 20px 40px;width:100%;transform:translateY(100%);transition:transform .3s cubic-bezier(.34,1.05,.64,1);}
.citation-sheet-overlay.open .citation-sheet{transform:translateY(0);}
.citation-sheet-handle{width:36px;height:4px;background:var(--border);border-radius:99px;margin:0 auto 16px;}
.citation-sheet-title{font-size:14px;font-weight:900;color:var(--text);margin-bottom:2px;}
.citation-sheet-author{font-size:10px;color:var(--muted);font-weight:700;margin-bottom:12px;}
.citation-sheet-body{font-size:12px;color:#334155;line-height:1.7;}
.citation-sheet-source{font-size:10px;color:var(--subtle);font-weight:700;margin-top:10px;font-style:italic;}

#tuto-bubble.top { bottom: auto !important; top: 12px; }

/* ── Verrouillage viewport pendant le tuto ──────────────────────────────────
   Quand le tuto est actif, #app passe en position:fixed pour éviter que le
   changement d'écran (ex. étape 7 → reinforce) ne provoque un scroll
   involontaire du document et l'apparition du bandeau noir sous la navbar.
   IMPORTANT : on n'utilise PAS transform ni will-change ici car sur Firefox
   Android, toute propriété créant un nouveau contexte de stacking (transform,
   will-change, filter…) casse le positionnement fixed des enfants du tuto
   (#tuto-overlay, #tuto-bubble, #tuto-backdrop) lors du changement d'écran.
   Le centrage se fait via left:0 + right:0 + margin:auto.
────────────────────────────────────────────────────────────────────────── */
html.tuto-lock,
html.tuto-lock body {
  overflow: hidden !important;
  height: 100% !important;
  /* Ne pas mettre position:fixed ici : crée un contexte de stacking
     sur Firefox Android qui casse position:fixed des éléments du tuto */
}

#app.tuto-active {
  position: fixed !important;
  top: 0 !important;
  /* Centrage sans transform pour éviter le nouveau contexte de stacking
     qui casse position:fixed des enfants sur Firefox Android */
  left: 0 !important;
  right: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
  width: 100% !important;
  max-width: 430px !important;
  overflow: hidden !important;
}

/* S'assurer que l'écran de chargement ne transparaît pas pendant le tuto */
html.tuto-lock #screen-loading {
  display: none !important;
}

/* ── Modal installation PWA ── */
#install-modal {
  display:none; position:fixed; inset:0; z-index:9999;
  background:rgba(0,0,0,.5);
  align-items:flex-end; justify-content:center;
}
#install-modal-content {
  background:var(--white); border-radius:20px 20px 0 0;
  padding:24px 20px 36px;
  width:100%; max-width:430px;
  display:flex; flex-direction:column; gap:16px;
}
.install-modal-title {
  font-size:18px; font-weight:900; color:var(--text); text-align:center;
}
.install-modal-sub {
  font-size:12px; color:var(--muted); text-align:center; font-weight:700;
  margin-top:-8px;
}
.install-step {
  display:flex; align-items:center; gap:12px;
  background:var(--bg); border-radius:14px; padding:12px 14px;
}
.install-step-num {
  width:26px; height:26px; border-radius:50%;
  background:var(--sky); color:#fff;
  font-size:13px; font-weight:900;
  display:flex; align-items:center; justify-content:center;
  flex-shrink:0;
}
.install-step-text {
  flex:1; font-size:12px; font-weight:700; color:var(--text); line-height:1.5;
}
.install-step-icon { flex-shrink:0; }
.install-modal-close {
  background:var(--sky); border:none; border-radius:12px;
  padding:13px; font-family:'Nunito',sans-serif;
  font-size:14px; font-weight:800; color:#fff;
  cursor:pointer; touch-action:manipulation; margin-top:4px;
}

.install-os-grid {
  display:flex; gap:12px;
}
.install-os-btn {
  flex:1; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:8px;
  background:var(--bg); border:2px solid var(--border);
  border-radius:16px; padding:20px 10px;
  font-family:'Nunito',sans-serif; cursor:pointer;
  touch-action:manipulation; transition:border-color .2s, background .2s;
}
.install-os-btn:active {
  background:var(--sky-light); border-color:var(--sky);
}
.install-os-icon { font-size:36px; line-height:1; }
.install-os-label { font-size:13px; font-weight:800; color:var(--text); }

.loading-first-notice {
  font-size:11px;
  font-weight:700;
  color:rgba(255,255,255,.7);
  text-align:center;
  line-height:1.6;
  max-width:260px;
  margin-top:8px;
  text-shadow:0 1px 4px rgba(0,0,0,.4);
}

/* ── Écran de téléchargement hors-ligne ── */
.dl-screen{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;background:#0a0e14}
.dl-image-zone{flex:1;position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden;min-height:0}
.dl-bg{position:absolute;inset:0;background-color:#0a0e14;background-image:url('/images/loading-bg.jpg');background-size:contain;background-position:center;background-repeat:no-repeat}
.dl-panel{flex-shrink:0;background:#12161f;border-top:1px solid rgba(255,255,255,.08);padding:20px 28px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:14px}
.dl-title{font-size:14px;font-weight:800;color:rgba(255,255,255,.92);text-align:center}
.dl-bar-track{width:100%;max-width:260px;height:7px;background:rgba(255,255,255,.22);border-radius:99px;overflow:hidden}
.dl-bar-fill{height:100%;background:linear-gradient(90deg,var(--sky),var(--sky-h));border-radius:99px;transition:width .3s}
.dl-count{font-size:12px;font-weight:800;color:rgba(255,255,255,.78);letter-spacing:.02em}
.dl-cancel{margin-top:2px;background:rgba(255,255,255,.12);border:1.5px solid rgba(255,255,255,.3);color:#fff;font-family:'Nunito',sans-serif;font-size:12.5px;font-weight:800;padding:10px 28px;border-radius:99px;cursor:pointer}
.dl-cancel:hover{background:rgba(255,255,255,.2)}
.dl-done-icon{font-size:40px;margin-bottom:2px;text-align:center}
.dl-done-title{font-size:16px;font-weight:900;color:#fff;text-align:center}
.dl-done-sub{font-size:12.5px;font-weight:700;color:rgba(255,255,255,.75);text-align:center;margin-top:2px}
.dl-done-btn{margin-top:10px;width:100%;background:linear-gradient(135deg,var(--sky),var(--sky-d));border:none;color:#fff;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;padding:13px;border-radius:99px;cursor:pointer}

/* ── Ligne de réglages : état NOTAM (mise à jour disponible) ── */
.settings-row.notam{background:#fff7ed;border:1.5px solid #fdba74}
.settings-row-icon.icon-orange{background:#ffedd5;color:#c2410c}
.settings-row-label.notam-label{color:#c2410c}
.notam-pulse-dot{width:8px;height:8px;border-radius:99px;background:var(--orange);flex-shrink:0;animation:notamPulse 1.6s ease-in-out infinite}
@keyframes notamPulse{0%,100%{opacity:1}50%{opacity:.35}}

/* ── Fenêtre NOTAM ── */
.notam-card{background:#12161f;border-radius:20px 20px 0 0;padding:24px;width:100%;max-width:390px;color:#fff;padding-bottom:calc(24px + env(safe-area-inset-bottom))}
.notam-eyebrow{font-size:10.5px;font-weight:900;letter-spacing:.08em;color:var(--orange);text-transform:uppercase;margin-bottom:10px;display:flex;align-items:center;gap:6px}
.notam-text{font-size:14px;font-weight:700;line-height:1.55;color:rgba(255,255,255,.92);margin-bottom:20px}
.notam-btn-primary{width:100%;padding:13px;border-radius:99px;background:linear-gradient(135deg,var(--sky),var(--sky-d));border:none;color:#fff;font-family:'Nunito',sans-serif;font-size:13.5px;font-weight:800;cursor:pointer;margin-bottom:10px}
.notam-btn-secondary{width:100%;padding:11px;border-radius:99px;background:rgba(255,255,255,.08);border:1.5px solid rgba(255,255,255,.15);color:rgba(255,255,255,.75);font-family:'Nunito',sans-serif;font-size:12.5px;font-weight:700;cursor:pointer}

/* ── Vol en solo ── */
.solo-toggle-card{background:var(--white);border-radius:var(--radius-lg);padding:14px;box-shadow:var(--shadow-card);margin-bottom:14px;border:2px solid #ede9fe}
.solo-toggle-card .solo-card-title{font-size:12px;font-weight:900;color:var(--violet-ui);display:flex;align-items:center;gap:6px;margin-bottom:8px}
.solo-toggle-card .toggle-row{box-shadow:none;padding:0;background:transparent}
.solo-toggle-note{font-size:10px;font-weight:700;color:var(--subtle);margin-top:6px}
.solo-recall-box{margin-top:14px}
.solo-recall-label{font-size:10px;font-weight:800;color:var(--violet-ui);margin-bottom:6px;display:flex;align-items:center;gap:5px}
.solo-textarea{width:100%;min-height:72px;border:2px solid #ede9fe;border-radius:var(--radius-btn);padding:10px 12px;font-family:'Nunito',sans-serif;font-size:12.5px;font-weight:600;color:var(--text);resize:vertical;background:#faf9ff}
.solo-textarea:focus{outline:none;border-color:var(--violet-ui)}
.solo-textarea::placeholder{color:var(--subtle);font-weight:600}
.solo-reveal-btn{margin:10px 0 14px;background:linear-gradient(90deg,var(--violet-ui),var(--violet));border:none;border-radius:var(--radius-btn);padding:12px 18px;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;color:#fff;cursor:pointer;touch-action:manipulation;width:100%}
.solo-recap{background:#faf5ff;border:1.5px dashed #d8b4fe;border-radius:var(--radius-btn);padding:10px 12px;margin-bottom:12px;font-size:11.5px}
.solo-recap-label{font-size:9px;font-weight:900;color:var(--violet-ui);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.solo-recap-text{color:var(--text);font-weight:600;line-height:1.5;white-space:pre-line}
.fc-flip-hint.solo{color:var(--violet-ui)}
.btn-fc-solo-reveal{width:100%;background:linear-gradient(90deg,var(--violet-ui),var(--violet));border:none;border-radius:var(--radius-btn);padding:12px 18px;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;color:#fff;cursor:pointer;touch-action:manipulation}
.fc-speak-btn{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:50%;background:var(--sky-l);border:1.5px solid rgba(14,165,233,.3);display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;cursor:pointer;z-index:2;transition:all .15s;backface-visibility:hidden;-webkit-backface-visibility:hidden}.fc-speak-btn:active{transform:scale(.92)}.fc-speak-btn.playing{background:var(--sky);border-color:var(--sky);animation:speakPulse 1s ease-in-out infinite}.fc-speak-btn.disabled{opacity:.35;cursor:default;pointer-events:none}.fc-speak-btn.loading{opacity:.55}.fc-card:not(.flipped) #fc-speak-back{visibility:hidden!important;pointer-events:none!important}.fc-card.flipped #fc-speak-front{visibility:hidden!important;pointer-events:none!important}@keyframes speakPulse{0%,100%{box-shadow:0 0 0 0 rgba(14,165,233,.5)}50%{box-shadow:0 0 0 7px rgba(14,165,233,0)}}.fc-speak-btn.playing .fc-speak-icon::before{content:'🔊'}.fc-speak-btn.loading .fc-speak-icon::before{content:'⏳'}.fc-speak-btn:not(.playing):not(.loading) .fc-speak-icon::before{content:'🔈'}

/* ══ Mode libre — grille-portail et navigation ══ */
.fc-deck-count{font-size:16px;font-weight:900;color:var(--sky);flex-shrink:0}
.fc-deck-btn.locked{opacity:.55;cursor:not-allowed;background:var(--bg);box-shadow:none;border:2px dashed var(--border)}
.fc-deck-btn.locked:hover{transform:none;border-color:var(--border)}
.fc-deck-btn.locked .fc-deck-icon{filter:grayscale(1)}
.fc-deck-btn.locked .fc-deck-count{color:var(--subtle)}
.fc-shuffle-card{background:linear-gradient(120deg,var(--sky),var(--violet));border-radius:var(--radius-lg);padding:15px 16px;display:flex;align-items:center;gap:13px;cursor:pointer;margin-bottom:9px;box-shadow:0 4px 14px rgba(124,58,237,.22);transition:transform .15s}
.fc-shuffle-card:hover{transform:translateY(-1px)}
.fc-shuffle-card.locked{background:var(--bg);border:2px dashed var(--border);box-shadow:none;opacity:.6;cursor:not-allowed}
.fc-shuffle-card.locked:hover{transform:none}
.fc-shuffle-card.locked .fc-shuffle-emoji{filter:grayscale(1)}
.fc-shuffle-card.locked .fc-shuffle-title{color:var(--muted)}
.fc-shuffle-card.locked .fc-shuffle-sub,.fc-shuffle-card.locked .fc-shuffle-count{color:var(--subtle)}
.fc-shuffle-emoji{font-size:26px;flex-shrink:0}
.fc-shuffle-title{font-size:13px;font-weight:900;color:#fff}
.fc-shuffle-sub{font-size:10px;font-weight:700;color:rgba(255,255,255,.82);margin-top:2px}
.fc-shuffle-count{font-size:18px;font-weight:900;color:#fff;flex-shrink:0}
.fc-grid-prog{height:4px;background:rgba(255,255,255,.3);border-radius:99px;overflow:hidden;margin-top:7px}
.fc-grid-prog-fill{height:100%;background:#fff;border-radius:99px;transition:width .4s ease}
.fc-grid-actions{padding:12px 14px 0}
.btn-fc-shuffle-deck{width:100%;padding:12px;border-radius:var(--radius-btn);background:linear-gradient(90deg,var(--sky),var(--violet));color:#fff;border:none;font-family:'Nunito',sans-serif;font-size:13px;font-weight:800;cursor:pointer}
.fc-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:12px 14px 20px}
.fc-gcell{background:var(--white);border:2px solid var(--sky-l);border-radius:var(--radius-md);padding:11px;min-height:92px;display:flex;flex-direction:column;cursor:pointer;transition:all .15s;box-shadow:var(--shadow-card)}
.fc-gcell:hover{border-color:var(--sky);transform:translateY(-2px)}
.fc-gcell-num{font-size:9px;font-weight:900;color:var(--sky);letter-spacing:.06em;margin-bottom:6px}
.fc-gcell-txt{font-size:11px;font-weight:800;color:var(--text);line-height:1.4;flex:1;overflow:hidden}
.fc-gcell.locked{background:var(--bg);border:2px dashed var(--border);cursor:not-allowed;box-shadow:none;align-items:center;justify-content:center}
.fc-gcell.locked:hover{transform:none;border-color:var(--border)}
.fc-gcell-lock{font-size:20px;opacity:.4}
.fc-gcell-lock-lbl{font-size:9px;font-weight:800;color:var(--subtle);margin-top:5px}
.fc-libre-nav{display:flex;gap:8px;width:100%}
.fc-libre-nav button{font-family:'Nunito',sans-serif;font-size:12px;font-weight:800;border-radius:var(--radius-btn);padding:12px 8px;cursor:pointer;transition:all .15s}
.btn-fc-libre-sec{flex:1;background:var(--bg);border:2px solid var(--border);color:var(--muted)}
.btn-fc-libre-sec:hover:not(:disabled){border-color:var(--sky);color:var(--sky)}
.btn-fc-libre-grid{flex:0 0 78px;background:var(--sky-l);border:2px solid var(--sky-l);color:var(--sky-d)}
.btn-fc-libre-next{flex:1;background:var(--sky);border:2px solid var(--sky);color:#fff}
.btn-fc-libre-next:hover:not(:disabled){background:var(--sky-d);border-color:var(--sky-d)}
.fc-libre-nav button:disabled{opacity:.4;cursor:not-allowed}
.btn-fc-libre-next:disabled{background:var(--border);border-color:var(--border);color:var(--muted)}
