:root{
  --bg:#0B0A14; --bg2:#0F0D1D; --surface:#16142A; --surface2:#1F1C38;
  --line:#2E2856; --line2:#3B3468; --text:#F3F0FF; --muted:#B3ACD6;
  --violet:#A855F7; --violet-soft:#C084FC; --violet-pale:#E9D5FF;
  --orange:#FF8A3D; --gold:#FFB347; --gold-pale:#FFD58A; --blue:#4CC9F0; --grey:#8A87A0;
  --nav-h:72px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:'Outfit',system-ui,sans-serif}
body{min-height:100vh;background:radial-gradient(120% 50% at 50% 0%,#241640 0%,var(--bg) 60%) fixed}
button{font:inherit;color:inherit;cursor:pointer}
input,textarea{font:inherit;color:var(--text)}
.boot{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--muted)}

#app{max-width:480px;margin:0 auto;min-height:100vh;padding:24px 16px calc(var(--nav-h) + 28px + env(safe-area-inset-bottom))}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:18px}
.head small{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:2px;margin-bottom:2px}
.head h1{margin:0;font-size:28px;font-weight:700;text-shadow:0 0 14px rgba(168,85,247,.6)}
.icon-btn{width:44px;height:44px;border-radius:14px;border:1px solid var(--line2);background:transparent;display:flex;align-items:center;justify-content:center;color:var(--muted);flex-shrink:0}
.icon-btn:hover{color:var(--text);border-color:var(--violet)}
.orb{font-family:'Orbitron',sans-serif}
.muted{color:var(--muted)}
.section{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}
.section-title{display:flex;justify-content:space-between;align-items:baseline;margin:0}
.section-title h2{margin:0;font-size:18px;font-weight:600}
.section-title span{font-size:13px;color:var(--muted)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:16px}
.chip{padding:8px 12px;border-radius:999px;border:1px solid var(--orange);color:var(--orange);font-family:'Orbitron',sans-serif;font-size:13px;font-weight:600;text-shadow:0 0 8px var(--orange);box-shadow:0 0 12px rgba(255,138,61,.35);white-space:nowrap}
.btn{min-height:46px;border-radius:14px;padding:0 18px;border:1px solid var(--line2);background:transparent;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.btn-orange{border-color:var(--orange);background:rgba(255,138,61,.14);color:var(--orange);box-shadow:0 0 12px rgba(255,138,61,.35)}
.btn-violet{border-color:var(--violet);background:rgba(168,85,247,.16);color:var(--violet-pale);box-shadow:0 0 12px rgba(168,85,247,.4)}
.btn-grad{border:none;background:linear-gradient(90deg,var(--violet),var(--orange));color:#0B0A14;font-weight:700;box-shadow:0 0 20px rgba(255,138,61,.45)}
.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}
.btn-block{width:100%}
.btn-sm{min-height:38px;padding:0 12px;font-size:14px;border-radius:12px}

/* Niveau */
.level-card{display:flex;flex-direction:column;gap:12px;box-shadow:0 0 24px rgba(168,85,247,.18)}
.level-row{display:flex;justify-content:space-between;align-items:center}
.level-badge{width:54px;height:54px;border-radius:14px;border:2px solid var(--violet);display:flex;align-items:center;justify-content:center;font-family:'Orbitron',sans-serif;font-size:22px;font-weight:800;text-shadow:0 0 12px var(--violet);box-shadow:0 0 16px rgba(168,85,247,.6),inset 0 0 12px rgba(168,85,247,.4)}
.xpbar{position:relative;height:12px;background:#241F45;border-radius:999px;overflow:hidden}
.xpbar>div{position:relative;height:100%;background:linear-gradient(90deg,var(--violet),var(--orange));border-radius:999px;box-shadow:0 0 14px rgba(255,138,61,.7);overflow:hidden;transition:width .8s cubic-bezier(.2,.8,.2,1)}
.xpbar>div::after{content:"";position:absolute;top:0;left:0;width:30%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);animation:shine 2.2s ease-in-out infinite}
.minibar{height:8px}
@keyframes shine{0%{transform:translateX(-120%)}100%{transform:translateX(330%)}}

/* Bandeaux */
.banner{width:100%;min-height:56px;border-radius:16px;border:1px solid var(--orange);background:linear-gradient(90deg,rgba(255,138,61,.18),rgba(168,85,247,.18));display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-weight:600;animation:pulse 2s ease-in-out infinite;text-align:left}
.banner.violet{border-color:var(--violet);animation:pulseV 2s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 12px rgba(255,138,61,.45)}50%{box-shadow:0 0 26px rgba(255,138,61,.85)}}
@keyframes pulseV{0%,100%{box-shadow:0 0 12px rgba(168,85,247,.45)}50%{box-shadow:0 0 26px rgba(168,85,247,.85)}}

/* Intention */
.intention{border:1px dashed var(--line2);border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.intention label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px}
.intention input{background:transparent;border:none;outline:none;font-size:15px;padding:0}

/* Habitudes */
.habit{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 14px;display:flex;align-items:center;gap:12px}
.habit .check{width:42px;height:42px;border-radius:12px;border:2px solid var(--line2);flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#0B0A14}
.habit.done .check{background:var(--violet);border-color:var(--violet);box-shadow:0 0 14px rgba(168,85,247,.7)}
.habit .txt{flex:1;display:flex;flex-direction:column;min-width:0}
.habit .txt b{font-size:16px;font-weight:500}
.habit .txt span{font-size:13px;color:var(--muted)}
.habit .xp{font-family:'Orbitron',sans-serif;font-size:12px;font-weight:600;color:var(--orange);text-shadow:0 0 8px var(--orange)}
.habit .actions{display:flex;gap:6px;align-items:center}
.habit.running{border-color:var(--orange);box-shadow:0 0 14px rgba(255,138,61,.35)}
.timer-live{font-family:'Orbitron',sans-serif;color:var(--orange)}

/* Navigation */
nav.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;background:rgba(15,13,29,.96);border-top:1px solid #241F45;padding:8px 6px calc(10px + env(safe-area-inset-bottom));backdrop-filter:blur(8px)}
nav.tabs .in{max-width:480px;margin:0 auto;display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}
nav.tabs button{min-height:48px;border:none;background:none;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--muted);font-size:11px;position:relative}
nav.tabs button.on{color:var(--violet);font-weight:600;text-shadow:0 0 8px var(--violet)}
nav.tabs .dot{position:absolute;top:2px;right:calc(50% - 18px);min-width:16px;height:16px;border-radius:999px;background:var(--orange);color:#0B0A14;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 4px;box-shadow:0 0 8px var(--orange);text-shadow:none}

/* Cartes */
.tcard{--w:110px;--rx:0deg;--ry:0deg;--mx:50%;--my:50%;position:relative;width:var(--w);aspect-ratio:5/7;border-radius:calc(var(--w)*.08);padding:2px;flex-shrink:0;transform:perspective(700px) rotateX(var(--rx)) rotateY(var(--ry));transition:transform .15s ease-out}
.tcard .inner{position:relative;width:100%;height:100%;border-radius:calc(var(--w)*.07);overflow:hidden;background:#120E20;display:flex;flex-direction:column}
.tcard .art{position:relative;flex:1;overflow:hidden;background:linear-gradient(170deg,#2A2648,#1A1730)}
.tcard .art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.tcard .art .miss{position:absolute;inset:0;display:none;align-items:center;justify-content:center;text-align:center;padding:6px;font-size:10px;color:var(--muted);word-break:break-all}
.tcard .art img.broken{display:none}
.tcard .art img.broken+.miss{display:flex}
.tcard .info{padding:calc(var(--w)*.05) calc(var(--w)*.06);background:linear-gradient(0deg,#1A1028,#120E20);display:flex;flex-direction:column;gap:1px}
.tcard .name{font-size:calc(var(--w)*.085);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcard .meta{display:flex;justify-content:space-between;gap:4px;font-size:calc(var(--w)*.058);color:var(--muted)}
.tcard .meta span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcard .meta b{letter-spacing:.5px;white-space:nowrap}
.tcard .count{position:absolute;top:6px;right:6px;z-index:3;padding:2px 7px;border-radius:999px;background:var(--orange);color:#0B0A14;font-family:'Orbitron',sans-serif;font-size:11px;font-weight:800;box-shadow:0 0 8px var(--orange)}
.tcard .newb{position:absolute;top:6px;left:6px;z-index:3;padding:2px 7px;border-radius:999px;background:var(--violet);color:#fff;font-size:10px;font-weight:700;letter-spacing:1px;box-shadow:0 0 8px var(--violet)}

.r-commune{background:var(--grey)}
.r-commune .meta b{color:#C9C6D9}
.r-rare{background:var(--blue);box-shadow:0 0 14px rgba(76,201,240,.5)}
.r-rare .meta b{color:var(--blue)}
.r-rare .art::after{content:"";position:absolute;top:-20%;left:0;width:40%;height:140%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:sweep 3.2s ease-in-out infinite;z-index:2}
.r-epique{background:linear-gradient(135deg,#A855F7,#6D28D9,#C084FC,#A855F7);background-size:300% 300%;animation:holo 5s linear infinite;box-shadow:0 0 20px rgba(168,85,247,.6)}
.r-epique .meta b{color:#D8B4FE}
.r-epique .name{color:var(--violet-pale);text-shadow:0 0 8px rgba(168,85,247,.8)}
.r-epique .art::after{content:"";position:absolute;inset:0;z-index:2;background:radial-gradient(circle at var(--mx) var(--my),rgba(216,180,254,.45),transparent 55%),linear-gradient(115deg,transparent 30%,rgba(168,85,247,.25) 50%,transparent 70%);mix-blend-mode:screen}
.r-legendaire{background:linear-gradient(135deg,#FFB347,#FF8A3D,#A855F7,#FFD58A,#FFB347);background-size:300% 300%;animation:holo 4s linear infinite,glowGold 2s ease-in-out infinite}
.r-legendaire .meta b{color:var(--gold)}
.r-legendaire .name{background:linear-gradient(90deg,#FFD58A,#FFB347,#FFF1C9,#FFB347);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:holo 2.5s linear infinite;filter:drop-shadow(0 0 6px rgba(255,179,71,.7))}
.r-legendaire .art::after{content:"";position:absolute;inset:0;z-index:2;background:radial-gradient(circle at var(--mx) var(--my),rgba(255,255,255,.4),transparent 50%),linear-gradient(115deg,rgba(255,0,128,.2),rgba(255,200,0,.2),rgba(0,255,200,.2),rgba(120,80,255,.2),rgba(255,0,128,.2));background-size:100% 100%,300% 300%;mix-blend-mode:screen;animation:holo 3s linear infinite}
.tcard.locked{background:#3B3468;box-shadow:none;animation:none}
.tcard.locked .art img{filter:grayscale(1) brightness(.55) contrast(1.05)}
.tcard.locked .art::after{display:none}
.tcard.locked .name{color:#8E89AE;background:none;-webkit-background-clip:initial;background-clip:initial;filter:none;animation:none;text-shadow:none}
.tcard.locked .meta b{color:#7C7799}
@keyframes sweep{0%{transform:translateX(-150%) rotate(20deg)}100%{transform:translateX(320%) rotate(20deg)}}
@keyframes holo{0%{background-position:0% 50%}100%{background-position:200% 50%}}
@keyframes glowGold{0%,100%{box-shadow:0 0 20px rgba(255,179,71,.55)}50%{box-shadow:0 0 40px rgba(255,179,71,.95)}}

/* Album */
.search{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:0 12px;min-height:46px}
.search input{flex:1;background:transparent;border:none;outline:none;font-size:15px;min-width:0}
.pills{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.pills::-webkit-scrollbar{display:none}
.pill{min-height:38px;padding:0 14px;border-radius:999px;border:1px solid var(--line2);background:transparent;color:var(--muted);white-space:nowrap;font-size:14px}
.pill.on{border-color:var(--orange);background:rgba(255,138,61,.15);color:var(--orange);font-weight:600;box-shadow:0 0 10px rgba(255,138,61,.35)}
.grid-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.grid-cards .tcard{--w:100%;width:100%}
.grid-cards .tcard .name{font-size:12px}
.grid-cards .tcard .meta{font-size:9px}
.grid-cards button.cardbtn{padding:0;border:none;background:none;display:block;width:100%}
.empty{padding:20px;text-align:center;color:var(--muted);border:1px dashed var(--line2);border-radius:16px}

/* Liste boutique */
.row{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px}
.row .thumb{width:44px;aspect-ratio:5/7;border-radius:6px;overflow:hidden;flex-shrink:0;background:#2A2648;position:relative}
.row .thumb img{width:100%;height:100%;object-fit:cover;display:block}
.row .thumb.gray img{filter:grayscale(1) brightness(.6)}
.row .txt{flex:1;min-width:0;display:flex;flex-direction:column}
.row .txt b{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .txt span{font-size:12px;color:var(--muted)}
.frag{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;border:1px solid var(--violet);font-family:'Orbitron',sans-serif;font-size:13px;font-weight:600;color:var(--violet-pale);box-shadow:0 0 12px rgba(168,85,247,.4)}
.rc-commune{color:#C9C6D9}.rc-rare{color:var(--blue)}.rc-epique{color:#D8B4FE}.rc-legendaire{color:var(--gold)}

/* Progression */
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.week div{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.week i{width:100%;max-width:38px;aspect-ratio:1;border-radius:10px;background:#241F45;display:block}
.week .today span{color:var(--text);font-weight:700}
.week .today i{outline:2px solid var(--orange);outline-offset:1px}
.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:6px}
.stat span{font-size:13px;color:var(--muted)}
.stat b{font-family:'Orbitron',sans-serif;font-size:22px;color:var(--violet-pale);text-shadow:0 0 10px var(--violet)}
.cat{display:flex;flex-direction:column;gap:6px}
.cat .l{display:flex;justify-content:space-between;font-size:14px}

/* Packs */
.pack-row{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px 14px}
.pack-ico{width:46px;height:58px;border-radius:10px;flex-shrink:0;background:linear-gradient(160deg,var(--violet),#3B1D6E 55%,var(--orange));box-shadow:0 0 14px rgba(168,85,247,.55);display:flex;align-items:center;justify-content:center;font-family:'Orbitron',sans-serif;font-weight:800;font-size:14px;color:#fff;text-shadow:0 0 6px #000}
.pack-row .txt{flex:1;display:flex;flex-direction:column}
.pack-row .txt b{font-size:15px}
.pack-row .txt span{font-size:13px;color:var(--muted)}

/* Réglages */
.setting{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.setting:last-child{border-bottom:none}
.setting label{display:flex;flex-direction:column;font-size:15px}
.setting label span{font-size:12px;color:var(--muted)}
.stepper{display:flex;align-items:center;gap:6px}
.stepper button{width:40px;height:40px;border-radius:12px;border:1px solid var(--line2);background:transparent;font-size:18px}
.stepper b{min-width:32px;text-align:center;font-family:'Orbitron',sans-serif}

/* Overlays */
#overlay{position:fixed;inset:0;z-index:50;display:none}
#overlay.show{display:block}
.backdrop{position:absolute;inset:0;background:rgba(5,4,12,.82);backdrop-filter:blur(6px);animation:fadeIn .2s ease}
.sheet{position:absolute;left:0;right:0;bottom:0;max-width:480px;margin:0 auto;background:var(--surface);border:1px solid var(--line);border-bottom:none;border-radius:22px 22px 0 0;padding:20px 18px calc(22px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;animation:up .25s cubic-bezier(.2,.8,.2,1);max-height:90vh;overflow:auto}
.sheet h3{margin:0;font-size:20px}
.sheet .field{display:flex;flex-direction:column;gap:6px}
.sheet .field span{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px}
.sheet input,.sheet textarea{background:var(--bg2);border:1px solid var(--line2);border-radius:12px;min-height:46px;padding:10px 12px;font-size:16px;outline:none}
.sheet textarea{min-height:70px;resize:vertical}
.sheet input:focus,.sheet textarea:focus{border-color:var(--violet)}
.sheet .btns{display:flex;gap:10px}
.sheet .btns .btn{flex:1}
.notes{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.notes button{min-height:44px;border-radius:12px;border:1px solid var(--line2);background:transparent;font-family:'Orbitron',sans-serif}
.notes button.on{border-color:var(--orange);color:var(--orange);background:rgba(255,138,61,.15);box-shadow:0 0 10px rgba(255,138,61,.4)}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}

.stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:24px 16px calc(24px + env(safe-area-inset-bottom));overflow:auto}
.stage .title{font-size:22px;font-weight:700;text-align:center;text-shadow:0 0 14px rgba(168,85,247,.7)}
.stage .sub{color:var(--muted);font-size:14px;text-align:center;margin-top:-14px}
.bigpack{width:180px;height:250px;border-radius:18px;border:none;background:linear-gradient(160deg,#A855F7 0%,#3B1D6E 45%,#14102A 60%,#FF8A3D 100%);box-shadow:0 0 40px rgba(168,85,247,.7),inset 0 0 30px rgba(255,255,255,.08);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff;position:relative;overflow:hidden;animation:float 2.4s ease-in-out infinite}
.bigpack::after{content:"";position:absolute;top:-20%;left:0;width:45%;height:140%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:sweep 2.6s ease-in-out infinite}
.bigpack b{font-family:'Orbitron',sans-serif;font-size:26px;text-shadow:0 0 12px #fff}
.bigpack span{font-size:13px;letter-spacing:2px;text-transform:uppercase;opacity:.9}
.bigpack.shake{animation:shake .9s ease-in-out}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes shake{0%,100%{transform:none}15%{transform:rotate(-4deg) scale(1.02)}30%{transform:rotate(4deg) scale(1.04)}45%{transform:rotate(-5deg) scale(1.06)}60%{transform:rotate(5deg) scale(1.08)}75%{transform:rotate(-3deg) scale(1.1)}90%{transform:scale(1.2);opacity:.6}}
.flash{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,#fff,rgba(255,179,71,.6) 30%,transparent 70%);animation:flash .7s ease-out forwards;pointer-events:none}
@keyframes flash{from{opacity:1}to{opacity:0}}
.reveal{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;max-width:440px}
.flip{--w:118px;width:var(--w);aspect-ratio:5/7;perspective:900px;border:none;background:none;padding:0;animation:dealIn .45s cubic-bezier(.2,.8,.2,1) both}
.flip .fl{position:relative;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}
.flip.open .fl{transform:rotateY(180deg)}
.flip .face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flip .front{transform:rotateY(180deg)}
.flip .front .tcard{--w:100%;width:100%}
.flip .front .tcard .name{font-size:13px}
.flip .front .tcard .meta{font-size:9px}
.flip .back{border-radius:10px;background:linear-gradient(160deg,#2A1450,#0F0D1D);border:2px solid var(--c);box-shadow:0 0 18px var(--c);display:flex;align-items:center;justify-content:center;animation:backGlow 1.4s ease-in-out infinite}
.flip .back svg{color:var(--c);filter:drop-shadow(0 0 6px var(--c))}
@keyframes backGlow{0%,100%{box-shadow:0 0 12px var(--c)}50%{box-shadow:0 0 30px var(--c)}}
@keyframes dealIn{from{transform:translateY(40px) scale(.8);opacity:0}to{transform:none;opacity:1}}

.zoom{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:20px;touch-action:none}
.zoom .tcard{--w:min(72vw,300px)}
.zoom .tcard .name{font-size:22px}
.zoom .tcard .meta{font-size:13px}
.zoom .hint{color:var(--muted);font-size:13px;text-align:center}

.levelup{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;text-align:center}
.levelup .lv{font-family:'Orbitron',sans-serif;font-size:72px;font-weight:800;background:linear-gradient(90deg,var(--violet),var(--orange));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 18px rgba(255,138,61,.7));animation:pop .6s cubic-bezier(.2,1.4,.4,1)}
.levelup .lbl{font-size:14px;letter-spacing:4px;text-transform:uppercase;color:var(--violet-pale);text-shadow:0 0 10px var(--violet)}
@keyframes pop{from{transform:scale(.3);opacity:0}to{transform:none;opacity:1}}

.xpfloat{position:fixed;left:50%;top:22%;z-index:60;transform:translateX(-50%);font-family:'Orbitron',sans-serif;font-size:26px;font-weight:800;color:var(--orange);text-shadow:0 0 14px var(--orange),0 0 30px rgba(255,138,61,.6);pointer-events:none;animation:xpUp 1.4s ease-out forwards}
@keyframes xpUp{0%{opacity:0;transform:translate(-50%,10px) scale(.8)}20%{opacity:1;transform:translate(-50%,0) scale(1.1)}100%{opacity:0;transform:translate(-50%,-50px) scale(1)}}

#toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + 24px);transform:translateX(-50%);z-index:70;pointer-events:none}
#toast div{background:var(--surface2);border:1px solid var(--violet);color:var(--text);padding:10px 16px;border-radius:14px;box-shadow:0 0 18px rgba(168,85,247,.45);font-size:14px;animation:up .25s ease;max-width:86vw;text-align:center}

.login{min-height:80vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;text-align:center}
.login h1{font-family:'Orbitron',sans-serif;font-size:34px;margin:0;background:linear-gradient(90deg,var(--violet),var(--orange));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 14px rgba(168,85,247,.6))}
.testbar{font-size:12px;color:var(--gold);border:1px dashed rgba(255,179,71,.5);border-radius:12px;padding:8px 12px;margin-bottom:16px;text-align:center}
.warn{font-size:13px;color:var(--gold);border:1px solid rgba(255,179,71,.4);border-radius:12px;padding:10px 12px;background:rgba(255,179,71,.06)}
