/* ───────── Maple ID · design layer (loads after the app stylesheet) ───────── */
:root{
  --bg:var(--bg);--panel:var(--panel-solid);--line:color-mix(in srgb,var(--ink) 9%,transparent);
  --text:var(--text);--muted:var(--muted);--dim:var(--dim);
  --maple-red:#e0342f;--maple-deep:#7d1226;
  --soft:#ff6a3d24;
}
[data-theme=flame]{--maple-red:#e0342f}
[data-theme=cyber]{--maple-red:#3b6bff}
[data-theme=emerald]{--maple-red:#0e8a68}
[data-theme=sakura]{--maple-red:#d62a78}

body{
  background:
    radial-gradient(60% 45% at 88% -8%, color-mix(in oklab,var(--accent) 22%,transparent), transparent 70%),
    radial-gradient(50% 40% at -6% 96%, color-mix(in oklab,var(--maple-red) 20%,transparent), transparent 70%),
    var(--bg);
  background-attachment:fixed;
  transition:background .6s var(--ease);
}
html,body{overflow-x:clip}
main{position:relative;z-index:1}
.notfound h1,.claim-step h1{word-break:normal;overflow-wrap:anywhere}
.topbar{background:color-mix(in srgb,var(--bg) 72.2%,transparent)}
.grid-bg{opacity:.28}
.grain{opacity:.045}

/* leaf sprite + inline marks */
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.leaf-ico{width:1em;height:1em;fill:currentColor;flex:none}
.brand{gap:9px;letter-spacing:-.01em}
.brand .leaf-ico{width:26px;height:26px;fill:url(#leaf-grad);filter:drop-shadow(0 0 8px color-mix(in oklab,var(--accent) 55%,transparent))}
.brand b{font-weight:700}
.foot{display:flex;justify-content:center;align-items:center;gap:8px;letter-spacing:.06em;text-transform:none;font-size:12px}
.foot .leaf-ico{color:var(--accent);width:14px;height:14px}

/* buttons */
.btn-accent{
  background:linear-gradient(135deg,var(--accent) 0%,color-mix(in oklab,var(--accent) 62%,var(--maple-red)) 100%);
  border-color:transparent;color:var(--bg-2);font-weight:600;
  box-shadow:0 10px 28px -10px color-mix(in oklab,var(--accent) 80%,transparent),inset 0 1px 0 color-mix(in srgb,var(--ink) 25.1%,transparent);
}
.btn-accent:hover{border-color:transparent;transform:translateY(-1px);box-shadow:0 16px 34px -10px color-mix(in oklab,var(--accent) 90%,transparent),inset 0 1px 0 color-mix(in srgb,var(--ink) 33.3%,transparent)}
.btn:focus-visible,.claim input:focus-visible,.theme-pick button:focus-visible,a:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}

/* ───────── hero ───────── */
.maple-hero{grid-template-columns:1.12fr .88fr;gap:clamp(24px,5vw,72px);min-height:78vh;padding-top:clamp(0px,2vw,24px)}
.pill{
  display:inline-flex;align-items:center;gap:9px;width:fit-content;
  font-size:13px;color:var(--text);padding:7px 14px 7px 11px;border-radius:999px;
  background:linear-gradient(color-mix(in srgb,var(--ink) 5.1%,transparent),color-mix(in srgb,var(--ink) 2%,transparent));border:1px solid var(--line);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)
}
.pill .leaf-ico{color:var(--accent);width:16px;height:16px}
.maple-hero .hero-copy h1{font-size:clamp(40px,5vw,74px);line-height:.96;margin-top:22px;letter-spacing:-.04em}
.maple-hero .hero-copy h1 .grad{
  background:linear-gradient(100deg,var(--accent-2) 0%,var(--accent) 48%,var(--maple-red) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;display:inline-block;padding-bottom:.06em
}
.maple-hero .lede{max-width:44ch;font-size:clamp(16px,1.6vw,18px)}

.claim{
  max-width:520px;gap:2px;padding:6px 6px 6px 16px;border-radius:18px;
  background:linear-gradient(color-mix(in srgb,var(--ink) 3.9%,transparent),color-mix(in srgb,var(--ink) 1.6%,transparent)),color-mix(in srgb,var(--bg) 85.1%,transparent);
  border:1px solid color-mix(in srgb,var(--ink) 12.2%,transparent);box-shadow:0 24px 50px -28px #000,inset 0 1px 0 color-mix(in srgb,var(--ink) 6.3%,transparent);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)
}
.claim:focus-within{border-color:var(--accent);box-shadow:0 0 0 4px color-mix(in oklab,var(--accent) 18%,transparent),0 24px 50px -28px #000}
.claim-ico{color:var(--accent);width:20px;height:20px;margin-right:8px}
.claim label{color:var(--muted)}
.claim input{color:var(--text);font-weight:500}
.claim-note{color:var(--dim);font-size:13px;margin-top:2px}
.hero-cta{margin-top:4px}

/* stage: leaf + live card */
.stage{position:relative;min-width:0;display:grid;justify-items:center;gap:18px;isolation:isolate}
.stage-leaf{
  position:absolute;z-index:-1;width:min(150%,760px);left:50%;top:44%;
  transform:translate(-50%,-50%) rotate(12deg);overflow:visible;pointer-events:none
}
.stage:before{content:"";position:absolute;z-index:-2;inset:6% -8% 0;border-radius:50%;
  background:radial-gradient(closest-side,color-mix(in oklab,var(--maple-red) 38%,transparent),transparent);filter:blur(30px)}
.stage-leaf .leaf-body{fill:url(#leaf-grad-deep);opacity:.88}
.stage-leaf .leaf-veins{
  fill:none;stroke:#ffd9b0;stroke-opacity:.34;stroke-width:.55;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:1;stroke-dashoffset:1;animation:vein-draw 2.6s .5s var(--ease) forwards
}
@keyframes vein-draw{to{stroke-dashoffset:0}}
.hero-card{
  width:100%;max-width:420px;animation:none;
  transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) rotate(-1.5deg);
  transition:transform .35s var(--ease);will-change:transform
}
.hero-card .card-page{gap:12px}
.hero-card .idcard{background:linear-gradient(160deg,var(--panel-solid),var(--panel-solid));box-shadow:0 40px 90px -34px #000,0 0 0 1px color-mix(in srgb,var(--ink) 5.1%,transparent),inset 0 1px 0 color-mix(in srgb,var(--ink) 7.1%,transparent)}
.hero-card .tile{background:color-mix(in srgb,var(--panel-solid) 90.2%,transparent)}
.theme-pick{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted)}
.theme-pick .sw{display:flex;gap:8px}
.theme-pick button{
  width:30px;height:30px;border-radius:50%;border:2px solid transparent;
  background:linear-gradient(135deg,var(--c1),var(--c2));
  box-shadow:0 0 0 1px var(--line);transition:transform .2s var(--ease),border-color .2s
}
.theme-pick button:hover{transform:scale(1.12)}
.theme-pick button[aria-pressed=true]{border-color:var(--text);box-shadow:0 0 0 3px color-mix(in oklab,var(--c1) 35%,transparent)}

/* game ticker */
.ticker{margin:clamp(28px,5vw,56px) calc(-1*clamp(16px,4vw,48px));overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.ticker-track{display:flex;gap:12px;width:max-content;animation:tick 48s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker span{display:inline-flex;align-items:center;gap:9px;padding:9px 16px;border-radius:999px;border:1px solid var(--line);background:color-mix(in srgb,var(--ink) 2.4%,transparent);color:var(--muted);font-size:14px;white-space:nowrap}
.ticker span i{color:var(--accent);font-size:12px}
@keyframes tick{to{transform:translateX(-50%)}}

/* section heads */
.sec-head{max-width:760px;margin:clamp(56px,9vw,112px) 0 28px}
.sec-head h2{text-wrap:balance;font-family:var(--display);font-size:clamp(30px,4.6vw,52px);letter-spacing:-.035em;line-height:1;font-weight:700}
.sec-head p{color:var(--muted);margin-top:14px;max-width:48ch;line-height:1.6}

/* steps: a real sequence, joined by a vein */
.steps{background:none;border:0;border-radius:0;gap:clamp(14px,2vw,28px);margin:0;overflow:visible;position:relative;counter-reset:s}
.steps:before{content:"";position:absolute;left:6%;right:6%;top:30px;height:1px;background:linear-gradient(90deg,transparent,var(--accent) 30%,var(--accent-2) 70%,transparent);opacity:.45}
.steps>div{background:linear-gradient(color-mix(in srgb,var(--ink) 3.1%,transparent),color-mix(in srgb,var(--ink) 1.2%,transparent));border:1px solid var(--line);border-radius:22px;padding:22px 22px 26px;position:relative;counter-increment:s}
.steps>div:before{
  content:counter(s);display:grid;place-items:center;width:34px;height:34px;border-radius:50%;
  font-family:var(--display);font-weight:700;font-size:15px;color:var(--bg-2);
  background:linear-gradient(135deg,var(--accent-2),var(--accent));margin-bottom:18px;
  box-shadow:0 0 0 6px var(--bg),0 0 22px color-mix(in oklab,var(--accent) 50%,transparent)
}
.steps h3{margin:0 0 8px;font-size:22px;letter-spacing:-.02em}
.steps p{color:var(--muted)}

/* features: uneven bento, sized by importance */
.bento{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:minmax(150px,auto);gap:14px}
.bx{position:relative;overflow:hidden;border-radius:24px;padding:24px;border:1px solid var(--line);background:linear-gradient(160deg,color-mix(in srgb,var(--ink) 3.5%,transparent),color-mix(in srgb,var(--ink) 0.8%,transparent)),var(--panel);display:flex;flex-direction:column;gap:8px;min-width:0}
.bx h3{font-family:var(--display);font-size:clamp(19px,2vw,24px);letter-spacing:-.02em;line-height:1.1}
.bx p{color:var(--muted);font-size:14px;line-height:1.55;max-width:40ch}
.bx>i.big{position:absolute;right:-8px;bottom:-14px;font-size:104px;color:var(--accent);opacity:.1;transform:rotate(-10deg)}
.b-copy{grid-column:1/4;grid-row:1/3;background:linear-gradient(160deg,color-mix(in oklab,var(--accent) 16%,var(--panel-solid)),var(--panel-solid) 62%)}
.b-qr{grid-column:4/7;grid-row:1}
.b-save{grid-column:4/7;grid-row:2}
.b-time,.b-shop,.b-support{grid-column:span 2}
.b-themes{grid-column:1/7}
.toast-demo{margin-top:auto;display:grid;gap:10px}
.fake-tile{display:flex;align-items:center;gap:12px;padding:14px;border-radius:16px;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 70.2%,transparent)}
.fake-tile .ico{width:38px;height:38px;border-radius:11px;background:var(--soft);color:var(--accent);display:grid;place-items:center}
.fake-tile b{display:block;font-size:14px}.fake-tile small{font-family:var(--mono);font-size:12px;color:var(--muted)}
.fake-tile .go{margin-left:auto;font-size:12px;color:var(--accent-2);border:1px solid var(--line);padding:5px 10px;border-radius:999px}
.fake-toast{align-self:start;display:inline-flex;gap:8px;align-items:center;font-size:13px;font-weight:500;padding:10px 14px;border-radius:12px;background:var(--text);color:var(--bg);animation:toast-loop 6s var(--ease) infinite}
@keyframes toast-loop{0%,18%{opacity:0;transform:translateY(8px)}28%,78%{opacity:1;transform:none}90%,100%{opacity:0;transform:translateY(-4px)}}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}
.chips span{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);font-size:13px;color:var(--text);background:color-mix(in srgb,var(--ink) 2.4%,transparent)}
.chips i.dot{width:10px;height:10px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2))}
.live{display:inline-flex;align-items:center;gap:8px;margin-top:auto;font-family:var(--mono);font-size:13px;color:var(--good)}
.live i{width:8px;height:8px;border-radius:50%;background:var(--good);box-shadow:0 0 10px var(--good)}

/* join (auth) */
.join{display:grid;grid-template-columns:1fr minmax(0,440px);gap:clamp(24px,6vw,80px);align-items:center;margin-top:clamp(56px,9vw,112px)}
.join-copy h2{font-family:var(--display);font-size:clamp(34px,5vw,60px);letter-spacing:-.04em;line-height:.98}
.join-copy p{color:var(--muted);margin-top:16px;max-width:38ch;line-height:1.6}
.join-copy .leaf-ico{width:44px;height:44px;color:var(--accent);margin-bottom:18px;filter:drop-shadow(0 0 16px color-mix(in oklab,var(--accent) 60%,transparent))}
.auth{margin:0;max-width:none;width:100%;background:linear-gradient(160deg,color-mix(in srgb,var(--ink) 3.9%,transparent),color-mix(in srgb,var(--ink) 1.2%,transparent)),#140d0e;border-color:color-mix(in srgb,var(--ink) 12.2%,transparent);box-shadow:0 40px 80px -40px #000}
.auth-tabs{background:var(--bg)}
.auth-tabs [aria-selected=true]{background:#241717}

/* leaf canvas */
#maple-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}

@media (width<=980px){
  .bento{grid-auto-rows:auto}
  .b-copy,.b-qr,.b-save,.b-themes{grid-column:1/7;grid-row:auto}
  .b-time,.b-shop,.b-support{grid-column:span 2}
}
@media (width<=860px){
  .maple-hero{grid-template-columns:1fr;min-height:0}
  .stage{margin-top:12px}.stage-leaf{width:135%;top:40%}
  .join{grid-template-columns:1fr}
  .steps:before{display:none}
}
@media (width<=520px){
  .bx{padding:20px}.b-time,.b-shop,.b-support{grid-column:1/7}
  .claim{padding:12px;gap:8px}.claim-ico{display:none}
  .claim .btn{width:100%}
  .nav-link[href="/maple"]{display:none}
  .theme-pick{flex-wrap:wrap;justify-content:center}
}
@media (prefers-reduced-motion:reduce){
  .stage-leaf .leaf-veins{stroke-dashoffset:0}
  .fake-toast{animation:none;opacity:1}
  .hero-card{transform:none}
}

/* ───────── performance: no always-on repaint animations ───────── */
.support{animation:none}
.card-page>.support{animation:card-reveal .65s var(--ease) both}
.idcard-banner:after{animation:none}
.idcard-banner:hover:after{animation:banner-sweep 1.2s var(--ease) 1}
@media (pointer:coarse){.grid-bg:before{animation:none}}
