/* NEOMARS MINT · mint.css (26 set 12026).
   Linguaggio visivo del sito Ryodan V2 (off-black, B/N + solo rosso, finestre fwin,
   glitch RGB, fondo con grana/CRT) replicato qui in modo AUTONOMO: nessun file del V2
   viene toccato, l'integrazione arriva alla fine. */
@font-face{ font-family:"Noto Sans JP"; src:url("../assets/fonts/NotoSansJP-sub.woff2") format("woff2"); font-weight:400 700; font-display:swap; }

:root{
  --screen-bg:#181818;
  --grid-size:104px;
  --grid-alpha:0;
  --grain-alpha:0.025;
  --red:#e6332a;
  --bar:44px;
}
*{ margin:0; padding:0; box-sizing:border-box; }
html,body{ height:100%; }
body{
  background:#000;
  font-family:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;
  overflow:hidden;
  -webkit-user-select:none; user-select:none;
}
.device{ position:fixed; inset:0; }
.screen{ position:relative; width:100%; height:100%; background:var(--screen-bg); overflow:hidden; }
.layer-grid{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background-image:
    linear-gradient(to right,  rgba(255,255,255,var(--grid-alpha)) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,var(--grid-alpha)) 1px, transparent 1px);
  background-size:var(--grid-size) var(--grid-size);
}
.layer-grain{
  position:absolute; inset:0; z-index:40; pointer-events:none;
  opacity:var(--grain-alpha);
  background-repeat:repeat; background-size:512px 512px;
}

/* ---------- barra di sistema (minimale: kanji + nome terminale + anno HE) ---------- */
.sysbar{
  position:absolute; left:0; right:0; top:0; height:var(--bar); z-index:30;
  background:#000; border-bottom:1px solid #2a2a2a;
  display:flex; justify-content:space-between; align-items:stretch;
  font-size:11px; font-weight:700; letter-spacing:.22em; color:#fff;
}
.sb-left, .sb-right{ display:flex; align-items:stretch; }
.sb-id{ display:flex; align-items:center; padding:0 12px 0 14px; }
.sb-id .kj{
  font-family:"Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif;
  font-size:15px; font-weight:700; background:var(--red); color:#000;
  padding:7px 8px 6px; letter-spacing:.04em; line-height:1;
}
.sb-name{ display:flex; align-items:center; padding:0 10px; color:#fff; }
.sb-name b{ color:#9a9a9a; font-weight:400; margin-left:10px; }
.sb-clock{ display:flex; align-items:center; padding:0 18px; color:#555; letter-spacing:.3em; font-weight:400; }
.labgo{
  position:fixed; bottom:14px; z-index:99; cursor:pointer; text-decoration:none;
  font-size:10px; font-weight:400; letter-spacing:.22em; color:#8a8a8a; padding:8px 12px;
  border:1px dashed #3a3a3a; background:rgba(0,0,0,.7);
}
.labgo:hover{ color:#fff; border-color:#8a8a8a; }

/* ---------- timeline delle fasi ---------- */
.phases{
  position:absolute; top:calc(var(--bar) + 16px); left:50%; transform:translateX(-50%);
  z-index:16; display:flex; gap:8px;
}
.pblock{
  display:flex; flex-direction:column; align-items:center; gap:4px;
  border:1px solid #4a4a4a; padding:6px 14px; white-space:nowrap;
  font-size:10px; font-weight:700; letter-spacing:.22em; color:#8a8a8a;
  background:rgba(0,0,0,.35);
}
.pb-top{ display:flex; align-items:center; gap:9px; }
/* prezzi sotto le fasi, più leggibili (Gigio, 27 set) */
.pb-price{ font-size:12px; font-weight:700; letter-spacing:.1em; color:#e8e8e8; }
.pblock.live .pb-price{ color:#000; }
.pblock.done .pb-price{ color:#4a4a4a; }
.pb-cap{ font-size:9.5px; font-weight:400; letter-spacing:.16em; color:#9a9a9a; }
.pblock.live .pb-cap{ color:#333; }
.pblock.done .pb-cap{ color:#3a3a3a; }
.pblock i{ font-style:normal; font-weight:400; color:#555; }
.pblock.live{ border-color:#fff; background:#fff; color:#000; }
.pblock.live i{ color:var(--red); }
.pblock.done{ border-color:#2e2e2e; color:#4a4a4a; text-decoration:line-through; }
.pblock.done i{ color:#3a3a3a; text-decoration:none; }
.parrow{ align-self:center; color:#bdbdbd; font-size:20px; font-weight:700; line-height:1; padding:0 2px; }
/* ACCESSO: GTD o FCFS deve saltare all'occhio (Gigio, 6 ott). Stesso codice nei blocchi, nelle righe orarie e
   nella fase in corso: GTD rosso pieno · FCFS bordo bianco · PUBLIC grigio, sempre con la parola accanto */
.acc{ display:inline-block; font-size:10px; font-weight:700; letter-spacing:.14em; padding:3px 7px; line-height:1.2; text-decoration:none; white-space:nowrap; }
.acc.gtd{ background:var(--red); color:#000; border:1px solid var(--red); }
.acc.fcfs{ background:transparent; color:#fff; border:1px solid #fff; }
.acc.pub{ background:transparent; color:#9a9a9a; border:1px solid #5a5a5a; }
.pb-acc{ display:flex; flex-direction:column; align-items:center; gap:3px; text-decoration:none; }
.accw{ font-size:9px; font-weight:700; letter-spacing:.14em; }
.accw.gtd{ color:var(--red); } .accw.fcfs{ color:#fff; } .accw.pub{ color:#8a8a8a; }
.pblock.live .acc.fcfs{ color:#000; border-color:#000; } .pblock.live .accw.fcfs{ color:#000; }
.pblock.live .acc.pub{ color:#555; border-color:#888; } .pblock.live .accw.pub{ color:#555; }
.pblock.done .pb-acc{ opacity:.35; }
.schr .nm{ display:flex; align-items:center; gap:6px; white-space:nowrap; }
.schr .nm .acc{ font-size:8px; padding:1px 4px; letter-spacing:.08em; }
.schr.done .nm .acc{ opacity:.4; }
.mrow .v.accv.gtd, .acct.gtd{ color:var(--red); } .mrow .v.accv.fcfs, .acct.fcfs{ color:#fff; } .mrow .v.accv.pub, .acct.pub{ color:#9a9a9a; }

/* ---------- finestra della macchina ---------- */
.fwin{
  position:absolute; z-index:20; width:420px;
  left:50%; top:50%; transform:translate(-50%, -46%);
  background:#fff; padding:1px;
  clip-path:polygon(0 0, 100% 0, 100% 100%, 24px 100%, 0 calc(100% - 24px));
  filter:drop-shadow(0 12px 30px rgba(0,0,0,.8));
}
.fwin .fbar{
  display:flex; justify-content:space-between; align-items:center;
  background:#fff; color:#000; padding:6px 6px 6px 12px;
  font-size:9px; font-weight:700; letter-spacing:.24em;
}
.fwin .fbar .flight{ width:7px; height:7px; background:var(--red); margin-right:6px; }
.fwin .fbody{
  background:#050505; padding:0;
  clip-path:polygon(0 0, 100% 0, 100% 100%, 23px 100%, 0 calc(100% - 23px));
  overflow:hidden;
}
.fwin .fpad{ padding:16px 18px 18px; }

/* righe dati della macchina */
.mrow{ display:flex; justify-content:space-between; align-items:baseline; margin:7px 0; font-size:10px; letter-spacing:.2em; color:#8a8a8a; }
.mrow .v{ color:#fff; font-weight:700; font-size:12px; letter-spacing:.14em; }
.mrow .v em{ font-style:normal; color:var(--red); }
.mrow .v.dim{ color:#666; }
.mcounter{ font-size:22px; font-weight:700; color:#fff; letter-spacing:.1em; }
.mcounter small{ font-size:11px; color:#8a8a8a; font-weight:400; letter-spacing:.2em; }
.pbar{ height:7px; background:#1f1f1f; border:1px solid #2e2e2e; margin:calc(var(--npb, 48px) - 6px) 0 14px; position:relative; }
/* Nitro pixel: sheet di 4 fotogrammi, misure e ancore date da mint-nitro.js per la proposta scelta
   (--nw/--nh fotogramma, --nsheet striscia intera, --nml-* spostamenti), piedi sulla punta della barra.
   Stati: run di profilo (fasi live) · sleep (pre, a sinistra) · party (sold out, in fondo) · sad (niente sold out) */
.nitro{
  position:absolute; bottom:calc(100% + 1px); margin-left:var(--nml-run);
  width:var(--nw); height:var(--nh); pointer-events:none;
  background-image:var(--nitro-run); background-size:var(--nsheet) var(--nh); background-repeat:no-repeat;
  image-rendering:pixelated; image-rendering:crisp-edges;
  animation:nrun var(--nrun-dur, .48s) steps(4) infinite;
}
.nitro.sleep{ background-image:var(--nitro-sleep); margin-left:var(--nml-sleep); animation-duration:2.6s; }
.nitro.party{ background-image:var(--nitro-party); margin-left:var(--nml-party); animation:nrun .6s steps(4) infinite, njump .3s ease-out infinite alternate; }
.nitro.party.mid{ margin-left:var(--nml-run); }   /* festa dopo un mint riuscito: resta dov'è sulla barra */
.nitro.sad{ background-image:var(--nitro-sad); animation-duration:2.4s; }
/* durante la transazione (firma e attesa): MANGIA (scelta definitiva) */
.nitro.tx-eat{ background-image:var(--nitro-eat); animation-duration:1.6s; }
/* LA BIRRA DI NITRO (Gigio, 6 ott): la stessa bottiglia del sito account (vetro nero, tappo argento, N bianca),
   pixel a 2x come Nitro. In piedi in fondo alla barra fino al sold out · inclinata alla bocca mentre la beve
   (sorsi di un pixel) · coricata, vuota, mentre lui festeggia. Al sold out Nitro si sposta di 12 px a sinistra
   così bottiglia e braccio restano dentro la finestra. */
.nitro.drink{ background-image:var(--nitro-drink, var(--nitro-party)); margin-left:var(--nml-party); animation-duration:.5s; }
.nitro.end{ margin-left:calc(var(--nml-party) - 12px); }
.nbeer{ position:absolute; pointer-events:none; background-repeat:no-repeat; background-size:100% 100%; image-rendering:pixelated; image-rendering:crisp-edges; }
.nbeer.stand{ left:calc(100% + 1px); bottom:calc(100% + 1px); width:14px; height:34px; background-image:url(../assets/beer/beer-stand.png); }
.nbeer.drink{ left:calc(100% - 18px); bottom:calc(100% + 19px); width:34px; height:34px; background-image:url(../assets/beer/beer-drink.png); animation:ngulp .5s steps(1) infinite; }
.nbeer.empty{ left:calc(100% - 16px); bottom:calc(100% + 1px); width:34px; height:14px; background-image:url(../assets/beer/beer-empty.png); }
@keyframes ngulp{ 50%{ transform:translateY(2px); } }
@keyframes nrun{ from{ background-position:0 0; } to{ background-position:calc(-1 * var(--nsheet)) 0; } }
@keyframes njump{ from{ transform:translateY(0); } to{ transform:translateY(-8px); } }
.pfill{ position:absolute; left:0; top:0; bottom:0; background:#e8e8e8; }
.pfill::after{ content:""; position:absolute; right:-1px; top:0; bottom:0; width:3px; background:var(--red); animation:ptick 1.6s steps(2) infinite; }
@keyframes ptick{ 50%{ opacity:.2; } }
.mdiv{ height:1px; background:#242424; margin:13px 0; }

/* le 3 linee temporali nel popup */
.sched{ border:1px solid #242424; padding:9px 13px 9px; margin:2px 0 10px; }
.schday{ font-size:9.5px; letter-spacing:.3em; color:#8a8a8a; margin-bottom:6px; }
.schr{
  display:flex; align-items:baseline; gap:9px; padding:7px 0;
  font-size:12.5px; font-weight:700; letter-spacing:.1em; color:#c8c8c8;
  border-top:1px solid #1c1c1c;
}
.schr i{ font-style:normal; font-weight:400; font-size:10px; color:#666; }
.schr .nm{ min-width:96px; }
.schr .tm{ color:#e8e8e8; font-weight:400; letter-spacing:.06em; }
.schr .du{ margin-left:auto; font-size:9.5px; color:#9a9a9a; border:1px solid #333; padding:2px 6px; font-weight:400; }
.schr .st{ font-size:10px; letter-spacing:.18em; color:#666; min-width:44px; text-align:right; white-space:nowrap; }
.schr .st.ok{ color:var(--red); font-weight:700; }
.schr .st.no{ color:#666; }
.schr.live{ color:#fff; }
.schr.live i, .schr.live .st{ color:var(--red); }
.schr.live .st{ animation:ptick 1.6s steps(2) infinite; }
.schr.live .tm{ color:#fff; }
.schr.done{ color:#4a4a4a; }
.schr.done .tm, .schr.done i{ color:#3a3a3a; }
.schr.done .nm{ text-decoration:line-through; }

/* scadenza on-chain nel riquadro orari (v2) */
.sdead{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap; border-top:1px solid #242424; margin-top:7px; padding-top:7px; font-size:9.5px; letter-spacing:.24em; color:#8a8a8a; }
.sdead b{ color:#fff; letter-spacing:.12em; font-size:10.5px; }
.sdeadn{ font-size:8.5px; letter-spacing:.18em; color:#666; line-height:1.8; margin-top:3px; }
/* avvisi: RPC non raggiungibile, errori di connessione, ricerca chiavi fallita */
.mwarn{ border:1px solid var(--red); color:#d9d9d9; font-size:9px; letter-spacing:.18em; line-height:1.8; padding:7px 10px; margin:8px 0; word-break:break-word; }
.mwarn b{ color:var(--red); }
/* indirizzo per refundTo */
.txbox .rto{ display:block; width:100%; box-sizing:border-box; margin:8px 0; padding:9px 10px; background:#0b0b0b; border:1px solid #333; color:#fff; font:inherit; font-size:11px; letter-spacing:.06em; }
.txbox .rto:focus{ outline:none; border-color:#fff; }
.txbox .rto.bad{ border-color:var(--red); }
.mstat{ font-size:10px; letter-spacing:.22em; color:#9a9a9a; line-height:1.9; }
.mstat b{ color:#fff; }
.mstat em{ font-style:normal; color:var(--red); font-weight:700; }
.mstat.big{ font-size:12px; line-height:2.1; }
.mnote{ font-size:8.5px; letter-spacing:.2em; color:#5a5a5a; line-height:1.9; margin-top:10px; }
.mnote i{ font-style:normal; color:var(--red); }

/* countdown PRE-MINT */
.cdown{ display:flex; gap:10px; justify-content:center; margin:14px 0 6px; }
.cdown .cell{ text-align:center; }
.cdown .n{ font-size:26px; font-weight:700; color:#fff; letter-spacing:.06em; }
.cdown .l{ font-size:7.5px; letter-spacing:.28em; color:#666; margin-top:3px; }

/* wallet + stepper + tasti */
.wchip{
  display:flex; align-items:center; gap:9px; margin:2px 0 4px;
  font-size:10px; letter-spacing:.16em; color:#ddd;
}
.wchip .dot{ width:7px; height:7px; background:var(--red); animation:ptick 2.2s ease-in-out infinite; }
.wchip .addr{ color:#fff; font-weight:700; }
.wchip .out{ margin-left:auto; font-size:8px; color:#666; letter-spacing:.24em; cursor:pointer; }
.wchip .out:hover{ color:#fff; }

.qtyrow{ display:flex; align-items:stretch; gap:8px; margin:14px 0; }
.qbtn{
  width:38px; display:flex; align-items:center; justify-content:center;
  border:1px solid #fff; color:#fff; font-size:15px; font-weight:700; cursor:pointer;
}
.qbtn:hover{ background:#fff; color:#000; }
.qbtn.dis{ border-color:#333; color:#333; cursor:default; }
.qbtn.dis:hover{ background:transparent; color:#333; }
.qval{
  flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
  border:1px solid #2e2e2e; padding:6px 0;
}
.qval .n{ font-size:20px; font-weight:700; color:#fff; }
.qval .l{ font-size:7.5px; letter-spacing:.26em; color:#666; margin-top:2px; }
.qmax{ width:52px; font-size:9px; letter-spacing:.2em; }

.bigbtn{
  display:block; width:100%; text-align:center; cursor:pointer;
  border:1px solid #fff; color:#fff; background:transparent;
  font-family:inherit; font-size:12px; font-weight:700; letter-spacing:.3em;
  padding:13px 0; margin-top:6px;
}
.bigbtn:hover{ background:#fff; color:#000; }
.bigbtn.red{ background:var(--red); border-color:var(--red); color:#000; }
.bigbtn.red:hover{ background:#fff; border-color:#fff; }
.bigbtn.dis, .bigbtn.dis:hover{ background:transparent; border-color:#333; color:#444; cursor:default; }

/* transazione */
.txbox{ text-align:center; padding:6px 0 2px; }
.txbox .t{ font-size:13px; font-weight:700; letter-spacing:.26em; color:#fff; margin-bottom:10px; }
.txbox .t em{ font-style:normal; color:var(--red); }
.txbox .sub{ font-size:9px; letter-spacing:.22em; color:#8a8a8a; line-height:2; }
.txbox .ids{ font-size:10px; color:#fff; letter-spacing:.14em; margin-top:8px; word-break:break-all; line-height:1.9; }
.txbox .txlink{ display:inline-block; margin:8px 0 2px; font-size:9px; letter-spacing:.22em; color:#fff; text-decoration:none; border-bottom:1px solid var(--red); padding-bottom:2px; }
.txbox .txlink:hover, .txbox .txlink:focus-visible{ color:var(--red); }
.txspin{ font-size:16px; color:var(--red); letter-spacing:.3em; margin:8px 0; min-height:20px; }

/* claim grandi (soldout / refund) */
.bigclaim{ font-size:30px; font-weight:700; letter-spacing:.16em; color:var(--red); text-align:center; margin:10px 0 12px; text-shadow:0 0 22px rgba(230,51,42,.45); }
.bigclaim.wh{ color:#fff; text-shadow:none; }

/* ---------- finestra di condivisione dopo il mint (passaparola) ---------- */
.shareov{
  position:absolute; inset:0; z-index:36; background:rgba(0,0,0,.72);
  display:flex; align-items:center; justify-content:center;
}
.fwin.sharewin{ position:relative; left:auto; top:auto; transform:none; width:min(92vw, 560px); }
/* chiusura finestra classica: quadrato nero con la X, rosso al passaggio */
.fx{ position:relative; width:22px; height:22px; background:#000; cursor:pointer; flex:0 0 auto; margin-left:14px; }
.fx:hover{ background:var(--red); }
.fx i{ position:absolute; left:5px; right:5px; top:50%; height:2px; background:#fff; }
.fx .xa{ transform:translateY(-50%) rotate(45deg); }
.fx .xb{ transform:translateY(-50%) rotate(-45deg); }
/* Nitro che festeggia: stessa misura della barra, in piedi sul bordo superiore della finestra, a sinistra
   (Gigio, 27 set). Fratello della finestra, così il ritaglio della finestra non lo taglia */
.sharestage{ position:relative; }
.sharenitro{
  position:absolute; bottom:calc(100% - 1px); left:28px; pointer-events:none; z-index:2;
  width:var(--nw); height:var(--nh);
  background-image:var(--nitro-party); background-size:var(--nsheet) var(--nh); background-repeat:no-repeat;
  image-rendering:pixelated; image-rendering:crisp-edges;
  animation:nrun .6s steps(4) infinite, njump .3s ease-out infinite alternate;
}
.sharehead{ font-size:12px; font-weight:700; letter-spacing:.22em; color:#fff; text-align:center; margin:2px 0 14px; line-height:1.8; }
.sharehead em{ font-style:normal; color:var(--red); }
.shareimg{
  width:min(100%, 50vh); aspect-ratio:1/1; margin:0 auto; position:relative;
  background:#0a0a0a; border:1px solid #2e2e2e; display:flex; align-items:center; justify-content:center;
}
.shareimg img{ width:100%; height:100%; display:block; }
.sharewait{ font-size:10px; letter-spacing:.24em; color:#666; }
/* tasti lunghi DOWNLOAD e SHARE ON X: bianchi, rossi solo al passaggio (Gigio, 28 set), angoli tagliati, pittogramma pixel */
.dlbtn{
  display:flex; align-items:center; gap:14px; width:100%; margin-top:14px; padding:15px 18px;
  background:#fff; color:#000; border:0; cursor:pointer;
  font-family:inherit; font-size:13px; font-weight:700; letter-spacing:.3em;
  clip-path:polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
  background-image:repeating-linear-gradient(90deg, transparent 0 7px, rgba(0,0,0,.07) 7px 8px);
}
.dlbtn:hover, .dlbtn:focus-visible{ background-color:var(--red); outline:none; }
.dlbtn svg{ flex:0 0 auto; }
.dlbtn b{ margin-left:auto; font-size:9px; font-weight:400; letter-spacing:.2em; border:1px solid #000; padding:3px 7px; }
/* SHARE ON X: sotto DOWNLOAD, con la spiegazione dentro */
.dlbtn.xbtn{ margin-top:8px; text-decoration:none; box-sizing:border-box; }
.xlab{ display:flex; flex-direction:column; gap:7px; min-width:0; }
/* la spiegazione dentro il tasto: deve leggersi bene (Gigio, 28 set) */
.xlab small{ font-size:10.5px; font-weight:700; letter-spacing:.1em; line-height:1.55; color:#222; }
kbd{ font-family:inherit; font-size:.95em; font-weight:700; background:#000; color:#fff; padding:1px 6px; letter-spacing:.08em; }
.dlbtn.xbtn b{ align-self:flex-start; white-space:nowrap; }
.mnote kbd{ background:#bdbdbd; color:#000; }
@media (max-width: 480px){
  .dlbtn{ letter-spacing:.2em; }
  .dlbtn b{ display:none; }
}

/* ---------- MIA apre gli occhi dopo il mint (mint-mia.js) ----------
   Stessa regia e stessi keyframe del gioco Gatebreaker (ryodan-account account-ui.css .acgmia*): davanti alla finestra,
   sotto grana e linee CRT (40); il contenitore è in fusione "schermo" e trema al posto del velo del gioco.
   Il glitch del caricamento sta sopra tutto tranne la grana (37). Quadrato ancorato in basso, mai deformato. */
.nmmia{ position:absolute; inset:0; z-index:34; mix-blend-mode:screen; pointer-events:none; overflow:hidden; }   /* davanti a finestra (20) e barra (30), dietro grana e CRT (40) */
.nmmia-v{ position:absolute; bottom:0; transform:translateX(-50%); mix-blend-mode:screen; object-fit:contain; background:transparent; pointer-events:none; }
.nmmia-load{ position:absolute; inset:0; width:100%; height:100%; z-index:37; pointer-events:none; }
.nmmia-in{ animation:nmmiain .62s steps(12) both; }
.nmmia-out{ animation:nmmiaout .52s steps(10) both; }
.nmmia-ghost{ opacity:.95; }
.nmmia-r{ filter:grayscale(1) sepia(1) saturate(9) hue-rotate(-35deg) brightness(1.25); animation:nmghr .6s steps(10) both; }
.nmmia-c{ filter:grayscale(1) sepia(1) saturate(9) hue-rotate(140deg) brightness(1.25); animation:nmghc .6s steps(10) both; }
.nmmia-q.nmmia-r{ animation:nmghr .22s steps(4) both; } .nmmia-q.nmmia-c{ animation:nmghc .22s steps(4) both; }
@keyframes nmghr{ 0%{ transform:translateX(-38%); opacity:.95; } 20%{ transform:translateX(-63%) skewX(10deg); } 40%{ transform:translateX(-42%); } 60%{ transform:translateX(-57%); } 80%{ transform:translateX(-47%); } 100%{ transform:translateX(-50%); opacity:0; } }
@keyframes nmghc{ 0%{ transform:translateX(-62%); opacity:.95; } 20%{ transform:translateX(-37%) skewX(-10deg); } 40%{ transform:translateX(-58%); } 60%{ transform:translateX(-43%); } 80%{ transform:translateX(-53%); } 100%{ transform:translateX(-50%); opacity:0; } }
@keyframes nmmiain{
  0%{ opacity:1; clip-path:inset(46% 0 46% 0); transform:translateX(-64%) skewX(-22deg) scaleY(1.4); filter:brightness(4) contrast(2); }
  8%{ clip-path:inset(4% 0 82% 0); transform:translateX(-36%) skewX(18deg); filter:brightness(3) hue-rotate(90deg); }
  16%{ clip-path:inset(70% 0 6% 0); transform:translateX(-60%); filter:brightness(2.6) contrast(1.8); }
  24%{ clip-path:inset(0 0 64% 0); transform:translateX(-40%) skewX(-12deg); filter:brightness(3.2) hue-rotate(-60deg); }
  32%{ clip-path:inset(38% 0 22% 0); transform:translateX(-56%) scaleX(1.12); filter:brightness(2); }
  40%{ clip-path:inset(12% 0 40% 0); transform:translateX(-45%) skewX(8deg); filter:brightness(2.8) contrast(1.6); }
  50%{ clip-path:inset(0 0 26% 0); transform:translateX(-53%); filter:brightness(1.8) hue-rotate(40deg); }
  60%{ clip-path:inset(20% 0 0 0); transform:translateX(-47%) skewX(-5deg); filter:brightness(2.2); }
  72%{ clip-path:inset(0); transform:translateX(-52%); filter:brightness(1.5); }
  84%{ clip-path:inset(0); transform:translateX(-49%); filter:brightness(1.8) contrast(1.2); }
  100%{ opacity:1; clip-path:inset(0); transform:translateX(-50%); filter:none; }
}
@keyframes nmmiaout{
  0%{ clip-path:inset(0); transform:translateX(-50%); filter:none; }
  15%{ clip-path:inset(20% 0 45% 0); transform:translateX(-58%) skewX(14deg); filter:brightness(2.6); }
  30%{ clip-path:inset(0 0 70% 0); transform:translateX(-42%); filter:brightness(1.8); }
  45%{ clip-path:inset(55% 0 8% 0); transform:translateX(-55%) skewX(-10deg); filter:brightness(2) hue-rotate(-30deg); }
  60%{ clip-path:inset(35% 0 35% 0); transform:translateX(-50%) scaleX(1.15); filter:brightness(3); }
  80%{ clip-path:inset(48% 0 48% 0); transform:translateX(-50%) scaleX(1.3); filter:brightness(4); }
  100%{ opacity:0; clip-path:inset(50% 0 50% 0); transform:translateX(-50%) scaleX(.05); }
}
.nmmia-blip{ animation:nmblip .2s steps(4) both; }
@keyframes nmblip{
  0%{ clip-path:inset(0); transform:translateX(-50%); filter:none; }
  25%{ clip-path:inset(18% 0 52% 0); transform:translateX(-56%) skewX(10deg); filter:brightness(2.2) contrast(1.4); }
  50%{ clip-path:inset(48% 0 14% 0); transform:translateX(-45%); filter:brightness(1.7) hue-rotate(50deg); }
  75%{ clip-path:inset(0 0 8% 0); transform:translateX(-52%) skewX(-6deg); filter:brightness(1.4); }
  100%{ clip-path:inset(0); transform:translateX(-50%); filter:none; }
}
.nmmia.nmmia-hard{ animation:nmhard .45s steps(9) both; }
@keyframes nmhard{
  0%{ transform:none; filter:none; }
  11%{ transform:translate(-22px,4px) skewX(8deg); filter:contrast(2) brightness(1.8); }
  22%{ transform:translate(18px,-6px); filter:contrast(2.2); }
  33%{ transform:translate(-10px,0) skewX(-12deg); filter:none; }
  44%{ transform:translate(24px,3px); filter:brightness(2.4) contrast(1.5); }
  55%{ transform:translate(-14px,-3px); filter:none; }
  66%{ transform:translate(8px,0) skewX(5deg); filter:contrast(1.7); }
  77%{ transform:translate(-4px,1px); }
  100%{ transform:none; filter:none; }
}

/* ---------- checker: glitch della finestra intera quando la scansione diventa esito (Gigio, 7 ott; check-app.js winGlitch).
   Solo translate (proprietà separata) e clip-path: il transform che centra la finestra resta intatto. ---------- */
#checkwin.wglitch{ animation:wglitch .54s steps(10) both; }
@keyframes wglitch{
  0%{ translate:0 0; filter:none; }
  10%{ translate:-18px 0; filter:brightness(1.8) contrast(1.4); clip-path:inset(0 0 55% 0); }
  20%{ translate:14px 2px; filter:brightness(1.3); clip-path:inset(30% 0 20% 0); }
  30%{ translate:-8px 0; filter:brightness(2.4); clip-path:inset(60% 0 0 0); }
  40%{ translate:20px -2px; filter:hue-rotate(40deg) brightness(1.6); clip-path:inset(0 0 30% 0); }
  55%{ translate:-12px 0; filter:brightness(2); clip-path:inset(15% 0 35% 0); }
  70%{ translate:6px 0; filter:contrast(1.5); clip-path:inset(0); }
  85%{ translate:-3px 0; filter:brightness(1.3); clip-path:inset(0); }
  100%{ translate:0 0; filter:none; clip-path:polygon(0 0, 100% 0, 100% 100%, 24px 100%, 0 calc(100% - 24px)); }
}
.fwin.wghost{ z-index:19; pointer-events:none; mix-blend-mode:screen; opacity:.85; }
.fwin.wghost-r{ filter:grayscale(1) sepia(1) saturate(9) hue-rotate(-35deg) brightness(1.1); animation:wghr .54s steps(8) both; }
.fwin.wghost-c{ filter:grayscale(1) sepia(1) saturate(9) hue-rotate(140deg) brightness(1.1); animation:wghc .54s steps(8) both; }
@keyframes wghr{ 0%{ translate:-14px 0; } 25%{ translate:-26px 2px; } 50%{ translate:-8px 0; } 75%{ translate:-18px -1px; } 100%{ translate:0 0; opacity:0; } }
@keyframes wghc{ 0%{ translate:14px 0; } 25%{ translate:24px -2px; } 50%{ translate:10px 0; } 75%{ translate:16px 1px; } 100%{ translate:0 0; opacity:0; } }

/* ---------- boot MAVER-OS ---------- */
.boot{ position:absolute; inset:0; z-index:45; background:#050505; }
.boot.out{ animation:ltear .4s steps(9) reverse both; }
.bootbox{ position:absolute; left:50%; top:42%; transform:translate(-50%,-50%); min-width:340px; }
.boot .ln{ font-size:11px; letter-spacing:.2em; color:#c8c8c8; line-height:2.2; white-space:nowrap; }
.boot .ln i{ font-style:normal; color:var(--red); font-weight:700; }
.boot .ln.last{ color:#fff; font-weight:700; font-size:13px; letter-spacing:.3em; }

/* ---------- checker ---------- */
.chkrow{ margin:16px 0 4px; }
.chkin{
  width:100%; background:#000; border:1px solid #3a3a3a; color:#fff;
  font-family:inherit; font-size:12px; letter-spacing:.08em;
  padding:12px 12px; text-align:center;
  -webkit-user-select:text; user-select:text;
}
.chkin:focus{ outline:none; border-color:#fff; }
.chkin::placeholder{ color:#4a4a4a; letter-spacing:.2em; }
.bigclaim.chk{ font-size:24px; letter-spacing:.2em; }
/* Nitro nel checker: in piedi sul bordo del campo indirizzo, a sinistra (stessi stati e misure della barra) */
.chkwrap{ position:relative; }
.chkwrap .nitro, .chkwrap .nitro.sleep, .chkwrap .nitro.party, .chkwrap .nitro.sad{ left:-6px; margin-left:0; bottom:100%; }
/* scansione del registro: indirizzo che si decifra, matrice spazzata dal raggio rosso, settore e hash */
.scanx{ border:1px solid #2e2e2e; padding:10px 11px 9px; background:#030303; }
.scan-head, .scan-foot{ display:flex; justify-content:space-between; font-size:8.5px; letter-spacing:.24em; color:#8a8a8a; }
.scan-head span:first-child{ color:#fff; font-weight:700; }
.scan-addr{ font-size:13px; font-weight:700; letter-spacing:.08em; color:#fff; margin:9px 0 10px; white-space:nowrap; overflow:hidden; text-align:center; }
.scan-addr i{ font-style:normal; color:var(--red); }
.scan-grid{ display:block; width:100%; height:88px; }
.scan-foot{ margin-top:8px; }
.scan-verdict{ color:#fff; font-weight:700; letter-spacing:.3em; }
.scan-verdict em{ font-style:normal; color:var(--red); }
.scan-verdict em.mia{ color:#35e6ff; }   /* il ciano di MIA */
.lorebig{
  font-size:16px; font-weight:700; color:#fff; letter-spacing:.14em;
  text-align:center; line-height:1.8; margin:2px 0 12px;
}
.lorebig em{ font-style:normal; color:var(--red); text-shadow:0 0 16px rgba(230,51,42,.4); }

/* ---------- payoff ---------- */
.payoff{
  position:absolute; bottom:30px; left:50%; transform:translateX(-50%);
  text-align:center; z-index:10; pointer-events:none; white-space:nowrap;
}
.payoff .main{ font-size:13px; font-weight:700; color:#fff; letter-spacing:.34em; }
.payoff .main em{ font-style:normal; color:var(--red); }
.payoff .sub{ font-size:8.5px; color:#6f6f6f; letter-spacing:.26em; margin-top:9px; }
/* payoff del sito principale (stesse misure di ryodan.io) */
.payoff .site{ font-size:12px; color:#9a9a9a; letter-spacing:.34em; }
.payoff .jp{ font-family:"Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", sans-serif; font-size:12.5px; color:#6f6f6f; letter-spacing:.18em; margin-top:10px; }
.payoff .jp + .sub{ margin-top:14px; }
.payoff .sub i{ font-style:normal; color:var(--red); }

/* ---------- glitch RGB (ricetta V2) ---------- */
.ghost{ position:absolute; inset:0; pointer-events:none; mix-blend-mode:screen; white-space:inherit; }
.ghost::before, .ghost::after{ content:none !important; }
.pre{ visibility:hidden; }
.ghost, .ghost *{ color:#ff0033 !important; }
.ghost.gc, .ghost.gc *{ color:#00ffee !important; }
.ghost.gr{ animation:gsliceR .34s steps(8) both; }
.ghost.gc{ animation:gsliceC .34s steps(8) both; }
.gl{ animation:gbase .34s steps(8) both; }
@keyframes gbase{
  0%{ transform:none; } 20%{ transform:translateX(1.5px); }
  40%{ transform:translateX(-1.5px); } 60%{ transform:none; }
  80%{ transform:translateX(1px); } 100%{ transform:none; }
}
@keyframes gsliceR{
  0%  { transform:translateX(-6px); clip-path:inset(0 0 60% 0); opacity:1; }
  25% { transform:translateX(-4px); clip-path:inset(30% 0 40% 0); }
  50% { transform:translateX(-5px); clip-path:inset(65% 0 0 0); }
  75% { transform:translateX(-2px); clip-path:inset(10% 0 75% 0); }
  100%{ transform:none; clip-path:inset(0 0 100% 0); opacity:0; }
}
@keyframes gsliceC{
  0%  { transform:translateX(6px);  clip-path:inset(55% 0 0 0); opacity:1; }
  25% { transform:translateX(3px);  clip-path:inset(0 0 65% 0); }
  50% { transform:translateX(5px);  clip-path:inset(25% 0 45% 0); }
  75% { transform:translateX(2px);  clip-path:inset(70% 0 0 0); }
  100%{ transform:none; clip-path:inset(100% 0 0 0); opacity:0; }
}

/* ---------- lore: l'intrusione (video/canvas su nero, il blend fa sparire il nero) ---------- */
.lore{
  position:absolute; inset:0; z-index:38; pointer-events:none;
  display:none; mix-blend-mode:screen;
}
.lore.on{ display:block; }
.lore canvas, .lore video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.lore.tear-in{ animation:ltear .38s steps(9) both; }
.lore.tear-out{ animation:ltear .34s steps(8) reverse both; }
@keyframes ltear{
  0%  { clip-path:inset(0 0 100% 0); transform:translateX(-8px); }
  22% { clip-path:inset(64% 0 8% 0); transform:translateX(6px); }
  45% { clip-path:inset(12% 0 55% 0); transform:translateX(-4px); }
  70% { clip-path:inset(40% 0 20% 0); transform:translateX(5px); }
  100%{ clip-path:inset(0 0 0 0); transform:none; }
}
.lorecap{
  position:absolute; left:6%; bottom:14%; z-index:2; max-width:70%;
  font-size:13px; letter-spacing:.18em; line-height:2; color:#fff;
  text-shadow:0 0 12px rgba(255,255,255,.35);
}
.lorecap .who{ color:var(--red); font-weight:700; margin-right:12px; }
.lorecap .cur{ display:inline-block; width:8px; height:13px; background:#fff; vertical-align:-2px; animation:ptick 1s steps(2) infinite; }

@media (prefers-reduced-motion: reduce){
  .gl, .ghost.gr, .ghost.gc, .pfill::after, .wchip .dot, .lorecap .cur, .nitro, .sharenitro, .nbeer{ animation:none; }
  .ghost{ display:none; }
  .lore{ display:none !important; }
}

/* ---------- pannelli di lavoro: LAB (lore/glitch) + CHAIN.SIM (contratto finto) ---------- */
.labtag{
  position:fixed; left:14px; bottom:14px; z-index:99; cursor:pointer;
  font-size:10px; font-weight:700; letter-spacing:.22em; color:#c8c8c8; padding:8px 12px;
  border:1px solid #4a4a4a; background:rgba(0,0,0,.7);
}
.labtag:hover{ color:#fff; border-color:#fff; }
.labpanel{
  position:fixed; right:10px; top:calc(var(--bar) + 10px); bottom:10px; width:238px; z-index:100;
  background:#0b0b0b; border:1px solid #2e2e2e; padding:12px 13px;
  overflow-y:auto; scrollbar-width:none;
  font-size:9px; letter-spacing:.14em; color:#9a9a9a;
}
.labpanel::-webkit-scrollbar{ display:none; }
.labpanel.hid{ display:none; }
.labpanel h3{
  font-size:9px; letter-spacing:.28em; color:#fff; font-weight:700;
  border-bottom:1px solid #242424; padding-bottom:7px; margin:16px 0 10px;
}
.labpanel h3:first-child{ margin-top:0; }
.labpanel h3 i{ font-style:normal; color:var(--red); }
.lrow{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin:8px 0; }
.lrow label{ flex:1; }
.lrow output{ min-width:34px; text-align:right; color:#fff; }
.lrow input[type=range]{ flex:1.3; accent-color:#e6332a; }
.lrow select, .lrow input[type=number]{
  background:#000; color:#fff; border:1px solid #333; font-family:inherit; font-size:9px; padding:3px 5px; width:86px;
}
.lbtns{ display:flex; flex-wrap:wrap; gap:5px; margin:8px 0; }
.lbtn{
  border:1px solid #3f3f3f; color:#bbb; padding:5px 8px; cursor:pointer;
  font-size:8px; letter-spacing:.18em; background:#000;
}
.lbtn:hover{ border-color:#fff; color:#fff; }
.lbtn.on{ border-color:var(--red); color:#fff; background:#1a0806; }
.lchk{ display:flex; align-items:center; gap:7px; margin:7px 0; cursor:pointer; }
.lnote{ font-size:8px; letter-spacing:.12em; color:#6a6a6a; line-height:1.7; margin:4px 0 6px; }
.lchk input{ accent-color:#e6332a; }

/* ---------- telefono (bozza: la macchina si adatta, pass mobile vero a valle) ---------- */
@media (max-width: 740px){
  .fwin{ width:min(92vw, 420px); }
  /* 4 fasi su una riga sola (6 ott): blocchi stretti, nome sopra la spiegazione, niente frecce (contano i numeri) */
  .phases{ width:96vw; justify-content:space-between; flex-wrap:nowrap; gap:3px; }
  .pblock{ flex:1 1 0; min-width:0; padding:6px 3px; font-size:7.5px; letter-spacing:.08em; gap:4px; white-space:normal; text-align:center; }
  .pb-top{ flex-direction:column; gap:3px; }
  .pblock .acc{ font-size:7.5px; letter-spacing:.06em; padding:2px 4px; }
  .accw{ font-size:6.5px; letter-spacing:.04em; }
  .pb-price{ font-size:8.5px; letter-spacing:.02em; }
  .pb-cap{ font-size:6.5px; letter-spacing:.04em; }
  .parrow{ display:none; }
  .schr .du{ display:none; }   /* telefono: l'orario resta su una riga, la durata si legge dagli orari */
  #mintwin{ top:calc(var(--bar) + 109px); transform:translateX(-50%); }   /* sotto le fasi, non sopra (pass mobile vero a valle) */
  .sb-name b{ display:none; }
  .payoff .main{ font-size:11px; letter-spacing:.26em; }
  .payoff .sub{ font-size:7.5px; white-space:normal; max-width:92vw; }
  .payoff .site{ font-size:9.5px; letter-spacing:.2em; white-space:normal; max-width:92vw; }
  .labpanel{ width:200px; }
}
