@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-display:swap;font-weight:200 800;src:url(fonts/plus-jakarta-sans-latin-ext-wght-normal.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-display:swap;font-weight:200 800;src:url(fonts/plus-jakarta-sans-latin-wght-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* ===== Design tokens ===== */
:root{--font:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--display:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
--ok:#4fbf94;--bad:#ee6b62;--warn:#eab040;--star:#f5b73b;--okt:rgba(79,191,148,.14);--badt:rgba(238,107,98,.14);--warnt:rgba(234,176,64,.16);
--r:22px;--rs:14px;--ease:cubic-bezier(.22,1,.36,1)}
/* PRIMARY tokens per mode = the default theme (Zamrud). Any theme generated by theme.php only overrides bg / surface / text / accent (+ accent-rgb, on-accent). */
[data-theme=dark]{color-scheme:dark;--bg:#0d1211;--surface:#151c1a;--text:#e9f2ee;--accent:#2ecc9a;--accent-rgb:46,204,154;--on-accent:#0f1412;--shadow:0 18px 40px -24px rgba(0,0,0,.85);--link:var(--accent-2)}
[data-theme=light]{color-scheme:light;--bg:#eef5f1;--surface:#fbfefc;--text:#12241d;--accent:#0b8f66;--accent-rgb:11,143,102;--on-accent:#ffffff;--shadow:0 14px 32px -22px rgba(20,40,32,.30);--link:var(--accent-3)}
/* DERIVED tokens: declared on the same element as the primaries (and on .tv for live previews), so a theme needs only a handful of colours */
[data-theme],.tv{--bg-2:color-mix(in srgb,var(--bg) 93%,var(--text));--surface-2:color-mix(in srgb,var(--surface) 90%,var(--text));--mute:color-mix(in srgb,var(--text) 58%,var(--bg));--line:color-mix(in srgb,var(--text) 10%,transparent);
 --accent-2:color-mix(in srgb,var(--accent) 58%,#fff);--accent-3:color-mix(in srgb,var(--accent) 62%,#000);
 --gold:var(--accent);--gold-2:var(--accent-2);--gold-3:var(--accent-3);--on-gold:var(--on-accent);
 --iris:var(--accent-2);--iris-2:color-mix(in srgb,var(--accent) 30%,#fff);--info:var(--accent);--violet:var(--accent-2);
 --gold-t:color-mix(in srgb,var(--accent) 14%,transparent);--glow:color-mix(in srgb,var(--accent) 24%,transparent);--infot:color-mix(in srgb,var(--accent) 10%,transparent);
 --wash-1:color-mix(in srgb,var(--accent) 16%,transparent);--wash-2:color-mix(in srgb,var(--accent) 6%,transparent)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font:400 15px/1.6 var(--font);word-spacing:.05em;color:var(--text);background:var(--bg);background-image:radial-gradient(60rem 40rem at 90% -10%,var(--glow),transparent 60%),radial-gradient(50rem 40rem at -10% 110%,rgba(91,140,255,.10),transparent 60%);background-attachment:fixed;-webkit-font-smoothing:antialiased}
a{color:var(--link)}
h1,h2,h3{margin:0}
h1{font:800 1.75rem/1.15 var(--font);letter-spacing:-.02em;word-spacing:.08em}
h2{font:700 1.1rem/1.3 var(--font);letter-spacing:-.005em;word-spacing:.08em;margin:0 0 12px}
p{margin:.4rem 0}
.muted{color:var(--mute);font-size:.88rem}
.num{font-variant-numeric:tabular-nums}
.ic{flex:none;vertical-align:middle}
@view-transition{navigation:auto}
::view-transition-old(root){animation:.18s ease both vt-out}::view-transition-new(root){animation:.28s var(--ease) both vt-in}
@keyframes vt-out{to{opacity:0}}@keyframes vt-in{from{opacity:0;transform:translateY(6px)}}

/* ===== App shell ===== */
.app{min-height:100vh}
.rail{display:none}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;padding:12px 16px;background:transparent;transition:box-shadow .3s,background .3s}
.topbar.scrolled{background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 1px 0 var(--line),0 10px 24px -18px rgba(0,0,0,.6)}
.topbar .ttl{flex:1;min-width:0;font:700 1.05rem var(--display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brandmark{display:inline-flex;align-items:center;gap:10px;font:800 1.1rem var(--font);letter-spacing:-.02em;color:var(--text);text-decoration:none}
.logo{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;color:var(--on-gold);background:linear-gradient(135deg,var(--gold-2),var(--gold) 55%,var(--gold-3));box-shadow:0 8px 18px -8px rgba(217,174,69,.8)}
.iconbtn{position:relative;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer;transition:transform .2s var(--ease),border-color .2s;text-decoration:none;padding:0}
.iconbtn:hover{transform:translateY(-2px);border-color:var(--gold)}
.iconbtn .dot{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--bad);color:#fff;font:700 .68rem/18px var(--font);text-align:center;box-shadow:0 0 0 3px var(--bg)}
.iconbtn.ring-bell:has(.dot){animation:bell 2.8s 1s ease-in-out 2}
@keyframes bell{0%,100%{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%,40%{transform:rotate(-14deg)}50%{transform:rotate(0)}}
[data-theme=dark] .t-sun,[data-theme=light] .t-moon{display:none}
.seg{display:inline-flex;padding:3px;border-radius:12px;border:1px solid var(--line);background:var(--surface)}
.seg a{padding:5px 10px;border-radius:9px;font-size:.75rem;font-weight:600;color:var(--mute);text-decoration:none;transition:.2s}
.seg a.on{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold)}
.page{max-width:1120px;margin:0 auto;padding:6px 16px 130px}
.dock{position:fixed;left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));z-index:40;display:flex;padding:6px;border-radius:24px;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 84%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 20px 40px -14px rgba(0,0,0,.55)}
.dock a{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 2px;border-radius:18px;font-size:.66rem;font-weight:600;color:var(--mute);text-decoration:none;transition:color .3s}
.dock a.on{color:var(--on-gold)}
.dock .pill{position:absolute;z-index:0;top:6px;bottom:6px;left:0;width:var(--iw,0);transform:translateX(var(--ix,0));border-radius:18px;background:linear-gradient(135deg,var(--gold-2),var(--gold) 60%,var(--gold-3));box-shadow:0 8px 18px -8px rgba(217,174,69,.9);transition:transform .5s var(--ease),width .5s var(--ease)}
@media(min-width:960px){
 /* ===== Sidebar: clean + collapsible, CLOSED by default until the person opens it (state is applied in <head>, before
    paint, from html.rail-open - so there is no flash/jump on refresh: the correct width is there from frame one). ===== */
 :root{--rail-w:74px;--rail-w-open:250px}
 .app{display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr);transition:grid-template-columns .28s var(--ease)}
 html.rail-open .app{grid-template-columns:var(--rail-w-open) minmax(0,1fr)}
 .rail{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:2px;padding:18px 12px;border-right:1px solid var(--line);background:color-mix(in srgb,var(--bg-2) 80%,transparent);overflow-y:auto;overflow-x:hidden}
 .rail .brandmark{padding:6px 6px 20px;justify-content:center}
 .rail .brandmark span{display:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 html.rail-open .rail .brandmark{justify-content:flex-start;padding:4px 8px 20px}
 html.rail-open .rail .brandmark span{display:inline}
 .rail a.nav{display:flex;align-items:center;gap:12px;justify-content:center;padding:12px;border-radius:13px;color:var(--mute);text-decoration:none;font-weight:600;font-size:.9rem;transition:background .2s,color .2s;position:relative}
 html.rail-open .rail a.nav{justify-content:flex-start;padding:11px 12px}
 .rail a.nav span{display:none;white-space:nowrap}
 html.rail-open .rail a.nav span{display:inline}
 .rail a.nav:hover{background:var(--surface);color:var(--text)}
 .rail a.nav.on{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold);box-shadow:0 10px 20px -10px rgba(217,174,69,.9)}
 .rail .cnt{position:absolute;top:6px;right:6px;background:var(--bad);color:#fff;border-radius:99px;min-width:16px;height:16px;line-height:16px;padding:0 4px;font-size:.64rem;text-align:center}
 html.rail-open .rail .cnt{position:static;margin-left:auto;height:auto;padding:0 7px;line-height:18px}
 .rail .sp{flex:1}
 .rail .me{display:flex;align-items:center;gap:10px;justify-content:center;padding:8px;border-radius:14px;background:var(--surface);border:1px solid var(--line);margin-top:10px}
 .rail .me div{display:none}
 html.rail-open .rail .me{justify-content:flex-start;padding:12px}
 html.rail-open .rail .me div{display:block}
 .rail .me b{display:block;font-size:.85rem}
 .rail .startcta{padding:14px 8px}
 .rail .startcta span{display:none}
 html.rail-open .rail .startcta{padding:14px}
 html.rail-open .rail .startcta span{display:inline}

 /* the toggle handle: fixed to the viewport (never clipped by the rail's own overflow-y:auto scroller) */
 .railhandle{position:fixed;top:26px;left:calc(var(--rail-w) - 13px);z-index:50;width:26px;height:26px;border-radius:50%;padding:0;display:grid;place-items:center;
  background:var(--surface);border:1px solid var(--line);color:var(--mute);cursor:pointer;box-shadow:0 4px 12px -4px rgba(0,0,0,.35);transition:left .28s var(--ease),border-color .2s,color .2s,transform .2s var(--ease),box-shadow .2s}
 html.rail-open .railhandle{left:calc(var(--rail-w-open) - 13px)}
 .railhandle .ic{width:13px;height:13px;transition:transform .3s var(--ease)}
 html.rail-open .railhandle .ic{transform:rotate(180deg)}
 .railhandle:hover{color:var(--on-gold);border-color:transparent;background:linear-gradient(135deg,var(--gold-2),var(--gold));transform:scale(1.1);box-shadow:0 6px 16px -4px rgba(217,174,69,.7)}
 .railhandle:active{transform:scale(.92)}

 /* admin-only search box inside the rail */
 .rail-search{position:relative;display:flex;align-items:center;justify-content:center;margin:0 0 12px}
 .rail-search .ic{position:absolute;left:50%;transform:translateX(-50%);color:var(--mute);pointer-events:none}
 .rail-search input{width:34px;height:34px;padding:0;border-radius:10px;background:var(--surface);border:1px solid var(--line);color:transparent;font:600 .84rem var(--font);cursor:pointer;text-overflow:clip}
 .rail-search input::placeholder{color:transparent}
 html.rail-open .rail-search input::placeholder{color:var(--mute)}
 html.rail-open .rail-search{justify-content:stretch}
 html.rail-open .rail-search input{width:100%;padding:10px 12px 10px 36px;cursor:text;color:var(--text)}
 html.rail-open .rail-search .ic{left:12px;transform:none}
 .rail-search input:focus{outline:2px solid var(--accent,var(--gold));outline-offset:1px}
 .rail-hidden-brand{display:none}

 .dock{display:none}
 .page{padding:10px 32px 60px}
 .topbar{padding:16px 32px}
 .topbar .brandmark{display:none}
}
.topbar .ttl{display:none}
.av{display:inline-grid;place-items:center;border-radius:50%;color:#fff;font-weight:700;flex:none}

/* ===== Cards & layout ===== */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);margin-bottom:16px}
.card.flat{box-shadow:none}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:1fr}.g3{grid-template-columns:1fr}
@media(min-width:760px){.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}}
@media(min-width:960px){.dash{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}}
.row{display:flex;align-items:center;gap:12px}.row.wrap{flex-wrap:wrap}.sp1{flex:1}
.hd{display:flex;align-items:end;justify-content:space-between;gap:12px 16px;flex-wrap:wrap;margin:8px 0 18px}
.sec-t{display:flex;align-items:center;justify-content:space-between;margin:22px 0 12px}
.sec-t h2{margin:0}
.sec-t a{font-size:.85rem;text-decoration:none}
.empty{text-align:center;padding:38px 16px;color:var(--mute)}
.empty .ic{width:44px;height:44px;opacity:.5;margin-bottom:8px}
.promise{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:14px;background:var(--okt);border:1px solid rgba(47,191,138,.3);font-size:.86rem}
.promise .ic{color:var(--ok);margin-top:2px}

/* ===== Buttons & forms ===== */
button{font:inherit}
.btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border:0;border-radius:13px;font:600 .9rem var(--font);color:var(--on-gold);cursor:pointer;text-decoration:none;background:linear-gradient(135deg,var(--gold-2),var(--gold) 55%,var(--gold-3));box-shadow:0 10px 22px -10px rgba(217,174,69,.9),inset 0 1px 0 rgba(255,255,255,.55);transition:transform .25s var(--ease),box-shadow .25s,filter .25s}
.btn:hover{transform:translateY(-2px);filter:brightness(1.05);box-shadow:0 16px 28px -12px rgba(217,174,69,1),inset 0 1px 0 rgba(255,255,255,.55)}
.btn:active{transform:translateY(0) scale(.98)}
.btn.ghost{background:var(--surface-2);color:var(--text);box-shadow:none;border:1px solid var(--line)}
.btn.ghost:hover{border-color:var(--gold)}
.btn.danger{background:linear-gradient(135deg,#ff9a9e,var(--bad));color:#fff;box-shadow:0 10px 22px -10px rgba(239,90,95,.9)}
.btn.sm{padding:6px 13px;font-size:.78rem;border-radius:10px}
.btn.block{width:100%}
.btn:focus-visible,.iconbtn:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.55);transform:scale(0);animation:rip .65s linear;pointer-events:none}
@keyframes rip{to{transform:scale(4);opacity:0}}
label{display:block;font-size:.78rem;font-weight:600;color:var(--mute);margin:14px 0 6px;letter-spacing:.01em}
input,select,textarea{width:100%;padding:12px 14px;border-radius:var(--rs);border:1px solid var(--line);background:var(--surface-2);color:var(--text);font:inherit;transition:border-color .2s,box-shadow .2s,background .2s}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--gold);box-shadow:0 0 0 4px var(--glow)}
input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--gold)}
textarea{min-height:120px;resize:vertical}
.pw{position:relative}.pw button{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--mute);cursor:pointer;padding:8px}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:.85rem;color:var(--text)}
.check input{margin-top:3px}
.sw{position:relative;display:inline-block;width:46px;height:26px}.sw input{opacity:0;width:0;height:0}
.sw span{position:absolute;inset:0;border-radius:26px;background:var(--surface-2);border:1px solid var(--line);transition:.3s;cursor:pointer}
.sw span::before{content:'';position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:var(--mute);transition:.3s var(--ease)}
.sw input:checked+span{background:linear-gradient(135deg,var(--gold-2),var(--gold))}.sw input:checked+span::before{transform:translateX(20px);background:#fff}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{padding:7px 14px;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--mute);font:600 .8rem var(--font);cursor:pointer;text-decoration:none;transition:.25s var(--ease)}
.chip:hover{border-color:var(--gold);color:var(--text)}
.chip.on{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold);border-color:transparent;transform:translateY(-1px)}
.searchbox{position:relative}.searchbox .ic{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--mute)}.searchbox input{padding-left:42px}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:99px;font-size:.72rem;font-weight:700;background:var(--surface-2);color:var(--mute);border:1px solid var(--line)}
.badge.ok{background:var(--okt);color:var(--ok);border-color:transparent}.badge.bad{background:var(--badt);color:var(--bad);border-color:transparent}.badge.wait{background:var(--warnt);color:var(--warn);border-color:transparent}.badge.gold{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold);border-color:transparent}.badge.bonus{background:rgba(139,123,255,.16);color:var(--violet);border-color:transparent}

/* ===== Toasts ===== */
.toasts{position:fixed;z-index:100;top:14px;left:14px;right:14px;display:grid;gap:10px;pointer-events:none;justify-items:end}
.toast{pointer-events:auto;max-width:400px;width:100%;border-radius:16px;background:var(--surface);border:1px solid var(--line);box-shadow:0 24px 48px -16px rgba(0,0,0,.7);animation:toastIn .6s var(--ease) both,toastOut .5s 6.5s ease forwards}
.toast .tin{display:flex;gap:12px;align-items:center;padding:13px 16px;color:var(--text);text-decoration:none;font-size:.88rem}
.toast .ti{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex:none}
.toast.ok .ti{background:var(--okt);color:var(--ok)}.toast.err .ti{background:var(--badt);color:var(--bad)}.toast.info .ti{background:var(--infot);color:var(--info)}
.toast.err{border-color:rgba(239,90,95,.4)}
@keyframes toastIn{from{opacity:0;transform:translateX(40px) scale(.95)}}
@keyframes toastOut{to{opacity:0;transform:translateY(-10px);visibility:hidden}}
canvas#confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:120}

/* ===== Wallet card ===== */
.wcard{position:relative;isolation:isolate;overflow:hidden;border-radius:26px;padding:24px;color:#fff;min-height:220px;background:radial-gradient(120% 140% at 0% 0%,#4a4234 0%,#2a2620 42%,#161514 100%);box-shadow:0 34px 60px -28px rgba(0,0,0,.95),inset 0 0 0 1px rgba(255,255,255,.1);transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .3s var(--ease);margin-bottom:16px}
.wcard::before{content:'';position:absolute;top:0;bottom:0;left:0;width:100%;z-index:0;pointer-events:none;background:linear-gradient(105deg,transparent 38%,rgba(244,220,148,.20) 50%,transparent 62%);transform:translateX(-130%);animation:sheen 7s ease-in-out 1.2s infinite}
@keyframes sheen{45%,100%{transform:translateX(130%)}}
.wcard::after{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(circle at var(--gx,25%) var(--gy,0%),rgba(255,255,255,.2),transparent 42%)}
.wcard>*{position:relative;z-index:1}
@keyframes spin{to{transform:rotate(360deg)}}
.wchip{width:44px;height:33px;border-radius:8px;background:linear-gradient(135deg,var(--gold-2),var(--gold-3));position:relative;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2)}
.wchip::before{content:'';position:absolute;inset:8px 0;border-top:1px solid rgba(0,0,0,.25);border-bottom:1px solid rgba(0,0,0,.25)}
.wchip::after{content:'';position:absolute;inset:0 15px;border-left:1px solid rgba(0,0,0,.25);border-right:1px solid rgba(0,0,0,.25)}
.wlabel{font-size:.78rem;opacity:.75;margin-top:18px;letter-spacing:.02em}
.wamt{font:800 2.6rem/1.15 var(--font);letter-spacing:-.025em;word-spacing:.18em;background:linear-gradient(180deg,#fff 30%,var(--gold-2));-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.wfoot{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-top:14px;font-size:.78rem}
.wbonus{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:99px;background:rgba(255,255,255,.12);backdrop-filter:blur(6px);font-size:.78rem}
.wbonus b{color:var(--gold-2);font-variant-numeric:tabular-nums}
.wcard .btn{padding:8px 16px}

/* ===== Stats, ring, bars ===== */
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(min-width:760px){.kpis.k4{grid-template-columns:repeat(4,1fr)}.kpis.k3{grid-template-columns:repeat(3,1fr)}}
.kpi{padding:16px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);position:relative;overflow:hidden;transition:transform .3s var(--ease),border-color .3s}
.kpi:hover{transform:translateY(-3px);border-color:var(--gold)}
.kpi .ic{color:var(--gold);margin-bottom:8px}
.kpi b{display:block;font:800 1.4rem/1.2 var(--font);letter-spacing:-.015em;word-spacing:.12em;font-variant-numeric:tabular-nums}
.kpi span{font-size:.76rem;color:var(--mute)}
.ring{position:relative;width:104px;height:104px;flex:none}
.ring svg{transform:rotate(-90deg);width:100%;height:100%}
.ring circle{fill:none;stroke-width:9;stroke-linecap:round}
.ring .trk{stroke:var(--line)}
.ring .bar{stroke:var(--gold);stroke-dasharray:264;stroke-dashoffset:calc(264 * (1 - var(--p,0)));transition:stroke-dashoffset 1.4s var(--ease);filter:drop-shadow(0 0 6px var(--glow))}
.js .ring:not(.in) .bar{stroke-dashoffset:264}
.ring .mid{position:absolute;inset:0;display:grid;place-content:center;text-align:center;font:800 1.5rem var(--font)}
.ring .mid small{display:block;font:500 .62rem var(--font);color:var(--mute)}
.bars{display:flex;align-items:stretch;gap:8px;height:150px}
.bars .b{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0;text-align:center;font-size:.66rem;color:var(--mute)}
.bars .col{flex:1;display:flex;align-items:flex-end;position:relative}
.bars i{display:block;width:100%;min-height:3px;height:var(--h);border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,var(--gold-2),var(--gold-3));transform-origin:bottom;transition:transform .9s var(--ease) calc(var(--i,0) * 70ms),filter .2s;position:relative}
.bars i:hover{filter:brightness(1.2)}
.bars i::after{content:attr(data-v);position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);background:var(--surface-2);border:1px solid var(--line);padding:1px 7px;border-radius:6px;font-size:.66rem;color:var(--text);opacity:0;pointer-events:none;transition:.2s;white-space:nowrap}
.bars i:hover::after{opacity:1}
.bars.blue i{background:linear-gradient(180deg,var(--accent-2),var(--info))}.bars.green i{background:linear-gradient(180deg,#8ff0c8,var(--ok))}
.js .bars:not(.in) i{transform:scaleY(0)}
.bar-h{height:8px;border-radius:6px;background:var(--surface-2);overflow:hidden;border:1px solid var(--line)}
.bar-h i{display:block;height:100%;width:var(--w,0);background:linear-gradient(90deg,var(--gold),var(--gold-2));border-radius:6px;transition:width 1.2s var(--ease)}
.js .reveal:not(.in) .bar-h i{width:0}

/* ===== Tasks ===== */
.tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.tcard{position:relative;display:block;overflow:hidden;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);color:inherit;text-decoration:none;transition:transform .4s var(--ease),box-shadow .4s,border-color .3s}
.tcard:hover{transform:translateY(-6px);border-color:var(--gold);box-shadow:0 28px 44px -24px rgba(0,0,0,.7),0 0 0 1px var(--gold)}
.tcard .im{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--surface-2)}
.sk{background:linear-gradient(90deg,var(--surface-2) 30%,var(--surface) 50%,var(--surface-2) 70%);background-size:220% 100%;animation:sk 1.3s infinite}
@keyframes sk{to{background-position:-220% 0}}
.tcard img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.tcard:hover img{transform:scale(1.09)}
.tcard .price{position:absolute;right:10px;top:10px;padding:5px 12px;border-radius:99px;font:700 .82rem var(--font);color:var(--on-gold);background:linear-gradient(135deg,var(--gold-2),var(--gold));box-shadow:0 8px 16px -6px rgba(0,0,0,.5);font-variant-numeric:tabular-nums}
.tcard .feat{position:absolute;left:10px;top:10px}
.tcard .bd{padding:14px}
.tcard .tt{font-weight:700;line-height:1.3;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tcard.locked .im::after{content:'';position:absolute;inset:0;backdrop-filter:blur(6px);background:rgba(12,12,13,.5)}
.tcard.locked .lk{position:absolute;inset:0;z-index:2;display:grid;place-content:center;justify-items:center;gap:6px;color:#fff;font-weight:700;font-size:.85rem}
.tcard.locked{opacity:.85}
.hero-img{position:relative;border-radius:22px;overflow:hidden;border:1px solid var(--line);aspect-ratio:16/10;background:var(--surface-2)}
.hero-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.hero-img:hover img{transform:scale(1.05)}
.hero-img .price{position:absolute;left:14px;bottom:14px;padding:8px 16px;border-radius:99px;font:700 1.05rem var(--font);color:var(--on-gold);background:linear-gradient(135deg,var(--gold-2),var(--gold))}
.rate{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:4px}
.rate input{position:absolute;opacity:0;width:1px;height:1px}
.rate label{margin:0;font-size:2.4rem;line-height:1;color:var(--surface-2);-webkit-text-stroke:1px var(--line);cursor:pointer;transition:transform .25s var(--ease),color .2s}
.rate label:hover,.rate label:hover~label,.rate input:checked~label{color:var(--gold);-webkit-text-stroke:0}
.rate label:hover{transform:scale(1.2) rotate(-6deg)}
.rate label.pop{animation:pop .5s var(--ease)}
@keyframes pop{40%{transform:scale(1.5) rotate(-12deg)}}
.rate input:focus-visible+label{outline:3px solid var(--gold);border-radius:6px}
.rate-lbl{min-height:1.5em;font:600 .9rem var(--font);color:var(--gold);transition:opacity .3s}
.cbar{height:4px;border-radius:4px;background:var(--surface-2);overflow:hidden;margin-top:6px}.cbar i{display:block;height:100%;width:0;background:var(--bad);transition:width .3s,background .3s}.cbar.okc i{background:var(--ok)}
.stars{color:var(--gold);letter-spacing:2px}

/* ===== Lists (ledger etc.) ===== */
.list{display:grid;gap:0}
.li{display:flex;align-items:center;gap:14px;padding:13px 4px;border-bottom:1px solid var(--line)}
.li:last-child{border-bottom:0}
.li .ico{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:var(--surface-2);color:var(--gold);flex:none}
.li .ico.good{background:var(--okt);color:var(--ok)}.li .ico.badc{background:var(--badt);color:var(--bad)}.li .ico.b{background:rgba(139,123,255,.16);color:var(--violet)}
.li .mid{flex:1;min-width:0}.li .mid b{display:block;font-size:.9rem}
.li .amt{font:700 .95rem var(--font);font-variant-numeric:tabular-nums;text-align:right}
.pos{color:var(--ok)}.neg{color:var(--bad)}
.li.unread{background:linear-gradient(90deg,var(--glow),transparent);border-radius:12px}
.li.reveal{transition:opacity .6s var(--ease),transform .6s var(--ease)}
.tl{position:relative;display:grid;gap:18px;padding-left:34px}
.tl::before{content:'';position:absolute;left:11px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl .st{position:relative;font-size:.86rem}
.tl .st::before{content:'';position:absolute;left:-30px;top:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);border:2px solid var(--line)}
.tl .st.done::before{background:var(--ok);border-color:var(--ok)}.tl .st.now::before{background:var(--gold);border-color:var(--gold);animation:pulse 1.6s infinite}.tl .st.bad::before{background:var(--bad);border-color:var(--bad)}
@keyframes pulse{0%{box-shadow:0 0 0 0 var(--glow)}100%{box-shadow:0 0 0 12px transparent}}
.bcard{border-radius:20px;padding:20px;min-height:160px;color:#fff;background:linear-gradient(135deg,#3b352b,#1c1b1a 70%);box-shadow:0 24px 40px -22px rgba(0,0,0,.9),inset 0 0 0 1px rgba(255,255,255,.1);position:relative;overflow:hidden;margin-bottom:16px}
.bcard::after{content:'';position:absolute;right:-30px;top:-30px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(244,220,148,.35),transparent 65%)}
.bcard .bn{font:600 1.15rem var(--font);letter-spacing:.14em;margin:22px 0 14px;font-variant-numeric:tabular-nums}
.bcard small{opacity:.7;display:block;font-size:.66rem}
.faq{border:1px solid var(--line);border-radius:14px;background:var(--surface);margin-bottom:10px;overflow:hidden}
.faq summary{cursor:pointer;padding:15px 16px;font-weight:600;list-style:none;display:flex;align-items:center;gap:10px}
.faq summary::-webkit-details-marker{display:none}
.faq summary .ic{margin-left:auto;transition:transform .3s var(--ease);color:var(--gold)}
.faq[open] summary .ic{transform:rotate(90deg)}
.faq .ans{padding:0 16px 16px;color:var(--mute);animation:fadeIn .4s var(--ease)}
@keyframes fadeIn{from{opacity:0;transform:translateY(-4px)}}
.ach{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:16px 10px;border-radius:16px;background:var(--surface);border:1px solid var(--line);transition:transform .3s var(--ease)}
.ach:hover{transform:translateY(-4px) rotate(-1deg)}
.ach .ai{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);color:var(--mute);filter:grayscale(1);opacity:.7}
.ach.done .ai{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold);filter:none;opacity:1;box-shadow:0 0 0 5px var(--glow),0 12px 22px -10px var(--gold)}
.ach b{font-size:.78rem;line-height:1.25}.ach .bar-h{width:100%;height:5px}
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:10px;align-items:end;margin-bottom:16px}
.pod{text-align:center;padding:16px 8px;border-radius:18px;background:var(--surface);border:1px solid var(--line)}
.pod.p1{padding-top:26px;border-color:var(--gold);background:linear-gradient(180deg,var(--glow),var(--surface))}
.pod .medal{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;font:700 .78rem var(--font);color:#1a1204;background:linear-gradient(135deg,#eee,#aaa);margin-bottom:8px}
.pod.p1 .medal{background:linear-gradient(135deg,var(--gold-2),var(--gold))}.pod.p3 .medal{background:linear-gradient(135deg,#f0b48a,#b06a36)}
.pod b{display:block;font-size:.82rem;margin-top:6px;word-break:break-word}
.ann{display:flex;gap:14px;align-items:flex-start;padding:14px 16px;border-radius:16px;border:1px solid var(--line);background:linear-gradient(120deg,var(--infot),transparent);margin-bottom:12px}
.ann.warn{background:linear-gradient(120deg,var(--warnt),transparent)}.ann.ok{background:linear-gradient(120deg,var(--okt),transparent)}
.ann .ic{color:var(--gold);margin-top:2px}

/* ===== Tables (admin) ===== */
.tblw{overflow-x:auto;border-radius:var(--r)}
table.tbl{width:100%;border-collapse:collapse;font-size:.86rem}
.tbl th{text-align:left;padding:11px 12px;font-size:.72rem;color:var(--mute);font-weight:700;letter-spacing:.03em;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:12px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl tr{transition:background .2s}.tbl tbody tr:hover{background:var(--surface-2)}
.tbl td.r,.tbl th.r{text-align:right}
.thumb{width:52px;height:52px;object-fit:cover;border-radius:10px;background:var(--surface-2)}
.inline{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.inline input,.inline select{width:auto;min-width:0;padding:8px 10px}
details.dd summary{cursor:pointer;color:var(--link);font-size:.82rem;margin-top:6px}
.sub{border:1px solid var(--line);border-radius:16px;padding:16px;background:var(--surface);margin-bottom:12px;display:grid;gap:12px}
.bulk{position:sticky;bottom:16px;z-index:20;display:none;align-items:center;gap:12px;padding:12px 16px;border-radius:16px;background:var(--surface);border:1px solid var(--gold);box-shadow:0 20px 40px -14px rgba(0,0,0,.7)}
.bulk.show{display:flex;animation:fadeIn .3s var(--ease)}

/* ===== Auth ===== */
.authwrap{min-height:100vh;display:grid;position:relative;overflow:hidden}
@media(min-width:900px){.authwrap{grid-template-columns:1.1fr 1fr}}
.authhero{position:relative;padding:32px 28px;display:flex;flex-direction:column;justify-content:space-between;gap:24px;background:radial-gradient(120% 120% at 0% 0%,#3b352b,#1c1b1a 60%,#0f0f10);color:#fff;overflow:hidden}
.authhero h1{font-size:clamp(1.8rem,4.6vw,3rem);line-height:1.1;max-width:14ch;margin:22px 0 12px;color:#fff}
.authhero p{color:rgba(255,255,255,.75);max-width:44ch}
.authhero .pts{display:grid;gap:12px;margin-top:8px}
.authhero .pt{display:flex;gap:12px;align-items:center;font-size:.9rem}
.authhero .pt .ic{padding:9px;box-sizing:content-box;border-radius:12px;background:rgba(255,255,255,.1);color:var(--gold-2)}
.authhero>*:not(.orb){position:relative;z-index:1}
.orb{position:absolute;border-radius:50%;filter:blur(50px);opacity:.55;animation:float 12s ease-in-out infinite;pointer-events:none}
.orb.a{width:280px;height:280px;background:var(--gold);right:-80px;top:-60px;opacity:.28}.orb.b{width:340px;height:340px;background:var(--accent-3);left:-100px;bottom:-120px;animation-delay:-4s}
@keyframes float{50%{transform:translate(30px,-40px) scale(1.12)}}
.authform{display:flex;align-items:center;justify-content:center;padding:28px 20px;position:relative}
.authform .box{width:min(430px,100%)}
.authform .top{display:flex;justify-content:flex-end;gap:8px;margin-bottom:22px}
.authform .card{padding:24px}

/* ===== Motion (only when JS enabled; respects reduced motion) ===== */
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.js .reveal.in{opacity:1;transform:none}
html[data-anim=min] *,html[data-anim=min] *::before,html[data-anim=min] *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
html[data-anim=min].js .reveal{opacity:1;transform:none}

/* ===== Admin extras ===== */
.admin .page{max-width:1300px}
.tabstripwrap{position:relative;display:flex;align-items:center}
.tabstrip{display:flex;gap:6px;overflow-x:auto;padding:2px 16px 10px;scrollbar-width:none;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;touch-action:pan-x;overscroll-behavior-x:contain;flex:1;min-width:0}
.tabstrip::-webkit-scrollbar{display:none}
.tsnav{flex:none;display:none;align-items:center;justify-content:center;width:30px;height:30px;margin:0 2px 10px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--text);box-shadow:var(--shadow);z-index:2}
.tabstripwrap.can-l .tsnav.prev,.tabstripwrap.can-r .tsnav.next{display:flex}
.tabstripwrap.can-l{-webkit-mask-image:linear-gradient(90deg,transparent,#000 26px);mask-image:linear-gradient(90deg,transparent,#000 26px)}
.tabstripwrap.can-r{-webkit-mask-image:linear-gradient(270deg,transparent,#000 26px);mask-image:linear-gradient(270deg,transparent,#000 26px)}
.tabstripwrap.can-l.can-r{-webkit-mask-image:linear-gradient(90deg,transparent,#000 26px,#000 calc(100% - 26px),transparent);mask-image:linear-gradient(90deg,transparent,#000 26px,#000 calc(100% - 26px),transparent)}
.tabstrip a{flex:none;display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:99px;border:1px solid var(--line);background:var(--surface);color:var(--mute);font:600 .8rem var(--font);text-decoration:none}
.tabstrip a.on{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold);border-color:transparent}
.tabstrip .cnt{background:var(--bad);color:#fff;border-radius:99px;padding:0 6px;font-size:.68rem}
@media(min-width:960px){.tabstrip{display:none}}
.feed{display:grid;gap:0}
.feed .li{padding:10px 2px}
.split{display:grid;gap:16px;align-items:start}.split>*{min-width:0}@media(min-width:960px){.split{grid-template-columns:1fr 1fr}}
.splitcol{display:flex;flex-direction:column;gap:16px;min-width:0}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;font-size:.88rem}.kv dt{color:var(--mute)}.kv dd{margin:0;font-weight:600}
.tempbox{font:700 1.3rem var(--font);letter-spacing:.08em;padding:14px;border-radius:14px;background:var(--surface-2);border:1px dashed var(--gold);text-align:center;user-select:all}

.kpis.k3{grid-template-columns:repeat(3,1fr)}
@media(max-width:559px){
 .kpis.k3 .kpi{padding:12px}.kpis.k3 .kpi b{font-size:1.05rem}.kpis.k3 .kpi span{font-size:.68rem}
 .tgrid{grid-template-columns:repeat(2,1fr);gap:12px}
 .tcard .bd{padding:10px}.tcard .tt{font-size:.85rem}.tcard .price{font-size:.72rem;padding:3px 9px;right:8px;top:8px}
 .tcard .feat{left:8px;top:8px;font-size:.62rem;padding:2px 7px}.tcard .muted{font-size:.74rem}
 h1{font-size:1.45rem}
 .wamt{font-size:2.2rem}
}
.dock a span{white-space:nowrap;font-size:.62rem}

/* ===== Language dropdown ===== */
.langmenu{position:relative}
.langmenu summary{list-style:none;display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text);font:700 .8rem var(--font);cursor:pointer;transition:border-color .2s,transform .2s var(--ease);user-select:none}
.langmenu summary::-webkit-details-marker{display:none}
.langmenu summary:hover,.langmenu[open] summary{border-color:var(--gold)}
.langmenu summary .cv{transition:transform .3s var(--ease);color:var(--mute)}
.langmenu[open] summary .cv{transform:rotate(180deg)}
.langmenu .menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:220px;padding:6px;border-radius:16px;border:1px solid var(--line);background:var(--surface);box-shadow:0 24px 48px -16px rgba(0,0,0,.7);transform-origin:top right;animation:menuIn .28s var(--ease)}
@keyframes menuIn{from{opacity:0;transform:translateY(-6px) scale(.96)}}
.langmenu .menu a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:11px;color:var(--text);text-decoration:none;font-size:.9rem;font-weight:600;transition:background .2s}
.langmenu .menu a:hover{background:var(--surface-2)}
.langmenu .menu a .code{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--surface-2);color:var(--mute);font-size:.7rem;font-weight:800;letter-spacing:.03em;flex:none}
.langmenu .menu a.on .code{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold)}
.langmenu .menu a small{display:block;font-weight:500;color:var(--mute);font-size:.72rem}
.langmenu .menu a .ic:last-child{margin-left:auto;color:var(--gold)}
.langmenu summary .cur{display:none}
@media(min-width:420px){.langmenu summary .cur{display:inline}}

/* (level badge styling lives further below - see "v13: level badges as MEDALS") */
.lvcard{position:relative;display:grid;grid-template-columns:auto 1fr;gap:16px;padding:18px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);margin-bottom:14px;transition:transform .35s var(--ease),border-color .3s}
.lvcard:hover{transform:translateY(-3px)}
.lvcard.cur{border-color:var(--gold);background:linear-gradient(120deg,var(--glow),var(--surface) 60%);box-shadow:0 0 0 1px var(--gold),var(--shadow)}
.perks{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px;grid-template-columns:1fr}
@media(min-width:760px){.perks{grid-template-columns:1fr 1fr}}
.perks li{display:flex;gap:10px;align-items:center;font-size:.86rem}
.perks .ic{color:var(--gold)}
/* ===== Task session ===== */
.acceptcard{text-align:center;padding:34px 20px;border-radius:24px;background:radial-gradient(120% 140% at 50% 0%,var(--glow),var(--surface) 60%);border:1px solid var(--line);margin-bottom:16px}
.acceptcard .big-ic{width:78px;height:78px;border-radius:26px;display:grid;place-items:center;margin:0 auto 16px;color:var(--on-gold);background:linear-gradient(135deg,var(--gold-2),var(--gold) 55%,var(--gold-3));box-shadow:0 20px 34px -14px var(--gold);animation:floaty 4s ease-in-out infinite}
@keyframes floaty{50%{transform:translateY(-6px) rotate(-3deg)}}
.acceptcard h2{font-size:1.35rem;margin-bottom:6px}
.acceptcard .btn{padding:14px 34px;font-size:1rem;margin-top:14px}
.chip-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:12px}
.bitem{display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:center;padding:12px;border-radius:18px;background:var(--surface);border:1px solid var(--line);margin-bottom:10px;transition:transform .3s var(--ease),border-color .3s}
.bitem:hover{transform:translateX(4px);border-color:var(--gold)}
.bitem img{width:64px;height:64px;border-radius:14px;object-fit:cover;background:var(--surface-2)}
.bitem.ok{border-color:rgba(47,191,138,.45)}
.bitem .t{font-weight:700;line-height:1.3}
.bitem .actions{text-align:right}
@media(max-width:559px){.bitem{grid-template-columns:52px 1fr;}.bitem img{width:52px;height:52px}.bitem .actions{grid-column:1/-1;text-align:left}}
/* ===== Video ===== */
.player{position:relative;aspect-ratio:16/9;border-radius:22px;overflow:hidden;background:#000;border:1px solid var(--line);box-shadow:var(--shadow)}
.player iframe,.player video{position:absolute;inset:0;width:100%;height:100%;border:0}
.tcard .play{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.tcard .play span{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:rgba(12,12,13,.6);backdrop-filter:blur(6px);color:#fff;transition:transform .4s var(--ease),background .3s}
.tcard:hover .play span{transform:scale(1.15);background:var(--gold);color:var(--on-gold)}
.watchbox{padding:18px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);margin:16px 0}
.watchbox.ok{border-color:var(--ok)}
.watchbox .wt{font:800 1.6rem var(--font);font-variant-numeric:tabular-nums}
.copyid{display:inline-flex;align-items:center;gap:8px;padding:5px 12px;border-radius:99px;border:1px dashed var(--gold);background:var(--surface-2);color:var(--text);font:700 .82rem var(--font);letter-spacing:.06em;cursor:pointer}
.copyid:hover{background:var(--glow)}
.idtag{font:700 .72rem var(--font);letter-spacing:.06em;color:var(--gold);background:var(--surface-2);border:1px solid var(--line);padding:2px 8px;border-radius:8px;white-space:nowrap}

@media(max-width:559px){.admin .topbar .brandmark span{display:none}}

.tbl.wrapth th{white-space:normal;vertical-align:bottom}
.btn:disabled,.btn[disabled]{opacity:.42;filter:grayscale(.7);cursor:not-allowed;box-shadow:none;transform:none!important;pointer-events:none}

/* =====================================================================
   v6 design refinement: one family of colours (ink navy + champagne gold + a single cool iris accent),
   softer surfaces, tinted icon tiles, and a centre Start button in the menu.
   ===================================================================== */
body{background-image:radial-gradient(64rem 40rem at 100% -12%,var(--wash-1),transparent 62%),radial-gradient(50rem 36rem at -12% 108%,var(--wash-2),transparent 62%)}
h1{font-size:1.7rem;letter-spacing:-.025em}
.eyebrow{display:inline-block;font:800 .66rem/1 var(--font);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}
.card,.kpi,.bitem,.lvcard,.watchbox,.hset,.faq,.ach,.sub{border-radius:22px}
.card{padding:20px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%,#fff),var(--surface));box-shadow:inset 0 1px 0 rgba(255,255,255,.035),var(--shadow)}
[data-theme=light] .card{background:var(--surface);box-shadow:var(--shadow)}
.btn{border-radius:14px;font-weight:700;letter-spacing:.005em}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}
.btn.ghost:hover{background:var(--gold-t);border-color:var(--gold)}
.badge.gold{background:var(--gold-t);color:var(--gold);border:1px solid rgba(var(--accent-rgb),.28)}
[data-theme=light] .badge.gold{color:var(--gold-3)}
.promise{background:var(--infot);border:1px solid rgba(var(--accent-rgb),.26)}
.promise .ic{color:var(--iris)}
[data-theme=light] .promise .ic{color:var(--accent-3)}
/* tinted icon tiles */
.ico-tile{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:var(--gold-t);color:var(--gold);flex:none;border:1px solid rgba(var(--accent-rgb),.2)}
.ico-tile.sm{width:40px;height:40px;border-radius:13px}
.kpi{padding:16px 16px 14px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%,#fff),var(--surface))}
[data-theme=light] .kpi{background:var(--surface)}
.kpi>.ic:first-child{box-sizing:content-box;width:18px;height:18px;padding:9px;border-radius:12px;background:var(--gold-t);color:var(--gold);margin-bottom:12px;border:1px solid rgba(var(--accent-rgb),.18)}
.kpi b{font-size:1.5rem}
.li .ico{background:var(--gold-t);border-radius:14px}.li .ico.b{background:rgba(var(--accent-rgb),.16);color:var(--iris)}
/* wallet card: navy glass with a champagne edge */
.wcard{background:radial-gradient(90% 90% at 100% 0%,rgba(var(--accent-rgb),.22),transparent 55%),radial-gradient(circle at 94% 10%,transparent 0 44px,rgba(var(--accent-rgb),.10) 45px 46px,transparent 47px 76px,rgba(var(--accent-rgb),.07) 77px 78px,transparent 79px),linear-gradient(150deg,#3b352b 0%,#26221d 55%,#161514 100%);border:1px solid rgba(var(--accent-rgb),.24);box-shadow:0 30px 56px -30px rgba(0,0,0,.95),inset 0 1px 0 rgba(255,255,255,.08)}
.wid{display:inline-flex;align-items:center;gap:8px;margin-top:6px;font-size:.72rem;color:rgba(255,255,255,.72)}
.wid span{text-transform:uppercase;font-size:.6rem;letter-spacing:.16em;opacity:.75}.wid b{color:var(--gold-2);letter-spacing:.1em;font-weight:700}
.bcard{background:linear-gradient(150deg,#3b352b,#1c1b1a 70%)}
/* account id label */
.idline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0 4px}
.idl{font:800 .62rem/1 var(--font);text-transform:uppercase;letter-spacing:.16em;color:var(--mute)}
.copyid{background:var(--gold-t)}
.prof{background:radial-gradient(90% 150% at 100% 0%,var(--gold-t),transparent 60%),var(--surface)!important}
.prof .av{box-shadow:0 0 0 3px var(--surface),0 0 0 5px var(--gold)}
/* states / history */
.statecard{display:flex;align-items:center;gap:14px;text-decoration:none;color:inherit;transition:transform .3s var(--ease),border-color .3s}
a.statecard:hover{transform:translateY(-3px);border-color:var(--gold)}
.hset{background:var(--surface);border:1px solid var(--line);margin-bottom:10px;overflow:hidden;box-shadow:var(--shadow)}
.hset summary,.setcard summary{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;list-style:none}
.hset summary::-webkit-details-marker,.setcard summary::-webkit-details-marker{display:none}
.hset summary>.ic:last-child,.setcard summary>.ic:last-child{color:var(--mute);transition:transform .3s var(--ease)}
.hset[open] summary>.ic:last-child,.setcard[open] summary>.ic:last-child{transform:rotate(90deg)}
.hset .list{padding:0 16px 8px;border-top:1px solid var(--line)}
.setcard{padding:0}.setcard summary{padding:18px 20px}.setcard form{padding:0 20px 20px}
/* guided steps */
.steps{display:flex;gap:8px;margin:0 0 18px}
.stp{flex:1;height:36px;border-radius:12px;display:grid;place-items:center;font:800 .8rem var(--font);background:var(--surface);border:1px solid var(--line);color:var(--mute)}
.stp.done{background:var(--okt);color:var(--ok);border-color:transparent}
.stp.now{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold);border-color:transparent;box-shadow:0 10px 20px -10px var(--gold)}
.acceptcard{border-radius:28px;background:radial-gradient(120% 140% at 50% 0%,var(--glow),transparent 62%),linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%,#fff),var(--surface))}
[data-theme=light] .acceptcard{background:radial-gradient(120% 140% at 50% 0%,var(--glow),transparent 62%),var(--surface)}
.acceptcard .big-ic{background:linear-gradient(145deg,var(--gold-2),var(--gold) 55%,var(--gold-3))}
/* menu: floating glass dock with a raised Start button in the middle */
.dock{overflow:visible;border-radius:28px;padding:8px 6px;box-shadow:0 22px 44px -18px rgba(0,0,0,.85),inset 0 1px 0 rgba(255,255,255,.06)}
.dock .pill{background:var(--gold-t);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.32)}
.dock a.on{color:var(--gold)}
[data-theme=light] .dock a.on{color:var(--gold-3)}
.dock .fab{flex:1.15;position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;margin-top:-34px;padding:0 0 4px;background:none;color:var(--gold)}
.fabbtn svg{fill:currentColor;stroke:none}
.fabbtn{position:relative;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;color:var(--on-gold);background:linear-gradient(145deg,var(--gold-2),var(--gold) 55%,var(--gold-3));box-shadow:0 16px 30px -10px rgba(var(--accent-rgb),.75),0 0 0 5px var(--bg),inset 0 1px 0 rgba(255,255,255,.65);transition:transform .35s var(--ease)}
.fab:active .fabbtn{transform:scale(.93)}.fab:hover .fabbtn{transform:translateY(-3px)}
.fab.ready .fabbtn::after{content:'';position:absolute;inset:-7px;border-radius:50%;border:2px solid var(--gold);opacity:.7;animation:fabpulse 2.2s ease-out infinite}
@keyframes fabpulse{0%{transform:scale(.88);opacity:.75}100%{transform:scale(1.4);opacity:0}}
.fabl{font:800 .66rem var(--font);letter-spacing:.04em;color:var(--gold);margin-top:5px}
[data-theme=light] .fabl{color:var(--gold-3)}
.fab.active .fabbtn{box-shadow:0 16px 30px -10px rgba(var(--accent-rgb),.9),0 0 0 5px var(--bg),0 0 0 7px var(--gold)}
.rail .startcta{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 14px;padding:14px;border-radius:16px;font:800 .95rem var(--font);text-decoration:none;color:var(--on-gold);background:linear-gradient(145deg,var(--gold-2),var(--gold) 55%,var(--gold-3));box-shadow:0 16px 30px -14px rgba(var(--accent-rgb),.9),inset 0 1px 0 rgba(255,255,255,.6);transition:transform .3s var(--ease),filter .2s}
.rail .startcta:hover{transform:translateY(-2px);filter:brightness(1.05)}
.rail a.nav.on{background:var(--gold-t);color:var(--gold);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.32)}
[data-theme=light] .rail a.nav.on{color:var(--gold-3)}
.tabstrip a.on,.chip.on,.seg a.on{background:linear-gradient(135deg,var(--gold-2),var(--gold));color:var(--on-gold)}
/* auth hero + orbs in the same palette */
.authhero{background:radial-gradient(110% 110% at 100% 0%,rgba(var(--accent-rgb),.2),transparent 50%),linear-gradient(155deg,#3b352b 0%,#1c1b1a 55%,#0f0f10 100%)}
.orb.b{background:var(--accent-3)}
.bars.blue i{background:linear-gradient(180deg,var(--iris-2),var(--iris))}
.toast{border-radius:18px}
.brandmark{min-width:0}.topbar .brandmark span{min-width:0;max-width:11ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(min-width:560px){.topbar .brandmark span{max-width:24ch}}
@media(max-width:559px){.hero-img{aspect-ratio:16/9}}
.orb.a{opacity:.13}
.authhero{background:radial-gradient(110% 110% at 100% 0%,rgba(var(--accent-rgb),.10),transparent 50%),linear-gradient(155deg,#3b352b 0%,#1c1b1a 55%,#0f0f10 100%)}
.rate label{color:transparent;-webkit-text-stroke:1.6px rgba(var(--accent-rgb),.6)}
.rate label:hover,.rate label:hover~label,.rate input:checked~label{color:var(--gold);-webkit-text-stroke:0}

/* ===== Custom scrollbar (replaces the default browser scrollbar) ===== */
*{scrollbar-width:thin;scrollbar-color:var(--gold-3) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--gold-3) 60%,var(--surface-2));border-radius:99px;border:2px solid var(--bg);background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:var(--gold)}
.rail::-webkit-scrollbar{width:6px}
/* ===== Custom confirm modal (replaces window.confirm) ===== */
.modalov{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:20px;background:rgba(8,8,9,.6);backdrop-filter:blur(4px);opacity:0;transition:opacity .22s var(--ease)}
.modalov.in{opacity:1}.modalov.out{opacity:0}
.modalbox{width:min(380px,100%);border-radius:20px;padding:22px;background:var(--surface);border:1px solid var(--line);box-shadow:0 30px 60px -20px rgba(0,0,0,.6);transform:translateY(10px) scale(.97);transition:transform .22s var(--ease)}
.modalov.in .modalbox{transform:none}
.modalbox p{margin:0 0 18px;font-size:.94rem;line-height:1.5;color:var(--text)}
.modalbtns{display:flex;gap:10px;justify-content:flex-end}
.modalbtns .btn{padding:9px 18px}
@media(min-width:760px){.kpis.k5{grid-template-columns:repeat(5,1fr)}}
.maintwrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:var(--bg)}
.maintbox{max-width:420px;text-align:center;padding:34px 24px;border-radius:24px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.maintbox .ic{color:var(--gold);margin-bottom:14px}
.maintbox h1{font-size:1.3rem;margin-bottom:8px}
@media(max-width:759px){.kpis.k5 .kpi:last-child{grid-column:1/-1}}
.blocknote{display:flex;gap:16px;align-items:flex-start;border-color:rgba(238,180,58,.35);background:linear-gradient(120deg,var(--warnt),var(--surface))}
.blockwhy{margin:8px 0 0;padding:8px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}

/* ===== Auth (login/register): lean forms only, the pitch lives on welcome.php ===== */
.authwrap2{min-height:100vh;display:flex;flex-direction:column}
.authbar{display:flex;align-items:center;gap:10px;padding:18px 20px}
.authbar .brandmark{margin-right:auto}
.authcenter{flex:1;display:flex;align-items:center;justify-content:center;padding:20px}
.authcenter .box{width:min(420px,100%)}
.backhome{margin:0 0 14px}
.backhome a{display:inline-flex;align-items:center;gap:4px;color:var(--mute);text-decoration:none;font-size:.84rem}
.backhome a:hover{color:var(--gold)}
.authfoot{text-align:center;padding:0 0 22px;font-size:.76rem}

/* ===== Public landing page (welcome.php) ===== */
.pub-body{background:var(--bg)}
.pubnav{display:flex;align-items:center;gap:10px;padding:16px 20px;max-width:1120px;margin:0 auto}
.pubhero{position:relative;overflow:hidden;padding:48px 20px 56px;text-align:center}
.pubhero-in{position:relative;z-index:1;max-width:640px;margin:0 auto}
.pubhero .chip-row{margin-top:22px}
.pubhero h1{font-size:clamp(1.9rem,5.2vw,3rem);line-height:1.12;letter-spacing:-.02em;margin:0 0 12px}
.pubhero p{color:var(--mute);font-size:1.02rem;max-width:52ch;margin:0 auto}
.pubhero .pts{justify-content:center;display:flex;flex-wrap:wrap;gap:18px 26px}
.pubhero .pt{display:flex;align-items:center;gap:8px;font-size:.84rem;color:var(--mute)}
.pubhero .pt .ic{color:var(--gold)}
.pubsec{max-width:1120px;margin:0 auto;padding:36px 20px}
.pubsec-h{text-align:center;max-width:560px;margin:0 auto 30px}
.pubsec-h h2{font-size:1.6rem;margin-top:6px}
.pubsteps{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:760px){.pubsteps{grid-template-columns:repeat(4,1fr)}}
.pubstep{position:relative;padding:22px 18px;border-radius:20px;background:var(--surface);border:1px solid var(--line);text-align:center;transition:transform .3s var(--ease)}
.pubstep:hover{transform:translateY(-4px)}
.pubstep-n{position:absolute;top:12px;right:16px;font:800 1.6rem var(--font);color:var(--line);opacity:.7}
.pubstep h3{font-size:.98rem;margin:12px 0 6px}
.pubstep p{color:var(--mute);font-size:.84rem;margin:0}
.pubfeats{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:640px){.pubfeats{grid-template-columns:1fr 1fr}}
.pubfeat{padding:22px;border-radius:20px;background:var(--surface);border:1px solid var(--line);display:flex;gap:16px;align-items:flex-start;transition:transform .3s var(--ease),border-color .3s}
.pubfeat:hover{transform:translateY(-3px);border-color:var(--gold)}
.pubfeat h3{font-size:1rem;margin:0 0 6px}
.pubfeat p{color:var(--mute);font-size:.86rem;margin:0}
.pubcta{max-width:720px;margin:10px auto 0;padding:44px 24px;text-align:center;border-radius:26px;background:radial-gradient(120% 160% at 50% 0%,var(--glow),transparent 60%),var(--surface);border:1px solid var(--line)}
.pubcta h2{font-size:1.5rem;margin-bottom:8px}
.pubcta p{color:var(--mute);margin-bottom:6px}
.pubfoot{max-width:1120px;margin:40px auto 0;padding:28px 20px 40px;text-align:center;border-top:1px solid var(--line)}

/* ===== Next-task preview card (locked) ===== */
.nextcard{position:relative;display:flex;align-items:center;gap:20px;padding:24px;border-radius:26px;cursor:pointer;background:radial-gradient(90% 140% at 100% 0%,var(--gold-t),transparent 60%),linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%,#fff),var(--surface));border:1.5px dashed rgba(var(--accent-rgb),.38);box-shadow:var(--shadow);transition:transform .35s var(--ease),border-color .3s,box-shadow .3s;margin-bottom:16px}
[data-theme=light] .nextcard{background:radial-gradient(90% 140% at 100% 0%,var(--gold-t),transparent 60%),var(--surface)}
.nextcard:hover,.nextcard:focus-visible{transform:translateY(-4px);border-color:var(--gold);outline:0;box-shadow:0 26px 44px -26px rgba(0,0,0,.6),0 0 0 4px var(--glow)}
.nc-lock{width:84px;height:84px;border-radius:26px;display:grid;place-items:center;flex:none;color:var(--gold);background:var(--gold-t);border:1px solid rgba(var(--accent-rgb),.3);box-shadow:inset 0 0 0 6px rgba(var(--accent-rgb),.05)}
.nc-lock .ic{width:34px;height:34px}
.nc-body{flex:1;min-width:0}
.nc-body h3{font-size:1.5rem;letter-spacing:-.02em;margin:2px 0 10px}
.nc-chips{display:flex;flex-wrap:wrap;gap:8px}
.nc-meter{margin-top:16px}
.nc-meter-h{display:flex;justify-content:space-between;gap:10px;font-size:.8rem;color:var(--mute);margin-bottom:6px}
.nc-meter-h b{color:var(--text)}
.nc-tap{display:inline-flex;align-items:center;gap:4px;margin-top:12px;font-size:.78rem;font-weight:700;color:var(--gold)}
[data-theme=light] .nc-tap{color:var(--gold-3)}
@media(max-width:559px){.nextcard{flex-direction:column;align-items:flex-start;gap:14px;padding:20px}.nc-lock{width:64px;height:64px;border-radius:20px}.nc-body{width:100%}.nc-body h3{font-size:1.3rem}}
.pub-body{overflow-x:clip}
.pubhero{-webkit-mask-image:linear-gradient(#000 78%,transparent);mask-image:linear-gradient(#000 78%,transparent)}
.pubhero .chip-row{justify-content:center}

/* ===== Profile header: one fact per line ===== */
.prof{padding:22px}
.prof-top{display:flex;align-items:center;gap:14px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.prof-top h1{font-size:1.3rem;line-height:1.2;margin:0;word-break:break-word}
.prof-lv{display:block;margin-top:2px;font-size:.84rem;color:var(--mute)}
.prof-badge{flex:none;text-decoration:none}
.pinfo{margin:4px 0 0;display:grid}
.pinfo>div{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--line)}
.pinfo>div:last-child{border-bottom:0;padding-bottom:0}
.pinfo dt{font-size:.8rem;color:var(--mute);flex:none}
.pinfo dd{margin:0;font-weight:600;font-size:.92rem;text-align:right;min-width:0}
.pinfo-email{overflow-wrap:anywhere}

/* ===== Landing hero with animated phones ===== */
.pubhero{-webkit-mask-image:none;mask-image:none;padding:36px 20px 40px}
.pubhero-grid{position:relative;z-index:1;display:grid;gap:34px;align-items:center;max-width:1120px;margin:0 auto}
@media(min-width:900px){.pubhero-grid{grid-template-columns:1.05fr .95fr}.pubhero-in{text-align:left;margin:0}.pubhero .chip-row,.pubhero .pts{justify-content:flex-start}.pubhero p{margin-left:0}}
.pubhero-in{max-width:none}
.phones{display:flex;justify-content:center}
.phone-stage{position:relative;width:min(340px,100%);height:470px;perspective:1100px;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s ease-out;transform-style:preserve-3d}
.phone-sway{position:absolute;inset:0;animation:sway 9s ease-in-out infinite;transform-style:preserve-3d}
@keyframes sway{0%,100%{transform:rotateY(-7deg) rotateX(2deg)}50%{transform:rotateY(7deg) rotateX(-2deg)}}
.phone{position:absolute;width:214px;aspect-ratio:9/18.6;border-radius:34px;padding:7px;background:linear-gradient(145deg,#3a3a3f,#0e0e10);box-shadow:0 40px 60px -28px rgba(0,0,0,.75),inset 0 0 0 1px rgba(255,255,255,.14);
 --bg:#0f0f10;--surface:#1a1a1c;--surface-2:#242427;--text:#f4f1ec;--mute:#a5a098;--line:rgba(255,255,255,.09)}
.phone-front{left:50%;top:0;margin-left:-84px;z-index:2;animation:pfloat 6s ease-in-out infinite}
.phone-back{left:0;top:38px;width:176px;border-radius:30px;transform:rotate(-9deg);opacity:.92;animation:pfloat 7s ease-in-out -2s infinite reverse}
@media(max-width:420px){.phone-front{margin-left:-70px}.phone-back{left:-14px}}
@keyframes pfloat{0%,100%{translate:0 0}50%{translate:0 -14px}}
.pbar{position:absolute;top:10px;left:50%;width:58px;height:16px;margin-left:-29px;border-radius:99px;background:#050505;z-index:5}
.pscr{position:relative;width:100%;height:100%;border-radius:28px;overflow:hidden;background:var(--bg);color:var(--text);font-size:11px;line-height:1.35}
.pshine{position:absolute;inset:7px;border-radius:28px;z-index:6;pointer-events:none;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.10) 50%,transparent 60%);background-size:250% 100%;animation:pshine 5s ease-in-out infinite}
@keyframes pshine{0%{background-position:160% 0}60%,100%{background-position:-60% 0}}
.pscreen{position:absolute;inset:0;padding:34px 12px 12px;opacity:0;animation:pcycle 12s ease-in-out infinite}
.pscreen:nth-child(2){animation-delay:4s}.pscreen:nth-child(3){animation-delay:8s}
@keyframes pcycle{0%{opacity:0;transform:translateY(10px)}7%,30%{opacity:1;transform:none}37%,100%{opacity:0;transform:translateY(-10px)}}
.pm-time{position:absolute;top:12px;left:16px;right:16px;display:flex;justify-content:space-between;font-size:9px;font-weight:700;color:var(--mute)}
.pm-dots{display:inline-flex;gap:2px;align-items:center}.pm-dots i{width:3px;height:3px;border-radius:50%;background:var(--mute)}
.pm-hello{display:flex;flex-direction:column;margin:2px 0 8px}.pm-hello span{color:var(--mute);font-size:9.5px}.pm-hello b{font-size:16px}
.pm-wallet{position:relative;padding:12px;border-radius:16px;background:linear-gradient(150deg,#3b352b,#1c1b1a);border:1px solid rgba(var(--accent-rgb),.22)}
.pm-wallet small{display:block;color:rgba(255,255,255,.7);font-size:9px}
.pm-wallet strong{display:block;font-size:20px;line-height:1.2;letter-spacing:-.02em;background:linear-gradient(180deg,#fff 30%,var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.pm-wid{margin-top:6px;font-size:8.5px;letter-spacing:.06em;color:var(--accent-2)}.pm-wid span{opacity:.7;text-transform:uppercase;margin-right:4px;letter-spacing:.12em;font-size:7.5px;color:#fff}
.pm-pill{position:absolute;right:10px;bottom:10px;padding:4px 9px;border-radius:99px;background:linear-gradient(135deg,var(--accent-2),var(--accent));color:var(--on-accent);font-weight:800;font-size:8.5px}
.pm-kpis{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.pm-kpis>div{padding:9px;border-radius:13px;background:var(--surface);border:1px solid var(--line)}
.pm-kpis small{display:block;color:var(--mute);font-size:8.5px;margin-bottom:2px}.pm-kpis b{font-size:14px}
.pm-lv{display:flex;align-items:center;gap:6px}.pm-lv b{font-size:11px}
.pm-next{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;padding:9px;border-radius:13px;background:linear-gradient(135deg,var(--accent-2),var(--accent));color:var(--on-accent);font-size:11px}
.pm-eb{display:block;font-size:8px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-top:2px}
.pm-h{font-size:15px;font-weight:800;letter-spacing:-.02em;margin:3px 0 8px}
.pm-steps{display:flex;gap:4px;margin-bottom:9px}.pm-steps i{flex:1;height:5px;border-radius:9px;background:var(--surface-2)}.pm-steps .d{background:#3ec79a}.pm-steps .n{background:var(--accent)}
.pm-img{position:relative;border-radius:13px;overflow:hidden;aspect-ratio:16/10;background:var(--surface-2)}.pm-img img{width:100%;height:100%;object-fit:cover}
.pm-img span{position:absolute;left:7px;bottom:7px;padding:3px 8px;border-radius:99px;background:linear-gradient(135deg,var(--accent-2),var(--accent));color:var(--on-accent);font-weight:800;font-size:9px}
.pm-stars{margin:9px 0 8px;font-size:19px;letter-spacing:3px;color:var(--accent)}.pm-stars u{text-decoration:none;color:rgba(var(--accent-rgb),.28)}
.pm-btn{padding:9px;border-radius:13px;text-align:center;background:linear-gradient(135deg,var(--accent-2),var(--accent));color:var(--on-accent);font-weight:800;font-size:10.5px}
.pm-tx{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--line)}
.pm-tx .ic1{width:26px;height:26px;border-radius:9px;display:grid;place-items:center;background:rgba(var(--accent-rgb),.14);color:var(--accent);flex:none}
.pm-tx b{font-size:10px}.pm-tx em{font-style:normal;font-weight:800;color:#3ec79a;font-size:11px}
.pm-head{padding:34px 12px 4px}.pm-head b{font-size:14px}
.pm-row{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--line)}
.pm-row b{display:block;font-size:10.5px}.pm-row span{color:var(--mute);font-size:8.5px}.pm-row em{font-style:normal;font-weight:800;color:var(--accent);font-size:10.5px}
.fchip{position:absolute;z-index:4;display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:99px;background:var(--surface);border:1px solid var(--line);box-shadow:0 14px 28px -14px rgba(0,0,0,.55);font-size:.78rem;font-weight:700;color:var(--text);animation:chipfloat 5s ease-in-out infinite}
.fchip .ic{color:var(--gold)}
.fchip.c1{left:-8px;top:64px;animation-delay:-1s}.fchip.c2{right:-6px;top:150px;animation-delay:-2.4s}.fchip.c3{right:14px;bottom:40px;animation-delay:-3.6s}
@media(max-width:420px){.fchip.c1{left:-4px}.fchip.c2{right:-4px}}
@keyframes chipfloat{0%,100%{translate:0 0}50%{translate:0 -10px}}
.phone{text-align:left}
.pscreen{padding-bottom:58px}
.pm-chart{display:flex;align-items:flex-end;gap:5px;height:64px;margin-top:8px;padding:8px 10px;border-radius:13px;background:var(--surface);border:1px solid var(--line)}
.pm-chart i{flex:1;border-radius:4px 4px 2px 2px;background:linear-gradient(180deg,var(--accent-2),var(--accent-3))}
.pm-total{margin-top:12px;padding:11px 12px;border-radius:14px;background:linear-gradient(150deg,#3b352b,#1c1b1a);border:1px solid rgba(var(--accent-rgb),.2)}
.pm-total small{display:block;font-size:8.5px;color:rgba(255,255,255,.7)}.pm-total strong{font-size:17px;color:var(--accent-2);letter-spacing:-.02em}
.pm-dock{position:absolute;left:10px;right:10px;bottom:10px;height:38px;border-radius:19px;background:var(--surface);border:1px solid var(--line);display:flex;align-items:center;justify-content:space-around;color:var(--mute);z-index:3}
.pm-dock .fabm{width:34px;height:34px;margin-top:-18px;border-radius:50%;background:linear-gradient(145deg,var(--accent-2),var(--accent));color:var(--on-accent);display:grid;place-items:center;box-shadow:0 8px 14px -6px rgba(var(--accent-rgb),.7)}
.pubhero{-webkit-mask-image:linear-gradient(#000 calc(100% - 90px),transparent);mask-image:linear-gradient(#000 calc(100% - 90px),transparent)}

/* =====================================================================
   v11 clean pass: calmer and flatter. Fewer borders/glows/gradients, neutral icon tiles,
   more breathing room. Gold is kept for the ONE thing that matters on a screen (primary action / current state).
   ===================================================================== */
body{background-image:linear-gradient(180deg,var(--bg-2),var(--bg) 380px)}
.card,.kpi,.bitem,.lvcard,.watchbox,.hset,.faq,.ach,.sub,.statecard,.pubstep,.pubfeat,.pod,.tcard,.setcard{background:var(--surface);border:1px solid var(--line);box-shadow:none}
[data-theme=light] .card,[data-theme=light] .kpi,[data-theme=light] .bitem,[data-theme=light] .lvcard,[data-theme=light] .hset,[data-theme=light] .setcard,[data-theme=light] .statecard{box-shadow:0 1px 2px rgba(96,68,20,.05)}
.prof,.acceptcard,.nextcard,.pubcta{background:var(--surface)!important;box-shadow:none!important}
.card:hover,.kpi:hover,.bitem:hover,.lvcard:hover,.pubstep:hover,.ach:hover,a.statecard:hover{transform:none}
.kpi:hover,.bitem:hover,a.statecard:hover,.pubfeat:hover{border-color:var(--gold)}
.tcard:hover{transform:none;box-shadow:none;border-color:var(--gold)}
.tcard:hover img{transform:none}
/* icon tiles: neutral, no outline */
.ico-tile,.kpi>.ic:first-child,.li .ico{background:var(--surface-2);border:0;box-shadow:none;color:var(--gold)}
[data-theme=light] .ico-tile,[data-theme=light] .kpi>.ic:first-child,[data-theme=light] .li .ico{color:var(--gold-3)}
.li .ico.good{background:var(--okt);color:var(--ok)}.li .ico.badc{background:var(--badt);color:var(--bad)}.li .ico.b{background:rgba(var(--accent-rgb),.14);color:var(--iris)}
/* buttons: no drop glow */
.btn{box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
.btn:hover{transform:none;filter:brightness(1.06);box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
.btn.ghost,.btn.ghost:hover{box-shadow:none}
.btn.danger{box-shadow:none}
.badge.gold{border-color:transparent}
.logo{box-shadow:none}
.copyid{background:var(--surface-2);border:1px solid var(--line)}
.promise{background:var(--surface-2);border:0}
/* hero elements that shouted */
.wcard{background:linear-gradient(150deg,#3b352b,#1c1b1a);border:0;box-shadow:none}
.wcard::before,.wcard::after{display:none}
.acceptcard .big-ic{box-shadow:none;animation:none}
.prof .av{box-shadow:none}
.nextcard{border:1.5px dashed var(--line)}.nextcard:hover,.nextcard:focus-visible{border-color:var(--gold);box-shadow:none;transform:none}
/* navigation */
.dock{box-shadow:0 10px 30px -14px rgba(0,0,0,.55)}
.fabbtn{box-shadow:0 8px 18px -8px rgba(var(--accent-rgb),.6),0 0 0 5px var(--bg),inset 0 1px 0 rgba(255,255,255,.5)}
.fab.active .fabbtn{box-shadow:0 8px 18px -8px rgba(var(--accent-rgb),.6),0 0 0 5px var(--bg),0 0 0 7px var(--gold)}
.rail .startcta{box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
.rail a.nav.on,.dock .pill{background:var(--surface-2);box-shadow:none}
/* rhythm */
.hd{margin:12px 0 22px}
.sec-t{margin:30px 0 14px}
.kpis{gap:14px}
.card{padding:22px;margin-bottom:18px}
.page{padding-left:18px;padding-right:18px}
.muted{font-size:.86rem}
.tbl tbody tr:hover{background:transparent}

/* ===== v12: warm palette details ===== */
.wcard,.bcard,.pm-wallet,.pm-total{background:linear-gradient(145deg,#3b352b 0%,#242220 55%,#171615 100%)}
.wcard{border:0}
.pm-wallet,.pm-total{border:1px solid rgba(var(--accent-rgb),.20)}
[data-theme=light] .card,[data-theme=light] .kpi,[data-theme=light] .bitem,[data-theme=light] .lvcard,[data-theme=light] .hset,[data-theme=light] .setcard,[data-theme=light] .statecard,[data-theme=light] .pubstep,[data-theme=light] .pubfeat,[data-theme=light] .ach,[data-theme=light] .faq{border-color:transparent;box-shadow:0 1px 2px rgba(96,68,20,.06),0 14px 28px -20px rgba(96,68,20,.24)}
[data-theme=light] .btn.ghost{background:var(--surface);border-color:var(--line)}
[data-theme=light] input,[data-theme=light] select,[data-theme=light] textarea{background:var(--surface-2);border-color:transparent}
[data-theme=light] .dock{background:color-mix(in srgb,var(--surface) 90%,transparent);box-shadow:0 10px 30px -14px rgba(96,68,20,.35)}
.promise .ic{color:var(--gold)}
[data-theme=light] .promise .ic{color:var(--gold-3)}
.orb.a{background:var(--gold)}.orb.b{background:var(--accent-3)}

/* ===== Profile v12: compact facts, no divider lines, level label under the badge ===== */
.prof{padding:22px}
.prof-top{border:0;padding:0 0 4px;align-items:flex-start}
.prof-badge{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center}
.prof-badge .lvl-l{font-style:normal;font-size:.74rem;font-weight:800;letter-spacing:.02em;color:var(--mute)}
.pinfo{display:grid;gap:12px;margin:16px 0 0}
.pinfo>div{display:grid;grid-template-columns:104px minmax(0,1fr);align-items:center;gap:10px;padding:0;border:0}
.pinfo>div:last-child{padding:0}
.pinfo dt{font-size:.8rem;color:var(--mute)}
.pinfo dd{text-align:left;font-weight:600;font-size:.92rem;margin:0}
.ainfo h2{margin-bottom:6px}

/* ===== Notifications: placed under the header, centred on phones, top-right on desktop ===== */
.toasts{top:calc(env(safe-area-inset-top,0px) + 74px);left:14px;right:14px;justify-items:center}
.toast{max-width:440px;width:100%;box-shadow:0 14px 34px -14px rgba(0,0,0,.45)}
@keyframes toastIn{from{opacity:0;transform:translateY(-10px) scale(.98)}}
@keyframes toastOut{to{opacity:0;transform:translateY(-8px);visibility:hidden}}
@media(min-width:960px){.toasts{left:auto;right:28px;top:88px;justify-items:end}}
/* ===== Inline alert ===== */
.alert{display:flex;align-items:center;gap:12px;padding:12px 14px;margin:0 0 14px;border-radius:14px;font-size:.88rem;line-height:1.4;color:var(--text);background:var(--badt);border:1px solid color-mix(in srgb,var(--bad) 30%,transparent)}
.alert .ti{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--bad) 18%,transparent);color:var(--bad)}
.alert.ok{background:var(--okt);border-color:color-mix(in srgb,var(--ok) 30%,transparent)}.alert.ok .ti{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}
/* calmer glow blobs, at most two toasts on screen (the rest stay in the bell), tighter toast padding */
[data-theme=light] .orb{opacity:.16}[data-theme=dark] .orb{opacity:.12}
.toasts>.toast:nth-child(n+3){display:none}
.toast .tin{padding:11px 14px}

/* =====================================================================
   v13: level badges as MEDALS (dark disc + metallic ring in a muted tier colour, icon in the same colour),
   so no saturated blue/violet/orange fill fights with the warm palette. Same construction on light and dark.
   ===================================================================== */
.lvb{width:var(--s,44px);height:var(--s,44px);border-radius:50%;display:inline-grid;place-items:center;flex:none;position:relative;color:var(--b1);
 border:calc(var(--s,44px) * .075) solid transparent;
 background:linear-gradient(160deg,#2a2725,#141312) padding-box,linear-gradient(145deg,var(--b1),var(--b2)) border-box;
 box-shadow:0 8px 18px -10px var(--b2),inset 0 1px 0 rgba(255,255,255,.07)}
.lvb::after{content:none}
.lvb .ic{width:calc(var(--s,44px) * .44);height:calc(var(--s,44px) * .44);filter:drop-shadow(0 0 5px color-mix(in srgb,var(--b1) 40%,transparent))}
.lv1{--b1:#e3a878;--b2:#a4633a}
.lv2{--b1:#ece8e0;--b2:#a19c92}
.lv3{--b1:#f7e3a6;--b2:#c58d22}
.lv4{--b1:#c6e7dc;--b2:#5e9c89}
.lv5{--b1:#f5d0df;--b2:#b56a8d;animation:lvglow 3s ease-in-out infinite}
@keyframes lvglow{50%{box-shadow:0 0 22px 2px color-mix(in srgb,var(--b2) 55%,transparent),inset 0 1px 0 rgba(255,255,255,.07)}}
.lvcard.locked .lvb{filter:grayscale(.85);opacity:.55}

/* ===== interactive badge: reset the <button>, add a hover ring-shine + press feedback, and a "tap me" pulse ===== */
button.lvb{appearance:none;-webkit-appearance:none;font:inherit;padding:0;margin:0;overflow:visible}
.lvb-int{cursor:pointer;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.lvring{position:absolute;inset:calc(var(--s,44px) * -.16);border-radius:50%;border:1.5px solid var(--b1);opacity:0;transform:scale(.72);transition:opacity .35s var(--ease),transform .35s var(--ease)}
.lvb-int:hover,.lvb-int:focus-visible{transform:translateY(-3px) scale(1.08) rotate(-4deg);box-shadow:0 14px 26px -10px var(--b2),0 0 0 4px color-mix(in srgb,var(--b1) 22%,transparent)}
.lvb-int:hover .lvring,.lvb-int:focus-visible .lvring{opacity:.55;transform:scale(1)}
.lvb-int:hover .ic{animation:lvwiggle .5s var(--ease)}
@keyframes lvwiggle{0%,100%{transform:rotate(0)}30%{transform:rotate(-12deg) scale(1.08)}65%{transform:rotate(8deg) scale(1.08)}}
.lvb-int:active{transform:translateY(0) scale(.92);transition-duration:.12s}
.lvb-int:not(.locked-hint)::before{content:'';position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 0 color-mix(in srgb,var(--b1) 55%,transparent);animation:lvinvite 2.6s ease-out infinite}
.lvb-int:hover::before,.lvcard.locked .lvb-int::before{animation:none;box-shadow:none}
@keyframes lvinvite{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--b1) 45%,transparent)}70%{box-shadow:0 0 0 10px color-mix(in srgb,var(--b1) 0%,transparent)}100%{box-shadow:0 0 0 0 transparent}}
html[data-anim=min] .lvb-int::before,html[data-anim=min] .lvb-int:hover .ic{animation:none}

/* ===== Inputs: no browser autofill blue clashing with the palette ===== */
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,textarea:-webkit-autofill,select:-webkit-autofill{-webkit-text-fill-color:var(--text);caret-color:var(--text);-webkit-box-shadow:0 0 0 100px var(--surface-2) inset;box-shadow:0 0 0 100px var(--surface-2) inset;transition:background-color 9999s ease-out 0s}
input::placeholder,textarea::placeholder{text-overflow:ellipsis}

/* ===== Admin: compact forms + roomier search on phones ===== */
.fz{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.fz>*{min-width:0}
.fz input{flex:1 1 120px;width:auto}
.fz input.grow{flex:2 1 200px}
.fz select{flex:0 1 auto;width:auto}
.fz .btn{flex:0 0 auto}
@media(max-width:559px){.admin .topbar .sp1{display:none}}
.actstack{display:grid;gap:8px;min-width:190px}
.actstack form{margin:0}
.actstack .btn.block{width:100%}
/* tables that turn into stacked cards on phones (no sideways scrolling) */
@media(max-width:759px){
 .tbl.stack,.tbl.stack tbody,.tbl.stack tr,.tbl.stack td{display:block;width:100%}
 .tbl.stack thead{display:none}
 .tbl.stack tr{padding:16px 0;border-bottom:1px solid var(--line)}
 .tbl.stack tr:last-child{border-bottom:0}
 .tbl.stack td{border:0;padding:5px 0;text-align:left!important}
 .tbl.stack td[data-l]::before{content:attr(data-l);display:block;font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);margin-bottom:2px}
 .tbl.stack .actstack{min-width:0;margin-top:6px}
}

/* =====================================================================
   v13 phone motion: screens switch via JS (.on), floats use plain `transform` (no `translate` property that older
   browsers ignore). Reduced-motion users still get a gentle, pausable version: this hero IS the product preview.
   ===================================================================== */
.phones{position:relative}
.pscreen{animation:none;opacity:0;transform:translateY(10px);transition:opacity .7s ease,transform .7s ease}
.pscreen.on{opacity:1;transform:none}
.phone-front{animation:pfloatf 6s ease-in-out infinite}
.phone-back{animation:pfloatb 7s ease-in-out -2s infinite}
@keyframes pfloatf{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
@keyframes pfloatb{0%,100%{transform:rotate(-9deg) translateY(0)}50%{transform:rotate(-9deg) translateY(12px)}}
.fchip{animation:chipfloat2 5s ease-in-out infinite}
@keyframes chipfloat2{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.phone-stage.paused,.phone-stage.paused *{animation-play-state:paused!important}
.phone-pause{position:absolute;right:4px;bottom:2px;z-index:6;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface);color:var(--mute);cursor:pointer;transition:color .2s,border-color .2s}
.phone-pause:hover{color:var(--gold);border-color:var(--gold)}
.phone-pause .i-play,.phone-pause.is-paused .i-pause{display:none}
.phone-pause.is-paused .i-play{display:inline-flex}
html[data-anim=min] .phone-sway{animation:none!important}
html[data-anim=min] .phone-front{animation:pfloatfs 8s ease-in-out infinite!important}
html[data-anim=min] .phone-back{animation:pfloatbs 9s ease-in-out -2s infinite!important}
html[data-anim=min] .fchip{animation:chipfloats 7s ease-in-out infinite!important}
html[data-anim=min] .pshine{animation:pshine 7s ease-in-out infinite!important}
html[data-anim=min] .pscreen{transition:opacity .9s ease!important;transform:none!important}
html[data-anim=min] .phone-stage{transform:none!important}
@keyframes pfloatfs{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes pfloatbs{0%,100%{transform:rotate(-9deg) translateY(0)}50%{transform:rotate(-9deg) translateY(5px)}}
@keyframes chipfloats{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}

/* =====================================================================
   v14: theme-driven cards, theme picker, 3 animation levels (min / normal / full), cursor effects, aligned form rows
   ===================================================================== */
.wcard,.bcard,.pm-wallet,.pm-total{background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 34%,#151515) 0%,color-mix(in srgb,var(--accent) 12%,#101010) 58%,#0b0b0b 100%)}
.pm-wallet,.pm-total{border:1px solid rgba(var(--accent-rgb),.28)}
.pm-stars{color:var(--star)}.pm-stars u{color:color-mix(in srgb,var(--star) 30%,transparent)}
.rate label{-webkit-text-stroke:1.6px color-mix(in srgb,var(--star) 60%,transparent)}
.rate label:hover,.rate label:hover~label,.rate input:checked~label{color:var(--star);-webkit-text-stroke:0}
.stars{color:var(--star)}

/* ----- aligned form rows (label height can differ, inputs stay on one line) ----- */
.frow{display:grid;grid-template-columns:1fr 1fr;gap:0 12px;align-items:end}
@media(max-width:519px){.frow{grid-template-columns:1fr}}
.frow .pw input{width:100%}
.pw input{padding-right:44px}

/* ----- theme picker (palette button in every top bar) ----- */
.thememenu summary{list-style:none;display:grid;place-items:center;width:40px;height:40px;padding:0;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer;transition:border-color .2s,transform .25s var(--ease)}
.thememenu summary::-webkit-details-marker{display:none}
.thememenu summary:hover,.thememenu[open] summary{border-color:var(--accent)}
.thememenu .menu{min-width:300px;max-width:min(340px,calc(100vw - 24px));padding:16px}
.tm-sec{margin-bottom:16px}.tm-sec:last-child{margin-bottom:0}
.tm-sec>b{display:flex;align-items:center;justify-content:space-between;font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);margin-bottom:10px}
.tm-sec>b em{font-style:normal;color:var(--accent);letter-spacing:.02em;text-transform:none;font-size:.8rem}
.tm-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}
.tm-sw{position:relative;aspect-ratio:1;border-radius:15px;border:2px solid transparent;padding:0;cursor:pointer;background:linear-gradient(135deg,var(--sb) 50%,var(--lb) 50%);box-shadow:inset 0 0 0 1px rgba(128,128,128,.28);transition:transform .25s var(--ease),border-color .2s}
.tm-sw i{position:absolute;inset:30%;border-radius:50%;background:linear-gradient(135deg,var(--sa) 50%,var(--la) 50%);box-shadow:0 0 0 2px rgba(255,255,255,.7)}
.tm-sw:hover{transform:scale(1.12) rotate(-4deg)}
.tm-sw[aria-pressed=true]{border-color:var(--text);transform:scale(1.08)}
.tm-anim{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.tm-ab{padding:9px 6px;border-radius:12px;border:1px solid var(--line);background:var(--surface-2);color:var(--mute);font:700 .76rem var(--font);cursor:pointer;transition:.2s}
.tm-ab:hover{color:var(--text);border-color:var(--accent)}
.tm-ab[aria-pressed=true]{background:linear-gradient(135deg,var(--accent-2),var(--accent));color:var(--on-accent);border-color:transparent}
.tm-note{font-size:.78rem;color:var(--mute);margin:0}

/* ----- smooth colour change when the theme/mode is switched ----- */
html.tswitch,html.tswitch *{transition:background-color .45s ease,color .45s ease,border-color .45s ease,fill .45s ease,stroke .45s ease,box-shadow .45s ease!important}

/* ----- NORMAL + FULL: cursor spotlight, lifts, shine, icon motion ----- */
:is(.card,.kpi,.bitem,.lvcard,.hset,.ach,.tcard,.nextcard,.acceptcard,.pubfeat,.pubstep,.faq,.pod){position:relative;isolation:isolate}
html:not([data-anim=min]):not([data-fx=lift]):not([data-fx=neon]) :is(.card,.kpi,.bitem,.lvcard,.hset,.ach,.tcard,.nextcard,.acceptcard,.pubfeat,.pubstep,.faq,.pod)::after{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;opacity:0;transition:opacity .35s;background:radial-gradient(300px circle at var(--mx,50%) var(--my,50%),rgba(var(--accent-rgb),.18),transparent 62%)}
html:not([data-anim=min]):not([data-fx=lift]):not([data-fx=neon]) :is(.card,.kpi,.bitem,.lvcard,.hset,.ach,.tcard,.nextcard,.acceptcard,.pubfeat,.pubstep,.faq,.pod):hover::after{opacity:1}
html:not([data-anim=min]) :is(.kpi,.tcard,.nextcard,.lvcard,.pubfeat,.pubstep,.bitem,.ach,.pod):is(.in,:not(.reveal)){transform:perspective(900px) rotateX(var(--trx,0deg)) rotateY(var(--try,0deg)) translateY(var(--lift,0px));transition:transform .35s var(--ease),border-color .3s,box-shadow .35s}
html:not([data-anim=min]) :is(.kpi,.tcard,.nextcard,.lvcard,.pubfeat,.pubstep,.bitem,.ach,.pod):hover{--lift:-4px;border-color:var(--accent);box-shadow:0 22px 40px -26px rgba(var(--accent-rgb),.55)}
html:not([data-anim=min]) .btn:not(.ghost):not(.sm)::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-130%);transition:transform .8s var(--ease)}
html:not([data-anim=min]) .btn:not(.ghost):not(.sm):hover::after{transform:translateX(130%)}
html:not([data-anim=min]) .btn .ic{transition:transform .3s var(--ease)}
html:not([data-anim=min]) .btn:hover .ic{transform:rotate(-10deg) scale(1.18)}
html:not([data-anim=min]) :is(.rail a.nav,.dock a) .ic{transition:transform .3s var(--ease)}
html:not([data-anim=min]) :is(.rail a.nav,.dock a):hover .ic{transform:translateY(-2px) scale(1.15)}
html:not([data-anim=min]) .li{transition:background .25s,transform .25s var(--ease);border-radius:14px}
html:not([data-anim=min]) .li:hover{background:var(--surface-2);transform:translateX(4px)}
html:not([data-anim=min]) .iconbtn:hover,html:not([data-anim=min]) .thememenu summary:hover{transform:translateY(-2px) rotate(-4deg)}
html:not([data-anim=min]) a:not(.btn):not(.nav):not(.iconbtn):not(.fab):not(.brandmark):not(.startcta):hover{text-decoration-thickness:2px}
/* magnetic buttons write --bx/--by (FULL) */
.btn{translate:var(--bx,0) var(--by,0)}

/* ----- FULL: aurora background, particles, cursor glow/ring, shimmer, gradient motion ----- */
html[data-anim=full][data-fx=aurora] body::before{content:'';position:fixed;inset:-25%;z-index:-1;pointer-events:none;filter:blur(34px);animation:aurora 26s ease-in-out infinite alternate;
 background:radial-gradient(38% 42% at 18% 22%,rgba(var(--accent-rgb),.34),transparent 70%),radial-gradient(34% 40% at 82% 16%,color-mix(in srgb,var(--accent-2) 32%,transparent),transparent 70%),radial-gradient(42% 46% at 60% 88%,color-mix(in srgb,var(--accent-3) 30%,transparent),transparent 70%)}
html[data-theme=light][data-anim=full] body::before,html[data-theme=light][data-anim=full] body::after{opacity:.6}
@keyframes aurora{0%{transform:translate3d(-4%,-3%,0) rotate(0) scale(1)}50%{transform:translate3d(5%,3%,0) rotate(8deg) scale(1.12)}100%{transform:translate3d(-2%,6%,0) rotate(-6deg) scale(1.05)}}
.fxcanvas{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.cglow{position:fixed;left:0;top:0;width:420px;height:420px;margin:-210px 0 0 -210px;border-radius:50%;pointer-events:none;z-index:-1;background:radial-gradient(circle,rgba(var(--accent-rgb),.22),transparent 65%);opacity:0;transition:opacity .4s;will-change:transform}
.cring{position:fixed;left:0;top:0;width:36px;height:36px;margin:-18px 0 0 -18px;border-radius:50%;border:1.5px solid rgba(var(--accent-rgb),.75);pointer-events:none;z-index:300;opacity:0;transition:opacity .3s,width .25s var(--ease),height .25s var(--ease),margin .25s var(--ease),background .25s;will-change:transform}
.cring.hot{width:58px;height:58px;margin:-29px 0 0 -29px;background:rgba(var(--accent-rgb),.12)}
html[data-anim=full] .btn:not(.ghost):not(.danger){background:linear-gradient(120deg,var(--accent-2),var(--accent),var(--accent-3),var(--accent),var(--accent-2));background-size:300% 100%;animation:gshift 8s linear infinite}
@keyframes gshift{to{background-position:-300% 0}}
html[data-anim=full] .wamt{background:linear-gradient(100deg,#fff 20%,var(--accent-2) 40%,#fff 60%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:gshift2 6s linear infinite}
@keyframes gshift2{from{background-position:130% 0}to{background-position:-130% 0}}
html[data-anim=full] .pubhero h1{background:linear-gradient(100deg,var(--text) 32%,var(--accent) 50%,var(--text) 68%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:gshift2 7s linear infinite}
html[data-anim=full] .logo{animation:floaty 5s ease-in-out infinite}
html[data-anim=full] .fab .fabbtn::after{content:'';position:absolute;inset:-7px;border-radius:50%;border:2px solid var(--accent);opacity:.7;animation:fabpulse 2.2s ease-out infinite}
html[data-anim=full] .bar-h i{background:linear-gradient(90deg,var(--accent),var(--accent-2),var(--accent));background-size:200% 100%;animation:gshift 3s linear infinite}
html[data-anim=full] .big-ic{animation:floaty 4.5s ease-in-out infinite}
html[data-anim=full] .eyebrow{background:linear-gradient(90deg,var(--accent),var(--accent-2),var(--accent));background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:gshift 4s linear infinite}
@media(pointer:coarse){.cring,.cglow{display:none}}

/* ----- admin: theme gallery + template editor ----- */
.tgal{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.tsw{position:relative;display:block;cursor:pointer;border-radius:18px;overflow:hidden;border:2px solid var(--line);background:var(--surface);transition:transform .25s var(--ease),border-color .2s}
.tsw:hover{transform:translateY(-3px)}
.tsw input{position:absolute;opacity:0;pointer-events:none}
.tsw:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 3px var(--glow)}
.tsw .prev{display:grid;grid-template-columns:1fr 1fr;height:78px}
.tsw .half{padding:10px;display:flex;flex-direction:column;gap:6px;background:var(--pb)}
.tsw .half i{display:block;height:9px;width:60%;border-radius:6px;background:var(--pa)}
.tsw .half u{display:block;height:22px;border-radius:8px;background:var(--ps);border:1px solid var(--pl)}
.tsw b{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;font-size:.85rem}
.tsw b small{font-weight:600;color:var(--mute);font-size:.68rem}
.tv-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:559px){.tv-wrap{grid-template-columns:1fr}}
.tv{padding:16px;border-radius:20px;background:var(--bg);color:var(--text);border:1px solid var(--line)}
.tv .card{margin:0 0 12px;padding:14px}
.tv h3{font-size:.95rem;margin:0 0 6px}
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 14px}
.crow{display:flex;align-items:center;gap:8px}
.crow input[type=color]{width:42px;height:42px;padding:2px;border-radius:12px;flex:none;cursor:pointer}
.crow input[type=text]{min-width:0;font-family:ui-monospace,Menlo,monospace;font-size:.82rem}
/* selects must be exactly as tall as the inputs next to them */
select{line-height:1.6}
:where(input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file]):not([type=hidden]),select){height:var(--ctl-h,50px)}
.inline{--ctl-h:42px}

/* =====================================================================
   v17 EFFECT VARIANTS. Level (data-anim) x effect (data-fx). Every colour comes from the active theme, so effect and colour always match.
   ===================================================================== */
/* a long description next to a switch must never squeeze the switch itself */
.check .sw,.sw{flex:none;min-width:46px}
.check .sw{margin-top:1px}

/* ---------- MINIMAL (calm; nothing moves except where stated) ---------- */
/* still: nothing at all */
/* tint: a static, theme-coloured wash behind the page (the Aurora look without any motion) */
html[data-fx=tint] body::before{content:'';position:fixed;inset:-10%;z-index:-1;pointer-events:none;filter:blur(44px);
 background:radial-gradient(40% 38% at 14% 10%,rgba(var(--accent-rgb),.26),transparent 70%),radial-gradient(38% 36% at 90% 88%,color-mix(in srgb,var(--accent-2) 24%,transparent),transparent 70%)}
/* glow: a soft glow that only breathes in brightness (opacity), no movement */
html[data-fx=glow] body::before{content:'';position:fixed;left:50%;top:-14%;width:120%;height:60%;margin-left:-60%;z-index:-1;pointer-events:none;filter:blur(50px);
 background:radial-gradient(50% 60% at 50% 30%,rgba(var(--accent-rgb),.34),transparent 72%)}
html[data-anim=min][data-fx=glow] body::before{animation:glowbreath 7s ease-in-out infinite!important;animation-duration:7s!important;animation-iteration-count:infinite!important}
@keyframes glowbreath{0%,100%{opacity:.5}50%{opacity:1}}
/* fade: content just fades in while you scroll (no sliding) */
html[data-anim=min][data-fx=fade].js .reveal{opacity:0;transform:none;transition:opacity .7s ease!important;transition-duration:.7s!important}
html[data-anim=min][data-fx=fade].js .reveal.in{opacity:1}

/* ---------- NORMAL ---------- */
/* spotlight = the v14 Normal (cursor spotlight, lift, button shine): rules above. */
/* lift: hover lift + shine only (the spotlight is switched off above) */
/* neon: glowing neon outline on hover and softly pulsing primary buttons */
html[data-fx=neon] :is(.card,.kpi,.bitem,.lvcard,.hset,.ach,.tcard,.nextcard,.acceptcard,.pubfeat,.pubstep,.faq,.pod):hover{border-color:var(--accent)!important;box-shadow:0 0 0 1px var(--accent),0 0 26px rgba(var(--accent-rgb),.5)!important}
html[data-fx=neon] .btn:not(.ghost):not(.sm){animation:neonpulse 3.2s ease-in-out infinite}
@keyframes neonpulse{0%,100%{box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 0 0 0 rgba(var(--accent-rgb),0)}50%{box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 0 22px 2px rgba(var(--accent-rgb),.55)}}
/* drift: the backdrop slowly drifts (plus the cursor spotlight) */
html[data-fx=drift] body::before{content:'';position:fixed;inset:-20%;z-index:-1;pointer-events:none;filter:blur(46px);animation:drift 34s ease-in-out infinite alternate;
 background:radial-gradient(36% 40% at 20% 20%,rgba(var(--accent-rgb),.26),transparent 70%),radial-gradient(34% 38% at 80% 76%,color-mix(in srgb,var(--accent-2) 24%,transparent),transparent 70%)}
@keyframes drift{0%{transform:translate3d(-5%,-3%,0) scale(1)}100%{transform:translate3d(6%,5%,0) scale(1.14)}}

/* ---------- FULL scenes: static colour backdrops behind the animated canvas ---------- */
html[data-anim=full][data-fx=snow] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(var(--accent-rgb),.20),transparent 62%),radial-gradient(60% 40% at 50% 108%,color-mix(in srgb,var(--accent-2) 26%,transparent),transparent 70%)}
html[data-anim=full][data-fx=matrix] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% -10%,rgba(var(--accent-rgb),.16),transparent 62%)}
html[data-anim=full][data-fx=matrix] body::after{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:repeating-linear-gradient(to bottom,transparent 0 2px,rgba(0,0,0,.10) 3px)}
html[data-anim=full][data-fx=stars] body::before,html[data-anim=full][data-fx=waves] body::before{content:'';position:fixed;inset:-10%;z-index:-1;pointer-events:none;filter:blur(40px);
 background:radial-gradient(40% 36% at 15% 12%,rgba(var(--accent-rgb),.22),transparent 70%),radial-gradient(38% 34% at 88% 88%,color-mix(in srgb,var(--accent-2) 24%,transparent),transparent 70%)}
html[data-anim=full][data-fx=embers] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(70% 45% at 50% 108%,rgba(var(--accent-rgb),.34),transparent 72%)}
html[data-anim=full][data-fx=fireflies] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(90% 70% at 50% 50%,transparent 45%,rgba(0,0,0,.28)),radial-gradient(50% 40% at 50% 100%,rgba(var(--accent-rgb),.16),transparent 72%)}
html[data-anim=full][data-fx=bubbles] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(0deg,rgba(var(--accent-rgb),.22),transparent 55%)}
html[data-anim=full][data-fx=petals] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(60% 40% at 20% 0%,rgba(var(--accent-rgb),.22),transparent 70%),radial-gradient(50% 40% at 90% 20%,color-mix(in srgb,var(--accent-2) 18%,transparent),transparent 70%)}
html[data-anim=full][data-fx=rain] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.20),transparent 60%),radial-gradient(60% 30% at 50% 108%,rgba(var(--accent-rgb),.20),transparent 72%)}
/* grid: neon perspective grid floor + glowing sun */
html[data-anim=full][data-fx=grid] body::before{content:'';position:fixed;left:-35%;right:-35%;bottom:-8%;height:72%;z-index:-1;pointer-events:none;transform:perspective(520px) rotateX(64deg);transform-origin:center bottom;
 background:linear-gradient(rgba(var(--accent-rgb),.55) 1.5px,transparent 1.5px) 0 0/64px 64px,linear-gradient(90deg,rgba(var(--accent-rgb),.55) 1.5px,transparent 1.5px) 0 0/64px 64px;
 -webkit-mask-image:linear-gradient(transparent 5%,#000 70%);mask-image:linear-gradient(transparent 5%,#000 70%);animation:gridrun 3.4s linear infinite}
html[data-anim=full][data-fx=grid] body::after{content:'';position:fixed;left:50%;bottom:30%;width:560px;height:560px;margin-left:-280px;border-radius:50%;z-index:-1;pointer-events:none;filter:blur(8px);
 background:radial-gradient(circle,rgba(var(--accent-rgb),.34),color-mix(in srgb,var(--accent-2) 14%,transparent) 46%,transparent 70%);animation:sunpulse 7s ease-in-out infinite alternate}
@keyframes gridrun{to{background-position:0 64px,64px 0}}
@keyframes sunpulse{from{transform:scale(.92);opacity:.75}to{transform:scale(1.08);opacity:1}}
/* orbs: big floating light orbs */
html[data-anim=full][data-fx=orbs] body::before,html[data-anim=full][data-fx=orbs] body::after{content:'';position:fixed;inset:-30%;z-index:-1;pointer-events:none;filter:blur(54px)}
html[data-anim=full][data-fx=orbs] body::before{background:radial-gradient(26% 30% at 20% 30%,rgba(var(--accent-rgb),.5),transparent 70%),radial-gradient(22% 26% at 78% 22%,color-mix(in srgb,var(--accent-2) 46%,transparent),transparent 70%),radial-gradient(28% 32% at 66% 80%,color-mix(in srgb,var(--accent-3) 42%,transparent),transparent 70%);animation:orbs1 17s ease-in-out infinite alternate}
html[data-anim=full][data-fx=orbs] body::after{background:radial-gradient(20% 24% at 42% 66%,color-mix(in srgb,var(--accent-2) 38%,transparent),transparent 70%),radial-gradient(18% 22% at 90% 58%,rgba(var(--accent-rgb),.36),transparent 70%);animation:orbs2 23s ease-in-out infinite alternate}
@keyframes orbs1{0%{transform:translate3d(-6%,-4%,0) scale(1)}100%{transform:translate3d(8%,6%,0) scale(1.18)}}
@keyframes orbs2{0%{transform:translate3d(6%,5%,0) scale(1.1)}100%{transform:translate3d(-8%,-6%,0) scale(.92)}}

/* ---------- picker: effect chips (only the current level's list is shown) ---------- */
.tm-fxg{display:none;grid-template-columns:repeat(3,1fr);gap:6px;max-height:250px;overflow:auto;padding-right:2px}
html[data-anim=min] .tm-fxg[data-lvl=min],html[data-anim=normal] .tm-fxg[data-lvl=normal],html[data-anim=full] .tm-fxg[data-lvl=full]{display:grid}
.tm-fb{padding:8px 4px;border-radius:11px;border:1px solid var(--line);background:var(--surface-2);color:var(--mute);font:700 .7rem var(--font);cursor:pointer;transition:.2s;line-height:1.15}
.tm-fb:hover{color:var(--text);border-color:var(--accent)}
.tm-fb.auto{grid-column:1/-1}
.tm-fb[aria-pressed=true]{background:linear-gradient(135deg,var(--accent-2),var(--accent));color:var(--on-accent);border-color:transparent}

/* the two lane cards keep FIXED colours so they can never be mixed up, whatever theme is active */
.lane{border-left:5px solid var(--ok)}
.lane-admin{border-left-color:var(--warn)}

/* ===== admin: Isi saldo - ONE card, four sections (task / commission / bonus / frozen) ===== */
.fundgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:6px}
@media(max-width:1099px){.fundgrid{grid-template-columns:1fr 1fr}}
@media(max-width:639px){.fundgrid{grid-template-columns:1fr}}
.fundcol{padding:16px;border-radius:16px;background:var(--surface-2);border:1px solid var(--line);display:flex;flex-direction:column}
.fundcol h3{display:flex;align-items:center;gap:6px;flex-wrap:wrap;row-gap:4px;margin:0 0 4px;font-size:.9rem}
.fundcol h3 .tasknum{margin-left:auto;font-weight:800;color:var(--gold)}
.fundcol .sm{font-size:.78rem;margin:0 0 10px}
.fundcol-task{background:color-mix(in srgb,var(--gold) 8%,var(--surface-2))}
.fundcol form{margin-top:auto}

/* ===== level detail popup (opened by tapping a badge): big animated badge + staggered perks reveal ===== */
.lvmodalov{position:fixed;inset:0;z-index:220;display:grid;place-items:center;padding:20px;background:rgba(8,8,9,.68);backdrop-filter:blur(5px);opacity:0;pointer-events:none;transition:opacity .25s var(--ease)}
.lvmodalov.in{opacity:1;pointer-events:auto}
.lvmodalbox{position:relative;width:min(380px,100%);border-radius:22px;padding:28px 24px 24px;background:var(--surface);border:1px solid var(--line);box-shadow:0 40px 80px -24px rgba(0,0,0,.65);text-align:center;transform:translateY(18px) scale(.92);transition:transform .38s cubic-bezier(.2,1.4,.4,1)}
.lvmodalov.in .lvmodalbox{transform:none}
.lvmodalclose{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:var(--surface-2);color:var(--mute);display:grid;place-items:center;cursor:pointer}
.lvmodalclose:hover{color:var(--text)}
.lvmbadge{--s:96px;width:var(--s);height:var(--s);margin:0 auto 14px;position:relative}
.lvmbadge .lvb{width:100%;height:100%;--s:96px}
.lvmodalov.in .lvmbadge .lvb{animation:lvpop .55s cubic-bezier(.2,1.5,.4,1)}
@keyframes lvpop{0%{transform:scale(.4) rotate(-25deg)}60%{transform:scale(1.12) rotate(6deg)}100%{transform:scale(1) rotate(0)}}
.lvmbadge::after{content:'';position:absolute;inset:-14px;border-radius:50%;background:conic-gradient(from 0deg,transparent,color-mix(in srgb,var(--b1,var(--gold)) 65%,transparent),transparent 30%);opacity:0;animation:lvspin 2.6s linear infinite}
.lvmodalov.in .lvmbadge::after{opacity:.5;animation-delay:.3s}
@keyframes lvspin{to{transform:rotate(360deg)}}
.lvmname{font:800 1.35rem var(--font);margin:0 0 2px}
.lvmreq{color:var(--mute);font-size:.86rem;margin:0 0 4px}
.lvmstate{display:inline-flex;align-items:center;gap:5px;margin:6px 0 16px}
.lvmperks{list-style:none;margin:0;padding:0;text-align:left;display:flex;flex-direction:column;gap:10px}
.lvmperks li{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:13px;background:var(--surface-2);border:1px solid var(--line);opacity:0;transform:translateX(-10px)}
.lvmodalov.in .lvmperks li{animation:lvslide .45s var(--ease) forwards}
.lvmperks li:nth-child(1){animation-delay:.42s}.lvmperks li:nth-child(2){animation-delay:.52s}.lvmperks li:nth-child(3){animation-delay:.62s}
@keyframes lvslide{to{opacity:1;transform:none}}
.lvmperks .ic{flex:none;color:var(--gold)}
html[data-anim=min] .lvmbadge .lvb,html[data-anim=min] .lvmbadge::after,html[data-anim=min] .lvmperks li{animation:none!important;opacity:1;transform:none}
