[hidden]{display:none!important}
:root{--bg:#f6f7f9;--card:#fff;--text:#14202b;--muted:#64748b;--brand:#ef4f1d;--brand-d:#c93d12;--accent:#f1ae3b;--brand-text:#d4400f;--danger:#b91c1c;--line:#e2e8f0;--ok:#166534;color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--bg:#0e1419;--card:#17202a;--text:#e6edf3;--muted:#93a4b5;--line:#263442;--brand:#ff7a45;--brand-d:#f1ae3b;--brand-text:#ff8f5e;--danger:#f87171;--ok:#4ade80}}
*{box-sizing:border-box}html,body{margin:0}
body{font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);padding-bottom:calc(72px + env(safe-area-inset-bottom))}
.top{display:flex;justify-content:space-between;align-items:center;padding:calc(8px + env(safe-area-inset-top)) 16px 8px;background:#fff;border-bottom:4px solid var(--accent);position:sticky;top:0;z-index:5}
.top img{height:26px;width:auto;max-width:58%;display:block;object-fit:contain}.top .btn{white-space:nowrap}
.top .brand{display:flex;align-items:center;gap:6px;min-width:0;max-width:58%}.top .brand img{max-width:none;height:26px}.top .brand .brand-pin{height:38px;width:auto;margin:-6px 0 -6px -4px}
main{max-width:640px;margin:0 auto;padding:16px}
h1,h2,h3{margin:.2em 0 .5em}h2{font-size:1.25rem}h3{font-size:1.05rem}
.stack{display:grid;gap:12px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.muted{color:var(--muted)}.empty{color:var(--muted);text-align:center;padding:24px 8px}
.card{display:block;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;color:inherit;text-decoration:none}
.card.trip{display:grid;gap:8px}.route{display:grid;gap:2px}.price{font-weight:700;color:var(--brand-text)}.price small{color:var(--muted);font-weight:400}
.field{display:grid;gap:4px}.field label,legend{font-size:.85rem;color:var(--muted)}
input,select,textarea{width:100%;font:inherit;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--text)}
fieldset{border:1px solid var(--line);border-radius:12px;padding:12px}
.check{display:flex;gap:8px;align-items:center}.check input{width:auto}
.btn{display:inline-block;text-align:center;font:inherit;font-weight:600;padding:12px 16px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--text);text-decoration:none;cursor:pointer}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}@media (prefers-color-scheme:dark){.btn.primary{color:#1a0a02}}
.btn.danger{color:var(--danger);border-color:var(--danger)}.btn.small{padding:6px 10px;font-size:.85rem}
.link{background:none;border:0;color:var(--brand-text);font:inherit;cursor:pointer;text-decoration:underline;padding:4px}
.tabs{display:flex;gap:6px;margin:8px 0 14px}.tabs button{flex:1;padding:10px;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:10px;font:inherit;cursor:pointer}
.tabs button.on{background:var(--brand);color:#fff;border-color:var(--brand)}@media (prefers-color-scheme:dark){.tabs button.on{color:#1a0a02}}
.auth{max-width:420px;margin:6vh auto}.auth h1{font-size:2rem;color:var(--brand-text)}.auth .pinlogo{width:170px;margin:0 auto 12px}
.suggest{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--card);overflow:hidden}
.suggest li{padding:10px 12px;border-bottom:1px solid var(--line);cursor:pointer;font-size:.9rem}.suggest li:last-child{border:0}
.picked{color:var(--ok)}.tag{font-size:.75rem;padding:3px 8px;border-radius:99px;background:var(--line)}
.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{font-size:.8rem;padding:3px 9px;border-radius:99px;background:var(--line)}
.notice{padding:10px 12px;border-radius:10px;background:var(--line)}.notice.ok{color:var(--ok)}.notice.bad{color:var(--danger)}
.reqs{display:grid;gap:8px;margin:-4px 0 8px;padding:10px;border:1px dashed var(--line);border-radius:12px}
.req{display:grid;gap:8px}
.back{display:inline-block;margin-bottom:8px;color:var(--brand-text)}
nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:5}
nav a{flex:1;display:grid;justify-items:center;padding:8px 0;color:var(--muted);text-decoration:none;font-size:1.2rem}
nav a span{font-size:.7rem}nav a.on{color:var(--brand-text)}
.ios-hint{background:#fef3c7;color:#451a03;padding:10px 16px;font-size:.9rem}
#toasts{position:fixed;left:12px;right:12px;bottom:calc(84px + env(safe-area-inset-bottom));display:grid;gap:8px;z-index:20;pointer-events:none}
.toast{background:#1f2937;color:#fff;padding:12px 14px;border-radius:12px}.toast.error{background:#991b1b}.toast.ok{background:#166534}
code{background:var(--line);padding:1px 5px;border-radius:5px}
.docs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.docs figure{margin:0}.docs figcaption{font-size:.75rem;color:var(--muted)}
img.doc{width:100%;max-height:140px;object-fit:cover;border-radius:8px;cursor:zoom-in}img.doc.zoom{position:fixed;inset:8px;z-index:30;width:calc(100% - 16px);height:calc(100% - 16px);max-height:none;object-fit:contain;background:#000;cursor:zoom-out}
.prov{font-size:.9rem}.prov select{width:auto;max-width:55%}
.code{font-size:1.4rem;letter-spacing:.2em}.code-in{max-width:11rem;text-align:center;letter-spacing:.2em}

.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--accent);color:#fff;font-weight:700;font-size:.8rem;overflow:hidden;flex:none;vertical-align:middle}
.avatar.big{width:56px;height:56px;font-size:1.3rem}.avatar.xl{width:96px;height:96px}.avatar svg{width:100%;height:100%;display:block}.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.who{display:inline-flex;align-items:center;gap:8px}
.clip{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:pre-wrap}
.kpi{display:flex;flex-direction:column;gap:2px;padding:12px}.kpi strong{font-size:1.35rem;line-height:1.2}
.bars{display:flex;align-items:flex-end;gap:2px;height:120px;padding-bottom:16px}
.bar{flex:1;height:100%;position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-width:0}
.bar .fill{display:flex;flex-direction:column;justify-content:flex-end;background:var(--brand);border-radius:3px 3px 0 0;min-height:1px;opacity:.9}
.bar .fill i{display:block;background:var(--danger);width:100%}
.bar em{position:absolute;bottom:-16px;left:50%;transform:translateX(-50%);font-size:.6rem;font-style:normal;color:var(--muted);white-space:nowrap}
.report table{width:100%;border-collapse:collapse;font-size:.85rem}.report td,.report th{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left}.report .num{text-align:right;white-space:nowrap}
.report h1{font-size:1.3rem;margin:0}.report{overflow-x:auto}
@media print{.top,#nav,#ios-hint,.noprint,#toasts{display:none!important}body{background:#fff!important;color:#000!important}.report{overflow:visible}.report td,.report th{border-color:#bbb}main{padding:0!important;max-width:none!important}}

/* ---- logo animado: el pin cae, rebota (squash & stretch) y las ondas pulsan en cada golpe ---- */
.pinlogo{position:relative;aspect-ratio:1/1}
.pinlogo img{position:absolute;left:0;width:100%;height:auto;display:block}
.pl-pin{top:0;transform-origin:50% 100%;animation:pl-drop 1.5s both}
.pl-ripple{top:74.8%;transform-origin:50% 50%;animation:pl-ripple 1.5s both}
.pl-word{top:81.64%;animation:pl-word .6s .85s both}
.pinlogo.still img{animation:none}
@keyframes pl-drop{
  0%{transform:translateY(-85%) scale(1,1);opacity:0;animation-timing-function:ease-in}
  12%{opacity:1}
  42%{transform:translateY(0) scale(1,1);animation-timing-function:ease-out}
  46%{transform:translateY(0) scale(1.08,.88);animation-timing-function:ease-out}
  60%{transform:translateY(-22%) scale(.97,1.04);animation-timing-function:ease-in}
  74%{transform:translateY(0) scale(1.05,.93);animation-timing-function:ease-out}
  85%{transform:translateY(-8%) scale(1,1);animation-timing-function:ease-in}
  93%{transform:translateY(0) scale(1.02,.97);animation-timing-function:ease-out}
  100%{transform:translateY(0) scale(1,1);opacity:1}}
@keyframes pl-ripple{
  0%,41%{opacity:0;transform:scale(.3,.6)}
  46%{opacity:1;transform:scale(.55,.8)}
  58%{opacity:.25;transform:scale(1.18,1.1)}
  62%,72%{opacity:0;transform:scale(.4,.6)}
  75%{opacity:.8;transform:scale(.6,.8)}
  86%{opacity:.2;transform:scale(1.1,1.05)}
  90%,92%{opacity:0;transform:scale(.5,.7)}
  94%{opacity:.7;transform:scale(.7,.85)}
  100%{opacity:1;transform:scale(1,1)}}
@keyframes pl-word{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* pantalla de inicio */
#splash{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:var(--bg);animation:splash-out .35s 1.75s both}
#splash .pinlogo{width:min(52vw,230px)}
@keyframes splash-out{to{opacity:0;visibility:hidden}}
.no-splash #splash{display:none}
@media (prefers-reduced-motion:reduce){#splash{display:none}.pinlogo img{animation:none!important}}
.dlg{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:16px}
.dlg-box{background:var(--card);color:var(--text);border-radius:14px;padding:18px;max-width:380px;width:100%;display:flex;flex-direction:column;gap:14px;box-shadow:0 10px 40px rgba(0,0,0,.3)}
.dlg-box p{margin:0}.dlg-box .row{justify-content:flex-end}
.top-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.social img{display:block;width:20px;height:20px}.social{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;border:1px solid #d9dee5;background:#fff;color:#14202b;font-size:.8rem;font-weight:600;text-decoration:none;white-space:nowrap}
@media (max-width:360px){.social span{display:none}}
@media print{.social{display:none}}

/* ---- detalle del viaje: más aire, filas separadas y etiquetas con ícono ---- */
.detail{display:grid;gap:16px;padding:18px}
.detail .route{gap:8px;line-height:1.35}
.facts{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:.92rem}
.kv{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 0 0;border-top:1px solid var(--line)}
.kv>:first-child{color:var(--muted);display:flex;align-items:center;gap:8px}
.kv>:last-child{text-align:right}
.detail .chips{gap:10px;padding-top:4px}
.chip{display:inline-flex;align-items:center;gap:7px;font-size:.88rem;padding:7px 13px 7px 9px;border-radius:99px}
.chip .ci{font-size:1.15rem;line-height:1}
.chip img{width:24px;height:24px;border-radius:50%;object-fit:cover;display:block;border:1.5px solid var(--card)}
.detail .btn{margin-top:4px}

/* ---- tarjetas .card.stack: el estilo .card (display:block) pisaba el espacio de .stack; se separan los bloques sin cambiar el flujo del texto ---- */
.card.stack>*+*{margin-top:12px}
.card.stack>small{display:block}
.card.stack>.row.between+.row.between{margin-top:10px}
/* títulos de sección con aire arriba; pedidos del conductor con líneas más separadas */
#view h3{margin:26px 0 10px}
#view h2+h3,#view a+h3{margin-top:14px}
.reqs{gap:14px}
.req{line-height:1.6}
.reqs>.req+.req{border-top:1px solid var(--line);padding-top:14px}

/* selector de tipo de viaje (publicar) y pestañas (buscar) */
.seg{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.seg>label{display:flex;gap:8px;align-items:flex-start;padding:12px;border:1.5px solid var(--line,#d9d9d9);border-radius:12px;cursor:pointer;background:var(--card,#fff)}
.seg>label input{margin-top:3px}
.seg>label span{display:flex;flex-direction:column;gap:2px}
.seg>label small{color:var(--muted,#666);font-size:.78rem}
.seg>label:has(input:checked){border-color:var(--brand,#0a7d6b);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand,#0a7d6b) 25%,transparent)}
.seg.tabs{gap:6px;margin-bottom:6px}
.seg.tabs button{padding:11px 8px;border:1.5px solid var(--line,#d9d9d9);border-radius:12px;background:var(--card,#fff);font:inherit;font-weight:600;cursor:pointer;color:inherit}
.seg.tabs button.on{background:var(--brand,#0a7d6b);border-color:var(--brand,#0a7d6b);color:#fff}

/* estilo de viaje: etiquetas tildables */
.vchips{display:flex;flex-wrap:wrap;gap:8px}
.vchip{cursor:pointer;position:relative}
.vchip input{position:absolute;left:0;top:0;width:1px;height:1px;margin:0;opacity:0;pointer-events:none}
.vchip span{display:inline-block;padding:7px 12px;border:1.5px solid var(--line);border-radius:999px;background:var(--card);font-size:.9rem}
.vchip:has(input:checked) span{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 14%,var(--card));font-weight:600}
.vchip:has(input:focus-visible) span{outline:2px solid var(--brand);outline-offset:2px}
.chips.vibes{margin-top:2px}

/* fichas de viaje con tono propio */
.card.trip,.tgroup{--tc:hsl(var(--h,20) 65% 52%);border-left:6px solid var(--tc);background:color-mix(in srgb,var(--tc) 9%,var(--card))}
@media (prefers-color-scheme:dark){.card.trip,.tgroup{--tc:hsl(var(--h,20) 60% 58%);background:color-mix(in srgb,var(--tc) 13%,var(--card))}}
.tgroup{border-top:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-radius:14px;padding:10px;display:grid;gap:10px;margin-bottom:14px}
.tgroup>.card.trip{border:0;background:transparent;padding:4px}

.linkbtn{background:none;border:0;padding:0;font:inherit;font-weight:700;color:inherit;text-decoration:underline dotted;text-underline-offset:3px;cursor:pointer;text-align:left}
.profile-box .bio-text{white-space:pre-wrap;word-break:break-word;margin:6px 0 0}
textarea{resize:vertical}

/* pestañas de "Mis viajes" con onda VasVoy */
.tabs.fancy{gap:8px}
.tabs.fancy button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px 4px 9px;border-radius:16px;border:1.5px solid var(--line);font-weight:700;font-size:.82rem;line-height:1.15;transition:transform .15s,box-shadow .15s,background .15s}
.tabs.fancy button .ti{font-size:1.55rem;line-height:1;filter:saturate(.55);opacity:.8;transition:filter .15s,opacity .15s,transform .15s}
.tabs.fancy button.on{background:linear-gradient(135deg,var(--brand),var(--accent));border-color:transparent;color:#fff;box-shadow:0 5px 14px rgba(239,79,29,.32);transform:translateY(-1px)}
.tabs.fancy button.on .ti{filter:none;opacity:1;transform:scale(1.08)}
@media (prefers-color-scheme:dark){.tabs.fancy button.on{color:#1a0a02;box-shadow:0 5px 14px rgba(255,122,69,.28)}}
@media (prefers-reduced-motion:reduce){.tabs.fancy button,.tabs.fancy button .ti{transition:none}}

/* ficha de perfil con onda */
.pcard{--tc:hsl(var(--h,20) 65% 52%);background:var(--card);border:1px solid var(--line);border-radius:20px;overflow:hidden}
.pc-banner{height:86px;background:radial-gradient(circle at 20% 30%,rgba(255,255,255,.35) 0 6px,transparent 7px),radial-gradient(circle at 78% 62%,rgba(255,255,255,.28) 0 9px,transparent 10px),radial-gradient(circle at 55% 20%,rgba(255,255,255,.22) 0 4px,transparent 5px),linear-gradient(135deg,hsl(var(--h,20) 78% 58%),hsl(calc(var(--h,20) + 45) 80% 60%))}
.pc-body{--tc:hsl(var(--h,20) 65% 52%);padding:0 16px 16px;margin-top:-50px;text-align:center}
.pc-ava{position:relative;display:inline-block}
.pc-ava .avatar.xl{border:4px solid var(--card);box-shadow:0 8px 20px rgba(0,0,0,.2)}
.pc-cam{position:absolute;right:-4px;bottom:2px;width:34px;height:34px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1rem;cursor:pointer;border:3px solid var(--card);text-decoration:none}
.pc-name{margin:8px 0 2px;font-size:1.3rem}
.pc-tags{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:6px 0 8px}
.pc-tags .tag{background:linear-gradient(135deg,var(--brand),var(--accent));color:#fff;font-weight:700}
@media (prefers-color-scheme:dark){.pc-tags .tag{color:#1a0a02}}
.pc-tags .tag.soft{background:var(--line);color:var(--text);font-weight:600}
.pc-rating{margin:2px 0 8px}
.pc-body .chips.vibes{justify-content:center;margin:6px 0}
.pc-quote{position:relative;margin:12px 0 0;padding:14px 14px 14px 16px;background:color-mix(in srgb,var(--tc) 10%,var(--card));border-left:4px solid var(--tc);border-radius:14px;text-align:left;font-style:italic;white-space:pre-wrap;word-break:break-word}
.pc-quote::before{content:'“';position:absolute;top:-6px;left:8px;font-size:2.6rem;line-height:1;color:var(--tc);opacity:.5;font-style:normal}
.pc-empty{margin:12px 0 0}
.pc-foot{padding:0 16px 16px;display:flex;justify-content:center}
.pcard-box{padding:0;overflow:hidden;gap:0;max-width:400px}
.pcard-box .pcard{border:0;border-radius:0}
.pcta{font:inherit;font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:99px;border:1.5px solid var(--brand);color:var(--brand-text);background:transparent;cursor:pointer;margin-left:6px;white-space:nowrap}
.hero{margin-bottom:14px}
/* la caricatura "maneja" mientras carga el perfil */
.avatar.drive .vv-wheel{animation:vv-turn 1.1s ease-in-out infinite;transform-origin:32px 57px}
.avatar.drive .vv-head{animation:vv-bob 1.1s ease-in-out infinite;transform-origin:32px 46px}
@keyframes vv-turn{0%,100%{transform:rotate(-18deg)}50%{transform:rotate(18deg)}}
@keyframes vv-bob{0%,100%{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}
@media (prefers-reduced-motion:reduce){.avatar.drive .vv-wheel,.avatar.drive .vv-head{animation:none}}

/* ---- avisos de ruta ---- */
.achips{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.achips button{display:flex;align-items:center;gap:8px;padding:12px;border:2px solid var(--line);border-radius:12px;background:#fff;font:inherit;font-weight:700;color:inherit}
.achips button span{font-size:1.4rem}.achips button.on{border-color:var(--brand);background:#fff4ee}
.alertlink{display:block;margin:6px 0 10px;font-weight:700}
.alertstrip{background:#fff4e0;border:1px solid #f1ae3b;display:grid;gap:4px}
.alertcard .quote{font-style:italic}

.tag.safe{background:#e6f6ec;color:#146c3a}.tag.cash{background:#fff4e0;color:#8a5a00}

/* ---- Perfil: menú en mosaico ---- */
.menu-h{margin:18px 0 6px}
.pmenu{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ptile{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--card,#fff);color:inherit;text-decoration:none;min-width:0}
.ptile .ti{font-size:1.6rem;flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--line)}
.ptile .tt{display:grid;min-width:0}.ptile .tt strong{font-size:.95rem;line-height:1.15}.ptile .tt small{color:var(--muted,#64748b);line-height:1.2}
.ptile.hot{grid-column:1/-1;background:linear-gradient(135deg,#ef4f1d,#f1ae3b);border:0;color:#fff}
.ptile.hot .ti{background:rgba(255,255,255,.25)}.ptile.hot .tt small{color:#fff;opacity:.92}
@media (max-width:340px){.pmenu{grid-template-columns:1fr}}
/* ---- Mini juego ---- */
.gcard{border:1px solid var(--line);border-radius:16px;padding:16px;background:var(--card,#fff);display:grid;gap:12px;margin:10px 0}
.gcard.hero{text-align:center;justify-items:center}
.g-emoji{font-size:3rem;line-height:1}
.g-lv{display:flex;gap:12px;align-items:center;text-align:left;width:100%}.g-lvi{font-size:2.2rem}
.g-bar,.g-time{height:8px;border-radius:99px;background:var(--line);overflow:hidden}.g-bar i,.g-time i{display:block;height:100%;background:linear-gradient(90deg,#f1ae3b,#ef4f1d);border-radius:99px}
.g-time i{width:100%;transition:width .1s linear}.g-time i.low{background:#d12;}
.g-q{margin:4px 0}
.g-opts{display:grid;gap:8px}
.gopt{padding:14px;border:2px solid var(--line);border-radius:12px;background:var(--card,#fff);font:inherit;font-weight:700;color:inherit;text-align:left}
.gopt:disabled{opacity:1}.gopt.ok{border-color:#1a8f4a;background:#e6f6ec;color:#146c3a}.gopt.bad{border-color:#d12;background:#fde8e8;color:#8a1010}
.btn.big{padding:14px 22px;font-size:1.05rem}
.rank{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.rank li{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--card,#fff)}
.rank li.me{border-color:var(--brand,#ef4f1d);background:#fff4ee}
.rank .pos{width:28px;text-align:center;font-weight:800}.rank .nm{flex:1;display:grid;min-width:0}.rank .nm small{line-height:1.1}

@media (prefers-color-scheme:dark){
  .achips button.on,.rank li.me{background:#2a1a12}
  .alertstrip{background:#2b2210;border-color:#8a6a1f}
  .tag.safe{background:#12301f;color:#6ee7a0}.tag.cash{background:#33270c;color:#f1ae3b}
  .gopt.ok{background:#12301f;color:#6ee7a0;border-color:#1a8f4a}.gopt.bad{background:#3a1515;color:#fca5a5;border-color:#d12}
}
.g-lv strong,.g-lv small{display:block}

/* ---- Mini juego: festejos (confeti VasVoy, pop, shake) ---- */
.gcard{position:relative;overflow:hidden}
.confetti{position:absolute;left:50%;top:45%;width:0;height:0;pointer-events:none;z-index:3}
.confetti span{position:absolute;left:0;top:0;width:9px;height:14px;border-radius:2px;opacity:0;animation:vv-conf 1.1s cubic-bezier(.15,.7,.3,1) forwards}
@keyframes vv-conf{0%{opacity:1;transform:translate(0,0) rotate(0) scale(.6)}15%{opacity:1}100%{opacity:0;transform:translate(var(--x),calc(var(--y) + 140px)) rotate(var(--r)) scale(1)}}
.gopt.pop{animation:vv-pop .5s ease}
@keyframes vv-pop{0%{transform:scale(1)}35%{transform:scale(1.07)}60%{transform:scale(.98)}100%{transform:scale(1)}}
.gopt.shake{animation:vv-shake .45s ease}
@keyframes vv-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}
.g-float{position:absolute;left:50%;top:38%;transform:translateX(-50%);font-size:2.2rem;font-weight:900;color:var(--brand);text-shadow:0 2px 0 #fff8;pointer-events:none;z-index:4;animation:vv-float 1.1s ease-out forwards}
@keyframes vv-float{0%{opacity:0;transform:translate(-50%,10px) scale(.6)}20%{opacity:1;transform:translate(-50%,-6px) scale(1.2)}100%{opacity:0;transform:translate(-50%,-70px) scale(1)}}
.gcard .tag.bump{animation:vv-pop .5s ease}
.g-time i{transition:width .1s linear,background .3s}
@media (prefers-reduced-motion:reduce){.confetti,.g-float{display:none}.gopt.pop,.gopt.shake,.gcard .tag.bump{animation:none}}

/* ---------- juegos: menú, mapa mudo, km, ruleta ---------- */
.gtiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.gtile{display:grid;gap:2px;justify-items:center;text-align:center;padding:16px 8px;border-radius:16px;border:1px solid var(--line);background:var(--card);color:inherit;text-decoration:none}
.gtile span{font-size:2rem}.gtile small{color:var(--muted)}
.gtile.ready{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 25%,transparent);animation:gpulse 1.6s ease-in-out infinite}
.gtile.ready small{color:var(--brand-text);font-weight:700}
@keyframes gpulse{50%{transform:scale(1.03)}}
.g-badges{display:flex;gap:8px;justify-content:center;font-size:1.7rem;margin:10px 0}
.g-map{width:100%;max-height:62vh;border-radius:12px;touch-action:manipulation;cursor:crosshair;display:block;margin:6px auto;background:#cfe8f7}
.g-map .sea{fill:#cfe8f7}.g-map .grat{stroke:#fff;stroke-width:.8;fill:none;opacity:.7}
.g-map .land{fill:#f6e7c8;stroke:#9c3d1a;stroke-width:1.2;stroke-linejoin:round}
.g-map .halo{fill:rgba(239,79,29,.25)}.g-map .pin circle:last-child{fill:#ef4f1d;stroke:#fff;stroke-width:1.5}
.g-map .target circle:last-child{fill:#1a8f4a;stroke:#fff;stroke-width:1.5}.g-map .target .halo{fill:rgba(26,143,74,.3)}
.g-map .miss{stroke:#9c3d1a;stroke-width:1.6;stroke-dasharray:4 3}
.g-map .target{animation:gpop .5s ease-out}@keyframes gpop{0%{opacity:0}100%{opacity:1}}
.g-km{font-size:2.2rem;font-weight:800;text-align:center;color:var(--brand-text);margin:8px 0}
input[type=range]{padding:0;accent-color:var(--brand)}
.wheel{position:relative;width:min(78vw,300px);margin:8px auto 14px}
.wheel-svg{width:100%;display:block;filter:drop-shadow(0 4px 8px rgba(0,0,0,.25))}
.wheel-svg .wl{font-size:17px;font-weight:800;fill:#fff;paint-order:stroke;stroke:rgba(0,0,0,.35);stroke-width:2px}
.wheel-ptr{position:absolute;left:50%;top:-12px;transform:translateX(-50%);font-size:2rem;line-height:1;color:#9c3d1a;z-index:2;text-shadow:0 1px 0 #fff}
.wres{animation:gpop .5s ease-out}

/* ---------- Truco ---------- */
.gtile.wide{grid-column:1/-1}
.tr{--cw:74px;display:grid;gap:8px}
.tr-bar{display:flex;justify-content:space-between;align-items:center;gap:8px}
.tr-sc{display:grid;justify-items:center;line-height:1.1}.tr-sc span{font-size:.75rem;color:var(--muted)}.tr-sc strong{font-size:1.9rem;color:var(--brand-text);display:inline-block}
.tr-sc strong.bump{animation:gpulse .6s ease-in-out}
.tr-felt{position:relative;border-radius:18px;padding:10px 8px 12px;background:radial-gradient(ellipse at 50% 40%,#2a8a5f,#1b5e42 70%);box-shadow:inset 0 0 0 3px #9c3d1a,inset 0 0 30px rgba(0,0,0,.35);display:grid;gap:6px;overflow:hidden}
.tr-deck{position:absolute;top:8px;right:8px;width:34px;opacity:.9;transform:rotate(8deg);filter:drop-shadow(2px 3px 2px rgba(0,0,0,.4))}
.pc{width:var(--cw);aspect-ratio:100/150;flex:none;filter:drop-shadow(0 3px 3px rgba(0,0,0,.35));transition:filter .2s,margin .2s;transform-style:preserve-3d}
.pc svg{display:block;width:100%;height:100%}
.pc.opp{--cw:46px}
.tr-hand{display:flex;justify-content:center;gap:8px;min-height:calc(var(--cw)*1.5)}
.tr-hand.opp{min-height:69px;gap:6px}
.tr-hand.me .pc{cursor:pointer}
.tr-hand.me.turn .pc{animation:trbob 1.4s ease-in-out infinite}.tr-hand.me.turn .pc:nth-child(2){animation-delay:.15s}.tr-hand.me.turn .pc:nth-child(3){animation-delay:.3s}
.tr-hand.me.turn .pc:hover{filter:drop-shadow(0 0 8px #ffd166) drop-shadow(0 3px 3px rgba(0,0,0,.35))}
@keyframes trbob{50%{transform:translateY(-6px)}}
.tr-mid{position:relative;display:flex;justify-content:center;gap:10px;padding:4px 0}
.slot{display:grid;gap:4px;justify-items:center}
.spot{--cw:58px;width:58px;aspect-ratio:100/150;border:2px dashed rgba(255,255,255,.28);border-radius:8px;display:grid;place-items:center}
.spot .pc{--cw:58px}
.pc.won{filter:drop-shadow(0 0 10px #ffd166) drop-shadow(0 0 3px #fff);z-index:1}
.pc.tie{opacity:.75}
.tr-say{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.6);opacity:0;pointer-events:none;background:#fff;color:#14202b;font-weight:800;padding:10px 16px;border-radius:16px;text-align:center;max-width:92%;box-shadow:0 6px 18px rgba(0,0,0,.4);transition:opacity .2s,transform .25s;z-index:3;border:3px solid var(--accent)}
.tr-say.on{opacity:1;transform:translate(-50%,-50%) scale(1)}
.tr-say.b1{border-color:#9c3d1a}.tr-say.b0{border-color:#1a8f4a}
.tr-acts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;min-height:96px}
.tr-q{flex:1 0 100%;text-align:center;font-size:.9rem}
.btn.small{padding:9px 12px;font-size:.9rem}.btn.danger{color:var(--danger);border-color:var(--danger)}
.tr-help{text-align:left}.tr-help summary{cursor:pointer;color:var(--brand-text);font-weight:600}
.rk-tabs{margin:0;flex-wrap:nowrap}.rk-tabs button{padding:6px 10px;font-size:.85rem}

/* "Mis datos": recuadro con un tono propio para distinguirlo del resto del perfil */
.mydata{margin:18px 0;padding:6px 14px 16px;border:1.5px solid color-mix(in srgb,var(--brand) 35%,var(--line));border-radius:18px;background:color-mix(in srgb,var(--brand) 7%,var(--card));box-shadow:0 1px 0 color-mix(in srgb,var(--brand) 12%,transparent)}
.mydata .menu-h,#view .mydata .menu-h{margin:10px auto 14px;width:fit-content;max-width:100%;text-align:center;padding:8px 22px;border-radius:999px;font-size:1.15rem;color:#fff;background:linear-gradient(135deg,var(--brand),var(--accent));box-shadow:0 3px 10px color-mix(in srgb,var(--brand) 40%,transparent);text-shadow:0 1px 1px rgba(0,0,0,.25)}
.mydata input,.mydata select,.mydata textarea{background:var(--card)}
.pc-mates{margin:12px 0 0;padding:10px 12px;border-radius:14px;text-align:left;background:color-mix(in srgb,var(--tc,var(--brand)) 8%,var(--card));border:1px dashed color-mix(in srgb,var(--tc,var(--brand)) 40%,var(--line));font-size:.9rem}
.pc-mates strong{display:block;margin-bottom:2px}.pc-mates .names{color:var(--muted)}

/* ---------- cargadas del truco ---------- */
.tr-taunts{position:absolute;right:6px;top:50%;transform:translateY(-50%);z-index:4;width:42px;height:42px}
.tt-btn{width:42px;height:42px;border-radius:50%;border:2px solid #fff;background:linear-gradient(135deg,#ef4f1d,#f1ae3b);font-size:1.4rem;line-height:1;cursor:pointer;box-shadow:0 3px 8px rgba(0,0,0,.4);transition:transform .15s}
.tt-btn:active{transform:scale(.9)}.tr-taunts.open .tt-btn{transform:rotate(-12deg) scale(1.08)}
.tt-panel{display:none;position:absolute;right:48px;top:50%;transform:translateY(-50%);flex-direction:column;gap:5px;width:168px;max-height:260px;overflow:auto;padding:8px;border-radius:14px;background:rgba(14,20,25,.94);border:1px solid rgba(255,255,255,.18);box-shadow:0 8px 20px rgba(0,0,0,.5)}
.tr-taunts.open .tt-panel{display:flex;animation:ttin .18s ease-out}
@keyframes ttin{from{opacity:0}to{opacity:1}}
.tt-emo{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.tt-panel button{font:inherit;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);border-radius:10px;padding:6px 4px;cursor:pointer;font-size:.85rem;text-align:left}
.tt-emo button{font-size:1.25rem;text-align:center;padding:4px 0}
.tt-panel button:hover,.tt-panel button:focus-visible{background:rgba(241,174,59,.35);outline:none}
.tr-chip{position:absolute;z-index:5;max-width:70%;padding:8px 14px;border-radius:18px;font-weight:800;font-size:1rem;background:#fff;color:#14202b;box-shadow:0 5px 14px rgba(0,0,0,.45);animation:chipin .35s cubic-bezier(.2,1.4,.4,1);pointer-events:none}
.tr-chip.opp{top:62px;left:12px;border:3px solid #9c3d1a;border-bottom-left-radius:4px}
.tr-chip.me{bottom:10px;left:12px;border:3px solid #1a8f4a;border-bottom-left-radius:4px}
@keyframes chipin{0%{transform:scale(.3) rotate(-8deg);opacity:0}100%{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.tr-chip,.tr-taunts.open .tt-panel{animation:none}}

/* historial de truco online junto a la ficha del truco */
.gtile-row{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:0;border-radius:16px;border:1px solid var(--line);background:var(--card);overflow:hidden}
.gtile-row .gtile{height:100%;border:0;border-radius:0;background:transparent;box-shadow:none}
.gtile-row .th{border:0;border-radius:0;background:transparent;border-left:1px dashed var(--line);padding:12px}
.th{display:flex;flex-direction:column;gap:5px;justify-content:center;padding:10px;border-radius:16px;border:1px solid var(--line);background:var(--card);font-size:.78rem;min-width:0}
.th strong{font-size:.8rem}
.th-row{display:flex;align-items:center;gap:6px;min-width:0}.th-row .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th-row.w b{color:var(--ok)}.th-row.l b{color:var(--danger)}
.th-bully{margin-top:2px;padding:5px 7px;border-radius:10px;background:color-mix(in srgb,var(--brand) 14%,var(--card));border:1px dashed var(--brand);font-weight:700;font-size:.74rem;line-height:1.25}
/* Necesidades */
.need{display:flex;flex-direction:column;gap:6px}.need.mine{border-left:4px solid var(--brand)}
.need .route{margin:0}.need .notice{font-size:.9rem}.need .notice .btn{margin-left:6px;display:inline-block}
a.card.notice.ok{display:block;text-decoration:none;font-weight:600;margin:6px 0}
.tabs.fancy button{min-width:0}
.tabs.fancy button{font-size:.76rem;padding-left:2px;padding-right:2px;overflow-wrap:anywhere}
.tablewrap{overflow-x:auto}.tablewrap table{width:100%;font-size:.85rem}.tablewrap th,.tablewrap td{padding:5px 6px;text-align:left}.tablewrap .num{text-align:right}
.sortbar{display:flex;align-items:center;gap:8px;justify-content:flex-end;font-size:.85rem;color:var(--muted);margin:-4px 0 8px}.sortbar select{width:auto;padding:5px 8px;font-size:.85rem}
/* "Viajes realizados +": sección plegable */
details.done{border:1px solid var(--line);border-radius:14px;background:var(--card);padding:0 12px;margin-top:6px}
details.done>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:12px 0;font-weight:700}
details.done>summary::-webkit-details-marker{display:none}
details.done>summary small{flex:1;font-weight:400;color:var(--muted);text-align:right}
details.done>summary::after{content:"+";font-size:1.4rem;line-height:1;color:var(--brand);width:1.2rem;text-align:center}
details.done[open]>summary::after{content:"−"}
details.done>.stack{padding-bottom:12px}
a.kpi.link{text-decoration:none;color:inherit;border-color:var(--primary,#2563eb)}
.urow{cursor:pointer}.urow:hover{background:rgba(0,0,0,.04)}.udet td{background:rgba(0,0,0,.03)}
.about-hero{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}
.about-hero img{border-radius:18px}.about-hero h2{margin:0}
.about .lead{font-size:1.05rem;line-height:1.5;color:var(--muted,#555);max-width:34em;margin:0}
.about section.card h3{margin-top:0}

.sharebox{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}.sharebox small{flex-basis:100%}
.sharebox.fresh{background:#fff7e0;border:2px solid var(--brand,#ef4f1d);border-radius:14px;padding:12px}.sharebox .flexall{flex-basis:100%}
