/* Styles for fruit_puzzle. */
:root{--ink:#241044;--violet:#7c4dff;--pink:#ff5aa5;--cyan:#45dce9;--yellow:#ffd84d;--green:#3dd98d;--red:#ff6172;--glass:rgba(34,13,67,.78);--line:rgba(255,255,255,.17);--muted:#d9c9ec}
    *{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{font-family:"Noto Sans Thai",Tahoma,sans-serif;color:#fff;background:radial-gradient(circle at 14% 16%,rgba(255,90,165,.28),transparent 30%),radial-gradient(circle at 86% 82%,rgba(69,220,233,.24),transparent 30%),linear-gradient(145deg,#261047,#40186f 56%,#142b5c);touch-action:manipulation;user-select:none}button{font:inherit}h1,h2,h3,.pill strong,.score-big{font-family:"Mitr","Noto Sans Thai",sans-serif}.hidden{display:none!important}
    #game{position:fixed;inset:0}.background{position:absolute;inset:0;pointer-events:none;overflow:hidden}.blob{position:absolute;width:28rem;height:28rem;border-radius:50%;filter:blur(90px);opacity:.15;background:var(--pink);left:-12rem;top:-12rem}.blob+div{left:auto;right:-13rem;top:auto;bottom:-12rem;background:var(--cyan)}.pattern{position:absolute;inset:0;opacity:.16;background-image:radial-gradient(#fff 1.2px,transparent 1.2px);background-size:34px 34px}
    .topbar{position:absolute;z-index:5;inset:max(12px,env(safe-area-inset-top)) 14px auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:9px;pointer-events:none}.hud-side{display:flex;gap:7px}.hud-side:last-child{justify-content:flex-end}.pill{min-width:83px;padding:8px 13px;border:1px solid var(--line);border-radius:17px;background:var(--glass);box-shadow:0 12px 32px rgba(0,0,0,.25);backdrop-filter:blur(14px);text-align:center}.pill span{display:block;color:#cdbde1;font-size:.59rem;font-weight:900;letter-spacing:.08em}.pill strong{display:block;margin-top:2px;font-size:clamp(.97rem,2.6vw,1.35rem)}.game-title{min-width:min(350px,43vw);padding:9px 18px;border:1px solid rgba(255,216,77,.26);border-radius:20px;background:rgba(48,18,87,.76);backdrop-filter:blur(14px);text-align:center}.game-title small{display:block;color:#ffe88a;font-size:.58rem;font-weight:900;letter-spacing:.15em}.game-title strong{display:block;margin-top:2px;font:600 clamp(.86rem,2.3vw,1.15rem) "Mitr"}
    #board{position:absolute;z-index:4;left:50%;top:50%;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:clamp(7px,1.4vw,12px);width:min(92vw,calc(100vh - 180px),620px);aspect-ratio:1;translate:-50% -50%;perspective:1000px}.card{position:relative;padding:0;border:0;border-radius:clamp(14px,2.5vw,22px);background:transparent;cursor:pointer;perspective:900px;outline:none;contain:layout paint style;isolation:isolate;-webkit-tap-highlight-color:transparent}.card-inner{position:absolute;inset:0;transform:translateZ(0) rotateY(0);transform-style:preserve-3d;transition:transform .26s cubic-bezier(.22,.72,.25,1);will-change:transform}.card.flipped .card-inner,.card.matched .card-inner{transform:translateZ(0) rotateY(180deg)}.face{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden;border:2px solid rgba(255,255,255,.22);border-radius:inherit;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-shadow:0 7px 18px rgba(17,4,37,.28);transform:translateZ(.1px)}.back{background:linear-gradient(145deg,#7652d5,#b43da1 55%,#e85979)}.back:before{content:"?";font:700 clamp(2rem,7vw,4.5rem) "Mitr";color:rgba(255,255,255,.9);text-shadow:0 7px 18px rgba(0,0,0,.25)}.back:after{content:"";position:absolute;inset:9%;border:2px dashed rgba(255,255,255,.28);border-radius:calc(clamp(14px,2.5vw,22px) - 5px)}.front{transform:rotateY(180deg) translateZ(.1px);background:linear-gradient(145deg,#fff,#f7ecff);color:#49216c}.fruit{font-size:clamp(2.2rem,7.2vw,5.2rem);line-height:1}.fruit-name{position:absolute;inset:auto 5px 7px;color:#6b4b7d;font-size:clamp(.52rem,1.6vw,.78rem);font-weight:800}@media(hover:hover) and (pointer:fine){.card:hover{translate:0 -2px}}.card:focus-visible{outline:4px solid rgba(69,220,233,.6);outline-offset:3px}.card.matched{animation:matched .42s ease}.card.matched .front{border-color:var(--green);box-shadow:0 0 0 5px rgba(61,217,141,.2),0 12px 28px rgba(0,0,0,.26)}.card.wrong{animation:wrong .22s ease}@keyframes matched{50%{scale:1.08}}@keyframes wrong{25%{translate:-4px 0}50%{translate:4px 0}75%{translate:-2px 0}}
    .bottom-bar{position:absolute;z-index:6;inset:auto 14px max(12px,env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:space-between;gap:10px}.hint{display:flex;align-items:center;gap:9px;max-width:min(500px,72vw);padding:9px 13px;border:1px solid var(--line);border-radius:15px;background:var(--glass);backdrop-filter:blur(14px);color:#e2d8ee;font-size:.7rem}.hint-icon{width:9px;height:9px;flex:0 0 auto;border-radius:50%;background:var(--yellow);box-shadow:0 0 13px var(--yellow)}.actions{display:flex;gap:7px}.icon-btn{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:14px;color:#fff;background:var(--glass);cursor:pointer}.icon-btn:hover,.icon-btn:focus-visible{background:rgba(124,77,255,.72);outline:3px solid rgba(69,220,233,.2)}
    #feedback{position:fixed;z-index:15;left:50%;top:50%;translate:-50% -50%;pointer-events:none;opacity:0;font:700 clamp(2rem,8vw,5rem) "Mitr";text-align:center;text-shadow:0 8px 35px rgba(0,0,0,.45)}#feedback.show{animation:feedback .75s ease-out}@keyframes feedback{20%,60%{opacity:1;scale:1.08}to{opacity:0;translate:-50% -85%}}#preview{position:fixed;z-index:17;inset:0;display:grid;place-items:center;pointer-events:none;background:rgba(27,8,53,.72)}#preview strong{display:grid;place-items:center;width:130px;height:130px;border:4px solid rgba(255,255,255,.65);border-radius:50%;background:rgba(124,77,255,.9);box-shadow:0 0 0 18px rgba(124,77,255,.16);font:700 4.2rem "Mitr";animation:pulse 1s ease-out infinite}@keyframes pulse{50%{scale:1.1}}
    .screen{position:fixed;z-index:30;inset:0;display:grid;place-items:center;padding:clamp(16px,3vw,34px);overflow:auto;background:radial-gradient(circle at 14% 18%,rgba(255,90,165,.32),transparent 28%),radial-gradient(circle at 86% 80%,rgba(69,220,233,.25),transparent 29%),linear-gradient(145deg,#251044,#451878 56%,#163367)}.screen:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.22;background-image:radial-gradient(#fff 1px,transparent 1px);background-size:34px 34px}.panel{position:relative;width:min(960px,100%);padding:clamp(23px,4vw,46px);border:1px solid rgba(255,255,255,.2);border-radius:35px;background:rgba(35,12,67,.72);box-shadow:0 36px 110px rgba(0,0,0,.46);backdrop-filter:blur(22px)}.welcome{display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(28px,5vw,68px);align-items:center}.eyebrow{display:flex;align-items:center;gap:10px;color:#74edf3;font-size:.7rem;font-weight:900;letter-spacing:.16em}.eyebrow:before{content:"";width:30px;height:3px;border-radius:9px;background:var(--cyan)}h1{margin:14px 0 16px;font-size:clamp(3.6rem,9vw,7.2rem);font-weight:700;line-height:.78;letter-spacing:-.07em}.fruit-word{display:block;color:#fff}.flip-word{display:block;color:transparent;background:linear-gradient(90deg,var(--yellow),var(--pink) 46%,#bb83ff 72%,var(--cyan));-webkit-background-clip:text;background-clip:text}.lead{margin:22px 0;color:var(--muted);font-size:clamp(.95rem,2vw,1.13rem);line-height:1.75}.features{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}.chip{padding:7px 11px;border:1px solid rgba(255,255,255,.13);border-radius:99px;background:rgba(255,255,255,.06);color:#e9e1f3;font-size:.7rem;font-weight:800}.primary,.secondary{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;min-height:52px;padding:12px 20px;border-radius:16px;color:#fff;cursor:pointer;font-weight:900}.primary{border:0;background:linear-gradient(135deg,#e74396,#7c4dff);box-shadow:0 15px 38px rgba(166,46,174,.36)}.secondary{margin-top:9px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.07)}.primary:hover,.secondary:hover,.primary:focus-visible,.secondary:focus-visible{translate:0 -2px;filter:brightness(1.1);outline:3px solid rgba(69,220,233,.2)}.note{margin:12px 0 0;color:#ad9fc0;font-size:.67rem;text-align:center}.visual{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:360px;margin:auto;rotate:-3deg}.demo-card{aspect-ratio:1;border:8px solid rgba(255,255,255,.75);border-radius:27px;background:linear-gradient(145deg,#fff,#f6eaff);box-shadow:0 20px 45px rgba(0,0,0,.3);display:grid;place-items:center;font-size:5rem}.demo-card:nth-child(2){translate:0 28px}.spark{position:absolute;font-size:2rem;color:var(--yellow);animation:float 2s ease-in-out infinite}.sp1{left:-25px;top:35%}.sp2{right:-15px;top:12%;animation-delay:.7s}@keyframes float{50%{translate:0 -12px;rotate:15deg}}
    .result{max-width:650px;text-align:center}.trophy{font-size:clamp(4rem,12vw,7rem)}.result h2{margin:7px 0 3px;font-size:clamp(2.3rem,7vw,4.4rem);font-weight:700}.result-copy{margin:8px 0 16px;color:var(--muted)}.score-big{font-size:clamp(3.8rem,14vw,7.5rem);font-weight:700;line-height:1;color:transparent;background:linear-gradient(90deg,var(--yellow),var(--pink),var(--cyan));-webkit-background-clip:text;background-clip:text}.stars{margin:8px 0 20px;color:var(--yellow);font-size:clamp(2rem,7vw,3.5rem);letter-spacing:.1em;text-shadow:0 0 20px rgba(255,216,77,.4)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.stats div{padding:16px 6px;border:1px solid rgba(255,255,255,.11);border-radius:17px;background:rgba(255,255,255,.055)}.stats span{display:block;color:#c2b3d4;font-size:.63rem;font-weight:900}.stats strong{display:block;margin-top:4px;font:600 clamp(1.25rem,4vw,1.8rem) "Mitr"}.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.result-actions .secondary{margin:0}.paused{position:fixed;z-index:25;inset:0;display:grid;place-items:center;padding:18px;background:rgba(23,7,45,.8);backdrop-filter:blur(12px)}.pause-card{width:min(390px,100%);padding:30px;border:1px solid var(--line);border-radius:27px;background:#351363;text-align:center}.pause-card h2{margin:7px 0;font-size:2rem}.pause-card p{margin:0 0 20px;color:var(--muted)}
    .confetti{position:fixed;z-index:50;width:11px;height:18px;pointer-events:none;animation:fall 1.6s ease-in forwards}@keyframes fall{to{translate:var(--dx) 110vh;rotate:720deg;opacity:.2}}
    @media(max-width:720px){.welcome{grid-template-columns:1fr}.visual{display:none}.panel{border-radius:27px}h1{font-size:clamp(4rem,20vw,6.5rem)}.pill{min-width:68px;padding:7px 8px}.pill.score-pill{display:none}.game-title{min-width:44vw;padding-inline:8px}.topbar{gap:5px}#board{width:min(94vw,calc(100vh - 170px),560px);gap:7px}.fruit-name{bottom:5px}.hint{max-width:70vw;padding:8px 10px}.pill,.game-title,.hint{backdrop-filter:none}.stats{gap:5px}.stats div{padding:13px 3px}.result-actions{grid-template-columns:1fr}}
    @media(max-width:420px){.pill span{font-size:.52rem}.pill strong{font-size:.92rem}.game-title small{font-size:.5rem}.game-title strong{font-size:.8rem}.fruit{font-size:clamp(2rem,12vw,3.5rem)}.fruit-name{font-size:.5rem}}
    @media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}
