:root{--background:#fffafb;--foreground:#4a3039;--card:#fff;--card-foreground:#4a3039;--popover:#fff;--popover-foreground:#4a3039;--primary:#ef7fa2;--primary-foreground:#fff;--secondary:#fff0f5;--secondary-foreground:#9b4965;--muted:#fff5f7;--muted-foreground:#896b75;--accent:#ffe6ee;--accent-foreground:#8d405b;--destructive:#d83b65;--border:#f4dce4;--input:#f4dce4;--ring:#ef9ab5;--radius:1rem}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{min-width:320px;color:var(--foreground);background:#fffafb;font-family:Trebuchet MS,Segoe UI,sans-serif}button{font-family:inherit}.identity-overlay{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#4229316b;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.game-shell{isolation:isolate;background:radial-gradient(circle at 50% 35%,#fffffff7 0 18%,#0000 48%),linear-gradient(145deg,#fff 0%,#fff8fa 52%,#fff1f6 100%);place-items:center;min-height:100dvh;padding:24px;display:grid;position:relative;overflow:hidden}.ambient-glow{z-index:-2;filter:blur(55px);background:#ffb5cc29;border-radius:999px;width:52vw;height:52vw;position:absolute}.ambient-glow-one{top:-22vw;right:-17vw}.ambient-glow-two{bottom:-27vw;left:-15vw}.heart-rain{z-index:-1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.falling-heart{color:#ef9db8;opacity:.16;filter:drop-shadow(0 5px 8px #e16d921a);animation:linear infinite heart-fall;position:absolute;top:-12vh}.game-started .falling-heart{animation-duration:4.5s!important}.puzzle-grid{aspect-ratio:1;width:min(80vw,330px);margin:24px auto 0;position:relative}.puzzle-slot{box-sizing:border-box;z-index:1;width:33.3333%;height:33.3333%;padding:4px;transition:transform .22s,padding .45s .25s;position:absolute}.puzzle-empty-slot{z-index:0}.puzzle-piece,.puzzle-empty{box-sizing:border-box;border-radius:12px;width:100%;height:100%;display:block}.puzzle-piece{cursor:pointer;background-color:#fff;background-repeat:no-repeat;border:1px solid #efb3c2;padding:0;transition:border-radius .45s .25s,border-color .45s .25s,box-shadow .45s .25s;box-shadow:0 2px 5px #954a601a}.puzzle-piece:active{filter:brightness(.96)}.puzzle-empty{background:#ffffff40;border:1px dashed #efb3c2;transition:border-radius .45s .25s,border-color .45s .25s}.puzzle-final-piece{cursor:default;animation:.5s ease-out both final-piece-appear}@keyframes final-piece-appear{0%{opacity:0;transform:scale(.75)}to{opacity:1;transform:scale(1)}}.puzzle-grid-solved{border-radius:12px;overflow:hidden}.puzzle-grid-solved .puzzle-slot{padding:0}.puzzle-grid-solved .puzzle-piece{box-shadow:none;cursor:default;border-color:#0000;border-radius:0}.puzzle-success{color:#a45c70;text-align:center;margin:26px 0 0;font-size:20px;animation:.6s .65s both puzzle-success-appear}.puzzle-solve-button{color:#a45c70;font:inherit;cursor:pointer;background:#ffffffb3;border:1px solid #efb3c2;border-radius:999px;margin:22px auto 0;padding:10px 18px;transition:background-color .18s,transform .18s,opacity .18s;display:block}.puzzle-solve-button:hover{background:#fff;transform:translateY(-1px)}.puzzle-solve-button:disabled{opacity:.65;cursor:default;transform:none}@keyframes puzzle-success-appear{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes heart-fall{0%{transform:translate(-10px,-10vh)rotate(-12deg)}50%{transform:translate(17px,54vh)rotate(8deg)}to{transform:translate(-5px,115vh)rotate(19deg)}}.welcome-card,.next-screen{text-align:center;width:min(100%,580px)}.welcome-card{transition:opacity .5s,transform .5s,visibility .5s;animation:.9s cubic-bezier(.22,1,.36,1) both card-arrive}.welcome-card-hidden{visibility:hidden;opacity:0;transform:translateY(-18px)scale(.98)}@keyframes card-arrive{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.tiny-heart,.next-heart{color:#ef7fa2;filter:drop-shadow(0 8px 16px #e2658e38);margin-bottom:14px;font-size:2rem;line-height:1;display:block}.eyebrow{color:#b7617e;letter-spacing:.18em;text-transform:uppercase;margin:0 0 14px;font-size:.72rem;font-weight:700}.welcome-card h1,.next-screen h2{color:#4c303a;letter-spacing:-.035em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.15rem,8vw,4rem);font-weight:500;line-height:1.08}.welcome-copy,.next-screen>p:last-child{color:#80616b;max-width:430px;margin:22px auto 30px;font-size:clamp(1rem,3.8vw,1.12rem);line-height:1.65}.start-button,.confirm-button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#f18bad,#e96f98);border:0;border-radius:999px;justify-content:center;align-items:center;min-width:160px;height:52px;padding:0 26px;font-size:1rem;font-weight:600;transition:transform .18s,box-shadow .18s,filter .18s;display:inline-flex;box-shadow:0 14px 30px #e1658e42}.start-button:hover,.confirm-button:hover{filter:saturate(1.05);background:linear-gradient(135deg,#f18bad,#e96f98);transform:translateY(-2px);box-shadow:0 18px 34px #e1658e4f}.start-button:active,.confirm-button:active{transform:translateY(1px)scale(.98)}.next-screen{visibility:hidden;opacity:0;transition:opacity .7s .35s,transform .7s .35s,visibility .7s .35s;position:absolute;transform:translateY(22px)}.next-screen-visible{visibility:visible;opacity:1;transform:translateY(0)}.identity-dialog{background:#fffdfefa;border:1px solid #edb3c6a6;border-radius:28px;gap:24px;width:min(100%,440px);padding:30px 26px 22px;display:grid;position:relative;overflow:hidden;box-shadow:0 28px 80px #68374738}.identity-header{text-align:center;flex-direction:column;align-items:center;gap:8px;display:flex}.identity-dialog:before{content:"";filter:blur(22px);pointer-events:none;background:#ffc7d847;border-radius:50%;width:230px;height:110px;position:absolute;top:-70px;left:50%;transform:translate(-50%)}.dialog-heart{color:#ed789f;background:#fff0f5;border-radius:50%;place-items:center;width:48px;height:48px;font-size:1.35rem;display:grid;position:relative}.dialog-title{color:#4a3039;letter-spacing:-.025em;margin:6px 0 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.75rem,7vw,2.2rem);font-weight:500;line-height:1.15;position:relative}.dialog-description{color:#806872;max-width:330px;margin:0;font-size:.97rem;line-height:1.55}.identity-actions{gap:10px;display:grid}.identity-actions .confirm-button,.identity-dialog>.confirm-button{width:100%}.wrong-button{color:#8e6674;cursor:pointer;background:0 0;border:1px solid #f0d7df;border-radius:999px;justify-content:center;align-items:center;height:48px;padding:0 24px;font-weight:600;display:inline-flex}.wrong-button:hover{color:#7e5060;background:#fff5f8;border-color:#eebfd0}.passport-note{color:#ad929b;text-align:center;margin:-6px 0 0;font-size:.73rem}@media (width<=480px){.game-shell{padding:20px}.identity-dialog{padding:28px 20px 20px}.welcome-card h1,.next-screen h2{font-size:clamp(2.05rem,11vw,3rem)}}.puzzle-continue-button{color:#fff;min-height:48px;font:inherit;cursor:pointer;background:linear-gradient(135deg,#f18bad,#e96f98);border:none;border-radius:999px;margin:20px auto 0;padding:12px 26px;animation:.45s both card-arrive;display:block;box-shadow:0 10px 24px #e1658e38}.puzzle-continue-button:focus-visible{outline-offset:4px;outline:3px solid #a45c70}.finale-page{width:100%;padding:8px 0 48px;animation:.85s cubic-bezier(.22,1,.36,1) both finale-arrive}.finale-photo-frame{background:#ffffffd1;border:1px solid #efb3c2b8;border-radius:30px;width:min(100%,540px);margin:0 auto;padding:6px;box-shadow:0 24px 60px #793e5129,0 4px 14px #793e5114}.finale-photo{border-radius:24px;width:100%;height:auto;display:block}.finale-letter{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffdfee0;border:1px solid #efb3c299;border-radius:30px;width:min(100%,540px);margin:26px auto 0;padding:clamp(26px,7vw,44px) clamp(22px,7vw,46px);position:relative;overflow:hidden;box-shadow:0 18px 50px #793e511c}.finale-letter:before,.finale-letter:after{color:#ef9db8;opacity:.22;content:"♥";font-size:1.25rem;position:absolute}.finale-letter:before{top:18px;left:20px;transform:rotate(-12deg)}.finale-letter:after{bottom:16px;right:20px;transform:rotate(11deg)}.finale-letter h2{max-width:430px;margin:0 auto 30px;font-size:clamp(2rem,8vw,3.2rem);line-height:1.12}.finale-copy{color:#765a64;text-align:left;font-size:clamp(.98rem,3.8vw,1.08rem);line-height:1.75}.finale-copy p{margin:0 0 1.25em}.finale-copy strong{color:#a64f6d;font-weight:700}.finale-copy .finale-signoff{color:#a64f6d;text-align:center;margin:34px 0 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.25rem,5vw,1.6rem);line-height:1.35}@keyframes finale-arrive{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}.welcome-card,.next-screen{grid-area:1/1;min-width:0}.next-screen{position:relative}.welcome-card-hidden{display:none}.puzzle-grid{max-width:100%}.puzzle-piece{background-origin:border-box}.puzzle-piece:disabled{cursor:default}.swap-instructions{color:#80616b;max-width:360px;margin:16px auto 0;line-height:1.6}.swap-piece-selected{outline-offset:-3px;filter:brightness(1.12);outline:3px solid #b64c77}.puzzle-piece:focus-visible,.puzzle-solve-button:focus-visible{outline-offset:-3px;outline:3px solid #a45c70}.swap-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:22px;display:flex}.swap-actions .puzzle-solve-button{min-height:44px;margin:0}.swap-full-image{z-index:3;background:url(/artem-puzzle.jpg) 50%/cover no-repeat;border-radius:12px;position:absolute;inset:0}.swap-full-image-solved{pointer-events:none;animation:.35s .75s both whole-photo-appear}@keyframes whole-photo-appear{0%{opacity:0}to{opacity:1}}.next-screen-visible{transform:none}.jigsaw-level,.puzzle-level{width:100%;padding:8px 0 24px}.puzzle-level h2{color:#4c303a;letter-spacing:-.035em;margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.8rem,7vw,2.8rem);font-weight:500;line-height:1.08}.puzzle-instructions{color:#80616b;max-width:360px;margin:12px auto 0;font-size:.92rem;line-height:1.5}.jigsaw-level h2{font-size:clamp(1.8rem,7vw,2.8rem)}.jigsaw-instructions,.jigsaw-hint{color:#80616b;max-width:360px;margin:12px auto;font-size:.92rem;line-height:1.5}.jigsaw-progress{color:#a45c70;margin:10px 0;font-size:.88rem}.jigsaw-board{aspect-ratio:1;background:#f7eaf0;border-radius:12px;width:min(100%,360px);margin:0 auto;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ebc9d5,0 8px 24px #78405214}.jigsaw-guide,.jigsaw-finished-photo{pointer-events:none;background:url(/tanya-puzzle.jpg) 50%/cover no-repeat;position:absolute;inset:0}.jigsaw-guide{opacity:0;transition:opacity .2s}.jigsaw-guide-visible{opacity:.23}.jigsaw-target{background:0 0;border:1px solid #ffffff4d;width:25%;height:25%;padding:0;position:absolute}.jigsaw-target:enabled{cursor:pointer}.jigsaw-target:focus-visible{outline-offset:-3px;outline:3px solid #b64c77}.jigsaw-placed{aspect-ratio:1;pointer-events:none;animation:.18s both jigsaw-snap;position:absolute}.jigsaw-placed svg,.jigsaw-loose svg{pointer-events:none;width:100%;height:100%;display:block}.jigsaw-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin:16px 0 8px;display:flex}.jigsaw-actions .puzzle-solve-button{min-height:44px;margin:0;padding:10px 13px;font-size:.85rem}.jigsaw-tray{background:#ffffffa6;border:1px solid #f0d7df;border-radius:16px;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;max-width:360px;margin:0 auto;padding:8px;display:grid}.jigsaw-tray-slot{aspect-ratio:1;background:#f9f1f4;border-radius:10px;min-width:0}.jigsaw-loose{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;filter:drop-shadow(0 2px 2px #3c192347);background:0 0;border:0;width:100%;height:100%;padding:0;display:block}.jigsaw-selected:not(.jigsaw-dragging),.jigsaw-loose:focus-visible{outline-offset:-2px;border-radius:8px;outline:2px solid #b64c77}.jigsaw-dragging{z-index:100;cursor:grabbing;filter:drop-shadow(0 8px 6px #3c19234d);position:fixed}.jigsaw-finished-photo{animation:.45s .3s both whole-photo-appear}@keyframes jigsaw-snap{0%{opacity:.6}to{opacity:1}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=480px){.finale-page{padding-top:0}.finale-photo-frame,.finale-letter{border-radius:24px}.finale-photo{border-radius:19px}.finale-letter h2{margin-bottom:24px;font-size:clamp(2rem,10vw,2.7rem)}}
