
:root{color-scheme:dark;--bg:#10130f;--panel:#181d18;--panel2:#202720;--line:#303a30;--text:#f0f4ec;--muted:#9da99a;--lime:#c5f36b;--lime2:#a7d94d;--violet:#b5a0ff;--gold:#f5cc67;--red:#ff8f87;--blue:#91c9ff;--radius:20px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--lime);outline-offset:2px}.app{min-height:100vh;background:radial-gradient(ellipse at 80% -20%,#293a1c 0,transparent 35%),radial-gradient(ellipse at -10% 60%,#202c21 0,transparent 30%),var(--bg)}.shell{max-width:1500px;margin:auto;padding:22px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:24px}.brand{display:flex;align-items:center;gap:12px}.logo{width:46px;height:46px;border-radius:15px;background:var(--lime);color:#12170e;display:grid;place-items:center;font-size:22px;font-weight:1000;letter-spacing:-.08em;box-shadow:0 0 32px #c5f36b22}.brand h1{font-size:17px;letter-spacing:.2em;margin:0}.brand small{display:block;color:var(--muted);font-size:10px;letter-spacing:.14em;margin-top:4px;text-transform:uppercase}.top-right{display:flex;align-items:center;gap:10px}.week-chip,.profile-chip{border:1px solid var(--line);background:#171d16;border-radius:999px;padding:7px 12px;font-size:11px;color:var(--muted)}.profile-chip{display:flex;align-items:center;gap:9px;color:var(--text);font-weight:750}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--lime);color:#11170d;font-weight:900}.layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:22px}.sidebar{position:sticky;top:16px;align-self:start;border:1px solid var(--line);background:#151a14eF;border-radius:22px;padding:11px}.navlabel{font-size:9px;letter-spacing:.17em;text-transform:uppercase;color:#73806f;padding:15px 12px 7px}.navbtn{width:100%;display:flex;align-items:center;gap:12px;border:0;background:transparent;color:var(--muted);padding:12px;border-radius:12px;text-align:left;font-size:12px;font-weight:650;margin:2px 0}.navbtn .ico{font-size:17px;width:22px;text-align:center}.navbtn.active{background:#2b3624;color:var(--lime);box-shadow:inset 3px 0 var(--lime)}.side-note{margin:18px 7px 5px;border-top:1px solid var(--line);padding:15px 6px 4px;color:var(--muted);font-size:10px;line-height:1.65}.main{min-width:0}.section{display:none}.section.active{display:block;animation:appear .2s ease}@keyframes appear{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:none}}.pagehead{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-bottom:20px}.eyebrow{font-size:9px;color:var(--lime);font-weight:850;letter-spacing:.19em;text-transform:uppercase}.pagehead h2{font-size:clamp(27px,3vw,39px);letter-spacing:-.055em;line-height:1.05;margin:8px 0}.pagehead p{margin:0;color:var(--muted);font-size:12px;line-height:1.6}.btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:10px 13px;border-radius:11px;font-size:11px;font-weight:750;transition:transform .15s,border-color .15s}.btn:hover{transform:translateY(-1px);border-color:#65755c}.btn.primary{background:var(--lime);border-color:var(--lime);color:#141a0e}.btn.ghost{background:transparent}.btn.danger{color:#ffb4ad;border-color:#69423e}.grid{display:grid;gap:14px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}.card{min-width:0;border:1px solid var(--line);border-radius:var(--radius);padding:18px;background:linear-gradient(145deg,#1b211a,#151a14)}.stat-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:10px}.stat-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:11px;background:#2c3824;color:var(--lime);font-size:16px}.stat-value{font-size:30px;font-weight:900;letter-spacing:-.06em;margin:11px 0 4px}.stat-foot{color:var(--muted);font-size:10px}.accent{color:var(--lime)}.two-col{grid-template-columns:minmax(0,1.3fr) minmax(270px,.8fr)}.card-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}.card-title h3{margin:0;font-size:14px;letter-spacing:-.02em}.muted{color:var(--muted)}.small{font-size:10px}.progress{height:7px;background:#30382d;border-radius:99px;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--lime2),var(--lime));border-radius:99px;transition:width .25s}.quest{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid #2b3329}.quest:last-child{border-bottom:0}.check{width:27px;height:27px;flex:none;border:1px solid #4b5945;background:#1e271c;color:var(--lime);border-radius:9px;display:grid;place-items:center}.check.done{background:var(--lime);color:#17200e;border-color:var(--lime)}.quest-info{flex:1;min-width:0}.quest-info strong{display:block;font-size:12px}.quest-info small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.xp-pill,.pill{font-size:9px;padding:5px 8px;border-radius:999px;background:#2c3824;color:var(--lime);white-space:nowrap}.hero{position:relative;overflow:hidden;border:1px solid #46563b;border-radius:24px;background:linear-gradient(110deg,#273522,#1a2118 70%);padding:24px;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;gap:20px}.hero:after{content:"";position:absolute;width:230px;height:230px;border:1px solid #c5f36b16;border-radius:50%;right:5%;top:-90px;box-shadow:0 0 0 28px #c5f36b08,0 0 0 58px #c5f36b05;pointer-events:none}.hero-copy{position:relative;z-index:1}.hero h3{font-size:clamp(23px,3vw,33px);letter-spacing:-.05em;margin:8px 0}.hero p{color:#b6c3ae;font-size:12px;line-height:1.6;margin:0 0 15px}.hero-mark{position:relative;z-index:1;font-size:66px;color:var(--lime);font-weight:1000;opacity:.9;letter-spacing:-.12em}.section-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.field{width:100%;min-width:0;background:#11160f;border:1px solid #384333;color:var(--text);border-radius:11px;padding:11px 12px;font-size:12px}.field::placeholder{color:#788473}.formrow{display:flex;gap:8px}.formrow>*{flex:1;min-width:0}.subnav{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}.subnav button{border:1px solid var(--line);border-radius:9px;padding:8px 11px;color:var(--muted);background:transparent;font-size:10px}.subnav button.active{background:#2c3824;color:var(--lime);border-color:#536b43}.tree-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:14px;align-items:start}.tree-cats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.cat-card{border:1px solid var(--line);background:#181e17;border-radius:16px;padding:14px;text-align:left;color:var(--text);min-height:128px;transition:.16s}.cat-card:hover,.cat-card.selected{border-color:var(--lime);background:#222d1d;transform:translateY(-2px)}.cat-top{display:flex;justify-content:space-between;align-items:center;font-size:22px}.cat-card h4{margin:12px 0 5px;font-size:12px}.cat-card p{margin:0;color:var(--muted);font-size:9px;line-height:1.5}.cat-progress{margin-top:12px}.skill-list{display:flex;flex-direction:column;gap:7px}.skill-row{display:flex;align-items:center;gap:10px;padding:11px;border:1px solid var(--line);border-radius:13px;background:#151a14}.skill-emoji{font-size:19px}.skill-meta{flex:1;min-width:0}.skill-meta strong{display:block;font-size:11px}.skill-meta small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.skill-row button{font-size:9px}.detail-sticky{position:sticky;top:16px}.rank-track{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:13px 0}.rank-step{border:1px solid var(--line);border-radius:8px;text-align:center;padding:8px 2px;color:var(--muted);font-size:9px}.rank-step.current{background:#2c3824;border-color:var(--lime);color:var(--lime)}.rank-step.earned{border-color:#76612c;color:var(--gold)}.quest-mini{border:1px solid var(--line);border-radius:12px;padding:11px;margin-top:8px}.quest-mini strong{font-size:11px;display:block}.quest-mini p{font-size:10px;color:var(--muted);margin:5px 0 9px;line-height:1.5}.rank-hero{display:flex;justify-content:space-between;align-items:center;gap:14px;background:linear-gradient(110deg,#2a3623,#1a2118);border:1px solid #46563b;border-radius:22px;padding:21px;margin-bottom:14px}.rank-emblem{font-size:46px}.rank-hero h3{margin:6px 0;font-size:23px}.rank-hero p{color:var(--muted);font-size:11px;margin:0}.rank-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:13px 3px;border-bottom:1px solid #2b3329}.rank-row:last-child{border-bottom:0}.rank-no{text-align:center;font-weight:900}.rank-name{font-size:12px;font-weight:800}.rank-sub{font-size:9px;color:var(--muted);margin-top:3px}.rank-xp{font-size:11px;font-weight:850}.league-badge{font-size:9px;border:1px solid #4a5943;color:#d8e7ce;padding:5px 8px;border-radius:8px}.gold{border-color:#876d32;color:#ffe3a1;background:#3a301c}.timer-display{font-size:clamp(42px,7vw,66px);font-weight:900;letter-spacing:-.07em;text-align:center;padding:24px 0}.timer-controls{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.timer-status{text-align:center;font-size:10px;color:var(--muted)}.session-row{display:flex;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:11px}.badge-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.badge-card{background:#181e17;border:1px solid var(--line);border-radius:15px;padding:15px 8px;text-align:center}.badge-card .medal{font-size:27px}.badge-card strong{display:block;font-size:10px;margin:8px 0 4px}.badge-card small{color:var(--muted);font-size:9px}.badge-card{width:100%;font:inherit;color:var(--text);cursor:pointer;transition:transform .15s,border-color .15s,opacity .15s}.badge-card:hover{transform:translateY(-2px);border-color:var(--lime)}.badge-card.locked{opacity:.58;filter:grayscale(1);background:#171a17!important;border-color:#3a4039!important}.badge-card.locked .medal{filter:grayscale(1);opacity:.72}.badge-card.earned{border-color:#718d43;background:linear-gradient(145deg,#202a1b,#171e15)}.badge-card:focus-visible{outline:2px solid var(--lime);outline-offset:3px}.global-rank-card{display:flex;align-items:center;gap:14px;padding:14px;margin:0 0 18px;border:1px solid #6a3d25;border-radius:16px;background:linear-gradient(135deg,#24170f,#17120f)}.global-rank-emblem{width:58px;height:58px;flex:none;border-radius:17px;display:grid;place-items:center;font-size:31px;background:radial-gradient(circle at 30% 25%,#774321,#321d12 70%);border:1px solid #96552d;box-shadow:inset 0 0 0 3px #4b2b1b}.global-rank-copy{min-width:0;flex:1}.global-rank-copy strong{display:block;font-size:20px;margin:3px 0 4px;color:#f4b17b}.global-rank-track{height:6px;border-radius:99px;background:#38271d;overflow:hidden;margin-top:9px}.global-rank-track span{display:block;height:100%;width:0;background:linear-gradient(90deg,#a94c1f,#f19a52);border-radius:99px;transition:width .2s}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.profile-number{font-size:26px;font-weight:900;letter-spacing:-.05em;margin:5px 0}.notice{border:1px solid #46563b;background:#202a1c;border-radius:13px;padding:12px;color:#c9d9bf;font-size:10px;line-height:1.65}.empty{padding:25px;text-align:center;color:var(--muted);font-size:11px}.modal-backdrop{position:fixed;inset:0;background:#050705d9;display:none;align-items:center;justify-content:center;padding:18px;z-index:20;backdrop-filter:blur(7px)}.modal-backdrop.open{display:flex}.modal{width:min(510px,100%);max-height:90vh;overflow:auto;background:#1a2118;border:1px solid #46533f;border-radius:23px;padding:24px;box-shadow:0 25px 100px #000b}.modal.skill-modal{width:min(760px,100%);max-height:92dvh}.modal-backdrop:has(.modal.skill-modal.open),.modal-backdrop.open:has(.modal.skill-modal){padding:0}.modal.skill-modal{border-radius:20px}.compact-tree-controls{margin:0 0 14px}.compact-tree-controls .field{max-width:260px}.skill-prereq-list{display:grid;gap:7px;margin-top:10px}.skill-prereq-item{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:9px;font-size:11px}.skill-prereq-item.done{border-color:#586d42;background:#202a1c}.skill-prereq-item .pr-icon{flex:none;color:var(--lime);font-weight:900}.skill-modal-open .modal-actions{position:sticky;bottom:-24px;background:#1a2118;padding:12px 0 0}.modal h3{margin:0 0 7px;font-size:22px;letter-spacing:-.04em}.modal p{font-size:11px;color:var(--muted);line-height:1.65}.modal label{display:block;font-size:10px;color:#b2beaa;margin:13px 0 6px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.checkgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.goal-option{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:11px;padding:10px;font-size:10px;color:#dce6d5;cursor:pointer}.goal-option input{accent-color:var(--lime)}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--lime);color:#17200e;padding:12px 16px;border-radius:12px;font-size:11px;font-weight:850;z-index:30;transition:.2s;box-shadow:0 8px 40px #0006;max-width:90vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}.week{font-size:10px;color:var(--muted)}.hidden{display:none!important}
@media(max-width:1050px){.layout{grid-template-columns:190px minmax(0,1fr);gap:14px}.tree-layout{grid-template-columns:minmax(0,1fr)}.detail-sticky{position:static}.tree-cats{grid-template-columns:repeat(3,minmax(0,1fr))}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.shell{padding:13px}.topbar{margin-bottom:15px}.week-chip{display:none}.layout{display:block}.sidebar{position:static;display:flex;overflow-x:auto;gap:4px;padding:6px;margin-bottom:16px;border-radius:15px}.navlabel,.side-note{display:none}.navbtn{min-width:max-content;width:auto;padding:10px 12px;margin:0;font-size:10px}.navbtn .ico{width:auto}.brand small{display:none}.brand h1{font-size:15px}.logo{width:39px;height:39px}.profile-chip{padding:5px 8px}.profile-chip .profile-text{display:none}.pagehead{align-items:start}.pagehead .btn{white-space:nowrap}.hero{padding:19px}.hero-mark{font-size:46px}.two-col{grid-template-columns:1fr}.tree-cats{grid-template-columns:repeat(2,minmax(0,1fr))}.badge-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.profile-grid{grid-template-columns:1fr}.rank-row{grid-template-columns:25px minmax(0,1fr) auto;gap:8px}.rank-row .league-badge{display:none}.stats{gap:9px}.card{padding:14px}.stat-value{font-size:26px}.formrow{flex-wrap:wrap}.formrow>*{flex:1 1 100%}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Correctif mobile : verrouiller le cadrage horizontal sans bloquer le scroll vertical */
html, body {
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
  overscroll-behavior-x: none;
}
body { touch-action: pan-y; }
.app, .shell, .layout, .main, .section {
  min-width: 0;
  max-width: 100%;
}
.nexus-intro, .welcome-overlay {
  width: 100%;
  max-width: 100vw;
  overflow-x: clip;
  overscroll-behavior: contain;
}
.welcome-card { width: min(100%, 480px); min-width: 0; }
@media (max-width: 650px) {
  .shell { width: 100%; }
  .nexus-intro .intro-orbit { max-width: 100vw; }
  .intro-content, .intro-inner, .welcome-card { max-width: 100%; }
}

/* VELORA V3 — arbre visuel, personnalisation et outils de progression */
:root{--tree-node:#1b2419;--tree-glow:#c5f36b}
.tree-stage{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:radial-gradient(ellipse at 50% 0%,#2b3a24 0,transparent 65%),#11170f;min-height:440px;touch-action:none;overscroll-behavior:contain;}
.tree-stage svg{display:block;width:100%;height:440px;user-select:none;cursor:grab}.tree-stage svg:active{cursor:grabbing}
.tree-edge{stroke:#46543f;stroke-width:2.2;fill:none;opacity:.9}.tree-edge.open{stroke:#9cc65b;filter:drop-shadow(0 0 3px #c5f36b33)}
.tree-node{cursor:pointer;outline:none}.tree-node .node-ring{fill:#20291d;stroke:#56644c;stroke-width:2;transition:all .18s}.tree-node .node-core{fill:#293724}.tree-node text{fill:#eef4e9;font-size:10px;font-weight:700;text-anchor:middle;pointer-events:none}.tree-node .node-state{font-size:8px;fill:#a6b29d;font-weight:500}.tree-node.available .node-ring{stroke:var(--lime);stroke-width:2.5}.tree-node.available .node-core{fill:#394a2b}.tree-node.unlocked .node-ring{stroke:#f0c85e;fill:#3a321d}.tree-node.unlocked .node-core{fill:#665125}.tree-node.locked{opacity:.58}.tree-node.selected .node-ring{stroke:#fff;stroke-width:3;filter:drop-shadow(0 0 7px #c5f36b88)}.tree-node.secret .node-ring{stroke:#bd9bff;stroke-dasharray:4 3}.tree-node:hover .node-ring{stroke-width:3.5}.tree-controls{display:flex;gap:7px;flex-wrap:wrap;align-items:center}.tree-legend{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:10px;margin-top:10px}.legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;background:#9cc65b}.legend-dot.locked{background:#56644c}.legend-dot.done{background:#f0c85e}.tree-bottom{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:14px;align-items:start}.tree-cats{grid-template-columns:repeat(4,minmax(0,1fr))}.cat-card{min-height:112px}.skill-row.locked-skill{opacity:.7}.skill-row .status-tag{font-size:9px;border:1px solid var(--line);padding:4px 6px;border-radius:7px;color:var(--muted)}.unlock-flash{animation:unlockFlash .65s ease}@keyframes unlockFlash{0%{box-shadow:0 0 0 0 #c5f36b00}40%{box-shadow:0 0 0 8px #c5f36b33}100%{box-shadow:0 0 0 0 #c5f36b00}}
body.light-mode{--bg:#f2f5ee;--panel:#fff;--panel2:#eef2e8;--line:#d4ddcd;--text:#182015;--muted:#64705f;background:#f2f5ee;color:#182015}body.light-mode .app{background:radial-gradient(ellipse at 80% -20%,#dce8d0 0,transparent 35%),#f2f5ee}body.light-mode .sidebar,body.light-mode .card,body.light-mode .cat-card,body.light-mode .skill-row,body.light-mode .badge-card{background:#fff}body.light-mode .field{background:#f8faf5;color:#182015;border-color:#d4ddcd}body.light-mode .tree-stage{background:radial-gradient(ellipse at 50% 0%,#e3eed7 0,transparent 65%),#f7faf4}body.light-mode .tree-node text{fill:#1b2517}body.light-mode .tree-node .node-ring{fill:#f6faf1;stroke:#9aa88e}body.light-mode .tree-node.available .node-core{fill:#d8e9c6}body.light-mode .tree-node.unlocked .node-ring{fill:#f5e6b9}body.light-mode .tree-node .node-state{fill:#56634e}body.light-mode .tree-edge{stroke:#a3b197}body.light-mode .week-chip,body.light-mode .profile-chip{background:#fff}body.large-text{font-size:112%}body.large-text .small,body.large-text .muted{font-size:inherit}
.mini-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.mini-stat{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel2)}.mini-stat strong{display:block;font-size:20px}.mini-stat span{display:block;color:var(--muted);font-size:9px;margin-top:4px}.chart-wrap{width:100%;overflow:hidden}.chart-wrap svg{display:block;width:100%;height:auto;min-height:140px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-cell{aspect-ratio:1;border-radius:6px;background:var(--panel2);border:1px solid var(--line);display:grid;place-items:center;font-size:9px;color:var(--muted)}.calendar-cell.active{background:#3a5129;border-color:#8fbd51;color:#f4ffe8}.cosmetic-row{display:flex;gap:8px;flex-wrap:wrap}.cosmetic-btn{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--panel2);color:var(--text)}.cosmetic-btn.selected{border-color:var(--lime);box-shadow:inset 0 0 0 1px var(--lime)}
@media(max-width:1000px){.tree-bottom{grid-template-columns:1fr}.tree-cats{grid-template-columns:repeat(3,minmax(0,1fr))}.tree-stage svg{height:390px}}
@media(max-width:650px){.shell{padding:12px}.tree-cats{grid-template-columns:repeat(2,minmax(0,1fr))}.tree-stage{min-height:360px}.tree-stage svg{height:360px}.tree-bottom{gap:10px}.mini-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tree-controls .field{max-width:100%!important;width:100%!important}}


/* VELORA cinematic startup */
.nexus-intro{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;overflow:hidden;background:#05080c;color:#f3f7ff;isolation:isolate;transition:opacity .8s ease,visibility .8s ease}
.nexus-intro::before{content:"";position:absolute;inset:-30%;background:conic-gradient(from 40deg at 50% 50%,transparent 0deg,#8effcf08 45deg,transparent 110deg,#8c7bff10 180deg,transparent 250deg,#8effcf08 310deg,transparent 360deg);animation:introSpin 16s linear infinite;z-index:-2}
.nexus-intro::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,#14252c 0,transparent 42%),linear-gradient(180deg,#05080c 0%,#090e13 55%,#05080c 100%);z-index:-3}
.nexus-intro.leaving{opacity:0;visibility:hidden;pointer-events:none}
.intro-grid{position:absolute;inset:-20%;opacity:.22;background-image:linear-gradient(#a4ffe91a 1px,transparent 1px),linear-gradient(90deg,#a4ffe91a 1px,transparent 1px);background-size:52px 52px;transform:perspective(650px) rotateX(61deg) scale(1.4) translateY(16%);mask-image:linear-gradient(transparent 5%,#000 45%,transparent 100%);animation:gridRise 2.4s ease-out both}
.intro-center{position:relative;display:flex;align-items:center;flex-direction:column;animation:introReveal 1s cubic-bezier(.16,1,.3,1) both}
.intro-emblem{width:104px;height:104px;position:relative;display:grid;place-items:center;border:1px solid #a2ffe7a8;border-radius:31px;background:linear-gradient(145deg,#1d3940d9,#101a24e8);box-shadow:0 0 28px #54f5d333,inset 0 0 26px #78ffdc13;transform:rotate(-8deg);animation:emblemFloat 3s ease-in-out infinite,emblemFlash 1.3s ease-out both}
.intro-emblem span{font-size:59px;font-weight:950;letter-spacing:-.13em;padding-right:7px;color:#eafff8;text-shadow:0 0 24px #70ffe3a8;transform:rotate(8deg)}
.intro-emblem i{position:absolute;inset:-10px;border:1px solid #83ffe555;border-radius:37px;animation:ringPulse 2.2s ease-out infinite}
.intro-wordmark{font-size:clamp(32px,8vw,51px);font-weight:900;letter-spacing:.32em;padding-left:.32em;margin-top:27px;text-shadow:0 0 35px #8affdb3b;animation:wordmarkIn 1.1s .15s both}
.intro-tagline{font-size:9px;letter-spacing:.32em;padding-left:.32em;color:#83cbbd;margin-top:10px}
.intro-loading{height:2px;width:170px;background:#20343a;margin-top:35px;overflow:hidden;border-radius:4px}.intro-loading span{display:block;height:100%;width:45%;background:linear-gradient(90deg,transparent,#85ffda,#c7fff0,transparent);box-shadow:0 0 12px #8effd8;animation:loadingSweep 1.5s ease-in-out infinite}
.intro-status{font-size:8px;letter-spacing:.24em;color:#7c9699;margin-top:12px;animation:statusBlink 1.3s ease-in-out infinite}
.intro-aura{position:absolute;width:min(76vw,650px);aspect-ratio:1;border-radius:50%;filter:blur(30px);opacity:.12;pointer-events:none;z-index:-1}.aura-one{background:#4affc2;left:-24%;top:4%;animation:auraDrift 8s ease-in-out infinite alternate}.aura-two{background:#8c7bff;right:-25%;bottom:-10%;animation:auraDrift 10s ease-in-out infinite alternate-reverse}
.intro-orbit{position:absolute;width:min(80vw,680px);aspect-ratio:1;border:1px solid #7dffe51c;border-radius:50%;box-shadow:0 0 70px #69ffe508,inset 0 0 70px #69ffe508;pointer-events:none}.orbit-one{transform:scaleY(.28) rotate(-22deg);animation:orbitIn 1.6s ease-out both}.orbit-two{transform:scaleY(.56) rotate(36deg);border-color:#8f9dff1c;animation:orbitIn 1.8s .1s ease-out both}
.intro-particles{position:absolute;inset:0;pointer-events:none}.intro-particles i{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;background:#a1ffe7;box-shadow:0 0 12px 3px #62fdd755;animation:particleIn 1.8s var(--delay) both,particleDrift 5s var(--delay) ease-in-out infinite alternate}.intro-particles i:nth-child(1){--x:13%;--y:22%;--delay:.1s}.intro-particles i:nth-child(2){--x:78%;--y:18%;--delay:.3s}.intro-particles i:nth-child(3){--x:87%;--y:64%;--delay:.2s}.intro-particles i:nth-child(4){--x:21%;--y:77%;--delay:.45s}.intro-particles i:nth-child(5){--x:67%;--y:82%;--delay:.25s}.intro-particles i:nth-child(6){--x:33%;--y:16%;--delay:.4s}.intro-particles i:nth-child(7){--x:8%;--y:56%;--delay:.5s}.intro-particles i:nth-child(8){--x:91%;--y:39%;--delay:.15s}.intro-particles i:nth-child(9){--x:42%;--y:88%;--delay:.6s}.intro-particles i:nth-child(10){--x:57%;--y:12%;--delay:.35s}.intro-particles i:nth-child(11){--x:72%;--y:36%;--delay:.55s}.intro-particles i:nth-child(12){--x:27%;--y:44%;--delay:.2s}
@keyframes introSpin{to{transform:rotate(360deg)}}@keyframes gridRise{from{opacity:0;transform:perspective(650px) rotateX(61deg) scale(1.65) translateY(25%)}to{opacity:.22;transform:perspective(650px) rotateX(61deg) scale(1.4) translateY(16%)}}@keyframes introReveal{from{opacity:0;transform:translateY(22px) scale(.92);filter:blur(8px)}to{opacity:1;transform:none;filter:blur(0)}}@keyframes emblemFloat{0%,100%{translate:0 0}50%{translate:0 -7px}}@keyframes emblemFlash{0%{box-shadow:0 0 0 #54f5d300,inset 0 0 0 #78ffdc00}45%{box-shadow:0 0 70px #54f5d377,inset 0 0 45px #78ffdc33}100%{box-shadow:0 0 28px #54f5d333,inset 0 0 26px #78ffdc13}}@keyframes ringPulse{0%{transform:scale(.94);opacity:.7}100%{transform:scale(1.2);opacity:0}}@keyframes wordmarkIn{from{opacity:0;letter-spacing:.65em;filter:blur(6px)}to{opacity:1;letter-spacing:.32em;filter:blur(0)}}@keyframes loadingSweep{from{transform:translateX(-120%)}to{transform:translateX(340%)}}@keyframes statusBlink{0%,100%{opacity:.45}50%{opacity:1}}@keyframes auraDrift{to{transform:translate(13vw,-8vh) scale(1.2)}}@keyframes orbitIn{from{opacity:0;scale:.72}to{opacity:1;scale:1}}@keyframes particleIn{from{opacity:0;scale:0}to{opacity:.8;scale:1}}@keyframes particleDrift{to{translate:8px -18px;opacity:.35}}
/* Competency paths: clear stages, no sprawling node map */
:root{--bg:#080d12;--panel:#101821;--panel2:#17232c;--line:#263943;--text:#edf7fa;--muted:#91a8b2;--lime:#7dffcf;--lime2:#43ddb4;--violet:#9b9dff;--radius:18px}
.app{background:radial-gradient(ellipse at 85% 0%,#12342f 0,transparent 34%),radial-gradient(ellipse at 4% 45%,#1b2440 0,transparent 31%),#080d12}
.logo,.avatar{background:linear-gradient(135deg,#a1ffe3,#69e5ff);color:#061316;box-shadow:0 0 28px #71ffe51c}
.navbtn.active{background:linear-gradient(100deg,#183b39,#14242e);color:var(--lime);box-shadow:inset 3px 0 var(--lime)}
.card{background:linear-gradient(145deg,#111c25ed,#0c131bed);border-color:#263943;box-shadow:0 12px 38px #00000012}
.hero,.rank-hero{background:radial-gradient(ellipse at 90% 10%,#205c53 0,transparent 36%),linear-gradient(115deg,#142c31,#111b26 72%);border-color:#31545b}
.progress span{background:linear-gradient(90deg,#43ddb4,#7dffcf,#9bdeff);box-shadow:0 0 12px #7dffcf3a}
.tree-layout{display:none}.tree-stage,.tree-legend{display:none!important}
.path-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.7fr);gap:15px;align-items:start}.path-main{display:grid;gap:15px;min-width:0}.progress-command{display:flex;align-items:center;gap:16px;padding:18px 20px;margin-bottom:14px;border:1px solid #2d5357;border-radius:19px;background:radial-gradient(circle at 5% 50%,#245e5944,transparent 40%),linear-gradient(110deg,#10242a,#101721 65%);position:relative;overflow:hidden}.progress-command:after{content:"";position:absolute;width:210px;height:210px;border:1px solid #8dffe51a;border-radius:50%;right:20%;top:-130px;box-shadow:0 0 0 25px #8dffe508,0 0 0 50px #8dffe505;pointer-events:none}.command-orb{flex:none;width:48px;height:48px;display:grid;place-items:center;border:1px solid #64d8c16e;border-radius:15px;background:linear-gradient(145deg,#1e4a4b,#13232e);color:#a1ffe3;font-size:23px;box-shadow:0 0 24px #5df8d01a}.command-copy{flex:1;min-width:0;position:relative;z-index:1}.command-copy h3{margin:5px 0;font-size:17px}.command-copy p{margin:0;color:var(--muted);font-size:11px;line-height:1.5}.command-meter{width:150px;flex:none;position:relative;z-index:1}.command-meter>span{display:block;font-size:22px;font-weight:850;margin-bottom:7px}.command-meter small{display:block;color:var(--muted);font-size:9px;margin-top:6px}.tree-controls{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:15px}.tree-controls .field:first-child{flex:1;min-width:180px}.tree-controls select{width:auto;min-width:175px}.tree-cats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.cat-card{min-height:unset;border-radius:14px;background:linear-gradient(145deg,#14232a,#101820);border-color:#263d45;padding:13px;position:relative;overflow:hidden}.cat-card:hover,.cat-card.selected{background:linear-gradient(145deg,#1c3b3d,#14232d);border-color:#6af3d0;box-shadow:0 0 0 1px #6af3d012,0 8px 24px #0002;transform:translateY(-2px)}.cat-card.selected:after{content:"ACTIVE";position:absolute;right:10px;top:10px;color:#8bffda;font-size:7px;letter-spacing:.16em}.cat-card h4{font-size:12px;margin:10px 0 4px}.cat-card p{font-size:10px}.cat-top{font-size:20px}.cat-progress{margin-top:11px}.path-card{scroll-margin-top:18px;overflow:hidden}.path-guide{display:flex;align-items:center;gap:9px;color:#6f9298;font-size:9px;letter-spacing:.04em;margin:0 0 14px}.path-guide-line{width:25px;height:2px;background:linear-gradient(90deg,#7dffcf,#7dffcf22);box-shadow:0 0 9px #7dffcf4d}.skill-list{gap:0;position:relative}.skill-row{position:relative;z-index:1;border:1px solid #263943;border-radius:14px;background:linear-gradient(115deg,#101b24,#0c141c);padding:13px;margin:0 0 10px;gap:11px;transition:transform .18s,border-color .18s,background .18s;animation:pathRowIn .35s both}.skill-row:nth-child(2){animation-delay:.025s}.skill-row:nth-child(3){animation-delay:.05s}.skill-row:nth-child(4){animation-delay:.075s}.skill-row:before{content:attr(data-step);display:grid;place-items:center;flex:none;width:29px;height:29px;border-radius:10px;background:#172a31;border:1px solid #2c5558;color:#a1c8cc;font-size:10px;font-weight:850}.skill-row:after{content:"";position:absolute;left:26px;top:100%;height:11px;width:1px;background:linear-gradient(#3c7b72,#2a3c43);z-index:-1}.skill-row:last-child:after{display:none}.skill-row:hover{transform:translateX(3px);border-color:#4e8888;background:linear-gradient(115deg,#14262c,#101a23)}.skill-row.locked-skill{opacity:.76}.skill-row .skill-emoji{width:32px;height:32px;display:grid;place-items:center;border-radius:11px;background:#1b3038;color:#a5ffdf;font-size:17px;flex:none}.skill-meta strong{font-size:11px}.skill-meta small{line-height:1.45}.status-tag{font-size:8px;letter-spacing:.04em;text-transform:uppercase;border:1px solid #294e49;color:#8bffda;border-radius:99px;padding:5px 7px;white-space:nowrap}.locked-skill .status-tag{color:#91a2ad;border-color:#34434b}.detail-sticky{top:14px}.path-detail{border-color:#31535a;background:radial-gradient(ellipse at 100% 0%,#17423c44,transparent 36%),linear-gradient(145deg,#101c25,#0b1219)}.detail-head{display:flex;align-items:center;gap:11px;margin-bottom:14px}.detail-head h3{font-size:13px;margin:5px 0 0}.detail-symbol{width:39px;height:39px;display:grid;place-items:center;border-radius:13px;background:#18383a;color:#8fffe0;font-size:20px;border:1px solid #376763}.rank-step.current{background:#163d37;border-color:#6bf2cc;color:#9affdf}.rank-step.earned{border-color:#a98d49;color:#f2d58a}.btn.primary{background:linear-gradient(110deg,#9dffdb,#6be4f0);border-color:transparent;color:#071619}.pill,.xp-pill{background:#173633;color:#9affdf}.notice{border-color:#305b56;background:#102521}.skill-row button{white-space:nowrap}
@keyframes pathRowIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@media(max-width:1000px){.path-layout{grid-template-columns:1fr}.path-detail{position:static}.command-meter{width:125px}}
@media(max-width:650px){.nexus-intro .intro-orbit{width:115vw}.intro-emblem{width:84px;height:84px;border-radius:25px}.intro-emblem span{font-size:48px}.intro-wordmark{font-size:33px}.shell{padding:12px}.path-layout{gap:11px}.tree-cats{grid-template-columns:repeat(2,minmax(0,1fr))}.progress-command{padding:14px;gap:11px;flex-wrap:wrap}.command-orb{width:42px;height:42px}.command-copy{min-width:calc(100% - 65px)}.command-meter{width:100%;display:grid;grid-template-columns:45px 1fr;gap:8px;align-items:center}.command-meter>span{margin:0}.command-meter .progress{grid-column:2}.command-meter small{grid-column:1/-1;margin-top:-3px}.tree-controls .field:first-child{min-width:100%;max-width:100%}.tree-controls select{width:100%;min-width:100%}.tree-controls .btn{width:100%}.skill-row{flex-wrap:wrap}.skill-row .skill-meta{flex:1 1 calc(100% - 105px)}.skill-row .status-tag{margin-left:72px}.skill-row button{margin-left:auto}.badge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.nexus-intro,.nexus-intro *, .skill-row{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}.nexus-intro{transition-duration:.01ms!important}}



/* Velora refresh — warm, restrained orange, less sci-fi */
:root{
  color-scheme:dark;
  --bg:#151310;
  --panel:#1e1a16;
  --panel2:#28221c;
  --line:#3b3128;
  --text:#f4eee7;
  --muted:#b6a99d;
  --lime:#f39a54;
  --lime2:#df7430;
  --violet:#d0b4ee;
  --gold:#f4c979;
  --red:#f39b88;
  --blue:#a7c4dd;
  --radius:18px;
}
body{background:var(--bg);color:var(--text)}
.app{background:radial-gradient(ellipse at 84% -18%,#4b2b1a 0,transparent 31%),radial-gradient(ellipse at 0% 58%,#2b2119 0,transparent 28%),var(--bg)}
.logo,.avatar{background:linear-gradient(145deg,#ffb26a,#e87932);color:#25160d;box-shadow:0 5px 22px #e8793224}
.navbtn.active{background:#35271d;color:#ffb26a;box-shadow:inset 3px 0 #f39a54}
.card{background:linear-gradient(145deg,#211c17,#1a1713);border-color:var(--line);box-shadow:0 10px 30px #00000012}
.hero,.rank-hero{background:radial-gradient(ellipse at 93% 8%,#5b351f 0,transparent 35%),linear-gradient(115deg,#30241b,#201b16 76%);border-color:#61432d}
.hero:after{border-color:#f39a5418;box-shadow:0 0 0 28px #f39a5408,0 0 0 58px #f39a5405}
.progress span{background:linear-gradient(90deg,#df7430,#f39a54,#ffd1a2);box-shadow:0 0 8px #f39a5420}
.stat-icon,.xp-pill,.pill{background:#38291e;color:#ffb26a}
.btn.primary{background:#f39a54;border-color:#f39a54;color:#24160e}
.btn:hover{border-color:#b7774d}
.field{background:#171410;border-color:#44372b}
.subnav button.active,.rank-step.current{background:#38291e;color:#ffb26a;border-color:#95603c}
.cat-card{background:#211c17}.cat-card:hover,.cat-card.selected{border-color:#f39a54;background:#2b2119}
.skill-row{background:#1b1713}
.quest{border-bottom-color:#382d23}
.check{border-color:#654731;background:#2b2119;color:#ffb26a}
.check.done{background:#f39a54;color:#24160e;border-color:#f39a54}
.rank-hero{border-color:#61432d}
.league-badge{border-color:#5b4534;color:#e9d8c5}
.gold{border-color:#876d32;color:#ffe3a1;background:#3a301c}
.tree-stage{background:radial-gradient(ellipse at 50% 0%,#3a281b 0,transparent 65%),#17130f}
.tree-edge.open{stroke:#f39a54;filter:drop-shadow(0 0 3px #f39a5433)}
body.light-mode{--bg:#f7f2ec;--panel:#fffdfa;--panel2:#f1e8df;--line:#e2d4c7;--text:#2b2119;--muted:#74665b;background:#f7f2ec;color:#2b2119}
body.light-mode .app{background:radial-gradient(ellipse at 84% -18%,#f4dfcc 0,transparent 35%),#f7f2ec}
body.light-mode .sidebar,body.light-mode .card,body.light-mode .skill-row,body.light-mode .cat-card,body.light-mode .badge-card{background:#fffdfa;border-color:#e2d4c7}
body.light-mode .field{background:#fffdfa;color:#2b2119;border-color:#d9c8b8}
body.light-mode .navbtn.active{background:#f7e7d8;color:#9a4d1f}
body.light-mode .hero,body.light-mode .rank-hero{background:linear-gradient(110deg,#f8e4d2,#fff8f2);border-color:#e7c4a6}
/* Soft editorial opening: warm glow and logo reveal instead of a sci-fi grid */
.nexus-intro{background:#100e0c;color:#f9f0e7}
.nexus-intro::before{inset:-15%;background:radial-gradient(ellipse at 24% 42%,#a94e1e44 0,transparent 34%),radial-gradient(ellipse at 77% 63%,#d7834432 0,transparent 38%),radial-gradient(ellipse at 50% 0%,#6d432923 0,transparent 44%);animation:warmDrift 8s ease-in-out infinite alternate;z-index:-2}
.nexus-intro::after{background:linear-gradient(145deg,#100e0c 0%,#1d1510 48%,#100e0c 100%);z-index:-3}
.intro-grid,.intro-orbit{display:none!important}
.intro-aura{filter:blur(46px);opacity:.16}
.aura-one{background:#eb8740;left:-27%;top:0;animation:auraDrift 10s ease-in-out infinite alternate}
.aura-two{background:#9e4e25;right:-27%;bottom:-10%;animation:auraDrift 12s ease-in-out infinite alternate-reverse}
.intro-emblem{border:1px solid #f1a76d66;border-radius:28px;background:linear-gradient(145deg,#59331f,#2b1c14);box-shadow:0 14px 50px #e8793224,inset 0 0 28px #ffbe8520;transform:none;animation:emblemFloat 3.5s ease-in-out infinite}
.intro-emblem span{color:#ffe9d5;text-shadow:0 0 25px #f39a5436;transform:none}
.intro-emblem i{inset:-7px;border-color:#f1a76d29;border-radius:32px;animation:ringPulse 3s ease-out infinite}
.intro-wordmark{letter-spacing:.25em;padding-left:.25em;text-shadow:0 5px 35px #e8793220}
.intro-tagline{color:#d2a17c;letter-spacing:.24em;padding-left:.24em}
.intro-loading{background:#38271c}
.intro-loading span{background:linear-gradient(90deg,transparent,#df7430,#ffbe85,transparent);box-shadow:0 0 10px #f39a543b}
.intro-status{color:#b58a6b;letter-spacing:.16em;animation:none}
.intro-particles i{background:#ffb26a;box-shadow:0 0 11px 2px #e8793233}
@keyframes warmDrift{0%{transform:translate3d(-2%,-1%,0) scale(1)}100%{transform:translate3d(2%,2%,0) scale(1.08)}}
@media(prefers-reduced-motion:reduce){.nexus-intro::before,.intro-emblem,.intro-emblem i,.intro-particles i{animation:none!important}}


/* Kito : renard cartoon dessiné en SVG, expressions et mouvements sobres */
:root{--lime:#f28a38;--lime2:#ffad62;--panel:#201a17;--panel2:#2b211b;--line:#453329;--text:#fff4ea;--muted:#c0a99a}
.app{background:radial-gradient(ellipse at 80% -20%,#6c351b30 0,transparent 34%),#151210}
.logo,.avatar{background:#f28a38;color:#26160d;box-shadow:none}
.navbtn.active{background:#39261a;color:#ffad62;box-shadow:inset 3px 0 #f28a38}
.btn.primary{background:#f28a38;border-color:#f28a38;color:#26160d}
.accent,.eyebrow{color:#ffad62}
.progress span{background:linear-gradient(90deg,#e97627,#ffb36c)}
.hero,.rank-hero{background:linear-gradient(115deg,#39261b,#211914 72%);border-color:#67442e}
.hero:after{display:none}
.nexus-intro{background:#211711;color:#fff5eb}
.nexus-intro::before{background:radial-gradient(ellipse at 50% 35%,#e9782a35 0,transparent 45%);animation:warmDrift 9s ease-in-out infinite alternate}
.nexus-intro::after{background:linear-gradient(145deg,#211711,#342117 60%,#1b1410)}
.intro-grid,.intro-orbit,.intro-aura,.intro-particles{display:none!important}
.intro-center{gap:0;animation:introReveal .65s ease-out both}
.intro-emblem{display:none}
.intro-wordmark{font-size:38px;letter-spacing:.18em;padding-left:.18em;margin-top:4px;text-shadow:none}
.intro-tagline{font-size:12px;letter-spacing:.04em;color:#e9b28b;padding:0;margin-top:8px;text-transform:none}
.intro-loading{height:5px;width:150px;border-radius:99px;background:#4c3020;margin-top:24px}
.intro-loading span{background:#f28a38;box-shadow:none;border-radius:99px}
.intro-status{font-size:10px;letter-spacing:.05em;color:#d9b39a;text-transform:none}
.intro-kito{width:150px;height:150px;background:#fff;border-radius:35px;display:grid;place-items:center;margin-bottom:17px;box-shadow:0 8px 0 #e0c4a5;overflow:hidden}
.kito-svg{width:100%;height:100%;overflow:visible;animation:kitoBob 3.1s ease-in-out infinite;transform-origin:50% 82%}















.kito-stage{width:118px;height:118px;flex:none;background:#fff;border-radius:27px;display:grid;place-items:center;box-shadow:0 5px 0 #e0c4a5;overflow:hidden}
.kito-stage .kito-svg{width:100%;height:100%}
.kito-bubble{position:relative;background:#fffaf5;color:#39251a;border:2px solid #f0c8a6;border-radius:18px;padding:13px 15px;font-size:12px;line-height:1.5;box-shadow:0 4px 0 #8b4a27}
.kito-bubble:before{content:"";position:absolute;left:-8px;top:23px;width:13px;height:13px;background:#fffaf5;border-left:2px solid #f0c8a6;border-bottom:2px solid #f0c8a6;transform:rotate(45deg)}
.kito-bubble strong{display:block;font-size:13px;margin-bottom:3px}
.kito-onboard-head{display:flex;align-items:center;gap:14px;margin-bottom:18px;min-height:118px}
.kito-onboard-head .kito-stage{width:102px;height:102px;border-radius:23px}
.kito-bubble em{font-style:normal;color:#a64f1c;font-weight:800}
.wizard-progress{display:flex;gap:5px;margin:0 0 16px}
.wizard-progress span{height:5px;flex:1;border-radius:99px;background:#4b382b}
.wizard-progress span.active{background:#f28a38}
.wizard-fields{display:grid;gap:10px}
.wizard-fields label{font-size:11px;color:#e4c5ae;font-weight:750;display:block;margin-bottom:5px}
.goal-picks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.goal-pick{display:flex;align-items:center;gap:8px;border:1px solid #594132;border-radius:12px;padding:10px;background:#241a14;color:#f8e9dc;font-size:11px;cursor:pointer}
.goal-pick:has(input:checked){border-color:#f28a38;background:#3c2719;color:#ffbd83}
.goal-pick input{accent-color:#f28a38}
.wizard-note{font-size:10px;color:#c0a99a;line-height:1.5;margin:0}
.hero-mascot{position:relative;z-index:1;display:flex;align-items:center;gap:14px;max-width:390px}
.hero-mascot .kito-stage{width:100px;height:100px;border-radius:25px}
.hero-mascot .kito-bubble{max-width:230px}
.hero-mascot .kito-bubble:before{left:-8px;top:32px}
.modal{max-height:calc(100vh - 32px);overflow:auto}
body.light-mode .hero-mascot .kito-bubble,body.light-mode .kito-bubble{color:#39251a}
@keyframes kitoBob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-3px) rotate(.5deg)}}
@keyframes kitoTail{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(9deg)}}
@keyframes kitoEar{0%,88%,100%{transform:rotate(0)}91%{transform:rotate(-5deg)}95%{transform:rotate(2deg)}}
@keyframes kitoBlink{0%,41%,45%,100%{transform:scaleY(1)}43%{transform:scaleY(.06)}}
@keyframes kitoTalk{from{transform:scaleY(.72)}to{transform:scaleY(1.12)}}
@media(max-width:760px){.hero-mascot{max-width:100%;gap:10px}.hero-mascot .kito-stage{width:82px;height:82px}.hero-mascot .kito-bubble{font-size:11px}.hero{align-items:flex-start}.goal-picks{grid-template-columns:1fr}.kito-onboard-head .kito-stage{width:84px;height:84px}.kito-onboard-head{gap:10px}}
@media(prefers-reduced-motion:reduce){.kito-svg,.kito-svg .kito-eye,.kito-svg .kito-tail,.kito-svg .kito-ear-left,.kito-svg .kito-ear-right,.kito-svg.talking .kito-mouth-open{animation:none!important}}


/* Accueil chaleureux : dessin animé simple, contours francs, pas d'esthétique robotique */
.nexus-intro{background:#fff5e9;color:#39251a}
.nexus-intro::before{inset:-12%;background:radial-gradient(ellipse at 22% 28%,#ffc17a77 0,transparent 28%),radial-gradient(ellipse at 78% 70%,#ff9b5b55 0,transparent 32%),radial-gradient(ellipse at 50% 100%,#ffe0b655 0,transparent 35%);animation:introFriendlyFloat 7s ease-in-out infinite alternate}
.nexus-intro::after{background:linear-gradient(180deg,#fff9f1,#ffeddc)}
.intro-center{animation:introReveal .8s cubic-bezier(.2,.8,.2,1) both}
.intro-kito{background:#fff;border:3px solid #f4a45e;border-radius:34px;box-shadow:0 7px 0 #e9c7a6,0 14px 30px #9b55251a;width:174px;height:174px;animation:mascotPop .8s cubic-bezier(.2,1.4,.4,1) both;margin-bottom:20px}
.intro-wordmark{color:#39251a;font-size:clamp(34px,8vw,46px);letter-spacing:.18em;text-shadow:none;margin-top:0}
.intro-tagline{color:#8e5736;font-size:13px;letter-spacing:0;text-transform:none;padding:0;margin-top:9px}
.intro-loading{background:#f3d9c2;height:6px;width:185px;margin-top:28px}
.intro-loading span{background:#f28a38;box-shadow:none}
.intro-status{color:#946749;font-size:10px;letter-spacing:.03em;text-transform:none}
@keyframes introFriendlyFloat{from{transform:translate(-1%,0) scale(1)}to{transform:translate(1%,1.5%) scale(1.04)}}
@keyframes mascotPop{0%{opacity:0;transform:translateY(20px) scale(.7) rotate(-7deg)}70%{transform:translateY(-5px) scale(1.04) rotate(2deg)}100%{opacity:1;transform:none}}
.welcome-overlay{position:fixed;inset:0;z-index:9998;display:none;place-items:center;padding:22px;background:#fff5e9;color:#39251a;overflow:auto}
.welcome-overlay.open{display:grid;animation:welcomeFade .35s ease both}
.welcome-card{width:min(100%,480px);background:#fffdf9;border:2px solid #f0d2b8;border-radius:30px;padding:25px 24px 22px;text-align:center;box-shadow:0 8px 0 #e9c7a6,0 20px 55px #8e4a2518;animation:mascotPop .55s cubic-bezier(.2,1.2,.4,1) both}
.welcome-mascot{width:180px;height:180px;margin:0 auto 14px;background:#fff;border:3px solid #f5b071;border-radius:35px;box-shadow:0 6px 0 #e9c7a6;overflow:hidden}
.welcome-mascot .kito-svg{width:100%;height:100%}
.welcome-card .welcome-eyebrow{font-size:10px;font-weight:900;letter-spacing:.18em;color:#d66b27;text-transform:uppercase;margin-bottom:8px}
.welcome-card h2{font-size:clamp(29px,7vw,38px);line-height:1.02;letter-spacing:-.05em;margin:0 0 10px}
.welcome-card p{font-size:14px;line-height:1.55;color:#76543f;margin:0 auto 20px;max-width:340px}
.welcome-card .btn.primary{font-size:14px;padding:14px 22px;border-radius:15px;background:#f28a38;border-color:#f28a38;color:#321c10;box-shadow:0 4px 0 #c85d1c}
.welcome-card .btn.primary:active{transform:translateY(3px);box-shadow:0 1px 0 #c85d1c}
.kito-bubble{box-shadow:0 3px 0 #e4c5ac;border-width:2px}
.kito-onboard-head .kito-stage{background:#fff;border:2px solid #f3c7a3;box-shadow:0 4px 0 #e9c7a6}
.kito-svg{width:100%;height:100%;overflow:visible;animation:kitoOldBob 3.4s ease-in-out infinite;transform-origin:50% 85%}
.kito-svg .kito-eye{transform-box:fill-box;transform-origin:center;animation:kitoOldBlink 5.4s infinite}
.kito-svg .kito-tail{transform-box:fill-box;transform-origin:20% 70%;animation:kitoOldTail 3.7s ease-in-out infinite}
.kito-svg .kito-ear-left,.kito-svg .kito-ear-right{transform-box:fill-box;transform-origin:50% 90%;animation:kitoOldEar 5.7s ease-in-out infinite}
.kito-svg .kito-mouth-open{opacity:0;transform-box:fill-box;transform-origin:50% 10%;transition:opacity .12s ease}
.kito-svg .kito-mouth-closed{opacity:1;transition:opacity .12s ease}
.kito-svg.mood-happy .kito-mouth-open,.kito-svg.talking .kito-mouth-open{opacity:1}
.kito-svg.mood-happy .kito-mouth-closed,
.kito-svg.talking .kito-mouth-open{animation:kitoOldTalk .2s ease-in-out infinite alternate}
@keyframes welcomeFade{from{opacity:0}to{opacity:1}}
@media(max-width:600px){.welcome-card{padding:22px 18px 20px;border-radius:25px}.welcome-mascot{width:155px;height:155px}.intro-kito{width:150px;height:150px}}
@media(prefers-reduced-motion:reduce){.welcome-card,.welcome-overlay,.intro-kito,.nexus-intro::before{animation:none!important}.kito-svg,.kito-svg *{animation:none!important}}


/* Kito utilise le dessin fourni : l'animation agit sur le personnage entier,
   sans déformer ni redessiner son visage. */
.kito-svg.kito-art{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  background:#fff;
  border:0;
  image-rendering:auto;
  transform-origin:50% 86%;
  animation:none;
  user-select:none;
  -webkit-user-drag:none;
}
.kito-svg.kito-art.mood-happy:not(.talking){
  animation:none;
}
.kito-svg.kito-art.talking{
  animation:none;
}
.intro-kito .kito-art{width:100%;height:100%;border-radius:inherit}
.welcome-mascot .kito-art{width:100%;height:100%;border-radius:inherit}
.kito-stage .kito-art{width:100%;height:100%;border-radius:inherit}
@keyframes kitoPortraitIdle{
  0%,100%{transform:translateY(0) rotate(0) scale(1)}
  48%{transform:translateY(-4px) rotate(-1deg) scale(1.012)}
  72%{transform:translateY(-2px) rotate(1deg) scale(1.005)}
}
@keyframes kitoPortraitHappy{
  0%,74%,100%{transform:translateY(0) rotate(0) scale(1)}
  78%{transform:translateY(-7px) rotate(-3deg) scale(1.025)}
  83%{transform:translateY(0) rotate(3deg) scale(1)}
  88%{transform:translateY(-3px) rotate(-1deg) scale(1.01)}
}
@keyframes kitoPortraitTalk{
  from{transform:translateY(0) rotate(-1.2deg) scale(1)}
  to{transform:translateY(-3px) rotate(1.2deg) scale(1.018)}
}
.kito-onboard-head .kito-bubble{animation:kitoBubbleIn .32s cubic-bezier(.2,.8,.2,1) both}
@keyframes kitoBubbleIn{from{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(prefers-reduced-motion:reduce){
  .kito-svg.kito-art,.kito-svg.kito-art.talking,.kito-svg.kito-art.mood-happy:not(.talking),.kito-onboard-head .kito-bubble{animation:none!important}
}


/* Kito est toujours l'illustration originale fournie par l'utilisateur. Seul le cadre/image entière est animé : aucun visage CSS de remplacement. */
.kito-svg.kito-art{object-fit:contain;object-position:center;background:#fff;transform-origin:50% 88%;will-change:transform;}
.kito-svg.kito-art.talking{animation:none!important;}
.kito-onboard-head .kito-stage{background:#fff;}
@keyframes kitoPortraitTalk{from{transform:translateY(0) rotate(-1deg) scale(1)}to{transform:translateY(-3px) rotate(1deg) scale(1.012)}}

body.setup-required #nexusApp{visibility:hidden!important;pointer-events:none!important}
body.setup-required .modal-backdrop{z-index:10001}
body.setup-required .modal{background:#fffdf9;color:#39251a;border-color:#f0d2b8;box-shadow:0 8px 0 #e9c7a6,0 20px 55px #8e4a2518}
body.setup-required .modal label{color:#76543f}
body.setup-required .modal .field{background:#fffaf5;color:#39251a;border-color:#e9c7a6}
body.setup-required .modal .modal-actions .btn.ghost{color:#8b5634}
body.setup-required .modal .wizard-progress span{background:#f3d9c2}
body.setup-required .modal .wizard-progress span.active{background:#f28a38}
body.setup-required .modal .kito-bubble{background:#fff7ef}
/* VELORA — interface minimaliste : priorité au contenu et aux actions utiles */
:root{
 color-scheme:light;--bg:#f7f5f1;--panel:#ffffff;--panel2:#f1eee8;--line:#e6e0d7;
 --text:#292722;--muted:#77736c;--lime:#ef8a3a;--lime2:#df7628;--violet:#8c7bc0;
 --gold:#c18a31;--red:#c65d52;--blue:#5284a9;--radius:16px;
 font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
body{background:var(--bg);color:var(--text)}
.app{background:var(--bg)!important;min-height:100vh}
.shell{max-width:1280px;padding:20px}
.topbar{margin-bottom:18px}
.logo{background:#f28a38;color:#fff;box-shadow:none;border-radius:13px}
.brand h1{letter-spacing:.12em}
.brand small{display:none}
.week-chip,.profile-chip{background:#fff;border-color:var(--line);color:var(--muted);box-shadow:none}
.profile-chip{color:var(--text)}
.avatar{background:#fce5d3;color:#9d4e16;overflow:hidden;flex-shrink:0}
.layout{grid-template-columns:205px minmax(0,1fr);gap:18px}
.sidebar{background:#fff;border:1px solid var(--line);border-radius:16px;padding:8px;box-shadow:none}
.navlabel,.side-note{display:none}
.navbtn{font-size:13px;color:#6d6962;padding:11px;border-radius:10px;margin:1px 0;box-shadow:none}
.navbtn.active{background:#fff0e4;color:#a94f12;box-shadow:inset 3px 0 #ef8a3a}
.section.active{animation:appear .16s ease}
.pagehead{margin-bottom:16px;align-items:center}
.eyebrow{display:none}
.pagehead h2{font-size:clamp(25px,3vw,33px);letter-spacing:-.04em;margin:0 0 5px}
.pagehead p{font-size:12px;color:var(--muted);max-width:54ch}
.btn{background:#fff;border:1px solid var(--line);color:var(--text);border-radius:10px;padding:9px 12px;font-size:12px;font-weight:650;box-shadow:none;transition:background .15s,border-color .15s}
.btn:hover{transform:none;border-color:#d8b08e;background:#fffaf6}
.btn.primary{background:#ef8a3a;border-color:#ef8a3a;color:#fff;box-shadow:none}
.btn.primary:hover{background:#df7628;border-color:#df7628}
.btn.ghost{background:transparent;border-color:transparent}
.btn.danger{color:#a83c34;border-color:#edd5d2}
.card,.badge-card,.cat-card,.skill-row,.quest-mini,.mini-stat,.rank-hero,.hero,.tree-stage,.calendar-cell,.cosmetic-btn,.league-badge{
 box-shadow:none!important;
}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:17px}
.stats{gap:10px;margin-bottom:10px}
.stat-top{font-size:11px;color:var(--muted)}
.stat-icon{background:#fff0e4;color:#c96721;border-radius:10px}
.stat-value{font-size:27px;margin:9px 0 3px;letter-spacing:-.04em}
.stat-foot{font-size:11px}
.progress{height:6px;background:#eee9e2}
.progress span{background:#ef8a3a}
.quest{gap:10px;padding:11px 0;border-color:#f0ece6}
.check{background:#fff7f0;border-color:#f2d4bd;color:#c96721;border-radius:8px}
.check.done{background:#ef8a3a;border-color:#ef8a3a;color:white}
.quest-info strong{font-size:13px}
.quest-info small{font-size:11px;color:var(--muted)}
.xp-pill,.pill{background:#fff0e4;color:#a94f12;font-size:10px}
.hero,.rank-hero{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px}
.hero:after{display:none}
.hero h3{font-size:clamp(22px,3vw,29px);letter-spacing:-.035em;margin:5px 0 8px}
.hero p{color:var(--muted);font-size:13px;line-height:1.55}
.hero-mark{display:none}
.section-toolbar,.subnav{gap:6px;margin-bottom:12px}
.field{background:#fff;border:1px solid #ded8cf;color:var(--text);border-radius:10px;padding:11px 12px;font-size:13px}
.field::placeholder{color:#aaa39a}
.subnav button{border:1px solid var(--line);border-radius:9px;color:var(--muted);background:#fff;font-size:11px}
.subnav button.active{background:#fff0e4;color:#a94f12;border-color:#f3c29c}
.tree-layout,.tree-bottom{gap:12px}
.tree-cats{gap:8px}
.cat-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:12px;min-height:98px;color:var(--text)}
.cat-card:hover,.cat-card.selected{border-color:#ef8a3a;background:#fffaf6;transform:none}
.cat-card h4{font-size:13px;margin:8px 0 4px}
.cat-card p{font-size:11px;color:var(--muted)}
.skill-list{gap:6px}
.skill-row{background:#fff;border:1px solid var(--line);border-radius:12px;padding:11px}
.skill-meta strong{font-size:12px}
.skill-meta small{font-size:10px}
.skill-row .status-tag{font-size:10px;border-radius:6px}
.rank-track{gap:5px}
.rank-step{border-color:var(--line);border-radius:8px}
.rank-step.current{background:#fff0e4;border-color:#ef8a3a;color:#a94f12}
.rank-step.earned{border-color:#e5c88f;color:#9d6b19}
.rank-row{border-color:#f0ece6}
.badge-grid{gap:8px}
.badge-card{background:#fff;border-color:var(--line);border-radius:12px}
.mini-stat{background:#fff;border-color:var(--line);border-radius:12px}
.calendar-cell{background:#f2eee8;border-color:#e6e0d7;color:#77736c}
.calendar-cell.active{background:#ef8a3a;border-color:#ef8a3a;color:#fff}
.cosmetic-btn{background:#fff;border-color:var(--line);border-radius:10px}
.cosmetic-btn.selected{border-color:#ef8a3a;box-shadow:inset 0 0 0 1px #ef8a3a!important}
.detail-sticky{top:12px}
/* L'accueil de Kito reste vivant, mais sans effets futuristes ni décoration superflue. */
.nexus-intro{background:#fff7ef!important;color:#292722!important}
.nexus-intro::before{inset:0!important;background:radial-gradient(circle at 50% 25%,#f9d9bd 0,transparent 43%)!important;animation:introFriendlyFloat 8s ease-in-out infinite alternate!important}
.nexus-intro::after{background:#fff7ef!important}
.intro-grid{display:none!important}
.intro-emblem{border:0!important;background:#ef8a3a!important;box-shadow:none!important;border-radius:24px!important;transform:none!important;animation:mascotPop .55s ease both!important}
.intro-emblem span{color:white!important;text-shadow:none!important}
.intro-emblem i{display:none!important}
.intro-wordmark{color:#292722!important;text-shadow:none!important;letter-spacing:.16em!important}
.intro-tagline,.intro-status{color:#77736c!important;letter-spacing:0!important}
.intro-loading{background:#eee3d8!important;border-radius:99px!important}
.intro-loading span{background:#ef8a3a!important;box-shadow:none!important}
.welcome-overlay{background:#f7f5f1!important}
.welcome-card{background:#fff!important;border:1px solid var(--line)!important;border-radius:20px!important;padding:22px!important;box-shadow:0 8px 30px #37200e0b!important}
.welcome-mascot{border:0!important;border-radius:18px!important;box-shadow:none!important}
.welcome-card .welcome-eyebrow{letter-spacing:.06em!important}
.welcome-card h2{letter-spacing:-.035em!important}
.welcome-card p{color:#77736c!important}
.welcome-card .btn.primary{background:#ef8a3a!important;border-color:#ef8a3a!important;color:white!important;box-shadow:none!important;border-radius:10px!important}
.kito-bubble{background:#fff!important;color:#292722!important;border:1px solid #e8ddd2!important;border-radius:15px!important;padding:12px 14px!important;box-shadow:none!important}
.kito-bubble:before{background:#fff!important;border-color:#e8ddd2!important}
.kito-bubble strong{font-size:13px!important}
.kito-onboard-head .kito-stage,.kito-stage{background:#fff!important;border:0!important;box-shadow:none!important;border-radius:17px!important}
.wizard-progress span{background:#e8e1d8!important}
.wizard-progress span.active{background:#ef8a3a!important}
.wizard-fields label{color:#625b53!important;font-size:12px!important}
.goal-pick{background:#fff!important;color:#292722!important;border:1px solid var(--line)!important;border-radius:10px!important}
.goal-pick:has(input:checked){background:#fff4e9!important;border-color:#ef8a3a!important;color:#a94f12!important}
.wizard-note{color:#77736c!important}
.hero-mascot .kito-bubble{max-width:260px}
@media(max-width:850px){.shell{padding:12px}.layout{grid-template-columns:1fr;gap:12px}.sidebar{position:static;display:flex;gap:4px;overflow-x:auto;padding:5px}.navbtn{flex:0 0 auto;width:auto;white-space:nowrap;padding:9px 11px}.navbtn.active{box-shadow:inset 0 -2px #ef8a3a}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.tree-bottom,.tree-layout{grid-template-columns:1fr}.detail-sticky{position:static}}
@media(max-width:520px){.shell{padding:10px}.topbar{margin-bottom:12px}.brand h1{font-size:15px}.week-chip{display:none}.pagehead{align-items:flex-start}.pagehead h2{font-size:25px}.card{padding:14px}.hero{padding:16px}.tree-cats{grid-template-columns:repeat(2,minmax(0,1fr))}.tree-stage svg{height:320px}.rank-hero{padding:15px}.badge-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.kito-onboard-head{align-items:flex-start}.welcome-mascot{width:145px;height:145px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}


/* Fond VELORA fixe : seul le contenu défile, jamais les dégradés du fond. */
html{min-height:100%;background:#15100d}
body{min-height:100vh;background:#15100d!important;isolation:isolate;position:relative}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 80% 0%,#6c351b30 0,transparent 34%),radial-gradient(ellipse at 0% 58%,#2b211910 0,transparent 28%),#15100d;transform:translateZ(0)}
.app{background:transparent!important;min-height:100vh}


/* Final palette override: deep charcoal + burnt orange only */
:root{--bg:#100d0b;--panel:#191411;--panel2:#241a14;--line:#493124;--text:#f5eee8;--muted:#b8a69a;--lime:#e58a48;--lime2:#b85a24;--violet:#d0b4ee;--gold:#e9b968;--red:#ed8d79;--blue:#a7c4dd}
body{background:#100d0b!important;color:#f5eee8}
.app{background:radial-gradient(ellipse at 84% -18%,#32190f 0,transparent 31%),radial-gradient(ellipse at 0% 58%,#21150f 0,transparent 28%),#100d0b!important}
.path-card,.path-detail{background:linear-gradient(145deg,#1b1713,#120f0c)!important;border-color:#493124!important;color:#f5eee8}
.path-guide,.path-guide-line{color:#c58b63}
.path-guide-line{background:linear-gradient(90deg,#b85a24,#b85a2422)!important;box-shadow:none!important}
.skill-row,.skill-row:hover{background:linear-gradient(115deg,#201710,#17110d)!important;border-color:#493124!important}
.skill-row:before{background:#2a1b12!important;border-color:#684128!important;color:#f0a36b!important}
.skill-row .skill-emoji{background:#2b1b12!important;color:#f5b17c!important}
.skill-row:after{background:linear-gradient(#8d4f2c,#493124)!important}
.skill-row button,.skill-row .btn,.skill-row button:disabled,.skill-row button[disabled]{background:#302016!important;color:#f2c6a5!important;border:1px solid #75482f!important;opacity:1!important;box-shadow:none!important}
.skill-row button:hover,.skill-row .btn:hover{background:#432719!important;border-color:#b85a24!important;color:#fff0e4!important}
.status-tag{background:#2b1b12!important;color:#f0a36b!important;border-color:#75482f!important}
.locked-skill .status-tag{background:#211811!important;color:#b8a69a!important;border-color:#493124!important}
.rank-step,.rank-step.current,.rank-step.earned{background:#241811!important;border-color:#75482f!important;color:#e9a36f!important}
.detail-symbol,.command-orb,.stat-icon,.xp-pill,.pill{background:#302016!important;color:#f0a36b!important;border-color:#75482f!important;box-shadow:none!important}
.tree-stage,.progress-command,.path-detail{background:linear-gradient(145deg,#211710,#15100c)!important;border-color:#593924!important}
.tree-edge.open{stroke:#c66b32!important;filter:none!important}
.btn.primary{background:#b85a24!important;border-color:#b85a24!important;color:#fff4eb!important}
.btn:focus-visible,.skill-row button:focus-visible{outline:2px solid #e58a48!important}
body.light-mode .path-card,body.light-mode .path-detail,body.light-mode .skill-row{background:#fffaf5!important;color:#2b2119!important}


/* Correctif contraste : options du profil toujours lisibles */
body:not(.light-mode) .modal .checkgrid label.goal-option,
body:not(.light-mode) label.goal-option { background:#211914 !important; color:#f5eee8 !important; border:1px solid #65442f !important; }
body:not(.light-mode) .modal .checkgrid label.goal-option:has(input:checked) { background:#3a2418 !important; color:#ffc08d !important; border-color:#c56a31 !important; }
body:not(.light-mode) label.goal-option input { background-color:#211914 !important; accent-color:#e58a48 !important; }
body.light-mode .modal .checkgrid label.goal-option,
body.light-mode label.goal-option { background:#fffdfa !important; color:#2b2119 !important; border:1px solid #d7c5b6 !important; }
body.light-mode .modal .checkgrid label.goal-option:has(input:checked) { background:#f7e7d8 !important; color:#823d18 !important; border-color:#a84d20 !important; }


/* VELORA : apparence du personnage et choix de genre */
.gender-settings{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 16px}.gender-settings label{display:block;font-size:11px;font-weight:750;margin-bottom:6px}.gender-settings .field{min-height:42px}.pixel-avatar .pixel-sprite svg{width:100%;height:100%;shape-rendering:crispEdges;image-rendering:pixelated}.appearance-note{font-size:10px;line-height:1.5;color:var(--muted);margin:8px 0 0}@media(max-width:600px){.gender-settings{grid-template-columns:1fr}}
/* VELORA avatar pixel-art + boutique */
.pixel-avatar{width:76px;height:88px;flex:none;position:relative;display:grid;place-items:center;border:2px solid #b85a24;border-radius:10px;background:linear-gradient(145deg,#2b211e,#121214);box-shadow:inset 0 0 0 3px #171719;image-rendering:pixelated;overflow:hidden}
.pixel-avatar .pixel-person{font-size:43px;line-height:1;filter:drop-shadow(2px 2px 0 #090909);transform:translateY(5px)}
.pixel-avatar .pixel-hat{position:absolute;top:4px;left:50%;transform:translateX(-50%);font-size:21px;z-index:2;text-shadow:1px 1px #111}
.pixel-avatar .pixel-hand{position:absolute;bottom:10px;right:4px;font-size:20px;z-index:3}
.pixel-avatar .pixel-coat{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:39px;height:28px;border:3px solid #111;border-radius:5px;background:var(--coat,#b85a24);z-index:1}
.avatar-shop{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}.coin-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;background:#342316;border:1px solid #925027;color:#ffd19a;font-size:12px;font-weight:850}.shop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px}.shop-item{border:1px solid var(--line);border-radius:12px;background:var(--panel2);padding:11px;min-width:0}.shop-item .shop-icon{font-size:27px}.shop-item strong{display:block;font-size:12px;margin:4px 0}.shop-item small{display:block;color:var(--muted);font-size:10px;line-height:1.4;margin-bottom:8px}.shop-item .btn{width:100%;padding:8px 6px}.level-line{display:flex;align-items:center;gap:10px;margin-top:9px}.level-medal{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;background:#332218;border:2px solid #b85a24;color:#ffd0a0;font-weight:950;font-size:17px}
@media(max-width:600px){.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pixel-avatar{width:70px;height:82px}}

/* Personnage pixel art original : pixels nets, grille régulière, aucune ombre ni contour flou. */
.pixel-avatar{width:100%;min-height:190px;display:flex;align-items:center;gap:20px;padding:16px 20px;border:1px solid #49372e;border-radius:18px;background:#171416;box-shadow:none;overflow:hidden}
.pixel-avatar .pixel-stage{width:132px;height:150px;flex:0 0 132px;display:flex;align-items:center;justify-content:center;background:#211914;border:1px solid #49372e;border-radius:10px;box-shadow:none;overflow:hidden;padding:8px}
.pixel-avatar .pixel-sprite{width:96px;height:132px;flex:none;background:none;image-rendering:pixelated;filter:none;box-shadow:none;aspect-ratio:16/22}
.pixel-avatar .pixel-sprite svg{display:block;width:100%;height:100%;shape-rendering:crispEdges;image-rendering:pixelated;overflow:visible}
.pixel-avatar .pixel-meta{min-width:0;display:flex;flex-direction:column;gap:7px}
.pixel-avatar .pixel-meta .pixel-kicker{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:#d58a55;font-weight:800}
.pixel-avatar .pixel-meta .pixel-title{font-size:21px;font-weight:900;line-height:1.1}
.pixel-avatar .pixel-meta .pixel-sub{font-size:11px;color:var(--muted);line-height:1.6}
.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.shop-item{background:#171719!important;border-color:#49372e!important}
.shop-item .shop-icon{width:54px;height:54px;display:grid;place-items:center;border-radius:12px;background:#211914;border:1px solid #63412d;overflow:hidden}
@media(max-width:600px){.pixel-avatar{gap:12px;padding:12px;min-height:160px}.pixel-avatar .pixel-stage{width:98px;height:122px;flex-basis:98px}.pixel-avatar .pixel-sprite{width:72px;height:99px}.pixel-avatar .pixel-meta .pixel-title{font-size:18px}.pixel-avatar .pixel-meta .pixel-sub{font-size:10px}.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Page Paramètres indépendante */
.settings-pagehead{align-items:center;margin-bottom:22px}
.settings-back{display:inline-flex;align-items:center;gap:9px;justify-content:center;min-width:42px;font-size:20px;line-height:1}
.settings-back span{font-size:11px}
.settings-content{max-width:760px;margin:0 auto}
#page-settings #profileSettingsCard{width:100%;border-color:#46563b}
@media(max-width:520px){.settings-pagehead{align-items:flex-start}.settings-back{padding:8px 10px}.settings-back span{display:none}.settings-content{width:100%}}

/* VELORA quality-of-life improvements */
body.rpg-mode .app{background:radial-gradient(ellipse at 50% -20%,#3b234f 0,transparent 42%),var(--bg)}
body.rpg-mode .card,body.rpg-mode .cat-card,body.rpg-mode .skill-row{border-radius:12px;border-color:#59416d}
body.card-compact .card{padding:13px;border-radius:14px}body.card-compact .grid{gap:10px}
body.reduce-motion *,body.reduce-motion *::before,body.reduce-motion *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
.level-title{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:#352a48;color:#d7c4ff;font-size:10px;font-weight:800}
.session-actions{display:flex;gap:5px;align-items:center}.session-actions .btn{padding:5px 7px;font-size:10px}.undo-quest{font-size:10px;padding:5px 7px}
@media(prefers-reduced-motion:reduce){body.rpg-mode *{animation:none!important;transition:none!important}}

/* Inline SVG icons replace emoji glyphs throughout the app. */
.secret-icon{width:13px;height:13px;vertical-align:-.15em;color:var(--gold)}
.skill-emoji .skill-icon,.skill-quest-logo .skill-icon{display:block;width:24px;height:24px}
.stat-svg{width:16px;height:16px;display:block}.ui-icon{width:14px;height:14px;vertical-align:-.2em}.nexus-icon{display:inline-block;width:1.05em;height:1.05em;vertical-align:-.17em;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.category-icon{width:23px;height:23px}.skill-icon{width:24px;height:24px}.goal-icon{width:17px;height:17px;vertical-align:-.2em}.badge-svg{width:1em;height:1em}.medal .badge-svg{width:1.35em;height:1.35em}.badge-unlock-medal .badge-svg{width:52px;height:52px}.badge-detail-icon .badge-svg{width:42px;height:42px}.rank-svg{width:24px;height:24px}.global-rank-emblem .rank-svg{width:34px;height:34px}.shop-svg{width:32px;height:32px}.home-rank-icon{width:48px;height:48px;display:grid;place-items:center;color:var(--gold)}.home-rank-icon svg{width:40px;height:40px}.quest-head-meta{display:flex;align-items:center;gap:8px;justify-content:flex-end;flex-wrap:wrap}.quest-reset-countdown{font-variant-numeric:tabular-nums;white-space:nowrap}.skill-quest-check{position:relative}.skill-quest-check input{opacity:0;width:1px;height:1px;position:absolute;left:8px;top:8px}.skill-quest-toggle{display:grid;place-items:center;padding:0;border:0;border-radius:8px;background:transparent;flex:none;cursor:pointer}.skill-quest-toggle:disabled{opacity:.38;cursor:not-allowed}.skill-quest-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.skill-quest-check:focus-within{outline:2px solid var(--gold);outline-offset:2px}


/* ===== CSS block séparé ===== */


/* Velora final palette: near-black + deep burnt orange only; no green accents */
:root{color-scheme:dark;--bg:#100d0b;--panel:#191411;--panel2:#211914;--line:#3a2920;--text:#f5eee8;--muted:#b8a69a;--lime:#b85a24;--lime2:#8e3e18;--violet:#d0b4ee;--gold:#e9b968;--red:#ed8d79;--blue:#a7c4dd}
body{background:var(--bg);color:var(--text)}
.app{background:radial-gradient(ellipse at 84% -18%,#32190f 0,transparent 31%),radial-gradient(ellipse at 0% 58%,#21150f 0,transparent 28%),var(--bg)}
.logo,.avatar{background:linear-gradient(145deg,#c56a31,#783414);color:#fff0e4;box-shadow:0 5px 22px #a84d2020}
.navbtn.active{background:#302018;color:#e38a50;box-shadow:inset 3px 0 #a84d20}
.card{background:linear-gradient(145deg,#211914,#18120f);border-color:var(--line)}
.hero,.rank-hero{background:radial-gradient(ellipse at 93% 8%,#492516 0,transparent 35%),linear-gradient(115deg,#2a1b13,#1a1410 76%);border-color:#583522}
.hero:after{border-color:#b85a2418;box-shadow:0 0 0 28px #b85a2408,0 0 0 58px #b85a2405}
.progress span{background:linear-gradient(90deg,#8e3e18,#b85a24,#df8a50);box-shadow:0 0 8px #b85a2420}
.stat-icon,.xp-pill,.pill{background:#342117;color:#e7a16e}
.btn.primary{background:#a84d20;border-color:#a84d20;color:#fff3e8}
.btn:hover{border-color:#a85c32}
.field{background:#15100d;border-color:#493326}
.subnav button.active,.rank-step.current{background:#342117;color:#e7a16e;border-color:#86502f}
.cat-card{background:#201712}.cat-card:hover,.cat-card.selected{border-color:#a84d20;background:#2b1c14;box-shadow:none}
.tree-cats .cat-card,.skill-row,.skill-row:hover{background:#1b1410;border-color:#3a2920}
.skill-row:before{background:#2a1a12;border-color:#583522;color:#e7a16e}
.skill-row:after{background:linear-gradient(#8a4927,#3a2920)}
.skill-row .skill-emoji,.command-orb,.detail-symbol{background:#2c1b12;color:#e7a16e;border-color:#654027;box-shadow:none}
.status-tag{border-color:#654027;color:#e7a16e}
.locked-skill .status-tag{color:#b8a69a;border-color:#493326}
.path-detail{border-color:#583522;background:radial-gradient(ellipse at 100% 0%,#4b261544,transparent 36%),linear-gradient(145deg,#1c1410,#110d0b)}
.rank-step.earned{border-color:#8e6b36;color:#e9b968}
.notice{border-color:#583522;background:#21150f}
.progress-command{border-color:#583522;background:radial-gradient(circle at 5% 50%,#512b1744,transparent 40%),linear-gradient(110deg,#21140e,#15100d 65%)}
.command-orb{border-color:#654027}
.path-guide{color:#ba8765}.path-guide-line{background:linear-gradient(90deg,#b85a24,#b85a2422);box-shadow:0 0 9px #b85a244d}
.intro-screen,.nexus-intro{background:#100d0b!important;color:#f5eee8!important}
.intro-emblem{border-color:#a84d20!important;box-shadow:0 0 35px #a84d2028,inset 0 0 24px #a84d2015!important}
.intro-emblem span{color:#f5eee8!important;text-shadow:0 0 24px #a84d2040!important}
.intro-emblem i,.intro-orbit{border-color:#a84d2020!important;box-shadow:0 0 70px #a84d2008,inset 0 0 70px #a84d2008!important}
.intro-wordmark{ text-shadow:0 0 35px #a84d2025!important }
.intro-tagline,.intro-status{color:#b78b70!important}
.intro-loading{background:#302018!important}.intro-loading span{background:linear-gradient(90deg,transparent,#8e3e18,#c56a31,transparent)!important;box-shadow:0 0 12px #a84d2040!important}
.aura-one,.aura-two{background:#a84d20!important;opacity:.08!important}
.intro-particles i{background:#c56a31!important;box-shadow:0 0 12px 3px #a84d2030!important}
.kito-bubble,.wizard-progress span.active{border-color:#8e3e18!important}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Keep the viewport fixed horizontally while allowing normal vertical scrolling. */
html,body{width:100%;max-width:100%;overflow-x:hidden;overscroll-behavior-x:none}
body{position:relative;margin:0}
.app{width:100%;max-width:100%;min-width:0;overflow-x:clip}
*,*::before,*::after{box-sizing:border-box;max-width:100%}
img,svg,canvas,video{max-width:100%}

/* Correctif contraste : options du profil toujours lisibles */
body:not(.light-mode) .modal .checkgrid label.goal-option,
body:not(.light-mode) label.goal-option { background:#211914 !important; color:#f5eee8 !important; border:1px solid #65442f !important; }
body:not(.light-mode) .modal .checkgrid label.goal-option:has(input:checked) { background:#3a2418 !important; color:#ffc08d !important; border-color:#c56a31 !important; }
body:not(.light-mode) label.goal-option input { background-color:#211914 !important; accent-color:#e58a48 !important; }
body.light-mode .modal .checkgrid label.goal-option,
body.light-mode label.goal-option { background:#fffdfa !important; color:#2b2119 !important; border:1px solid #d7c5b6 !important; }
body.light-mode .modal .checkgrid label.goal-option:has(input:checked) { background:#f7e7d8 !important; color:#823d18 !important; border-color:#a84d20 !important; }



/* ===== CSS block séparé ===== */



/* Thèmes VELORA : couleurs cohérentes, contraste lisible, sans boutons blancs illisibles. */
:root{color-scheme:dark;--bg:#100d0b;--panel:#191411;--panel2:#211914;--line:#493326;--text:#f5eee8;--muted:#c1afa2;--lime:#c56a31;--lime2:#8e3e18}
body{background:var(--bg)!important;color:var(--text)!important}
.app{background:radial-gradient(ellipse at 84% -18%,#32190f 0,transparent 31%),radial-gradient(ellipse at 0 58%,#21150f 0,transparent 28%),var(--bg)!important;color:var(--text)!important}
.cosmetic-btn,.btn:not(.primary):not(.danger),.skill-row button{background:#211914!important;color:#f5eee8!important;border-color:#65442f!important}
.cosmetic-btn.selected{background:#3a2418!important;color:#ffc08d!important;border-color:#c56a31!important}
.btn.primary{background:#a84d20!important;border-color:#a84d20!important;color:#fff4eb!important}
.btn.danger{background:#321815!important;color:#ffb4a8!important;border-color:#9b4d40!important}
.field{background:#15100d!important;color:#f5eee8!important;border-color:#65442f!important}
.field::placeholder{color:#b8a69a!important}
body.light-mode{color-scheme:light;--bg:#f7f2ec;--panel:#fffdfa;--panel2:#f1e8df;--line:#e2d4c7;--text:#2b2119;--muted:#74665b;--lime:#a84d20;--lime2:#c56a31;background:var(--bg)!important;color:var(--text)!important}
body.light-mode .app{background:radial-gradient(ellipse at 84% -18%,#f4dfcc 0,transparent 35%),var(--bg)!important;color:var(--text)!important}
body.light-mode .sidebar,body.light-mode .card,body.light-mode .cat-card,body.light-mode .skill-row,body.light-mode .badge-card,body.light-mode .mini-stat,body.light-mode .quest-mini,body.light-mode .path-detail,body.light-mode .tree-stage,body.light-mode .rank-hero,body.light-mode .hero{background:#fffdfa!important;color:#2b2119!important;border-color:#e2d4c7!important}
body.light-mode .pagehead h2,body.light-mode .pagehead h3,body.light-mode h1,body.light-mode h2,body.light-mode h3,body.light-mode h4,body.light-mode strong,body.light-mode label,body.light-mode p,body.light-mode .quest-info,body.light-mode .skill-meta,body.light-mode .rank-name,body.light-mode .rank-sub{color:#2b2119}
body.light-mode .muted,body.light-mode small,body.light-mode .pagehead p,body.light-mode .cat-card p,body.light-mode .skill-meta small{color:#74665b!important}
body.light-mode .cosmetic-btn,body.light-mode .btn:not(.primary):not(.danger),body.light-mode .skill-row button{background:#fffdfa!important;color:#2b2119!important;border-color:#d7c5b6!important}
body.light-mode .cosmetic-btn.selected{background:#f7e7d8!important;color:#823d18!important;border-color:#a84d20!important}
body.light-mode .btn.primary{background:#a84d20!important;color:#fff4eb!important;border-color:#a84d20!important}
body.light-mode .btn.danger{background:#fff0ec!important;color:#9c3026!important;border-color:#c95b4d!important}
body.light-mode .field{background:#fffdfa!important;color:#2b2119!important;border-color:#d7c5b6!important}
body.light-mode .navbtn{color:#74665b!important}body.light-mode .navbtn.active{background:#f7e7d8!important;color:#8b421b!important}
body.light-mode .notice{background:#fff3e9!important;color:#39251a!important;border-color:#e2c1a7!important}
body.light-mode .status-tag,body.light-mode .pill,body.light-mode .xp-pill{background:#f7e7d8!important;color:#8b421b!important;border-color:#dfb18f!important}
body.light-mode .hero p{color:#5d4638!important}


/* Correctif contraste : options du profil toujours lisibles */
body:not(.light-mode) .modal .checkgrid label.goal-option,
body:not(.light-mode) label.goal-option { background:#211914 !important; color:#f5eee8 !important; border:1px solid #65442f !important; }
body:not(.light-mode) .modal .checkgrid label.goal-option:has(input:checked) { background:#3a2418 !important; color:#ffc08d !important; border-color:#c56a31 !important; }
body:not(.light-mode) label.goal-option input { background-color:#211914 !important; accent-color:#e58a48 !important; }
body.light-mode .modal .checkgrid label.goal-option,
body.light-mode label.goal-option { background:#fffdfa !important; color:#2b2119 !important; border:1px solid #d7c5b6 !important; }
body.light-mode .modal .checkgrid label.goal-option:has(input:checked) { background:#f7e7d8 !important; color:#823d18 !important; border-color:#a84d20 !important; }



/* ===== CSS block séparé ===== */


/* Palette cohérente : charbon, gris ardoise et orange brûlé. Aucun vert. */
:root{color-scheme:dark;--bg:#101114;--panel:#191a1e;--panel2:#222329;--line:#393a42;--text:#f4f2f0;--muted:#b5b1ae;--lime:#e58a48;--lime2:#b85a24}
html,body{background:#101114!important;color:#f4f2f0}
body::before{background:radial-gradient(ellipse at 82% 0%,#71381930 0,transparent 36%),radial-gradient(ellipse at 0% 70%,#26262c55 0,transparent 35%),#101114!important}
.app{background:radial-gradient(ellipse at 84% -18%,#5d2e1730 0,transparent 33%),radial-gradient(ellipse at 0% 58%,#24242b45 0,transparent 30%),#101114!important;color:#f4f2f0}
.sidebar,.card,.cat-card,.skill-row,.badge-card,.mini-stat,.quest-mini,.path-detail,.tree-stage,.rank-hero,.hero,.modal,.global-rank-card,.profile-grid>.card{background:linear-gradient(145deg,#202126,#17181c)!important;border-color:#3a3b43!important;color:#f4f2f0}
.hero,.rank-hero{background:radial-gradient(ellipse at 90% 0%,#67351e55 0,transparent 38%),linear-gradient(120deg,#292329,#19191e 76%)!important;border-color:#70442c!important}
.navbtn.active,.subnav button.active,.rank-step.current,.cat-card:hover,.cat-card.selected{background:#35251e!important;color:#ffb477!important;border-color:#9a5932!important;box-shadow:inset 3px 0 #b85a24}
.logo,.avatar,.btn.primary,.progress span{background:linear-gradient(110deg,#a84d20,#e58a48)!important;color:#fff7f0!important;border-color:#b85a24!important}
.stat-icon,.xp-pill,.pill,.status-tag,.detail-symbol,.command-orb,.skill-row .skill-emoji,.skill-row:before,.rank-step,.rank-step.earned{background:#30231e!important;color:#f2ae79!important;border-color:#70442c!important}
.progress,.global-rank-track{background:#39343a!important}.global-rank-track span{background:linear-gradient(90deg,#a84d20,#f2a15e)!important}
.skill-row,.skill-row:hover{background:linear-gradient(110deg,#242126,#19191d)!important;border-color:#44343a!important}
.skill-row:after{background:linear-gradient(#b85a24,#493124)!important}
.btn:not(.primary):not(.danger),.skill-row button,.modal .btn:not(.primary):not(.danger){background:#282329!important;color:#f3c6a4!important;border:1px solid #70442c!important;opacity:1!important}
.btn:not(.primary):not(.danger):hover,.skill-row button:hover{background:#3b2921!important;color:#fff7f0!important;border-color:#c56a31!important}
.btn.primary{background:#b85a24!important;color:#fff7f0!important}
.field{background:#151519!important;color:#f4f2f0!important;border-color:#5b4031!important}
.field::placeholder{color:#aaa3a0!important}
.notice{background:#2b211e!important;color:#f0d7c4!important;border-color:#75482f!important}
.modal-backdrop{background:#07070ae8!important}.modal,.skill-modal-open .modal-actions{background:#19191e!important;border-color:#70442c!important;color:#f4f2f0!important}
.modal label,.goal-option{color:#e6d9d0!important}.goal-option{background:#211e22!important;border-color:#494047!important}.goal-option input{accent-color:#e58a48!important}
body.setup-required .modal{background:linear-gradient(145deg,#242126,#17171b)!important;color:#f4f2f0!important;border-color:#70442c!important;box-shadow:0 8px 0 #43271b,0 20px 55px #0008!important}
body.light-mode{color-scheme:light;--bg:#f4f3f1;--panel:#fff;--panel2:#f0eeeb;--line:#dedbd7;--text:#252326;--muted:#68646a;background:#f4f3f1!important;color:#252326!important}
body.light-mode::before{background:radial-gradient(ellipse at 82% 0%,#f2d8c4 0,transparent 36%),#f4f3f1!important}
body.light-mode .app{background:radial-gradient(ellipse at 84% -18%,#f2d8c4 0,transparent 33%),#f4f3f1!important;color:#252326!important}
body.light-mode .sidebar,body.light-mode .card,body.light-mode .cat-card,body.light-mode .skill-row,body.light-mode .badge-card,body.light-mode .mini-stat,body.light-mode .quest-mini,body.light-mode .path-detail,body.light-mode .tree-stage,body.light-mode .rank-hero,body.light-mode .hero,body.light-mode .modal,body.light-mode .global-rank-card{background:#fff!important;color:#252326!important;border-color:#dedbd7!important}
body.light-mode .hero p,body.light-mode .rank-hero p,body.light-mode .muted,body.light-mode .modal p,body.light-mode .skill-meta small{color:#68646a!important}
body.light-mode .field{background:#fff!important;color:#252326!important;border-color:#d4c8bf!important}
body.light-mode .btn:not(.primary):not(.danger),body.light-mode .skill-row button{background:#fff!important;color:#5b2e19!important;border-color:#d8b9a5!important}
body.light-mode .btn.primary{background:#a84d20!important;color:#fff!important}
body.light-mode .navbtn.active,body.light-mode .subnav button.active{background:#f8e7db!important;color:#803d1c!important;border-color:#c56a31!important}
body.light-mode .modal-backdrop{background:#171317aa!important}
@media(prefers-reduced-motion:no-preference){.card,.cat-card,.skill-row,.btn{transition:background .18s ease,border-color .18s ease,transform .18s ease,box-shadow .18s ease}.btn.primary:hover{box-shadow:0 7px 20px #b85a2438;transform:translateY(-1px)}}

/* Correctif contraste : options du profil toujours lisibles */
body:not(.light-mode) .modal .checkgrid label.goal-option,
body:not(.light-mode) label.goal-option { background:#211914 !important; color:#f5eee8 !important; border:1px solid #65442f !important; }
body:not(.light-mode) .modal .checkgrid label.goal-option:has(input:checked) { background:#3a2418 !important; color:#ffc08d !important; border-color:#c56a31 !important; }
body:not(.light-mode) label.goal-option input { background-color:#211914 !important; accent-color:#e58a48 !important; }
body.light-mode .modal .checkgrid label.goal-option,
body.light-mode label.goal-option { background:#fffdfa !important; color:#2b2119 !important; border:1px solid #d7c5b6 !important; }
body.light-mode .modal .checkgrid label.goal-option:has(input:checked) { background:#f7e7d8 !important; color:#823d18 !important; border-color:#a84d20 !important; }



/* ===== CSS block séparé ===== */


:root{--bg:#101010;--panel:#191919;--panel2:#222222;--line:#333333;--text:#f3f3f3;--muted:#a3a3a3;--lime:#ff9b42;--lime2:#f27d22;--violet:#c1b4ff;--gold:#f5cc67;--red:#ff8f87;--blue:#91c9ff;--radius:15px}
.app{background:var(--bg)}
.logo{background:var(--lime);box-shadow:none;border-radius:12px}
.shell{max-width:1320px;padding:20px}
.topbar{margin-bottom:18px}
.week-chip{font-size:10px;background:#181818;border-color:#303030}
.sidebar{background:#171717;border-color:#303030;border-radius:16px;padding:9px;box-shadow:none}
.navlabel{padding:12px 10px 5px;color:#888}
.navbtn{border-radius:10px;padding:11px 10px;font-size:12px;color:#b7b7b7}
.navbtn.active{background:#302116;color:#ffad66;box-shadow:inset 3px 0 #ff9b42}
.navbtn .ico{font-size:15px}
.navbtn.profile-nav{margin-top:9px;padding:13px 10px;background:#2a2018;border:1px solid #67401f;color:#ffd0a4;font-weight:800;min-height:46px}
.navbtn.profile-nav .profile-arrow{margin-left:auto;font-size:14px;color:#ff9b42}
.navbtn.profile-nav.active{background:#ff9b42;color:#17110b;border-color:#ff9b42;box-shadow:none}
.navbtn.profile-nav.active .profile-arrow{color:#17110b}
.side-note{display:none}
.card{background:#191919;border-color:#303030;box-shadow:none;border-radius:15px;padding:16px}
.hero,.rank-hero{background:#1d1d1d;border-color:#363636;border-radius:17px}
.hero:after{display:none}
.hero p{color:#c1c1c1}
.stat-icon{background:#2a2018;color:#ffad66;border-radius:9px}
.progress{background:#333}
.progress span{background:#ff9b42}
.xp-pill,.pill{background:#302116;color:#ffb775}
.subnav button.active{background:#302116;color:#ffb775;border-color:#67401f}
.cat-card{background:#191919;border-color:#303030;border-radius:13px}
.cat-card:hover,.cat-card.selected{border-color:#ff9b42;background:#211b16}
.skill-row{background:#191919;border-color:#303030}
.quest{border-color:#2c2c2c}
.check{border-color:#555;background:#222;color:#ffb775}
.check.done{background:#ff9b42;color:#17110b;border-color:#ff9b42}
.profile-chip{border-radius:12px;background:#1a1a1a;border-color:#393939;padding:7px 11px}
.btn{border-radius:10px}
.btn.primary{background:#ff9b42;border-color:#ff9b42;color:#17110b}
.btn:hover{border-color:#ff9b42}
.field{background:#141414;border-color:#383838}
@media(max-width:720px){
 .shell{padding:11px}
 .topbar{gap:8px;margin-bottom:12px}
 .layout{display:flex;flex-direction:column}
 .sidebar{order:2;position:fixed;z-index:100;left:10px;right:10px;bottom:10px;top:auto;margin:0;padding:6px;display:flex;gap:4px;overflow-x:auto;border-radius:14px;background:#171717f5;box-shadow:0 8px 28px #0008;backdrop-filter:blur(12px)}
 .main{order:1;padding-bottom:78px;width:100%}
 .navlabel,.side-note{display:none!important}
 .navbtn{flex:1 0 auto;display:flex;flex-direction:column;justify-content:center;gap:3px;min-width:54px;padding:8px 9px;font-size:9px;line-height:1.15;text-align:center;white-space:nowrap}
 .navbtn .ico{font-size:17px;width:auto}
 .navbtn.profile-nav{margin:0;min-width:70px;min-height:0;padding:7px 10px;flex-direction:column;gap:3px}
 .navbtn.profile-nav .profile-arrow{display:none}
 .profile-chip{padding:5px 7px;gap:5px}
 .profile-chip .avatar{width:29px;height:29px}
 .pagehead{margin-bottom:13px}
 .pagehead h2{font-size:29px}
 .stats{gap:8px}
 .card{padding:13px;border-radius:13px}
}


/* ===== CSS block séparé ===== */


.navbtn .ico{display:inline-grid;place-items:center;flex:none;width:22px;height:22px;font-size:0}
.navbtn .ico svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.skill-quest-head{display:flex;align-items:center;gap:12px;margin:4px 0 10px}.skill-quest-head h3{margin:4px 0;font-size:19px}.skill-quest-logo{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:#2c1b12;color:#f2ae79;border:1px solid #70442c;font-size:24px}.skill-quest-checklist{display:grid;gap:8px}.skill-quest-check{display:flex;align-items:center;gap:11px;border:1px solid #353238;background:#202025;padding:13px;border-radius:13px;cursor:pointer}.skill-quest-check input{position:absolute;opacity:0;width:1px;height:1px}.skill-check-mark{width:25px;height:25px;flex:none;border:1px solid #6b5548;border-radius:8px;display:grid;place-items:center;color:#f2ae79;font-size:16px}.skill-check-copy{display:flex;flex-direction:column;gap:4px;min-width:0}.skill-check-copy strong{font-size:12px}.skill-check-copy small{font-size:10px;color:#aaa2a0}.skill-quest-check.is-done{border-color:#8b4e2b;background:#2a201b}.skill-quest-check.is-done .skill-check-mark{background:#b85a24;color:white;border-color:#b85a24}.skill-quest-check.is-done strong{text-decoration:line-through;opacity:.72}.skill-locked-note{padding:10px;border:1px solid #614a35;border-radius:10px}.timer-presets{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.timer-preset{border:1px solid #4a3a31;background:#211914;color:#f2c4a4;border-radius:10px;padding:8px 11px;font-size:11px}.timer-preset.active{background:#b85a24;color:#fff;border-color:#b85a24}.timer-display{font-variant-numeric:tabular-nums;text-shadow:0 0 24px #b85a241a}.timer-controls .btn:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:720px){.skill-quest-check{padding:11px}.timer-presets{justify-content:center}}


/* ===== CSS block séparé ===== */


.modal{position:relative;padding-top:28px!important}
.modal-close{position:absolute;top:12px;right:12px;width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--line, #343434);border-radius:10px;background:#171717;color:#f5f5f5;font-size:25px;line-height:1;cursor:pointer;z-index:3}
.modal-close:hover{background:#292929;border-color:#ff8a24;color:#ff8a24}
.modal-close:focus-visible{outline:2px solid #ff8a24;outline-offset:2px}
.modal-backdrop{z-index:1000}
@media(max-width:720px){.modal{max-height:calc(100dvh - 36px);overflow-y:auto}.modal-close{position:sticky;float:right;top:0;margin-top:-10px;margin-right:-8px}}

/* Profile settings entry point and responsive action layout */
.profile-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
#profileSettingsCard{scroll-margin-top:24px;transition:box-shadow .2s,border-color .2s;outline:none}

@media(max-width:560px){.profile-head-actions{width:100%;justify-content:stretch}.profile-head-actions .btn{flex:1;min-width:0;white-space:normal}.pagehead{flex-wrap:wrap}}


/* ===== CSS block séparé ===== */


/* Velora design system: warm, restrained, consistent. Keeps existing markup and storage intact. */
:root{
  color-scheme:dark;
  --bg:#242923; --panel:#2d322b; --panel2:#373d34; --line:#50574b;
  --text:#f4efe4; --muted:#c1c3b6; --lime:#a9b99a; --lime2:#c2cba9;
  --violet:#c5b7a3; --gold:#e0bd72; --red:#d98572; --blue:#9fb9b0;
  --radius:14px;
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
html,body{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg)!important;color:var(--text)}
body::before,body::after,.app,.nexus-intro::before,.nexus-intro::after,.intro-grid{background-image:none!important}
body::before,body::after{box-shadow:none!important}
.app{background:var(--bg)!important;color:var(--text)!important}
/* Remove decorative gradients, glows and heavy shadows across all existing screens. */
.sidebar,.card,.cat-card,.skill-row,.badge-card,.mini-stat,.quest-mini,.path-detail,.tree-stage,.rank-hero,.hero,.modal,.global-rank-card,.profile-grid>.card,.path-card,.path-detail,.tree-stage,.progress-command,.quest,.session-row,.history-row,.stat-card{
  background:var(--panel)!important;background-image:none!important;border-color:var(--line)!important;color:var(--text)!important;box-shadow:none!important;
}
.hero,.rank-hero{background:#3b4036!important;border-color:#69725e!important}
.card{border-radius:14px!important}
.stats>.card:first-child,.path-main>.card:first-child,.pagehead+.hero,.pagehead+.rank-hero{border-radius:18px 18px 8px 8px!important;background:#343b31!important}
.stats>.card:not(:first-child){background:#2a2f29!important}
.sidebar{border-radius:12px!important}
.cat-card{border-radius:10px!important}
.skill-row{border-radius:9px!important}
.mini-stat,.quest-mini{border-radius:8px!important;background:var(--panel2)!important}
.modal{border-radius:16px!important;border-color:var(--line)!important}
.navbtn.active,.subnav button.active,.rank-step.current,.cat-card:hover,.cat-card.selected{background:#424b3e!important;color:#e4d8b9!important;border-color:#879477!important;box-shadow:inset 3px 0 #a9b99a!important}
.logo,.avatar{background:#a9b99a!important;color:#262b24!important;border:1px solid #c2cba9!important;box-shadow:none!important}
.btn.primary{background:#b96b4b!important;color:#fff7ec!important;border:1px solid #c98260!important;box-shadow:none!important}
.btn:not(.primary):not(.danger),.skill-row button,.modal .btn:not(.primary):not(.danger){background:#3a4037!important;color:#f4efe4!important;border:1px solid #646c5d!important;box-shadow:none!important}
.btn.danger{box-shadow:none!important}
.field{background:#20251f!important;color:#f4efe4!important;border:1px solid #60695a!important;border-radius:8px!important;box-shadow:none!important}
.field::placeholder{color:#b0b4a8!important}
.notice{background:#3b4036!important;color:#f4efe4!important;border-color:#727c65!important;box-shadow:none!important}
.progress,.global-rank-track{background:#454b41!important;box-shadow:none!important}
.progress span,.global-rank-track span{background:#a9b99a!important;box-shadow:none!important}
.tree-stage{background:#282e27!important}
.tree-edge.open{filter:none!important;stroke:#b8c5a7!important}
.tree-node .node-ring{fill:#30372e!important;stroke:#737d69!important}
.tree-node .node-core{fill:#414a3a!important}
.tree-node text{fill:#f4efe4!important}
.tree-node .node-state{fill:#c1c3b6!important}
.stat-icon,.xp-pill,.pill,.status-tag,.detail-symbol,.command-orb,.skill-row .skill-emoji,.rank-step,.rank-step.earned{background:#42483c!important;color:#e0bd72!important;border-color:#69725e!important;box-shadow:none!important}
.eyebrow,.navlabel,.side-note,.stat-top,.pill{letter-spacing:normal!important;text-transform:none!important}
.eyebrow{font-size:12px!important;font-weight:650!important;color:#c6bda7!important}
h1,h2,h3,h4,p,small,label,button{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
h1,h2,h3{letter-spacing:-.025em!important}
p{line-height:1.5}
.btn{border-radius:9px!important;transition:background-color .16s ease,border-color .16s ease!important}
.btn:hover,.navbtn:hover,.cat-card:hover,.skill-row:hover{transform:none!important;box-shadow:none!important}
/* Allow the interface and reward animations to run; reduced-motion preferences are honored below. */
html{scroll-behavior:smooth}
.nexus-intro .intro-emblem{animation:emblemFlash 1.3s ease-out both!important}
.nexus-intro .intro-loading span{animation:loadingSweep 1.5s ease-in-out infinite!important}
.nexus-intro.leaving{transition:opacity .35s ease!important}
/* Alternate light theme uses the same palette rather than introducing a second identity. */
body.light-mode{color-scheme:light;--bg:#f4efe4;--panel:#fffaf0;--panel2:#eee7d9;--line:#d5cdbd;--text:#292e27;--muted:#666d60;background:#f4efe4!important;color:#292e27!important}
body.light-mode .app{background:#f4efe4!important;color:#292e27!important}
body.light-mode .sidebar,body.light-mode .card,body.light-mode .cat-card,body.light-mode .skill-row,body.light-mode .badge-card,body.light-mode .mini-stat,body.light-mode .quest-mini,body.light-mode .path-detail,body.light-mode .tree-stage,body.light-mode .rank-hero,body.light-mode .hero,body.light-mode .modal,body.light-mode .global-rank-card,body.light-mode .progress-command,body.light-mode .quest{background:var(--panel)!important;color:var(--text)!important;border-color:var(--line)!important;box-shadow:none!important}
body.light-mode .hero,body.light-mode .rank-hero{background:#e9e2d3!important}
body.light-mode .field{background:#fffdf7!important;color:#292e27!important;border-color:#cfc5b3!important}
body.light-mode .btn:not(.primary):not(.danger),body.light-mode .skill-row button{background:#eee7d9!important;color:#292e27!important;border-color:#cfc5b3!important}
body.light-mode .btn.primary{background:#a95537!important;color:#fffaf0!important}
body.light-mode .navbtn.active,body.light-mode .subnav button.active{background:#e2e7d9!important;color:#343e2e!important;border-color:#a9b99a!important}
body.light-mode .hero p,body.light-mode .rank-hero p,body.light-mode .muted,body.light-mode .modal p,body.light-mode .skill-meta small{color:#666d60!important}
body.light-mode .stat-icon,body.light-mode .xp-pill,body.light-mode .pill,body.light-mode .status-tag,body.light-mode .detail-symbol,body.light-mode .command-orb,body.light-mode .skill-row .skill-emoji,body.light-mode .rank-step,body.light-mode .rank-step.earned{background:#e8e2d4!important;color:#81533e!important;border-color:#d2c7b5!important}
@media(max-width:720px){.shell{padding:12px!important}.pagehead{gap:12px}.card{padding:14px!important}.navbtn{font-size:12px!important}}


/* ===== CSS block séparé ===== */


/* Icônes SVG intégrées au HTML : aucune bibliothèque d’icônes distante n’est nécessaire au démarrage. */
i.icon-wrapper{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;line-height:1;}
.nexus-icon,.category-icon,.badge-svg,.skill-icon,.secret-icon{display:inline-block;vertical-align:middle;}
.nexus-icon-fallback{display:block;}


/* ===== CSS block séparé ===== */


/* Aperçus visuels des cosmétiques : le personnage est rendu en pixel art avec chaque objet équipé. */
.shop-grid{grid-template-columns:repeat(auto-fill,minmax(145px,1fr))!important;gap:12px!important}
.shop-item{display:flex;flex-direction:column;align-items:stretch;gap:7px;min-width:0}
.shop-character-preview{height:118px;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:radial-gradient(ellipse at 50% 35%,#b85a241e,transparent 72%),linear-gradient(145deg,var(--panel2),#14100e);}
.shop-character-preview svg{display:block!important;width:79px!important;height:109px!important;max-width:90%;image-rendering:pixelated;shape-rendering:crispEdges;overflow:visible}
.shop-item strong{margin:3px 0 0!important;min-height:2.3em}
.shop-item small{flex:1;min-height:3.6em}
.shop-item .btn{margin-top:auto}
@media(max-width:420px){.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.shop-character-preview{height:108px}.shop-character-preview svg{height:99px!important;width:72px!important}}


/* ===== CSS block séparé ===== */


.modal.skin-cosmetics-modal{width:min(920px,100%);max-height:92vh;padding:clamp(14px,2.5vw,25px)}
.skin-editor-layout{display:grid;gap:20px}.skin-basic-options{display:grid;gap:14px;border-bottom:1px solid var(--line);padding-bottom:16px}
.skin-editor-section-title{font-size:13px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--text)}
.skin-editor-group{min-width:0}.skin-choice-row{display:flex;gap:8px;flex-wrap:wrap}
.skin-cosmetic-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.skin-cosmetic-group{margin-top:14px;padding-top:12px;border-top:1px solid var(--line,#343a34)}.skin-cosmetic-group:first-of-type{margin-top:8px}.skin-cosmetic-subheading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;font-size:13px}.skin-cosmetic-subheading strong{font-weight:850}.skin-cosmetic-empty{grid-column:1/-1;padding:12px;border:1px dashed var(--line,#343a34);border-radius:10px;margin:0}
.skin-cosmetic-filters{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 12px}
.skin-cosmetic-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}
.skin-cosmetic-card{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:5px;padding:8px 5px 9px;background:var(--panel2,#171d17);color:var(--text);border:1px solid var(--line);border-radius:12px;cursor:pointer;text-align:center;transition:border-color .15s,transform .15s,background .15s}
.skin-cosmetic-card:hover{transform:translateY(-2px)}.skin-cosmetic-card.equipped{border:2px solid var(--lime,#a3e635);padding:7px 4px 8px;box-shadow:0 0 0 1px #a3e63522}
.skin-cosmetic-card.locked{border-color:#515151;background:#222;color:#a6a6a6}
.skin-cosmetic-preview{width:100%;height:100px;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:8px;background:linear-gradient(145deg,#242a25,#121713)}
.skin-cosmetic-preview svg{height:90px;width:auto;max-width:100%;image-rendering:pixelated;display:block}
.skin-cosmetic-preview.locked-preview{filter:grayscale(1) brightness(.55);opacity:.78}
.skin-cosmetic-name{width:100%;font-size:11px;font-weight:800;line-height:1.25;overflow-wrap:anywhere;min-height:27px}
.skin-cosmetic-status{display:block;font-size:9px;font-weight:850;letter-spacing:.04em;text-transform:uppercase;line-height:1.3}
.skin-cosmetic-card.locked .skin-cosmetic-status{color:#b0b0b0}.skin-cosmetic-card.owned .skin-cosmetic-status{color:var(--lime,#a3e635)}
@media(max-width:760px){.skin-cosmetic-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.modal.skin-cosmetics-modal{max-height:94vh}}
@media(max-width:390px){.skin-cosmetic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skin-cosmetic-preview{height:95px}}


/* ===== CSS block séparé ===== */


.shop-character-preview,.skin-cosmetic-preview{position:relative!important}
.cosmetic-object-zoom{position:absolute;right:4px;bottom:4px;z-index:3;width:46px;height:46px;display:flex;align-items:center;justify-content:center;border:1px solid #9b8067;border-radius:8px;background:#171411;box-shadow:0 2px 8px #0008;pointer-events:none}
.cosmetic-object-zoom svg{display:block!important;width:40px!important;height:40px!important;max-width:40px!important;image-rendering:pixelated;shape-rendering:crispEdges}
.skin-cosmetic-preview .cosmetic-object-zoom{width:42px;height:42px;right:3px;bottom:3px}
.skin-cosmetic-preview .cosmetic-object-zoom svg{width:36px!important;height:36px!important;max-width:36px!important}
@media(max-width:390px){.cosmetic-object-zoom{width:40px;height:40px}.cosmetic-object-zoom svg{width:35px!important;height:35px!important}}


/* ===== CSS block séparé ===== */


/* Contrôles de personnalisation : boutons visibles, cohérents et bien hiérarchisés. */
#profileAvatar{position:relative!important}
#editSkinBtn.skin-edit-btn{position:absolute!important;top:12px!important;right:12px!important;z-index:8!important;width:38px!important;height:38px!important;display:grid!important;place-items:center!important;padding:0!important;border:1px solid #d18a54!important;border-radius:12px!important;background:linear-gradient(145deg,#493020,#24170f)!important;color:#ffd5b0!important;box-shadow:0 4px 12px #0007,inset 0 1px 0 #ffffff20!important;cursor:pointer!important;transition:transform .16s,border-color .16s,background .16s!important}
#editSkinBtn.skin-edit-btn:hover{transform:translateY(-2px)!important;border-color:#ffbb7d!important;background:linear-gradient(145deg,#62402a,#332014)!important}
#editSkinBtn.skin-edit-btn svg{width:18px!important;height:18px!important;stroke-width:2!important}
#editSkinInline{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;border-radius:11px!important;padding:8px 13px!important;border:1px solid #83502f!important;background:linear-gradient(140deg,#302016,#20150f)!important;color:#ffd0a8!important;font-weight:800!important;box-shadow:inset 0 1px 0 #ffffff12!important}
#editSkinInline:hover{border-color:#d18a54!important;background:linear-gradient(140deg,#432a1a,#26180f)!important}
.skin-cosmetic-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px;margin:0 0 14px;border:1px solid #4d3628;border-radius:15px;background:linear-gradient(145deg,#1a1511,#100d0b);box-shadow:inset 0 1px 0 #ffffff08}
.skin-cosmetic-filters .shop-filter{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:8px 12px;border:1px solid #493629;border-radius:10px;background:linear-gradient(180deg,#292019,#1b1510);color:#cdb8a8;font-size:11px;font-weight:850;letter-spacing:.015em;box-shadow:inset 0 1px 0 #ffffff0a,0 2px 0 #0c0907;cursor:pointer;transition:transform .14s,border-color .14s,background .14s,color .14s}
.skin-cosmetic-filters .shop-filter .skin-filter-icon{width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;flex:none;opacity:.9}
.skin-cosmetic-filters .shop-filter .skin-filter-icon svg{width:15px;height:15px;stroke-width:1.9}
.skin-cosmetic-filters .shop-filter:hover{transform:translateY(-1px);border-color:#98704f;color:#fff0e2;background:linear-gradient(180deg,#3b2a1d,#241910)}
.skin-cosmetic-filters .shop-filter.active{border-color:#f0a66d;background:linear-gradient(140deg,#ad5627,#733417);color:#fff6ee;box-shadow:inset 0 1px 0 #ffffff2c,0 0 0 1px #d97f4022,0 2px 0 #3a1b0c}
.skin-cosmetic-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:11px}
.skin-cosmetic-card{position:relative;overflow:hidden;padding:8px 7px 10px;background:linear-gradient(155deg,#282019,#19130f);border:1px solid #58402e;border-radius:13px;box-shadow:inset 0 1px 0 #ffffff0b,0 3px 0 #0b0806;transition:transform .16s,border-color .16s,filter .16s}
.skin-cosmetic-card:before{content:"";position:absolute;left:12px;right:12px;top:0;height:2px;background:linear-gradient(90deg,transparent,#bd7947,transparent);opacity:.6;pointer-events:none}
.skin-cosmetic-card:hover{transform:translateY(-2px);border-color:#b77b50;background:linear-gradient(155deg,#35251a,#20160f)}
.skin-cosmetic-card.equipped{border:2px solid #b4d47b;padding:7px 6px 9px;box-shadow:0 0 0 1px #b4d47b22,0 0 15px #a3be5420,0 3px 0 #0b0806}
.skin-cosmetic-card.locked{border-color:#393634;background:linear-gradient(155deg,#242322,#161514);color:#8e8a86;box-shadow:inset 0 1px 0 #ffffff05,0 3px 0 #090909}
.skin-cosmetic-card.locked:before{background:linear-gradient(90deg,transparent,#68625c,transparent);opacity:.4}
.skin-cosmetic-preview{height:108px;border:1px solid #44362b;background:radial-gradient(ellipse at 50% 35%,#a86b3920,transparent 70%),linear-gradient(150deg,#26211c,#12100e);}
.skin-cosmetic-preview svg{image-rendering:pixelated;shape-rendering:crispEdges}
.skin-cosmetic-name{font-size:11px;min-height:28px;color:inherit}
.skin-cosmetic-status{min-height:18px;font-size:9px;letter-spacing:.03em}
.skin-cosmetic-card.owned .skin-cosmetic-status{color:#b9db84}
.skin-cosmetic-card.equipped .skin-cosmetic-status{color:#e0f6b0}
.skin-cosmetic-card.locked .skin-cosmetic-status{color:#a19b94}
.skin-cosmetic-collection-note{margin:0 0 10px;padding:9px 11px;border-left:3px solid #ad6538;border-radius:0 8px 8px 0;background:#21170f;color:#cdb8a8;font-size:11px;line-height:1.45}
@media(max-width:760px){.skin-cosmetic-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.skin-cosmetic-filters .shop-filter{min-height:36px;padding:7px 9px}}
@media(max-width:390px){.skin-cosmetic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skin-cosmetic-preview{height:100px}.skin-cosmetic-filters{gap:6px}.skin-cosmetic-filters .shop-filter{flex:1 1 calc(33.333% - 6px)}}


/* ===== CSS block séparé ===== */


#avatarShopFilters{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 13px;padding:8px;border:1px solid #4d3628;border-radius:14px;background:linear-gradient(145deg,#1a1511,#100d0b)}
#avatarShopFilters .shop-filter{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;padding:7px 11px;border:1px solid #493629;border-radius:10px;background:linear-gradient(180deg,#292019,#1b1510);color:#cdb8a8;font-size:11px;font-weight:850;box-shadow:inset 0 1px 0 #ffffff0a,0 2px 0 #0c0907;cursor:pointer}
#avatarShopFilters .shop-filter .skin-filter-icon{width:15px;height:15px;display:inline-flex}
#avatarShopFilters .shop-filter .skin-filter-icon svg{width:15px;height:15px}
#avatarShopFilters .shop-filter:hover{border-color:#98704f;color:#fff0e2}
#avatarShopFilters .shop-filter.active{border-color:#f0a66d;background:linear-gradient(140deg,#ad5627,#733417);color:#fff6ee}


/* ===== CSS block séparé ===== */


/* Toutes les illustrations de personnage partagent une grille source 32x44.
   Les formats 64x88 et 96x132 gardent exactement le même rapport et une échelle régulière. */
.pixel-avatar .pixel-sprite{width:96px!important;height:132px!important;aspect-ratio:8/11!important;flex:0 0 96px!important;image-rendering:pixelated!important}
.pixel-avatar .pixel-sprite svg{display:block!important;width:100%!important;height:100%!important;aspect-ratio:8/11!important;shape-rendering:crispEdges!important;image-rendering:pixelated!important}
.shop-character-preview>svg,.skin-cosmetic-preview>svg{display:block!important;width:64px!important;height:88px!important;max-width:64px!important;max-height:88px!important;aspect-ratio:8/11!important;object-fit:contain!important;shape-rendering:crispEdges!important;image-rendering:pixelated!important}
@media(max-width:600px){.pixel-avatar .pixel-sprite{width:64px!important;height:88px!important;flex:0 0 64px!important}}


/* ===== CSS block séparé ===== */


/* Sur mobile, la navigation n'affiche que les icônes; les libellés restent présents pour l'accessibilité et sur ordinateur. */
@media (max-width: 720px) {
  .sidebar {
    display: flex !important;
    flex-wrap: nowrap !important;
    justify-content: space-between !important;
    gap: 4px !important;
    overflow: hidden !important;
    padding: 5px !important;
    margin-bottom: 12px !important;
  }
  .sidebar .navbtn {
    flex: 1 1 0 !important;
    min-width: 0 !important;
    width: auto !important;
    max-width: none !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0 !important;
    padding: 10px 0 !important;
    margin: 0 !important;
    font-size: 0 !important;
    line-height: 1 !important;
    text-align: center !important;
    white-space: nowrap !important;
  }
  .sidebar .navbtn .ico {
    display: grid !important;
    place-items: center !important;
    width: 22px !important;
    height: 22px !important;
    min-width: 22px !important;
    margin: 0 !important;
    font-size: initial !important;
    line-height: 1 !important;
  }
  .sidebar .navbtn .ico svg {
    display: block !important;
    width: 20px !important;
    height: 20px !important;
    max-width: 100% !important;
  }
  .sidebar .navbtn > span:not(.ico),
  .sidebar .navbtn .profile-arrow {
    display: none !important;
  }
  .sidebar .navbtn.profile-nav {
    min-height: 0 !important;
    height: auto !important;
    border: 1px solid transparent !important;
    background: transparent !important;
    box-shadow: none !important;
    color: var(--text) !important;
  }
  .sidebar .navbtn.profile-nav.active {
    background: #302116 !important;
    border-color: #67401f !important;
    color: #ffad66 !important;
    box-shadow: inset 0 -2px #ff9b42 !important;
  }
}


/* ===== CSS block séparé ===== */


#page-quests .quest-pagehead{align-items:center;margin-bottom:22px}
#page-quests .quest-head-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
#page-quests .quest-board{border:1px solid var(--line);border-radius:22px 22px 12px 22px;background:var(--panel);padding:clamp(15px,2.5vw,25px);min-height:240px}
#page-quests .quest-board-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:15px;margin-bottom:4px;border-bottom:1px solid var(--line)}
#page-quests .quest-board-head h3{margin:0;font-size:19px;letter-spacing:-.035em}
#page-quests .quest-board-head p{margin:5px 0 0;color:var(--muted);font-size:12px}
#page-quests #questList .quest{padding:16px 2px;gap:13px}
#page-quests #questList .quest-info strong{font-size:14px}
#page-quests #questList .quest-info small{font-size:11px}
#page-quests .library-quest{padding:14px 2px;gap:12px}
#page-quests .library-quest .btn{min-width:92px}
#page-quests .library-quest .btn:disabled{opacity:.65;cursor:default}
#page-quests .quest-empty{text-align:center;padding:45px 16px}
#page-quests .quest-empty strong{font-size:16px}
#page-quests .quest-empty p{color:var(--muted);font-size:12px;margin:8px 0 16px}
#page-quests [hidden]{display:none!important}
@media(max-width:650px){#page-quests .quest-pagehead{align-items:flex-start;flex-direction:column}#page-quests .quest-head-actions{width:100%}#page-quests .quest-head-actions .btn{flex:1}#page-quests .quest-board{padding:15px;border-radius:18px 18px 10px 18px}#page-quests .library-quest{align-items:flex-start;flex-wrap:wrap}#page-quests .library-quest .quest-info{flex-basis:calc(100% - 20px)}#page-quests .library-quest .xp-pill{margin-left:39px}#page-quests .library-quest .btn{margin-left:auto}}

/* Masquer le panneau de détails des compétences, devenu inutile dans cette vue. */
#page-tree .path-detail, #page-tree .detail-sticky.path-detail { display:none !important; }
#page-tree .path-layout { grid-template-columns:minmax(0,1fr) !important; }


/* ===== CSS block séparé ===== */


#page-quests .quest-select-check{display:flex;align-items:center;justify-content:center;flex:none;width:25px;height:25px;margin-right:2px}#page-quests .quest-select-check input{width:17px;height:17px;accent-color:var(--lime);cursor:pointer}#page-quests .quest-selectable{gap:10px}#page-quests #deleteSelectedQuests[hidden]{display:none!important}#page-quests #deleteSelectedQuests:disabled{opacity:.5;cursor:not-allowed}@media(max-width:650px){#page-quests .quest-head-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}#page-quests .quest-head-actions .btn{width:100%}}


/* ===== CSS block séparé ===== */

/* Kito : logo de marque illustré et animation faciale superposée au dessin original */
.logo{padding:0!important;overflow:hidden;border-radius:14px!important;background:#fff!important;display:grid;place-items:center}
.logo img{width:100%;height:100%;object-fit:cover;display:block}
.kito-character{position:relative;display:block;width:100%;height:100%;overflow:hidden;isolation:isolate}
.kito-character>.kito-art{position:absolute;inset:0;width:100%;height:100%;display:block}
.kito-mouth-motion{position:absolute;left:62.5%;top:33.9%;width:12.5%;height:4.5%;z-index:2;pointer-events:none;border-radius:50% 50% 48% 48%;background:#3b2527;opacity:0;transform:scaleY(.12);transform-origin:50% 15%;box-shadow:inset 0 -1px 0 #8d4037}
.kito-character.talking .kito-mouth-motion,.kito-character:has(.kito-art.talking) .kito-mouth-motion{opacity:1;animation:kitoMouthMove .19s ease-in-out infinite alternate}
.kito-character.talking .kito-art,.kito-character:has(.kito-art.talking) .kito-art{animation:kitoPortraitTalk .48s ease-in-out infinite alternate}
@keyframes kitoMouthMove{from{transform:scaleY(.18) scaleX(.8)}to{transform:scaleY(1) scaleX(1.08)}}
/* Présentation et configuration : texte sombre systématique sur les panneaux clairs. */
body.setup-required .modal,body.setup-required .modal *{color:#39251a}
body.setup-required .modal .modal-title,body.setup-required .modal h1,body.setup-required .modal h2,body.setup-required .modal h3{color:#39251a!important}
body.setup-required .modal label,body.setup-required .modal .wizard-note,body.setup-required .modal .modal-desc{color:#76543f!important}
body.setup-required .modal .field{color:#39251a!important;background:#fffaf5!important;border-color:#e9c7a6!important}
body.setup-required .modal .field::placeholder{color:#9b806b!important}
body.setup-required .modal .goal-pick{color:#39251a!important;background:#fffaf5!important}
body.setup-required .modal .btn.primary{background:#f28a38!important;color:#321c10!important;border-color:#f28a38!important}
body.setup-required .modal .btn.ghost{color:#76543f!important}
@media(prefers-reduced-motion:reduce){.kito-character.talking .kito-mouth-motion,.kito-character:has(.kito-art.talking) .kito-mouth-motion{animation:none;transform:scaleY(.55);opacity:1}}


/* ===== CSS block séparé ===== */


/* En-tête épuré : VELORA sans icône décorative. */
.topbar .brand{gap:0!important}
/* Kito bouge pendant l'écran de présentation et l'étape d'accueil. */
#nexusIntro .intro-kito{background:transparent!important;border:0!important;box-shadow:none!important;border-radius:0!important;overflow:visible!important;animation:none!important;width:174px;height:214px;display:grid;place-items:center}
#nexusIntro .intro-kito .kito-character{overflow:visible!important}
#nexusIntro .intro-kito .kito-art{background:transparent!important;object-fit:contain!important;animation:none!important;width:100%;height:100%;border-radius:0!important}
#nexusIntro .kito-mouth-motion{left:62.5%;top:33.9%;width:12.5%;height:4.5%}
@keyframes kitoPresentationFloat{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-8px) rotate(1deg)}}
@media(prefers-reduced-motion:reduce){#nexusIntro .intro-kito{animation:none!important}#nexusIntro .intro-kito .kito-art{animation:none!important}}

/* Célébration lors du déblocage d’un badge */
.badge-unlock-overlay{position:fixed;inset:0;z-index:10050;display:grid;place-items:center;padding:20px;background:rgba(5,8,5,.82);backdrop-filter:none;opacity:0;pointer-events:none;transition:opacity .25s ease}
.badge-unlock-overlay.show{opacity:1;pointer-events:auto;animation:badgeOverlayIn .25s ease both}
.badge-unlock-card{display:block!important;visibility:visible!important;position:relative;z-index:2;width:min(420px,100%);padding:30px 24px 24px;text-align:center;border:1px solid #c5f36b88;border-radius:24px;background:linear-gradient(150deg,#26351f,#151b14);box-shadow:0 0 0 1px #c5f36b22,0 20px 90px #0009;transform:none;opacity:1!important;color:#f0f4ec}
.badge-unlock-overlay.show .badge-unlock-card{display:block!important;visibility:visible!important;opacity:1!important;animation:badgeCardPop .55s cubic-bezier(.2,1.5,.4,1) .02s both}
.badge-unlock-kicker{display:flex;align-items:center;justify-content:center;gap:7px;font-size:10px;letter-spacing:.12em;font-weight:900;color:var(--lime)}.badge-kicker-icon{width:14px;height:14px;flex:none}
.badge-unlock-medal{display:grid;place-items:center;width:112px;height:112px;margin:20px auto 14px;border-radius:50%;font-size:58px;background:radial-gradient(circle,#536d36,#26351f 68%);border:2px solid var(--gold);box-shadow:0 0 0 8px #f5cc6717,0 0 42px #f5cc6755;animation:badgeMedalFloat 1.4s ease-in-out infinite alternate}
.badge-unlock-card h2{margin:8px 0;font-size:26px;color:#f5cc67}.badge-unlock-card p{font-size:12px;line-height:1.6;color:#d1dbc9;margin:0 auto 22px;max-width:300px}
.badge-reward{display:block!important;color:#f4c979!important;font-size:9px!important;font-weight:850;letter-spacing:.03em;margin:4px 0 6px}.badge-unlock-reward{display:inline-flex;align-items:center;justify-content:center;margin:0 auto 18px;padding:8px 14px;border:1px solid #8c6938;border-radius:999px;background:#302516;color:#ffd98e;font-size:14px;font-weight:900;letter-spacing:.02em}
.badge-unlock-rays{position:absolute;width:min(80vw,520px);aspect-ratio:1;border-radius:50%;background:repeating-conic-gradient(from 0deg,transparent 0deg 10deg,#f5cc6722 10deg 12deg,transparent 12deg 20deg);animation:badgeRaysSpin 18s linear infinite;mask-image:radial-gradient(circle,transparent 0 20%,#000 70%,transparent 100%)}
@keyframes badgeOverlayIn{from{opacity:0}to{opacity:1}}@keyframes badgeCardPop{0%{transform:translateY(18px) scale(.82)}70%{transform:translateY(-5px) scale(1.04)}100%{transform:none}}@keyframes badgeMedalFloat{from{transform:translateY(0) rotate(-4deg)}to{transform:translateY(-7px) rotate(4deg)}}@keyframes badgeRaysSpin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.badge-unlock-overlay,.badge-unlock-overlay.show,.badge-unlock-overlay.show .badge-unlock-card,.badge-unlock-medal,.badge-unlock-rays{animation:none!important;transition:none!important}.badge-unlock-overlay.show .badge-unlock-card{opacity:1;transform:none}}

/* Économie de cosmétiques */
.coin-economy-panel{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;border:1px solid #69552b;border-radius:15px;padding:13px 15px;margin:12px 0;background:linear-gradient(115deg,#30291b,#1c2118)}
.coin-economy-balance{display:flex;flex-direction:column;gap:5px}.coin-economy-label{font-size:9px;letter-spacing:.15em;color:#c9b987;font-weight:850}.coin-chip{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.coin-chip .coin-svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}.coin-chip strong{font-size:20px}.coin-economy-how{display:grid;gap:4px;font-size:10px;color:#cfdbc7}.coin-economy-how strong{font-size:11px;color:#f3d483;margin-bottom:2px}.shop-actions{display:grid;grid-template-columns:1fr;gap:6px;margin-top:6px}.shop-actions .btn{width:100%;min-height:34px;white-space:normal}.shop-price-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:9px;padding-top:8px;border-top:1px solid var(--line)}.shop-price-label{font-size:9px;color:var(--muted)}.shop-price{font-size:11px;color:#f2d17c;white-space:nowrap}.shop-item.owned .shop-price{color:var(--lime)}.shop-item.shop-locked .shop-character-preview{filter:grayscale(.7);opacity:.85}.ad-reward-btn{display:flex;align-items:center;justify-content:center;gap:6px}.ad-btn-icon{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8}.coin-ad-requirements{display:flex;justify-content:space-between;gap:12px;margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:10px;font-size:11px}.coin-ad-requirements strong{color:#f2d17c}.ad-disclaimer{line-height:1.6;max-width:900px}
@media(max-width:600px){.coin-economy-panel{align-items:flex-start}.coin-economy-how{width:100%;padding-top:9px;border-top:1px solid #564b2b}.shop-actions .btn{font-size:10px;padding:8px 5px}}

/* Correctifs de l’écran de configuration : titres inutiles retirés, objectifs multisélectionnables. */
/* Contraste : le panneau d’inscription reste clair, les textes et champs restent lisibles. */
body.setup-required .modal.onboarding-mode{background:#fffdf9!important;color:#39251a!important;border-color:#f0d2b8!important;box-shadow:0 8px 0 #e9c7a6,0 20px 55px #8e4a2518!important}
body.setup-required .modal.onboarding-mode .modal-actions{background:#fffdf9!important}
body.setup-required .modal.onboarding-mode .eyebrow{color:#d66b27!important}
body.setup-required .modal.onboarding-mode .wizard-fields label{color:#76543f!important}
body.setup-required .modal.onboarding-mode .wizard-note{color:#76543f!important}

.modal.onboarding-mode #modalTitle{display:none!important}
.modal.onboarding-mode #modalDesc:empty{display:none!important}
.modal.onboarding-mode .goal-picks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:3px}
.modal.onboarding-mode .goal-pick{display:flex;align-items:center;gap:9px;margin:0;padding:12px;min-height:48px;border:1px solid #e9c7a6;border-radius:13px;background:#fff7ef;color:#593c2b;font-size:12px;line-height:1.35;cursor:pointer;transition:border-color .15s,background .15s,transform .15s}
.modal.onboarding-mode .goal-pick:has(input:checked){border-color:#f28a38;background:#ffead7;color:#633314;box-shadow:inset 0 0 0 1px #f28a3840}
.modal.onboarding-mode .goal-pick:focus-within{outline:2px solid #d96f28;outline-offset:2px}
.modal.onboarding-mode .goal-pick input{flex:0 0 auto;width:16px;height:16px;margin:0;accent-color:#e8782f}
.modal.onboarding-mode .goal-pick>span{display:flex;align-items:center;gap:7px;min-width:0}
.modal.onboarding-mode .goal-pick .goal-icon{width:18px;height:18px;flex:0 0 18px}
.modal.onboarding-mode .goal-hint{margin-top:10px;font-size:11px;color:#76543f}
.modal.onboarding-mode .wizard-note{font-size:11px;color:#76543f;line-height:1.55}
@media(max-width:520px){.modal.onboarding-mode .goal-picks{grid-template-columns:1fr}.modal.onboarding-mode .goal-pick{min-height:46px}}


/* ===== CSS block séparé ===== */


/* Interface plus mate : retrait des reflets lumineux sur les boutons et onglets */
button,.btn,.navbtn,.timer-preset,.tab,.navbtn.active,.btn.primary {box-shadow:none!important;text-shadow:none!important;filter:none!important;background-image:none!important}
#timerDurationField[hidden]{display:none!important}


/* ===== CSS block séparé ===== */

.week-chip{display:none!important}

/* ===== CSS block séparé ===== */

/* Velora V1 : mode sombre uniquement, le thème clair est désactivé. */
body.light-mode{color-scheme:dark!important;}


/* ===== CSS block séparé ===== */


/* Velora V1: garder Kito statique partout, sans toucher aux animations du reste de l'application */
.kito-svg,
.kito-svg *,
.kito-character,
.kito-character *,
.kito-art,
.kito-mouth-motion,
.intro-kito,
.intro-kito *,
.welcome-mascot,
.welcome-mascot *,
.kito-stage,
.kito-stage *,
.kito-onboard-head,
.kito-onboard-head *,
.hero-mascot,
.hero-mascot * {
  animation: none !important;
  transition: none !important;
}
/* La bouche simulée par-dessus le dessin était la source du rond qui bouge. */
.kito-mouth-motion {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  animation: none !important;
}
/* Éviter que les classes « talking » ou « mood-happy » changent encore la bouche ou la pose. */
.kito-character.talking .kito-art,
.kito-character:has(.kito-art.talking) .kito-art,
.kito-svg.kito-art.talking,
.kito-svg.kito-art.mood-happy:not(.talking),
.kito-svg.talking,
.kito-svg.mood-happy {
  animation: none !important;
  transform: none !important;
}
.kito-svg .kito-mouth-open,
.kito-svg.talking .kito-mouth-open,
.kito-svg.mood-happy .kito-mouth-open {
  opacity: 0 !important;
  animation: none !important;
  transition: none !important;
}
.kito-svg .kito-mouth-closed {
  opacity: 1 !important;
  animation: none !important;
  transition: none !important;
}
.kito-svg .kito-eye,
.kito-svg .kito-tail,
.kito-svg .kito-ear-left,
.kito-svg .kito-ear-right {
  animation: none !important;
  transform: none !important;
  transition: none !important;
}
#nexusIntro .intro-kito,
#nexusIntro .intro-kito .kito-art,
#nexusIntro .kito-character,
#nexusIntro .kito-mouth-motion {
  animation: none !important;
  transform: none !important;
  transition: none !important;
}


/* ===== CSS block séparé ===== */


/* Quête terminée : validation lisible, récompenses flottantes et compteur mis en évidence. */
.quest{position:relative;overflow:visible}
.quest-success-burst{border-radius:12px;background:linear-gradient(90deg,rgba(197,243,107,.12),transparent 88%);animation:questSuccessWash .72s ease both}
.quest-success-burst .check.done{animation:questCheckPop .42s cubic-bezier(.2,1.5,.35,1) both;box-shadow:0 0 0 5px rgba(197,243,107,.1),0 0 18px rgba(197,243,107,.26)}
.quest-reward-burst{position:absolute;right:7px;top:-12px;display:flex;align-items:center;gap:6px;z-index:5;pointer-events:none;animation:questRewardFloat 1.95s cubic-bezier(.2,.75,.25,1) both}
.quest-reward-burst span{display:inline-flex;align-items:center;gap:4px;border:1px solid #536b43;border-radius:999px;padding:5px 8px;background:#192116;color:#eaffcb;font-size:10px;font-weight:900;box-shadow:0 6px 18px #0005;white-space:nowrap}
.quest-reward-burst .quest-reward-coins{color:#f7d983;border-color:#826830;background:#302719}
.reward-mini-icon{width:13px;height:13px;flex:none}
.nexus-value-pop{animation:nexusValuePop .58s cubic-bezier(.2,1.4,.3,1)}
@keyframes questSuccessWash{0%{background-color:rgba(197,243,107,0)}35%{background-color:rgba(197,243,107,.14)}100%{background-color:transparent}}
@keyframes questCheckPop{0%{transform:scale(.65)}55%{transform:scale(1.16)}100%{transform:scale(1)}}
@keyframes questRewardFloat{0%{opacity:0;transform:translateY(12px) scale(.88)}12%{opacity:1;transform:translateY(0) scale(1)}70%{opacity:1;transform:translateY(-15px)}100%{opacity:0;transform:translateY(-27px) scale(.96)}}
@keyframes nexusValuePop{0%{transform:scale(1);filter:none}38%{transform:scale(1.13);filter:brightness(1.45)}100%{transform:scale(1);filter:none}}
/* Badges : progression concrète avant le déblocage. */
.badge-card{display:flex;flex-direction:column;align-items:center;min-height:174px;gap:3px}
.badge-card .badge-status{display:block;margin-bottom:3px}
.badge-progress-track{height:5px;width:100%;margin-top:6px;border-radius:999px;overflow:hidden;background:#303a30}
.badge-progress-track span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#8fb64b,#d2f78b);transition:width .32s ease}
.badge-card.locked .badge-progress-track span{background:linear-gradient(90deg,#657c45,#b4dd73)}
.badge-progress-copy{width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:4px;color:var(--muted);font-size:8px;line-height:1.35;text-align:left}
.badge-progress-copy span:last-child{text-align:right;color:#cfdfa8}
.badge-detail-heading{display:flex;align-items:center;gap:14px;margin:12px 0 18px}
.badge-detail-heading>div:last-child{min-width:0}
.badge-detail-heading strong{display:block;margin-bottom:5px}
.badge-detail-heading p{margin:0}
.badge-detail-progress{padding:12px;border:1px solid var(--line);border-radius:12px;background:#151a14;margin-bottom:12px}
.badge-detail-progress .badge-progress-track{height:7px;margin:8px 0}
.badge-detail-progress .badge-progress-copy{font-size:10px}
/* Résumé de session affiché dans la page pour ne pas empiler les fenêtres modales. */
/* Apparence : aperçu live de l'avatar, sans mouvement du renard Kito. */
.skin-live-preview-panel{display:flex;align-items:center;justify-content:space-between;gap:15px;border:1px solid var(--line);border-radius:15px;padding:12px 14px;margin-bottom:14px;background:linear-gradient(120deg,#1f291b,#151a14)}
.skin-live-preview-copy{min-width:0}
.skin-live-preview-copy p{color:var(--muted);font-size:10px;line-height:1.5;margin:5px 0 0;max-width:270px}
.skin-live-preview-stage{width:78px;height:105px;display:grid;place-items:center;flex:none;border:1px solid #42543a;background:#10150e;border-radius:12px;overflow:hidden}
.skin-live-preview-stage svg{width:62px;height:86px;image-rendering:pixelated;filter:none!important;animation:none!important;transform:none!important}
.kito-character,.kito-character *,.intro-kito,.intro-kito *,.kito-mouth-motion,#nexusIntro .intro-kito,.kito-art,.kito-svg{animation:none!important;transition:none!important}
.kito-mouth-motion{display:none!important}
#nexusIntro .intro-kito img.kito-art{animation:none!important;transform:none!important}
.rank-tier-champion{border-color:#d6b1ff!important;background:radial-gradient(ellipse at 50% 15%,#5b377d 0,#2b1d3c 42%,#15151e 100%)!important;box-shadow:0 0 0 2px #d6b1ff30,0 0 70px #b47aff55,0 24px 100px #000b!important}
.rank-tier-champion .rank-unlock-medal{background:radial-gradient(circle,#d6b1ff 0,#65428b 46%,#2a1c3b 75%)!important;border:3px solid #f2d9ff!important;box-shadow:0 0 0 9px #d6b1ff24,0 0 64px #caa0ffbb!important}
.rank-tier-epic .badge-unlock-kicker{color:#edcaff}
.rank-tier-epic h2{color:#edcaff!important;text-shadow:0 0 18px #c37aff80}
.champion-extra-line{font-size:9px;font-weight:950;letter-spacing:.22em;color:#e8d1ff;margin:-8px 0 18px}
.champion-confetti-layer{z-index:10060}
.rank-tier-level{border-color:#a7d94d!important}
.rank-tier-level .rank-unlock-medal{border-color:#c5f36b!important}
@media(max-width:600px){.skin-live-preview-panel{align-items:center}.skin-live-preview-stage{width:65px;height:90px}.skin-live-preview-stage svg{width:54px;height:76px}.badge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.badge-card{min-height:168px}.quest-reward-burst{right:4px;top:-16px}}
@media(prefers-reduced-motion:reduce){.quest-success-burst,.quest-success-burst .check.done,.quest-reward-burst,.nexus-value-pop,.badge-progress-track span{animation:none!important;transition:none!important}.quest-reward-burst{opacity:1;transform:none}}


/* ===== CSS block séparé ===== */


#lockedCosmeticZoom{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:24px;background:rgba(8,7,7,.97);color:#f8f4ef;overscroll-behavior:contain;isolation:isolate}
#lockedCosmeticZoom[hidden]{display:none!important}
#lockedCosmeticZoom .locked-cosmetic-close{position:absolute;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));display:grid;place-items:center;width:46px;height:46px;border:1px solid #654b3b;border-radius:14px;background:#211913;color:#fff8f0;font-size:29px;line-height:1;cursor:pointer;box-shadow:0 5px 18px #0008;z-index:2}
#lockedCosmeticZoom .locked-cosmetic-close:hover{background:#3a281d;border-color:#cf966c}
#lockedCosmeticZoom .locked-cosmetic-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(18px,4vh,30px);width:100%;max-height:100%;text-align:center}
#lockedCosmeticZoom .locked-cosmetic-art{width:min(78vw,58vh,500px);aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:1px solid #614b39;border-radius:30px;background:radial-gradient(ellipse at 50% 38%,#382b20 0%,#1d1712 62%,#110e0b 100%);box-shadow:0 0 0 1px #ffffff05,inset 0 0 48px #0008,0 18px 60px #0008;padding:clamp(20px,5vw,42px);box-sizing:border-box}
#lockedCosmeticZoom .locked-cosmetic-art svg{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;image-rendering:pixelated;shape-rendering:crispEdges;display:block;filter:drop-shadow(0 12px 12px #0008)}
#lockedCosmeticZoom .locked-cosmetic-name{font-size:clamp(18px,3.4vw,25px);font-weight:900;line-height:1.25;max-width:min(90vw,560px);overflow-wrap:anywhere;margin:0;color:#fff7ee}
#lockedCosmeticZoom .locked-cosmetic-status{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 13px;border:1px solid #655d55;border-radius:999px;background:#211f1d;color:#ded7d0;font-size:11px;font-weight:900;letter-spacing:.11em;text-transform:uppercase}
#lockedCosmeticZoom .locked-cosmetic-status svg{width:15px;height:15px;display:block}
@media(max-width:600px){#lockedCosmeticZoom{padding:18px}#lockedCosmeticZoom .locked-cosmetic-close{width:44px;height:44px;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right))}#lockedCosmeticZoom .locked-cosmetic-art{width:min(82vw,52vh,420px);border-radius:24px;padding:24px}}
@media(prefers-reduced-motion:reduce){#lockedCosmeticZoom *{animation:none!important;transition:none!important}}


/* ===== CSS block séparé ===== */


#shopCosmeticZoom{position:fixed;inset:0;z-index:2147483001;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:20px;background:rgba(8,7,7,.975);color:#f8f4ef;overscroll-behavior:contain;isolation:isolate}
#shopCosmeticZoom[hidden]{display:none!important}
#shopCosmeticZoom .shop-cosmetic-close{position:absolute;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));display:grid;place-items:center;width:46px;height:46px;border:1px solid #654b3b;border-radius:14px;background:#211913;color:#fff8f0;font-size:29px;line-height:1;cursor:pointer;box-shadow:0 5px 18px #0008;z-index:2}
#shopCosmeticZoom .shop-cosmetic-close:hover{background:#3a281d;border-color:#cf966c}
#shopCosmeticZoom .shop-cosmetic-zoom-art{width:min(78vw,70vh,520px);height:min(78vw,70vh,520px);display:flex;align-items:center;justify-content:center;box-sizing:border-box}
#shopCosmeticZoom .shop-cosmetic-zoom-art svg{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;image-rendering:pixelated;shape-rendering:crispEdges;filter:drop-shadow(0 12px 16px #0008)}
.shop-item[data-shop-cosmetic]{cursor:zoom-in}
.shop-item[data-shop-cosmetic]:focus-visible{outline:2px solid #f0a66d;outline-offset:3px}
@media(max-width:600px){#shopCosmeticZoom{padding:16px}#shopCosmeticZoom .shop-cosmetic-close{width:44px;height:44px;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right))}#shopCosmeticZoom .shop-cosmetic-zoom-art{width:min(82vw,62vh,420px);height:min(82vw,62vh,420px)}}
@media(prefers-reduced-motion:reduce){#shopCosmeticZoom *{animation:none!important;transition:none!important}}


/* ===== CSS block séparé ===== */


#profileCharacterZoom{position:fixed;inset:0;z-index:2147483002;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:24px;background:rgba(8,7,7,.975);color:#f8f4ef;overscroll-behavior:contain;isolation:isolate;cursor:zoom-out}
#profileCharacterZoom[hidden]{display:none!important}
#profileCharacterZoom .profile-character-zoom-close{position:absolute;top:max(14px,env(safe-area-inset-top));right:max(14px,env(safe-area-inset-right));display:grid;place-items:center;width:46px;height:46px;border:1px solid #654b3b;border-radius:14px;background:#211913;color:#fff8f0;font-size:29px;line-height:1;cursor:pointer;box-shadow:0 5px 18px #0008;z-index:2}
#profileCharacterZoom .profile-character-zoom-close:hover{background:#3a281d;border-color:#cf966c}
#profileCharacterZoom .profile-character-zoom-art{width:min(64vw,78vh,480px);height:min(84vh,680px);display:flex;align-items:center;justify-content:center;border:1px solid #49372e;border-radius:28px;background:radial-gradient(ellipse at 50% 40%,#382b20 0%,#1d1712 62%,#110e0b 100%);box-shadow:0 0 0 1px #ffffff05,inset 0 0 48px #0008,0 18px 60px #0008;padding:clamp(20px,4vw,40px);box-sizing:border-box;cursor:default}
#profileCharacterZoom .profile-character-zoom-art svg{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;image-rendering:pixelated;shape-rendering:crispEdges;filter:drop-shadow(0 12px 16px #0008)}
.profile-character-zoom-trigger{cursor:zoom-in;outline-offset:4px;touch-action:manipulation}
.profile-character-zoom-trigger:focus-visible{outline:2px solid #c5f36b}
@media(max-width:600px){#profileCharacterZoom{padding:16px}#profileCharacterZoom .profile-character-zoom-close{width:44px;height:44px;top:max(10px,env(safe-area-inset-top));right:max(10px,env(safe-area-inset-right))}#profileCharacterZoom .profile-character-zoom-art{width:min(82vw,75vh,420px);height:min(84vh,620px);border-radius:24px;padding:22px}}
@media(prefers-reduced-motion:reduce){#profileCharacterZoom *{animation:none!important;transition:none!important}}


/* ===== CSS block séparé ===== */


/* La personnalisation est appliquée à la fermeture : pas de boutons Enregistrer/Annuler en bas. */
.modal.skin-cosmetics-modal .modal-actions{display:none!important}


/* ===== CSS block séparé ===== */


/* Boutique minimaliste : la rareté colore seulement le cadre de l'aperçu, jamais toute la carte. */
#avatarShop .shop-item{padding:9px 8px 10px;gap:8px;}
#avatarShop .shop-item strong{min-height:0!important;margin:2px 0 0!important;font-size:12px;line-height:1.25;}
#avatarShop .shop-character-preview.rarity-frame{box-sizing:border-box;border-width:1px;border-style:solid;transition:border-color .18s ease,box-shadow .18s ease;}
#avatarShop .shop-character-preview.rarity-common{border-color:#737b86!important;box-shadow:0 0 0 1px #9299a41c,0 0 11px #9299a432;}
#avatarShop .shop-character-preview.rarity-uncommon{border-color:#4daf89!important;box-shadow:0 0 0 1px #4daf8930,0 0 13px #38c28c4c;}
#avatarShop .shop-character-preview.rarity-rare{border-color:#4d8dff!important;box-shadow:0 0 0 1px #4d8dff38,0 0 14px #347dff58;}
#avatarShop .shop-character-preview.rarity-epic{border-color:#a36bff!important;box-shadow:0 0 0 1px #a36bff42,0 0 14px #8d4bff65;}
#avatarShop .shop-character-preview.rarity-legendary{border-color:#efc34f!important;box-shadow:0 0 0 1px #efc34f58,0 0 14px #f2b82b74;}
#avatarShop .shop-character-preview.rarity-mythic{border-color:#ed343e!important;box-shadow:0 0 0 1px #ffd66d88,0 0 18px #f22d3b9c,inset 0 0 15px #f7c24a24;}
#avatarShop .shop-item.shop-locked .shop-character-preview{filter:none!important;opacity:1!important;}
#avatarShop .shop-actions{gap:5px;margin-top:0;}
#avatarShop .shop-actions .btn{min-height:32px;padding:7px 6px;font-size:10px;}
#avatarShop .shop-item[data-shop-cosmetic="pet_royal_dragon"] .shop-character-preview{background:radial-gradient(ellipse at 50% 38%,#ce262e3d,transparent 68%),linear-gradient(145deg,#2c1718,#141012)!important;}
#avatarShop .shop-item[data-shop-cosmetic="pet_royal_dragon"] .shop-character-preview svg{filter:drop-shadow(0 0 6px #e72d3a60);}
@media(max-width:600px){#avatarShop .shop-item{padding:8px 6px;gap:7px}#avatarShop .shop-actions .btn{font-size:9px}}
@media(prefers-reduced-motion:reduce){#avatarShop .shop-character-preview.rarity-frame{transition:none!important}}


/* ===== CSS block séparé ===== */


/* Price order: shop and locker use price ascending; rarity colour appears only around the item preview. */
#avatarShop .shop-item .shop-character-preview.rarity-frame,
.skin-cosmetic-preview.rarity-frame{box-sizing:border-box!important;border:1px solid var(--rarity-frame,#737b86)!important;filter:none!important;opacity:1!important;transition:border-color .18s ease,box-shadow .18s ease!important;}
.skin-cosmetic-preview.rarity-common,#avatarShop .shop-character-preview.rarity-common{--rarity-frame:#737b86;border-color:#737b86!important;box-shadow:0 0 0 1px #9299a41c,0 0 11px #9299a432!important}
.skin-cosmetic-preview.rarity-uncommon,#avatarShop .shop-character-preview.rarity-uncommon{--rarity-frame:#4daf89;border-color:#4daf89!important;box-shadow:0 0 0 1px #4daf8930,0 0 13px #38c28c4c!important}
.skin-cosmetic-preview.rarity-rare,#avatarShop .shop-character-preview.rarity-rare{--rarity-frame:#4d8dff;border-color:#4d8dff!important;box-shadow:0 0 0 1px #4d8dff38,0 0 14px #347dff58!important}
.skin-cosmetic-preview.rarity-epic,#avatarShop .shop-character-preview.rarity-epic{--rarity-frame:#a36bff;border-color:#a36bff!important;box-shadow:0 0 0 1px #a36bff42,0 0 14px #8d4bff65!important}
.skin-cosmetic-preview.rarity-legendary,#avatarShop .shop-character-preview.rarity-legendary{--rarity-frame:#efc34f;border-color:#efc34f!important;box-shadow:0 0 0 1px #efc34f58,0 0 14px #f2b82b74!important}
.skin-cosmetic-preview.rarity-mythic,#avatarShop .shop-character-preview.rarity-mythic{--rarity-frame:#ed343e;border-color:#ed343e!important;box-shadow:0 0 0 1px #ffd66d88,0 0 18px #f22d3b9c,inset 0 0 15px #f7c24a24!important}
/* Do not grey out the coloured frame: only the character/item art is grey while locked. */
.skin-cosmetic-preview.locked-preview>svg,.skin-cosmetic-preview.locked-preview .cosmetic-object-zoom svg{filter:grayscale(1) brightness(.68)!important;opacity:.82!important}
.skin-cosmetic-preview.locked-preview .cosmetic-object-zoom{border-color:var(--rarity-frame,#737b86)!important;box-shadow:0 0 9px color-mix(in srgb,var(--rarity-frame,#737b86) 45%,transparent)!important}
@media(prefers-reduced-motion:reduce){.skin-cosmetic-preview.rarity-frame,#avatarShop .shop-character-preview.rarity-frame{transition:none!important}}


/* ===== CSS block séparé ===== */


/* Rareté lisible : halo épais autour de l'aperçu dans la boutique ET le casier. */
#avatarShop .shop-character-preview.rarity-frame,
.skin-cosmetic-preview.rarity-frame{
  box-sizing:border-box!important;border-width:3px!important;border-style:solid!important;
  overflow:hidden!important;filter:none!important;opacity:1!important;
  transition:border-color .18s ease,box-shadow .18s ease!important;
}
#avatarShop .shop-item,.skin-cosmetic-card{overflow:visible!important}
.skin-cosmetic-preview.rarity-common,#avatarShop .shop-character-preview.rarity-common{
  --rarity-frame:#c2c9d3!important;border-color:#c2c9d3!important;
  box-shadow:0 0 0 2px #08090b,0 0 0 5px #9ea8b8,0 0 23px 7px #aeb8ca9e,inset 0 0 16px #e2e8f044!important;
}
.skin-cosmetic-preview.rarity-uncommon,#avatarShop .shop-character-preview.rarity-uncommon{
  --rarity-frame:#37efaa!important;border-color:#37efaa!important;
  box-shadow:0 0 0 2px #08090b,0 0 0 5px #10b981,0 0 25px 8px #34d399c4,inset 0 0 18px #34d39955!important;
}
.skin-cosmetic-preview.rarity-rare,#avatarShop .shop-character-preview.rarity-rare{
  --rarity-frame:#4c9bff!important;border-color:#4c9bff!important;
  box-shadow:0 0 0 2px #08090b,0 0 0 5px #2563eb,0 0 26px 8px #3b82f6d6,inset 0 0 18px #60a5fa66!important;
}
.skin-cosmetic-preview.rarity-epic,#avatarShop .shop-character-preview.rarity-epic{
  --rarity-frame:#d28aff!important;border-color:#d28aff!important;
  box-shadow:0 0 0 2px #08090b,0 0 0 5px #9333ea,0 0 28px 9px #a855f7e0,inset 0 0 20px #c084fc70!important;
}
.skin-cosmetic-preview.rarity-legendary,#avatarShop .shop-character-preview.rarity-legendary{
  --rarity-frame:#ffdc48!important;border-color:#ffdc48!important;
  box-shadow:0 0 0 2px #08090b,0 0 0 5px #d97706,0 0 29px 9px #facc15ed,inset 0 0 20px #fde04788!important;
}
.skin-cosmetic-preview.rarity-mythic,#avatarShop .shop-character-preview.rarity-mythic{
  --rarity-frame:#ff3447!important;border-color:#ff3447!important;
  box-shadow:0 0 0 2px #120608,0 0 0 5px #ffd166,0 0 0 8px #e11d48,0 0 34px 11px #ff1f46f0,inset 0 0 24px #f59e0b72!important;
}
/* La rareté reste colorée même si le cosmétique n'est pas débloqué : seule l'illustration est grisée. */
.skin-cosmetic-preview.locked-preview{filter:none!important;opacity:1!important;}
.skin-cosmetic-preview.locked-preview>svg,
.skin-cosmetic-preview.locked-preview .cosmetic-object-zoom svg{filter:grayscale(1) brightness(.68)!important;opacity:.84!important;}
.skin-cosmetic-preview.locked-preview .cosmetic-object-zoom{border-color:var(--rarity-frame,#c2c9d3)!important;box-shadow:0 0 0 2px #0b0b0b,0 0 16px 4px var(--rarity-frame,#c2c9d3)!important;}
.skin-choice-row .skin-choice{flex-direction:column!important;min-width:112px!important;min-height:122px!important;gap:7px!important;}
.skin-choice-row .skin-choice.selected{border-color:#f0a66d!important;box-shadow:0 0 0 2px #f0a66d77,0 0 20px #f0a66d55!important;}
@media(prefers-reduced-motion:reduce){#avatarShop .shop-character-preview.rarity-frame,.skin-cosmetic-preview.rarity-frame{transition:none!important}}


/* ===== CSS block séparé ===== */


#avatarShop .shop-item[data-shop-cosmetic="skin_kito"] .shop-character-preview,
#skinCosmeticPreview-skin_kito{
 background:radial-gradient(ellipse at 50% 35%,#ff4a2d80 0%,#d81e2e49 35%,transparent 72%),linear-gradient(145deg,#321115,#100c12)!important;
 border-color:#ff3447!important;box-shadow:0 0 0 2px #16060b,0 0 0 5px #ffd166,0 0 0 8px #e11d48,0 0 36px 12px #ff263fdd,inset 0 0 24px #f59e0b65!important;
}
#avatarShop .shop-item[data-shop-cosmetic="skin_kito"] .shop-character-preview svg,
#skinCosmeticPreview-skin_kito svg{filter:drop-shadow(0 0 5px #ff5b38b0)!important;}
#avatarShop .shop-item[data-shop-cosmetic="skin_kito"] .shop-character-preview{overflow:visible!important;}
#avatarShop .shop-item[data-shop-cosmetic="skin_kito"] .shop-character-preview svg,
#skinCosmeticPreview-skin_kito>svg{width:64px!important;height:88px!important;max-width:86%!important;max-height:94%!important;image-rendering:pixelated!important;shape-rendering:crispEdges!important;}
#shopCosmeticZoom .shop-cosmetic-zoom-art:has(svg[aria-label*="Kito"]){width:min(58vw,65vh,440px);height:min(78vh,560px);background:radial-gradient(ellipse at 50% 35%,#ff4a2d70 0%,#d81e2e28 40%,transparent 73%);border-radius:28px;box-shadow:0 0 0 2px #ffd166,0 0 0 6px #e11d48,0 0 40px 12px #ff263f70;}
@media(max-width:600px){#avatarShop .shop-item[data-shop-cosmetic="skin_kito"] .shop-character-preview svg,#skinCosmeticPreview-skin_kito>svg{width:60px!important;height:82px!important}}


/* ===== CSS block séparé ===== */


/* Retour au fond bleu nuit demandé, en gardant les accents terracotta et crème. */
:root{--bg:#182332;--panel:#202d3d;--panel2:#29384a;--line:#3b4b60;--text:#f1f0e9;--muted:#b8c4d2;--lime:#9eb6b0;--lime2:#c0d0c6;--blue:#91b8d8;}
html,body,body:not(.light-mode),.app{background-color:#182332!important;color:#f1f0e9!important;}
.sidebar,.card,.cat-card,.skill-row,.badge-card,.mini-stat,.quest-mini,.path-detail,.tree-stage,.rank-hero,.hero,.modal,.global-rank-card,.profile-grid>.card,.path-card,.progress-command,.quest,.session-row,.history-row,.stat-card{background-color:#202d3d!important;border-color:#3b4b60!important;color:#f1f0e9!important;}
.hero,.rank-hero,.stats>.card:first-child,.path-main>.card:first-child,.pagehead+.hero,.pagehead+.rank-hero{background-color:#26374a!important;border-color:#435a70!important;}
.stats>.card:not(:first-child),.mini-stat,.quest-mini{background-color:#1d2a39!important;}
.navbtn.active,.subnav button.active,.rank-step.current,.cat-card:hover,.cat-card.selected{background:#30465b!important;color:#e5e9e5!important;border-color:#7794aa!important;box-shadow:inset 3px 0 #91b8d8!important;}
.logo,.avatar{background:#91b8d8!important;color:#172333!important;border-color:#b7d0e0!important;}
.btn:not(.primary):not(.danger),.skill-row button,.modal .btn:not(.primary):not(.danger){background:#2a3a4d!important;color:#f1f0e9!important;border-color:#4a6077!important;}
.field{background:#182535!important;color:#f1f0e9!important;border-color:#465a70!important;}
.notice{background:#26374a!important;color:#f1f0e9!important;border-color:#4a6077!important;}
.progress,.global-rank-track{background:#344456!important;}
.progress span,.global-rank-track span{background:#91b8d8!important;}
.tree-stage{background:#1b2939!important;}
.tree-node .node-ring{fill:#223449!important;stroke:#68849c!important;}
.tree-node .node-core{fill:#30465b!important;}
.stat-icon,.xp-pill,.pill,.status-tag,.detail-symbol,.command-orb,.skill-row .skill-emoji,.rank-step,.rank-step.earned{background:#304257!important;color:#e4c58b!important;border-color:#4a6077!important;}
body.light-mode{--bg:#f4efe4;--panel:#fffaf0;--panel2:#eee7d9;--line:#d5cdbd;--text:#292e27;--muted:#666d60;background:#f4efe4!important;color:#292e27!important;}


/* ===== CSS block séparé ===== */


/* Keep the interface flat and prevent accidental blue text-selection while preserving editable fields. */
html,body,body *{-webkit-user-select:none!important;user-select:none!important;text-shadow:none!important;}
input,textarea,select,[contenteditable="true"]{-webkit-user-select:text!important;user-select:text!important;}
.skin-info-card{display:none!important;}
.skin-cosmetic-collection-note{display:none!important;}


input,textarea,[contenteditable="true"],[contenteditable="plaintext-only"]{-webkit-user-select:text!important;user-select:text!important;}
button,.btn,.navbtn,.subnav button,.cosmetic-btn,.cat-card,.badge-card,.skill-row,.rank-step,.profile-chip,.mobile-nav button,.bottom-nav button,.navbtn.active,.subnav button.active,.cosmetic-btn.selected,.cat-card:hover,.cat-card.selected,.badge-card:hover,.btn:hover{box-shadow:none!important;filter:none!important;text-shadow:none!important;}
button::before,button::after,.btn::before,.btn::after,.navbtn::before,.navbtn::after,.cosmetic-btn::before,.cosmetic-btn::after{box-shadow:none!important;filter:none!important;}
.btn:hover,.cat-card:hover,.cat-card.selected,.badge-card:hover{transform:none!important;}
#statXp{font-size:26px!important;}
#statSeason{font-size:clamp(15px,1.6vw,22px)!important;letter-spacing:-.035em!important;}
#weekRange,.week-chip{display:none!important;}


/* ===== CSS block séparé ===== */


#avatarShopFilters[hidden],.skin-cosmetic-filters[hidden]{display:none!important}
#avatarShopFilters{margin-top:8px!important}
.filter-toggle{display:inline-flex!important;align-items:center;justify-content:flex-start;gap:8px!important;min-height:38px;padding:8px 12px!important;box-shadow:none!important;filter:none!important;text-shadow:none!important}
.filter-toggle-symbol{font-size:17px;line-height:1}
.filter-toggle-label{font-weight:750}
.filter-toggle-chevron{margin-left:auto;font-size:14px;line-height:1}
.skin-cosmetic-filters{display:flex;flex-wrap:wrap;gap:7px;margin:9px 0 12px}
.skin-owned-section{margin-top:14px;padding-top:12px;border-top:1px solid var(--border,#34343e)}
.skin-owned-section .skin-cosmetic-grid{margin-top:8px}
#modalBody .checkgrid{gap:7px!important;margin:8px 0 4px!important}
#modalBody .goal-option{padding:8px 9px!important;min-height:40px!important;gap:8px!important}


/* ===== CSS block séparé ===== */


.validation-inline{margin:10px 0 0;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:#c62828!important;box-shadow:none!important;font-size:12px;line-height:1.45;font-weight:750}.validation-inline[hidden]{display:none!important}
.modal.skill-modal .modal-actions{display:none!important}.modal.skill-modal{padding-bottom:22px}
.shop-filters,.skin-cosmetic-filters{display:flex;flex-wrap:wrap;gap:7px;overflow:hidden;max-height:360px;opacity:1;transform:translateY(0);margin-top:9px;transition:max-height .22s ease,opacity .18s ease,transform .22s ease,margin .22s ease}
.shop-filters.is-collapsed,.skin-cosmetic-filters.is-collapsed{max-height:0!important;opacity:0;transform:translateY(-5px);margin-top:0!important;pointer-events:none}
.timer-confetti-layer{position:fixed;inset:0;z-index:99999;pointer-events:none;overflow:hidden}
.timer-confetti-piece{position:absolute;top:-14px;width:8px;height:12px;opacity:0;animation:timerConfettiFall 1.55s cubic-bezier(.12,.62,.33,1) forwards;border-radius:2px}
@keyframes timerConfettiFall{0%{transform:translate3d(0,-20px,0) rotate(0);opacity:0}10%{opacity:1}100%{transform:translate3d(var(--drift),105vh,0) rotate(var(--spin));opacity:0}}
@media(prefers-reduced-motion:reduce){.shop-filters,.skin-cosmetic-filters{transition:none}.timer-confetti-piece{animation-duration:.01ms!important}}


/* ===== CSS block séparé ===== */


/* Micro-interactions: quick feedback without glossy shadows or visual clutter. */
.btn,.navbtn,.mobile-nav button,.bottom-nav button,.filter-toggle,.cosmetic-btn,.badge-card,.cat-card,.skill-row,.rank-row,.quest .check{transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s cubic-bezier(.2,.8,.2,1),opacity .18s ease}
.btn:active,.navbtn:active,.mobile-nav button:active,.bottom-nav button:active,.filter-toggle:active,.cosmetic-btn:active,.badge-card:active,.cat-card:active,.skill-row:active,.quest .check:active{transform:scale(.975)!important}
.section.active{animation:appear .26s cubic-bezier(.2,.8,.2,1)}
.global-rank-track span,#globalRankBar,#seasonProgressBar{transition:width .72s cubic-bezier(.2,.8,.2,1)!important}
@keyframes nexusRankBackdropIn{from{opacity:0}to{opacity:1}}
@keyframes nexusRankMedalPop{0%{transform:scale(.35) rotate(-22deg);filter:brightness(1.9)}55%{transform:scale(1.12) rotate(7deg);filter:brightness(1.3)}75%{transform:scale(.96) rotate(-3deg)}100%{transform:scale(1) rotate(0);filter:brightness(1)}}
@keyframes nexusRankHalo{0%{transform:scale(.45);opacity:.1}60%{transform:scale(1.2);opacity:.8}100%{transform:scale(1.5);opacity:0}}
@keyframes nexusRankTextIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes nexusRankCardFlash{0%,100%{border-color:var(--line);box-shadow:0 0 0 0 transparent}36%{border-color:#e9c66f;box-shadow:0 0 0 5px #e9c66f22,0 0 26px #e9c66f18}66%{border-color:#e9c66f;box-shadow:0 0 0 2px #e9c66f16}}
.rank-unlock-card{--rank-accent:#d9a66c;--rank-spot:#63452d;background:radial-gradient(circle at 50% 25%,color-mix(in srgb,var(--rank-spot) 74%,#1a2017),#151b14 62%)!important;border-color:color-mix(in srgb,var(--rank-accent) 65%,transparent)!important;overflow:hidden}
.rank-tier-bronze{--rank-accent:#d69766;--rank-spot:#57341f}.rank-tier-silver{--rank-accent:#cbd5df;--rank-spot:#43505d}.rank-tier-gold{--rank-accent:#f4ce70;--rank-spot:#615022}.rank-tier-diamond{--rank-accent:#8de5ed;--rank-spot:#23545b}.rank-tier-champion{--rank-accent:#d6b1ff;--rank-spot:#4d316e}
.rank-unlock-card .badge-unlock-kicker{color:var(--rank-accent);animation:nexusRankTextIn .38s .12s both}
.rank-unlock-card .rank-unlock-medal{position:relative;width:124px;height:124px;margin:22px auto 12px;border-color:var(--rank-accent);background:radial-gradient(circle at 35% 28%,color-mix(in srgb,var(--rank-accent) 45%,var(--rank-spot)),var(--rank-spot) 68%)!important;box-shadow:0 0 0 8px color-mix(in srgb,var(--rank-accent) 12%,transparent),0 0 48px color-mix(in srgb,var(--rank-accent) 36%,transparent)!important;animation:nexusRankMedalPop .78s cubic-bezier(.16,1.2,.3,1) .04s both}
.rank-unlock-card .rank-unlock-medal:before{content:"";position:absolute;inset:-16px;border-radius:50%;border:2px solid color-mix(in srgb,var(--rank-accent) 55%,transparent);animation:nexusRankHalo .9s ease-out .12s both;pointer-events:none}
.rank-unlock-card .rank-unlock-medal .badge-svg{width:56px;height:56px;filter:drop-shadow(0 3px 5px #0005)}
.rank-unlock-label{font-size:9px;font-weight:900;letter-spacing:.18em;color:var(--rank-accent);animation:nexusRankTextIn .35s .18s both}
.rank-unlock-card h2{color:var(--rank-accent)!important;overflow-wrap:anywhere;animation:nexusRankTextIn .4s .22s both}
.rank-unlock-card p{animation:nexusRankTextIn .4s .29s both}
.rank-unlock-reward{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin:0 auto 20px;padding:9px 13px;border:1px solid color-mix(in srgb,var(--rank-accent) 40%,transparent);border-radius:999px;background:color-mix(in srgb,var(--rank-accent) 10%,transparent);color:var(--rank-accent);font-size:12px;font-weight:900;animation:nexusRankTextIn .4s .34s both}
.rank-unlock-card #closeRankCelebration{border-color:color-mix(in srgb,var(--rank-accent) 45%,transparent);animation:nexusRankTextIn .4s .38s both}
.nexus-rank-up-flash{animation:nexusRankCardFlash 1.15s ease-out both!important}
@media(max-width:480px){.rank-unlock-card{padding:24px 17px 18px}.rank-unlock-card .rank-unlock-medal{width:108px;height:108px}.rank-unlock-card h2{font-size:22px}}
@media(prefers-reduced-motion:reduce){.btn,.navbtn,.mobile-nav button,.bottom-nav button,.filter-toggle,.cosmetic-btn,.badge-card,.cat-card,.skill-row,.rank-row,.quest .check,.section.active{transition:none!important;animation:none!important}.rank-unlock-card,.rank-unlock-card *,.rank-unlock-medal,.rank-unlock-medal:before,.nexus-rank-up-flash{animation:none!important}.global-rank-track span,#globalRankBar,#seasonProgressBar{transition:none!important}}

/* Fluidité V1: limiter les rafraîchissements de contenu caché et accélérer les interactions tactiles. */
button,.btn,.navbtn,.mobile-nav button,.bottom-nav button,.filter-toggle,.cosmetic-btn,.badge-card,.cat-card,.skill-row,.rank-row,.quest .check{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
@media (prefers-reduced-motion:no-preference){.section.active{animation:appear .18s cubic-bezier(.2,.8,.2,1)}}
@media (prefers-reduced-motion:reduce){.section.active{animation:none!important}.timer-confetti-piece{animation:none!important;display:none!important}}

/* Fluidité additionnelle : limiter le coût de peinture des listes et éviter les transitions sur les propriétés coûteuses. */
.quest,.badge-card,.session-row,.history-row{contain:layout paint}
.badge-unlock-overlay{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
@media(prefers-reduced-motion:no-preference){.btn,.navbtn,.mobile-nav button,.bottom-nav button,.filter-toggle,.cosmetic-btn,.badge-card,.cat-card,.skill-row,.rank-row,.quest .check{transition-duration:.14s}}


/* ===== CSS block séparé ===== */


/* Audit de contraste : en mode clair, les surfaces qui restent sombres gardent un texte clair. */
body.light-mode .stats>.card,
body.light-mode .stats>.card :is(h1,h2,h3,h4,h5,p,span,strong,small,label,a,button,div,em,b,i){color:#f7f7f4!important}
/* Le bandeau de la spécialité conserve un fond bleu nuit dans la V1. */
body.light-mode #page-tree .path-main>.card>.card-title h3,
body.light-mode #page-tree .path-main>.card>.card-title p{color:#f7f7f4!important}
/* Le panneau du personnage utilise un fond charbon y compris en thème clair. */
body.light-mode #profileAvatar .pixel-meta,
body.light-mode #profileAvatar .pixel-meta :is(h1,h2,h3,h4,h5,p,span,strong,small,label,a,button,div,em,b,i),
body.light-mode #profileAvatar .skin-edit-btn{color:#fff!important}
/* Le bloc économie utilise un dégradé sombre et doit rester lisible en blanc. */
body.light-mode .coin-economy-panel,
body.light-mode .coin-economy-panel :is(h1,h2,h3,h4,h5,p,span,strong,small,label,a,button,div,em,b,i),
body.light-mode .coin-chip,
body.light-mode .coin-chip :is(span,strong,small,i,em,b){color:#fff!important}
/* Accent assez foncé sur le fond clair pour conserver un contraste correct. */
body.light-mode .pagehead .accent{color:#985025!important}


/* ===== CSS block séparé ===== */


/* Autres surfaces sombres du profil et du casier. */
body.light-mode .shop-item,body.light-mode .shop-item :is(h1,h2,h3,h4,h5,p,span,strong,small,label,a,button,div,em,b,i){color:#fff!important}
body.light-mode .skin-cosmetic-card,body.light-mode .skin-cosmetic-card :is(h1,h2,h3,h4,h5,p,span,strong,small,label,a,button,div,em,b,i){color:#fff!important}
body.light-mode .badge-unlock-card,body.light-mode .badge-unlock-card :is(h1,h2,h3,h4,h5,p,span,strong,small,label,a,button,div,em,b,i),
body.light-mode .rank-unlock-card,body.light-mode .rank-unlock-card :is(h1,h2,h3,h4,h5,p,span,strong,small,label,a,button,div,em,b,i){color:#fff!important}
/* L’icône des cartes de statistiques a son propre fond clair : elle garde un pictogramme foncé. */
body.light-mode .stats>.card .stat-icon{color:#81533e!important}
/* Renforcer la lisibilité des textes secondaires lorsqu’ils sont sur un fond clair. */
body.light-mode .muted,body.light-mode small,body.light-mode .pagehead p,body.light-mode .cat-card p,body.light-mode .skill-meta small,body.light-mode .quest-info small{color:#625449!important}
/* Les options de navigation inactives se trouvent sur le fond clair du panneau latéral. */
body.light-mode .navbtn:not(.active),body.light-mode .mobile-nav button:not(.active),body.light-mode .bottom-nav button:not(.active){color:#625449!important}
/* Le bandeau accentué reste suffisamment foncé pour être lisible en thème clair. */
body.light-mode .pagehead .accent{color:#985025!important}


/* ===== CSS block séparé ===== */


/* Ajustements complémentaires après audit des contrastes du thème clair. */
body.light-mode .navbtn.profile-nav,body.light-mode .navbtn.profile-nav *{color:#fff!important}
body.light-mode .btn.primary{background:#8b421b!important;border-color:#8b421b!important;color:#fff!important}
body.light-mode .pagehead .accent{color:#823d18!important}
body.light-mode .quest-board,body.light-mode .quest-board :is(p,small,.muted){color:#51483f!important}
body.light-mode .rank-hero p,body.light-mode .hero p{color:#51483f!important}
body.light-mode .pill,body.light-mode .xp-pill,body.light-mode .status-tag{color:#70462e!important}
body.light-mode .stats>.card .stat-icon,body.light-mode .stat-icon{color:#70462e!important}


/* ===== CSS block séparé ===== */


/* Correct contrast for specialty quest checklist in both themes. */
body:not(.light-mode) #skillDetail .skill-quest-check,
body:not(.light-mode) .skill-modal .skill-quest-check,
body:not(.light-mode) #modalBody .skill-quest-check {
  background:#202d3d !important;
  color:#f1f0e9 !important;
  border-color:#3b4b60 !important;
}
body:not(.light-mode) #skillDetail .skill-check-copy strong,
body:not(.light-mode) .skill-modal .skill-check-copy strong,
body:not(.light-mode) #modalBody .skill-check-copy strong { color:#f1f0e9 !important; }
body:not(.light-mode) #skillDetail .skill-check-copy small,
body:not(.light-mode) .skill-modal .skill-check-copy small,
body:not(.light-mode) #modalBody .skill-check-copy small { color:#c1cbd6 !important; }
body:not(.light-mode) #skillDetail .skill-quest-check.is-done,
body:not(.light-mode) .skill-modal .skill-quest-check.is-done,
body:not(.light-mode) #modalBody .skill-quest-check.is-done {
  background:#26374a !important; border-color:#7794aa !important;
}
body.light-mode #skillDetail .skill-quest-check,
body.light-mode .skill-modal .skill-quest-check,
body.light-mode #modalBody .skill-quest-check {
  background:#fffaf0 !important; color:#292e27 !important; border-color:#d5cdbd !important;
}
body.light-mode #skillDetail .skill-check-copy strong,
body.light-mode .skill-modal .skill-check-copy strong,
body.light-mode #modalBody .skill-check-copy strong { color:#292e27 !important; }
body.light-mode #skillDetail .skill-check-copy small,
body.light-mode .skill-modal .skill-check-copy small,
body.light-mode #modalBody .skill-check-copy small { color:#625449 !important; }
body.light-mode #skillDetail .skill-quest-check.is-done,
body.light-mode .skill-modal .skill-quest-check.is-done,
body.light-mode #modalBody .skill-quest-check.is-done {
  background:#f1e8d9 !important; border-color:#a95537 !important;
}


/* ===== CSS block séparé ===== */


#nexusBackToTop{
  position:fixed!important;right:max(16px,env(safe-area-inset-right,0px));bottom:22px;
  z-index:9990;width:48px;height:48px;padding:0;margin:0;display:grid;place-items:center;
  border:1px solid color-mix(in srgb,var(--lime) 78%,#fff 22%);border-radius:50%;
  background:rgba(30,25,21,.96);color:var(--lime);cursor:pointer;
  opacity:0;visibility:hidden;pointer-events:none;transform:translateY(8px) scale(.96);
  transition:opacity .18s ease,transform .18s ease,visibility .18s ease;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
}
#nexusBackToTop.is-visible{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0) scale(1)}
#nexusBackToTop:hover{border-color:var(--lime);background:#30241b;transform:translateY(-2px) scale(1.02)}
#nexusBackToTop:active{transform:scale(.94)}
#nexusBackToTop:focus-visible{outline:2px solid var(--lime);outline-offset:4px}
#nexusBackToTop svg{width:21px;height:21px;display:block;stroke:currentColor;fill:none;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
@media(max-width:720px){#nexusBackToTop{right:15px;bottom:calc(82px + env(safe-area-inset-bottom,0px));width:44px;height:44px}}
@media(prefers-reduced-motion:reduce){#nexusBackToTop{transition:none!important;scroll-behavior:auto!important}}
body.reduce-motion #nexusBackToTop{transition:none!important}

.skin-hair-color-group{margin-top:14px;padding-top:12px;border-top:1px solid var(--line,rgba(255,255,255,.10))}.skin-hair-color-options{display:flex;flex-wrap:wrap;gap:11px;align-items:center;padding:8px 2px 4px}.skin-hair-color-swatch{transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease}.skin-hair-color-swatch:hover{transform:scale(1.08)}.skin-hair-color-swatch:focus-visible{outline:2px solid #fff;outline-offset:3px}


/* ===== CSS block séparé ===== */


/* Velora V1 — compact profile, small coin-details sheet and icon-only controls. */
.profile-head-actions #profileSettingsBtn.icon-only{width:42px;height:42px;min-width:42px;padding:0;display:grid;place-items:center;border-radius:12px}
.profile-head-actions #profileSettingsBtn.icon-only .nexus-icon{width:20px;height:20px}
.coin-economy-panel{align-items:center!important;justify-content:space-between!important;flex-wrap:nowrap!important;gap:12px!important}
.coin-economy-balance{flex:1;min-width:0}
.coin-details-btn{flex:none;min-width:82px;min-height:36px;padding:8px 13px}
.coin-details-overlay{position:fixed;inset:0;z-index:12050;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(6,8,6,.82);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.coin-details-overlay.open{display:flex;animation:coinDetailsFade .16s ease-out}
.coin-details-modal{position:relative;width:min(430px,100%);padding:28px 22px 22px;border:1px solid #584936;border-radius:18px;background:#171b16;color:#f0f4ec;box-shadow:0 24px 80px #0009}
.coin-details-modal h3{margin:0 44px 19px 0;font-size:19px}
.coin-details-close{position:absolute;top:11px;right:11px;width:36px;height:36px;border:1px solid #3b4538;border-radius:10px;background:#202720;color:#f2f4ef;font-size:25px;line-height:1;cursor:pointer;display:grid;place-items:center}
.coin-details-list{display:grid;gap:11px}
.coin-details-list>div{display:flex;align-items:center;gap:11px;min-height:36px;font-size:13px;line-height:1.4}
.coin-details-dot{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:9px;background:#30291b;border:1px solid #756039;color:#f3d483;font-size:11px;font-weight:800}
@keyframes coinDetailsFade{from{opacity:0}to{opacity:1}}
@media(max-width:600px){.coin-economy-panel{padding:12px!important}.coin-details-modal{padding:25px 17px 18px}.coin-details-list>div{font-size:12px}}
@media(prefers-reduced-motion:reduce){.coin-details-overlay.open{animation:none}}
