/* ================= ARS Festivals – white/grey base with festive colour ================= */
:root{
  --bg:#f3f4f7; --card:#ffffff; --ink:#1f2330; --muted:#6b7180; --line:#e3e5ea; --soft:#eef0f4;
  --c1:#ff7a00; --c2:#ffc93c; --c3:#d1006e;
  --r:18px; --shadow:0 6px 24px rgba(20,24,40,.07); --shadow2:0 14px 40px rgba(20,24,40,.14);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Poppins,system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.55;-webkit-tap-highlight-color:transparent;overflow-x:hidden}
h1,h2,h3,.brand{font-family:"Baloo 2",Poppins,sans-serif;line-height:1.15;margin:.2em 0 .4em}
h1{font-size:clamp(28px,6vw,46px)} h2{font-size:clamp(22px,4.5vw,30px)} h3{font-size:19px}
a{color:inherit}
img{max-width:100%}
code{background:var(--soft);padding:2px 6px;border-radius:6px}
.wrap{max-width:1140px;margin:0 auto;padding:18px 16px 40px}
.narrow{max-width:520px}
.muted{color:var(--muted)} .small{font-size:13px} .center{text-align:center}
.hidden{display:none!important}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:12px;padding:10px 16px;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.brand{font-size:24px;font-weight:800;text-decoration:none;display:flex;align-items:center;gap:6px;margin:0;background:linear-gradient(90deg,#ff7a00,#d1006e,#3a86ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand-ico{-webkit-text-fill-color:initial;color:initial}
.nav{margin-left:auto;display:flex;gap:4px;align-items:center}
.nav a{text-decoration:none;padding:8px 12px;border-radius:12px;font-weight:500;font-size:14px}
.nav a:hover{background:var(--soft)}
.nav-toggle{display:none;margin-left:auto;border:0;background:var(--soft);font-size:20px;border-radius:10px;padding:6px 12px}
@media(max-width:720px){
  .nav-toggle{display:block}
  .nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;background:#fff;padding:10px;border-bottom:1px solid var(--line);box-shadow:var(--shadow)}
  .nav.open{display:flex} .nav a{width:100%;text-align:center}
}

/* ---------- buttons/forms ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;text-decoration:none;font:600 15px Poppins,sans-serif;padding:12px 20px;border-radius:14px;color:#fff;background:linear-gradient(135deg,var(--c1),var(--c3));box-shadow:0 6px 18px color-mix(in srgb,var(--c1) 35%,transparent);transition:transform .15s,box-shadow .15s}
.btn:hover{transform:translateY(-2px)} .btn:active{transform:scale(.97)}
.btn-dark{background:#1f2330;box-shadow:none} .btn-light{background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:none}
.btn-sm{padding:7px 14px;font-size:13px;border-radius:10px} .btn-block{width:100%}
.btn-danger{background:#e5383b;box-shadow:none}
.form{display:grid;gap:14px}
label{display:grid;gap:6px;font-weight:500;font-size:14px}
input,select,textarea{font:inherit;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);width:100%;outline:none;transition:border .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{border-color:var(--c1);box-shadow:0 0 0 4px color-mix(in srgb,var(--c1) 18%,transparent)}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0}
.alert{padding:12px 16px;border-radius:12px;margin:10px 0;font-weight:500}
.alert-ok{background:#e6f7ee;color:#106b3c} .alert-err{background:#fde8e8;color:#9b1c1c} .alert-info{background:#e8f0fe;color:#1a47a5}

/* ---------- cards ---------- */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);border:1px solid var(--line)}
.pad{padding:22px}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;border-radius:28px;padding:36px 22px;margin-bottom:22px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);text-align:center}
.hero::before{content:"";position:absolute;inset:-40%;background:conic-gradient(from 0deg,#ff7a0022,#ffc93c22,#d1006e22,#3a86ff22,#06d6a022,#ff7a0022);animation:spin 18s linear infinite;z-index:0}
.hero>*{position:relative;z-index:1}
.hero-emojis{font-size:34px;letter-spacing:6px;animation:bob 3s ease-in-out infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes bob{50%{transform:translateY(-6px)}}
.quick{display:flex;gap:10px;max-width:520px;margin:16px auto 0;flex-wrap:wrap}
.quick input{flex:1 1 220px;font-size:16px}

/* ---------- filters & festival grid ---------- */
.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 16px;font:500 14px Poppins;cursor:pointer;color:var(--ink)}
.chip.active{background:#1f2330;color:#fff;border-color:#1f2330}
.section-title{display:flex;align-items:center;justify-content:space-between;margin:22px 0 10px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}
.fest{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:20px;background:#fff;border:1px solid var(--line);text-decoration:none;box-shadow:var(--shadow);transition:transform .2s,box-shadow .2s;cursor:pointer;text-align:left;font:inherit;color:inherit}
.fest:hover{transform:translateY(-4px) rotate(-.5deg);box-shadow:var(--shadow2)}
.fest::after{content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle,var(--c2),var(--c1));opacity:.25}
.fest .em{font-size:40px;line-height:1;filter:drop-shadow(0 4px 6px rgba(0,0,0,.12))}
.fest b{font-family:"Baloo 2";font-size:18px;line-height:1.1}
.fest .cat{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:600;color:var(--c1)}
.fest .dt{font-size:12px;color:var(--muted)}
.fest .bar{height:5px;border-radius:5px;background:linear-gradient(90deg,var(--c1),var(--c2),var(--c3));margin-top:auto}
.badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;background:linear-gradient(90deg,var(--c1),var(--c3));color:#fff}

/* ---------- create modal ---------- */
.modal{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;padding:16px;background:rgba(15,18,30,.55);backdrop-filter:blur(4px)}
.modal.open{display:flex;animation:fade .2s}
.modal-box{width:100%;max-width:440px;background:#fff;border-radius:24px;padding:24px;box-shadow:var(--shadow2);position:relative;animation:pop .3s cubic-bezier(.2,1.4,.4,1)}
.modal-close{position:absolute;right:12px;top:10px;border:0;background:var(--soft);border-radius:50%;width:34px;height:34px;font-size:18px;cursor:pointer}
@keyframes fade{from{opacity:0}} @keyframes pop{from{transform:scale(.8);opacity:0}}

/* ---------- wish page ---------- */
body.wish-page{background:radial-gradient(circle at 20% 0%,color-mix(in srgb,var(--c2) 25%,#f5f5f7),#f3f4f7 55%)}
#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}
.wish-wrap{position:relative;z-index:6;max-width:680px;margin:0 auto;padding:16px 16px 50px}
.wish-card{position:relative;overflow:hidden;text-align:center;padding:34px 22px 28px;border-radius:30px;background:#fff;box-shadow:0 20px 60px color-mix(in srgb,var(--c1) 25%,transparent);border:2px solid color-mix(in srgb,var(--c1) 30%,#fff)}
.wish-card::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,color-mix(in srgb,var(--c1) 12%,transparent),transparent 40%,color-mix(in srgb,var(--c3) 12%,transparent));pointer-events:none}
.wish-card>*{position:relative}
.wish-emoji{font-size:84px;line-height:1;animation:bob 2.6s ease-in-out infinite;filter:drop-shadow(0 10px 14px rgba(0,0,0,.18))}
.wish-to{font-size:16px;color:var(--muted);margin-top:10px}
.wish-title{font-size:clamp(34px,9vw,58px);font-weight:800;margin:4px 0;background:linear-gradient(90deg,var(--c1),var(--c3),var(--c1));background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 4s linear infinite}
@keyframes shine{to{background-position:200% center}}
.wish-msg{font-size:17px;max-width:520px;margin:10px auto 18px}
.wish-from{display:inline-block;padding:12px 22px;border-radius:18px;background:linear-gradient(135deg,var(--c1),var(--c3));color:#fff}
.wish-from small{display:block;opacity:.85;font-size:12px}
.wish-from b{font-family:"Baloo 2";font-size:28px;line-height:1.1}
.tap-hint{font-size:13px;color:var(--muted);margin-top:14px;animation:pulse 1.6s infinite}
@keyframes pulse{50%{opacity:.4}}
.acrostic{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:12px 0}
.acrostic span{display:flex;flex-direction:column;align-items:center;min-width:64px;padding:8px 6px;border-radius:14px;background:var(--soft);animation:pop .5s backwards}
.acrostic span b{font-family:"Baloo 2";font-size:26px;color:var(--c1);line-height:1}
.acrostic span i{font-style:normal;font-size:12px;color:var(--muted)}
.panel{margin-top:16px;padding:20px;border-radius:24px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow)}
.panel h3{display:flex;align-items:center;gap:8px}
.meaning{font-size:15px}
.share{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.share a,.share button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;border-radius:16px;border:1px solid var(--line);background:#fff;font:600 13px Poppins;cursor:pointer;text-decoration:none;color:var(--ink);transition:transform .15s}
.share a:hover,.share button:hover{transform:translateY(-3px)}
.share .ic{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#fff;font-size:19px}
.ic.wa{background:#25d366}.ic.fb{background:#1877f2}.ic.ig{background:linear-gradient(45deg,#f9a825,#e1306c,#833ab4)}.ic.x{background:#111}.ic.tg{background:#229ed9}.ic.cp{background:#6b7180}
.linkbox{display:flex;gap:8px;margin-top:12px}.linkbox input{font-size:13px}

/* interactive toys */
.toys{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.toy{flex:1 1 90px;max-width:130px;padding:14px 8px;border-radius:18px;border:0;cursor:pointer;background:var(--soft);font:600 13px Poppins;color:var(--ink);transition:transform .15s,background .2s}
.toy span{display:block;font-size:34px;margin-bottom:4px}
.toy:hover{transform:translateY(-3px) scale(1.03);background:color-mix(in srgb,var(--c2) 30%,#fff)}
.toy:active{transform:scale(.92)}
.diyas{display:flex;justify-content:center;gap:10px;font-size:40px;margin-top:10px;flex-wrap:wrap}
.diyas button{border:0;background:none;font-size:42px;cursor:pointer;filter:grayscale(1) brightness(.8);transition:filter .3s,transform .3s}
.diyas button.lit{filter:none;transform:scale(1.15);text-shadow:0 0 20px #ffb703}
.gift-row{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}
.gift{border:0;background:none;font-size:56px;cursor:pointer;animation:bob 2s infinite}
.gift:nth-child(2){animation-delay:.3s}.gift:nth-child(3){animation-delay:.6s}
.gift.open{animation:none;transform:scale(1.2)}
.gift-msg{min-height:28px;font-weight:600;color:var(--c1);text-align:center;margin-top:8px}
.ravan-stage{position:relative;height:200px;display:flex;align-items:flex-end;justify-content:center;overflow:hidden;border-radius:18px;background:linear-gradient(#ffe8d6,#fff)}
.ravan{font-size:110px;line-height:1;transition:filter 1s,transform 1s}
.ravan.burn{filter:sepia(1) saturate(5) hue-rotate(-20deg) brightness(.6);transform:scale(.6) translateY(40px);opacity:.3}
.flames{position:absolute;bottom:0;font-size:60px;opacity:0;transition:opacity .4s}
.flames.on{opacity:1;animation:bob .5s infinite}
.arrow{position:absolute;left:-60px;bottom:90px;font-size:40px;transform:rotate(45deg)}
.arrow.fly{animation:fly .7s ease-in forwards}
@keyframes fly{to{left:calc(50% - 20px)}}
.palette{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.palette button{width:46px;height:46px;border-radius:50%;border:3px solid #fff;box-shadow:0 3px 10px rgba(0,0,0,.18);cursor:pointer}
.palette button.sel{outline:3px solid var(--ink);outline-offset:2px}
.reply-list{display:grid;gap:8px}
.shake{animation:shake .5s}
@keyframes shake{20%{transform:translate(-8px,4px)}40%{transform:translate(8px,-4px)}60%{transform:translate(-5px,2px)}80%{transform:translate(5px,-2px)}}

/* ---------- games ---------- */
.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.game-card{padding:22px;border-radius:24px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);text-decoration:none;display:flex;flex-direction:column;gap:6px;transition:transform .2s}
.game-card:hover{transform:translateY(-4px)}
.game-card .em{font-size:52px}
.game-shell{max-width:560px;margin:0 auto}
.hud{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:8px 0;font-weight:600}
.hud .pill{padding:6px 14px;border-radius:999px;background:#fff;border:1px solid var(--line)}
.stage{position:relative;width:100%;aspect-ratio:3/4;max-height:72vh;border-radius:24px;overflow:hidden;background:linear-gradient(#1b1f3b,#3a2459);box-shadow:var(--shadow2);touch-action:none;user-select:none}
.stage canvas{width:100%;height:100%;display:block}
.overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:20px;text-align:center;background:rgba(15,18,35,.72);color:#fff;z-index:3}
.overlay h2{color:#fff}
.overlay input{max-width:260px;text-align:center}
.mem-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:12px;height:100%;align-content:center}
.mem{aspect-ratio:1;border:0;border-radius:14px;font-size:clamp(26px,8vw,40px);cursor:pointer;background:linear-gradient(135deg,#ff7a00,#d1006e);color:transparent;transition:transform .3s,background .3s}
.mem.flip,.mem.done{background:#fff;color:initial;transform:rotateY(180deg)}
.mem.done{opacity:.55}
.quiz{padding:20px;color:#fff;height:100%;display:flex;flex-direction:column;justify-content:center;gap:12px}
.quiz .q{font:700 21px "Baloo 2"}
.quiz button{padding:13px;border-radius:14px;border:0;font:500 15px Poppins;cursor:pointer;background:rgba(255,255,255,.95);text-align:left}
.quiz button.right{background:#2dc653;color:#fff}.quiz button.wrong{background:#e5383b;color:#fff}
.qbar{height:6px;border-radius:6px;background:rgba(255,255,255,.2);overflow:hidden}.qbar i{display:block;height:100%;background:#ffc93c;transition:width .1s linear}

/* ---------- leaderboard / tables ---------- */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 14px}
.tabs a{padding:8px 14px;border-radius:12px;text-decoration:none;background:#fff;border:1px solid var(--line);font-weight:500;font-size:14px}
.tabs a.active{background:#1f2330;color:#fff;border-color:#1f2330}
.lb{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.lb li{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:16px;background:#fff;border:1px solid var(--line)}
.lb .rk{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:var(--soft)}
.lb li:nth-child(1) .rk{background:#ffd60a}.lb li:nth-child(2) .rk{background:#d9d9d9}.lb li:nth-child(3) .rk{background:#e8a87c}
.lb .nm{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb .sc{font:800 20px "Baloo 2";color:#d1006e}
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--soft)}
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:16px}
.stat{padding:18px;border-radius:18px;background:#fff;border:1px solid var(--line)}
.stat b{display:block;font:800 30px "Baloo 2"}
.stat span{color:var(--muted);font-size:13px}

/* ---------- admin ---------- */
.admin{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
.side{background:#1f2330;color:#cfd3dc;padding:18px 12px;position:sticky;top:0;height:100vh}
.side .brand{margin:0 8px 18px}
.side a{display:block;padding:10px 14px;border-radius:12px;text-decoration:none;color:#cfd3dc;font-size:14px}
.side a.active,.side a:hover{background:#2f3445;color:#fff}
.admin-main{padding:22px;min-width:0}
@media(max-width:820px){.admin{grid-template-columns:1fr}.side{position:static;height:auto;display:flex;flex-wrap:wrap;gap:4px}.side .brand{width:100%}}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.swatch{display:inline-block;width:16px;height:16px;border-radius:5px;vertical-align:middle;border:1px solid #0002}

/* footer */
.foot{text-align:center;color:var(--muted);padding:24px 16px 34px;font-size:14px;position:relative;z-index:6}
.foot a{color:var(--muted)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- music button ---------- */
.music-btn{position:fixed;right:14px;bottom:16px;z-index:150;display:flex;align-items:center;gap:6px;padding:9px 14px 9px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.95);box-shadow:var(--shadow2);cursor:pointer;font:600 12px Poppins,sans-serif;color:var(--ink);backdrop-filter:blur(8px)}
.music-btn span{font-size:20px;line-height:1}
.music-btn.playing span{animation:bob 1s ease-in-out infinite}
.music-btn.playing{border-color:color-mix(in srgb,var(--c1) 50%,#fff)}
@media(max-width:480px){.music-btn small{display:none}.music-btn{padding:10px}}

/* ---------- language button & picker ---------- */
.lang-btn{order:5;border:1px solid var(--line);background:#fff;border-radius:12px;padding:7px 11px;font:600 13px Poppins,sans-serif;cursor:pointer;color:var(--ink);white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}
.nav-toggle{order:6}
@media(max-width:720px){.lang-btn{margin-left:auto}.nav-toggle{margin-left:8px}}
.lang-modal .modal-box{max-width:560px;max-height:86vh;display:flex;flex-direction:column}
.lang-list{overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin-top:12px;padding:2px}
.lang-sec{grid-column:1/-1;font-weight:700;margin-top:8px}
.lang-item{display:flex;flex-direction:column;align-items:flex-start;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:#fff;cursor:pointer;text-align:left;font-family:inherit}
.lang-item b{font-size:16px}.lang-item small{color:var(--muted);font-size:11px}
.lang-item:hover,.lang-item.active{border-color:#1f2330;background:var(--soft)}
/* hide Google Translate bar */
body{top:0!important}
.goog-te-banner-frame,iframe.skiptranslate,.skiptranslate>iframe,#goog-gt-tt,.goog-te-balloon-frame{display:none!important}
.goog-text-highlight{background:none!important;box-shadow:none!important}

/* ---------- name scripts & greeting ---------- */
.wish-local{min-height:30px;font:700 20px "Baloo 2",Poppins,sans-serif;color:var(--c3)}
.local-in{animation:localIn .7s cubic-bezier(.2,1.4,.4,1)}
@keyframes localIn{from{opacity:0;transform:translateY(12px) scale(.9);filter:blur(4px)}}
.wish-from i{display:block;font-style:normal;font-size:11px;opacity:.85;min-height:14px}
.name-flip{display:inline-block;animation:nameFlip .8s cubic-bezier(.2,1.3,.4,1)}
@keyframes nameFlip{0%{transform:rotateX(90deg) scale(.6);opacity:0;filter:blur(3px)}100%{transform:none;opacity:1}}
.name-scripts{display:flex;flex-wrap:wrap;gap:8px}
.name-scripts span{display:flex;flex-direction:column;align-items:center;padding:10px 14px;border-radius:16px;background:linear-gradient(135deg,color-mix(in srgb,var(--c1) 14%,#fff),color-mix(in srgb,var(--c3) 14%,#fff));animation:pop .5s backwards}
.name-scripts b{font-size:22px;color:var(--c1);font-family:"Baloo 2",sans-serif}
.name-scripts small{font-size:11px;color:var(--muted)}

/* ---------- word animations ---------- */
.wish-title[data-split]{background:none;color:var(--c1);-webkit-text-fill-color:currentColor;text-shadow:0 3px 0 color-mix(in srgb,var(--c3) 35%,transparent)}
.wish-msg .w,.wish-title .w{display:inline-block;white-space:pre}
.anim-wave .w{animation:aWave 2.2s ease-in-out infinite;animation-delay:calc(var(--i)*.07s)}
@keyframes aWave{0%,60%,100%{transform:none}30%{transform:translateY(-9px)}}
.anim-drop .w{animation:aDrop .7s cubic-bezier(.2,1.5,.5,1) backwards;animation-delay:calc(var(--i)*.06s)}
@keyframes aDrop{from{transform:translateY(-60px);opacity:0}}
.anim-zoom .w{animation:aZoom .6s cubic-bezier(.2,1.6,.4,1) backwards;animation-delay:calc(var(--i)*.06s)}
@keyframes aZoom{from{transform:scale(0);opacity:0}}
.anim-flip .w{animation:aFlip .8s ease backwards;animation-delay:calc(var(--i)*.07s)}
@keyframes aFlip{from{transform:rotateY(90deg);opacity:0}}
.anim-glow .w{animation:aGlow 2.4s ease-in-out infinite;animation-delay:calc(var(--i)*.1s)}
@keyframes aGlow{50%{text-shadow:0 0 14px var(--c2),0 0 24px var(--c1);color:var(--c1)}}
.anim-type .w{animation:aType .01s steps(1) backwards;animation-delay:calc(var(--i)*.12s)}
@keyframes aType{from{visibility:hidden}}
.anim-rainbow .w{animation:aRain 3s linear infinite;animation-delay:calc(var(--i)*-.15s)}
@keyframes aRain{0%{color:#ff006e}20%{color:#fb5607}40%{color:#ffbe0b}60%{color:#06d6a0}80%{color:#3a86ff}100%{color:#ff006e}}
.anim-swing .w{transform-origin:top center;animation:aSwing 2.6s ease-in-out infinite;animation-delay:calc(var(--i)*.09s)}
@keyframes aSwing{25%{transform:rotate(7deg)}75%{transform:rotate(-7deg)}}
.anim-blur .w{animation:aBlur 1s ease backwards;animation-delay:calc(var(--i)*.07s)}
@keyframes aBlur{from{filter:blur(10px);opacity:0;transform:scale(1.4)}}
.anim-bounce .w{animation:aBounce 1s cubic-bezier(.3,2,.5,1) backwards,aWave 3s ease-in-out infinite;animation-delay:calc(var(--i)*.05s),calc(var(--i)*.1s + 1.2s)}
@keyframes aBounce{0%{transform:translateY(40px) scaleY(.4);opacity:0}}

/* ---------- chat ---------- */
.chat-wrap{max-width:760px;margin:0 auto}
.chat-box{height:min(60vh,560px);overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:14px;background:var(--soft);border-radius:18px;border:1px solid var(--line)}
.msg{max-width:82%;padding:9px 13px;border-radius:16px 16px 16px 4px;background:#fff;border:1px solid var(--line);align-self:flex-start;word-wrap:break-word;animation:pop .25s}
.msg.me{align-self:flex-end;border-radius:16px 16px 4px 16px;background:linear-gradient(135deg,#ff7a00,#d1006e);color:#fff;border:0}
.msg .who{font-size:12px;font-weight:700;color:#d1006e}.msg.me .who{color:#fff;opacity:.85}
.msg .tm{font-size:10px;opacity:.6;margin-left:6px}
.msg.ai{background:#eef4ff;border-color:#cfe0ff}.msg.ai .who{color:#3a5bd9}
.chat-form{display:flex;gap:8px;margin-top:10px}.chat-form input{flex:1}
.typing{font-size:13px;color:var(--muted);padding:4px 8px}
.wish-title .ww{display:inline-block;white-space:nowrap}
.brand{white-space:nowrap}
@media(max-width:480px){.brand{font-size:20px}.lang-btn{max-width:96px;padding:7px 9px}}
