:root{--bg: #0f1020;--bg-2: #1a1b36;--glass: rgba(255,255,255,.08);--text: #f6f7fb;--muted: #cfd2e6;--primary: #7ad7c0;--accent: #ff9ecb;--ok: #8be28b;--warn: #ffd166}*{box-sizing:border-box}html,body,#root{height:100%;background:var(--bg)}body{margin:0;color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial}.page{min-height:100vh;background:radial-gradient(1200px 600px at 10% 20%,#1b223e,var(--bg)) fixed,radial-gradient(1000px 800px at 90% 10%,#1b2441,transparent) fixed,linear-gradient(160deg,#0f1020,#181a2f);position:relative;overflow-x:clip}.container{width:min(1000px,92vw);margin:0 auto;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:32px 0}.header{text-align:center;margin-bottom:20px}.header h1{margin:0 0 6px;font-weight:800;letter-spacing:.3px}.subtitle{margin:0 0 10px;color:var(--muted)}.progress{color:var(--muted);font-size:.9rem}.progress-rail{display:flex;justify-content:center;gap:10px;margin-top:8px}.progress-dot{width:10px;height:10px;border-radius:50%;background:#fff3;box-shadow:0 0 0 2px #ffffff0f inset}.progress-dot.on{background:linear-gradient(180deg,var(--primary),#54c3aa);box-shadow:0 0 12px #7ad7c099}.step-card{display:block}.card{background:linear-gradient(180deg,#ffffff14,#ffffff0a);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:20px;box-shadow:0 20px 40px #00000059}.fancy{position:relative;overflow:hidden}.fancy:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border-radius:inherit;padding:1px;background:conic-gradient(from 140deg,var(--accent),transparent 30%,var(--primary));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5}.fancy:before,.fancy:after{pointer-events:none}.fancy:after{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.25),transparent 60%);filter:blur(6px)}.voucher{text-align:center}.voucher .to{color:var(--muted);margin-top:-8px}.voucher .message{margin:12px auto 16px;max-width:56ch;color:var(--text)}.voucher .code-wrap{margin-top:10px}.voucher .code{margin:12px auto;display:inline-block;font-weight:800;letter-spacing:2px;font-size:1.3rem;padding:10px 14px;border-radius:10px;background:#00000059;border:1px solid rgba(255,255,255,.1)}.voucher-actions{display:flex;gap:10px;justify-content:center;margin-top:8px}.details{margin-top:14px;color:var(--muted)}.btn{background:transparent;color:var(--text);border:1px solid rgba(255,255,255,.2);padding:10px 16px;border-radius:12px;cursor:pointer;transition:transform .05s ease,border-color .2s ease,background .2s ease}.btn:hover{transform:translateY(-1px);border-color:#ffffff59}.btn:active{transform:translateY(0)}.btn.primary{background:linear-gradient(180deg,var(--primary),#54c3aa);color:#0d1b1e;border:none;font-weight:700}.link{background:none;border:none;color:var(--accent);cursor:pointer;padding:4px 0}.controls{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap}.intro{text-align:center}.btn.danger{background:linear-gradient(180deg,#ff8aa0,#e24a5a);color:#19070a;border:none;font-weight:700}.btn.info{background:linear-gradient(180deg,#7ab8ff,#4a90e2);color:#06152a;border:none;font-weight:700}.input-row{display:flex;gap:10px;align-items:center}.input{flex:1;padding:10px 12px;border-radius:10px;background:#ffffff0f;border:1px solid rgba(255,255,255,.2);color:var(--text)}.hint{color:var(--warn);margin-top:8px}.feedback{margin-top:10px;min-height:1.2em}.crossword{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:start}.cw-grid{display:grid;gap:4px;background:#ffffff0f;padding:8px;border-radius:12px;border:1px solid rgba(255,255,255,.1);align-items:center;justify-items:center}.cw-cell{width:40px;height:40px;border-radius:8px;text-align:center;font-weight:800;font-size:18px;color:var(--text);background:#00000059;border:1px solid rgba(255,255,255,.2)}.cw-cell.block{background:#ffffff14;border:1px solid rgba(255,255,255,.12)}.cw-cell.wrong{border-color:var(--accent);box-shadow:0 0 0 2px #ff9ecb40 inset}.cw-clues h3{margin:8px 0 6px}.cw-clues{color:var(--muted)}.cw-num{color:var(--muted);font-size:12px}.controls.center{justify-content:center}.memory-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.memory-grid{display:grid;grid-template-columns:repeat(4,minmax(70px,1fr));gap:12px;perspective:800px}.card-tile{position:relative;aspect-ratio:1 / 1;border-radius:12px;overflow:hidden;cursor:pointer}.card-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.card-tile:hover{transform:translateY(-2px)}.card-inner{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.2,.8,.2,1)}.card-tile.flipped .card-inner{transform:rotateY(180deg)}.card-face{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;backface-visibility:hidden;border-radius:12px}.card-face.front{color:#b9bed6;background:#ffffff0f;border:1px solid rgba(255,255,255,.2);font-size:clamp(22px,6vw,34px)}.card-face.back{transform:rotateY(180deg);font-size:clamp(26px,7vw,42px);background:radial-gradient(circle at 30% 30%,#7ad7c02e,#ffffff0f);border:1px solid rgba(122,215,192,.35);box-shadow:0 10px 20px #00000059,0 0 0 2px #7ad7c026 inset}.card-tile.matched .card-face.back{box-shadow:0 10px 20px #00000059,0 0 0 2px var(--primary) inset,0 0 14px #7ad7c080}.slider-row{display:flex;align-items:center;gap:14px}.slider-row input[type=range]{width:100%}.slider-value{min-width:64px;text-align:right;color:var(--muted)}.footer{text-align:center;color:var(--muted);margin-top:18px}.small-note{text-align:center;color:var(--muted);margin-top:10px}.bg-hearts:before,.bg-hearts:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 20% 10%,rgba(255,158,203,.08) 0 120px,transparent 120px),radial-gradient(circle at 80% 20%,rgba(122,215,192,.08) 0 120px,transparent 120px),radial-gradient(circle at 10% 80%,rgba(255,158,203,.06) 0 140px,transparent 140px),radial-gradient(circle at 90% 70%,rgba(122,215,192,.06) 0 140px,transparent 140px)}#confetti{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:10}.loading{height:100%;display:grid;place-items:center;gap:14px;background:var(--bg);color:var(--text)}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:var(--primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.grad{background:linear-gradient(90deg,var(--accent),var(--primary));-webkit-background-clip:text;background-clip:text;color:transparent}.floaters{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.floater{position:absolute;opacity:.2;font-size:clamp(18px,4vw,28px);animation:floatUp 18s linear infinite}.floater.f1{left:8%;bottom:-10%;animation-delay:0s}.floater.f2{left:22%;bottom:-12%;animation-delay:4s}.floater.f3{left:48%;bottom:-14%;animation-delay:8s}.floater.f4{left:68%;bottom:-11%;animation-delay:2s}.floater.f5{left:84%;bottom:-13%;animation-delay:10s}.floater.f6{left:36%;bottom:-12%;animation-delay:6s}@keyframes floatUp{to{transform:translateY(-120vh) rotate(30deg)}}@media (max-width: 520px){.container{padding:20px 0}}@media print{body{background:#fff}.header,.footer,.bg-hearts,#confetti,.floaters,.progress,.progress-rail{display:none!important}.card{box-shadow:none;border:1px solid #ccc}}
