@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,600;1,600;1,700&display=swap";:root{color:#f7f5f0;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--serif:"Playfair Display", Georgia, serif;background:#242522;font-family:DM Sans,system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;background:#242522;min-width:320px;min-height:100%}body{min-width:320px;min-height:100vh;margin:0}button,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}#root{min-height:100vh}.app{min-height:100vh;overflow:hidden}.game-screen{background:#1f1f1d;width:min(100%,720px);min-height:100vh;margin:0 auto;padding:0;animation:.7s both screen-in;overflow:hidden;box-shadow:0 0 70px #00000085}.game-header{background:linear-gradient(#292927,#242422);border-bottom:1px solid #151513;align-items:center;gap:15px;height:76px;padding:0 18px;display:flex}.brand{color:#f7f7f5;letter-spacing:-1px;align-items:center;gap:3px;font-size:22px;font-weight:700;text-decoration:none;display:flex}.brand small{color:#aaa;letter-spacing:-.4px;font-size:12px}.brand-logo{width:38px;height:38px;display:block}.game-controls button{color:#b8b8b5;background:0 0;border:0;padding:0}.special-date{white-space:nowrap;background:linear-gradient(135deg,#81b64c14,#ffffff08);border:1px solid #81b64c73;border-radius:5px;align-items:center;gap:8px;min-height:31px;margin-left:auto;padding:6px 10px;display:flex;box-shadow:inset 0 1px #ffffff0d,0 0 18px #81b64c0d}.special-date strong{color:#9bcc6c;letter-spacing:.11em;font-size:11px;font-weight:800}.special-date i{color:#d8e9c9;font-size:6px;font-style:normal}.special-date span{color:#e7e7e3;letter-spacing:.14em;font-size:10px;font-weight:700}.match-shell{background:#222220;width:100%;position:relative}.board-wrap{place-items:center;width:100%;display:grid}.chessboard{aspect-ratio:1;grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);width:100%;display:grid;position:relative;overflow:hidden;box-shadow:0 3px 12px #0006}.square{border:0;border-radius:0;outline:0;place-items:center;width:100%;min-width:0;height:100%;min-height:0;padding:0;display:grid;position:relative}.square.light{color:#769656;background:#eeeed2}.square.dark{color:#eeeed2;background:#769656}.square.selected,.square.last-move{background:#f5f66b}.square.target:after{content:"";aspect-ratio:1;background:#29311e57;border-radius:50%;width:30%;animation:1s infinite target-pulse;position:absolute}.square.light.in-check{background:radial-gradient(circle,#f04b45 0 18%,#d1443f 19% 40%,#eeeed2 70%)}.square.dark.in-check{background:radial-gradient(circle,#f04b45 0 18%,#d1443f 19% 40%,#769656 70%)}.piece{z-index:2;object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none;width:88%;height:88%;transition:transform .18s;position:relative}.square:hover .piece{transform:translateY(-2px)}.rank-label,.file-label{z-index:3;pointer-events:none;font-size:clamp(9px,1vw,13px);font-weight:700;position:absolute}.rank-label{top:4px;left:5px}.file-label{bottom:3px;right:5px}.mate-banner{z-index:9;color:#fff;letter-spacing:.15em;background:#262724;border-radius:5px;padding:13px 30px;font-size:clamp(16px,2vw,23px);font-weight:800;animation:.45s cubic-bezier(.2,1.6,.4,1) both mate-pop;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 10px 32px #00000059}.player-row{color:#dededb;background:linear-gradient(90deg,#292927,#252523);border-block:1px solid #191917;align-items:center;gap:15px;min-height:106px;padding:15px 18px;display:flex}.player-data{flex-direction:column;gap:8px;display:flex}.player-row strong{font-size:18px;font-weight:600}.player-row strong small{color:#999;font-size:14px;font-weight:500}.player-row span{color:#aaa;font-size:14px}.player-row span b{color:#81b64c;font-size:20px}.flag{font-size:17px;font-style:normal}.player-row .captured,.captured-icons{align-items:center;display:flex}.captured-icons img{object-fit:contain;-webkit-user-select:none;user-select:none;width:24px;height:24px;margin-left:-8px}.captured-icons img:first-child{margin-left:0}.captured em{color:#bbb;letter-spacing:0;margin-left:10px;font-family:DM Sans,sans-serif;font-size:16px;font-style:normal;font-weight:700}.player-row time{color:#1f201e;text-align:center;background:#f4f4f1;border-radius:4px;min-width:108px;margin-left:auto;padding:10px 12px;font-size:26px;font-weight:700;box-shadow:0 2px #c8c8c5}.you time{color:#8f918e;box-shadow:none;background:#181816}.avatar{border-radius:4px;flex:none;place-items:center;width:58px;height:58px;font-size:34px;display:grid}.profile-avatar{background:#151513;overflow:hidden}.profile-avatar img{object-fit:cover;width:100%;height:100%;display:block}.game-controls{background:#242422;border-top:1px solid #151513;grid-template-columns:repeat(5,1fr);align-items:center;height:80px;display:grid}.game-controls button{height:100%;font-size:36px}.game-controls button.active{color:#fff;background:linear-gradient(#8bc654,#659b39);border-radius:5px;width:78px;height:58px;margin:auto;box-shadow:0 3px #416923,0 6px 13px #0005}.game-notice{z-index:12;color:#f4f4f1;background:#151513eb;border:1px solid #81b64c;border-radius:6px;padding:12px 19px;font-size:14px;font-weight:700;animation:.25s both notice-pop;position:absolute;bottom:92px;left:50%;transform:translate(-50%);box-shadow:0 10px 28px #0009}.eyebrow{color:#95c566;letter-spacing:.2em;font-size:11px;font-weight:700}.celebration-screen{--note-h:208px;height:100dvh;max-height:100dvh;padding:16px 16px calc(10px + env(safe-area-inset-bottom));color:#fdf6e7;text-align:center;background:radial-gradient(115% 85% at 50% 28%,#0000 42%,#0b1e24a6 76%,#060f13e8 100%),radial-gradient(54% 36% at 50% 47%,#fff6d8 0%,#ffd98ad9 34%,#ff9d5c2e 60%,#0000 72%),linear-gradient(175deg,#102e35 0%,#2c5a58 30%,#a9cabc 58%,#f2ecd8 82%,#e6d3ab 100%);grid-template-rows:auto minmax(0,1fr) auto;align-content:center;justify-items:center;gap:4px;animation:.9s both celebration-in;display:grid;position:relative;overflow:hidden}.celebration-screen:before{content:"";z-index:1;filter:blur(6px);pointer-events:none;background:conic-gradient(from 180deg at 50% 0,#0000 38%,#ffe9b833 50%,#0000 62%);width:min(560px,120vw);height:72%;position:absolute;top:-8%;left:50%;transform:translate(-50%)}.celebration-screen:after{content:"";z-index:9;background:radial-gradient(120% 100% at 50% 45%, transparent 58%, #04101459 100%), repeating-conic-gradient(#ffffff08 0 .00006turn, transparent .00006turn .00012turn);mix-blend-mode:overlay;opacity:.55;pointer-events:none;position:absolute;inset:0}.party-glow{filter:blur(80px);opacity:.3;border-radius:50%;width:420px;height:420px;position:absolute}.glow-one{opacity:.34;background:#ffb35c;top:6%;left:-180px}.glow-two{opacity:.4;background:#2f7f7a;top:42%;right:-170px}.confetti{z-index:8;pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti i{border-radius:2px;width:8px;height:14px;animation:linear infinite confetti-fall;position:absolute;top:-20px;box-shadow:0 1px 6px #0000002e}.confetti i:nth-child(3n){filter:blur(.4px);opacity:.85;border-radius:50%;width:6px;height:6px}.confetti i:nth-child(4n){filter:blur(.6px);opacity:.7;width:10px;height:5px;transform:rotate(24deg)}.confetti i:nth-child(5n){opacity:.95;box-shadow:0 0 8px #ffffff90}.celebration-copy,.cake-scene,.note-card{z-index:2;position:relative}.celebration-copy{max-width:620px;animation:.8s .25s both rise-in}.celebration-copy .eyebrow{color:#ffd98a;text-shadow:0 1px 12px #0005}.celebration-copy h1{font-family:var(--serif);letter-spacing:-.04em;color:#fffdf3;text-shadow:0 2px 24px #00000059;margin:8px 0 4px;font-size:clamp(30px,5.4vw + 12px,58px);font-weight:600;line-height:1.02}.celebration-copy h1 em{color:#ffcf7d;font-weight:700}.celebration-copy p{color:#e6efe3d9;text-shadow:0 1px 10px #0000004d;margin:0;font-size:13px}.spring-leaves{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.spring-leaves i{color:#4c9a68;text-shadow:0 0 14px #79b98b80;font-size:16px;font-style:normal;animation:8s ease-in-out infinite leaf-float;position:absolute;top:-40px}.spring-leaves i:first-child{animation-delay:0s;left:5%}.spring-leaves i:nth-child(2){animation-delay:-5s;left:17%}.spring-leaves i:nth-child(3){animation-delay:-2s;left:29%}.spring-leaves i:nth-child(4){animation-delay:-7s;left:41%}.spring-leaves i:nth-child(5){animation-delay:-3s;left:55%}.spring-leaves i:nth-child(6){animation-delay:-6s;left:68%}.spring-leaves i:nth-child(7){animation-delay:-1s;left:79%}.spring-leaves i:nth-child(8){animation-delay:-4s;left:89%}.spring-leaves i:nth-child(9){animation-delay:-8s;left:96%}.cake-scene{width:min(440px,88vw);height:min(34dvh,310px);min-height:236px;margin:0;position:relative}.cake-scene:before{content:"";z-index:0;filter:blur(4px);background:radial-gradient(50% 55% at 50% 60%,#3a1f102e 0%,#0000 70%);width:118%;height:34%;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.cake{z-index:3;filter:drop-shadow(0 18px 22px #2a150acc);width:262px;height:248px;animation:1.15s cubic-bezier(.16,1,.3,1) .6s both cake-rise;position:absolute;bottom:42px;left:50%;transform:translate(-50%)}.candles{z-index:6;justify-content:space-between;width:178px;display:flex;position:absolute;top:0;left:50%;transform:translate(-50%)}.candle{background:linear-gradient(90deg,#ffffff70,#0000 35% 65%,#1c3a4a33),repeating-linear-gradient(-45deg,#3f8fb8 0 6px,#f6f0cd 6px 12px);border-radius:3px 3px 0 0;width:9px;height:48px;position:relative;box-shadow:0 3px 8px #4a1f0d38,inset -1px 0 1px #ffffff80}.candle:nth-child(2),.candle:nth-child(4){height:39px;margin-top:9px}.flame{transform-origin:bottom;background:radial-gradient(circle at 50% 78%,#fffbe8 0 22%,#ffd76a 42%,#ff9a3d 68%,#e2571f 100%);border-radius:70% 35% 65%;width:14px;height:24px;animation:.85s ease-in-out infinite alternate flame-dance;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%)rotate(4deg);box-shadow:0 0 14px 4px #ffb746a6,0 0 34px 12px #ff9a3d40}.flame:after{content:"";background:radial-gradient(circle,#fff 0%,#fff3b0 70%,#0000 100%);border-radius:50%;width:6px;height:11px;position:absolute;bottom:3px;left:50%;transform:translate(-50%)}.cake-top{z-index:5;background:radial-gradient(70% 60% at 50% 30%,#fffef2 0%,#f7efcf 55%,#e3d3a8 100%);border-radius:50%;width:220px;height:54px;position:absolute;top:42px;left:21px;box-shadow:inset 0 -10px #b8cfaecc,inset 0 3px 6px #fff,0 7px 14px #2a150a2e}.berry{color:#2f6d94;text-shadow:0 2px 1px #ffffff90,0 4px 6px #1d3a4d66;font-size:29px;position:absolute}.b1{top:-5px;left:45px}.b2{top:8px;left:96px}.b3{top:-2px;right:40px}.cake-layer{width:220px;position:absolute;left:21px;box-shadow:inset -16px 0 20px #5a1f0d2b,inset 12px 0 18px #ffffff59}.top-layer{z-index:4;background:linear-gradient(90deg,#7fbcae,#b7dfc6 45%,#8fc0b2);height:66px;top:68px}.top-layer:after{content:"";background:repeating-linear-gradient(90deg,#ffffff0d 0 14px,#0000 14px 28px);position:absolute;inset:0}.bottom-layer{z-index:3;color:#2f5b4f;height:80px;font-family:var(--serif);letter-spacing:.15em;text-shadow:0 1px #ffffff90;background:linear-gradient(90deg,#cbd8b8,#f2eed2 50%,#d9cba4);border-radius:0 0 14px 14px;place-items:center;font-size:12px;font-weight:700;display:grid;top:132px}.icing-drip{background:linear-gradient(#fffef2,#efe2b8);border-radius:0 0 16px 16px;width:19px;height:30px;position:absolute;top:-1px;box-shadow:inset -2px -3px 4px #b89b5e33}.d1{height:24px;left:26px}.d2{height:37px;left:95px}.d3{height:27px;right:34px}.cake-plate{z-index:2;background:linear-gradient(#dcebee,#8fb4bd 55%,#4d737d);border-radius:50%;width:274px;height:18px;position:absolute;bottom:32px;left:-6px;box-shadow:0 14px 22px #20100545,inset 0 2px 3px #fffc}.gift-box{z-index:1;background:linear-gradient(90deg,#0000 44%,#ffffff2e 46%,#1e5c4633 50%,#ffffff2e 54%,#0000 56%),linear-gradient(90deg,#0000 44%,#4f9d83 44% 56%,#0000 56%),linear-gradient(#7fb8cc,#5d97ae 60%,#406e83);border-radius:5px 5px 14px 14px;width:312px;height:122px;animation:.7s .1s both box-arrive;position:absolute;bottom:6px;left:50%;transform:translate(-50%);box-shadow:0 24px 45px #2a120acc,inset 0 2px 3px #fff6}.gift-lid{z-index:7;background:linear-gradient(90deg,#0000 44%,#ffffff38 47%,#0000 53%),linear-gradient(90deg,#0000 44%,#3c7f66 44% 56%,#0000 56%),linear-gradient(#a8d8e2,#6ea7bd);border-radius:8px;width:338px;height:40px;animation:1.2s cubic-bezier(.5,-.2,.2,1.2) .45s both lid-open;position:absolute;bottom:112px;left:50%;box-shadow:0 10px 18px #2a120a33,inset 0 2px 2px #ffffff80}.lid-bow{border:10px solid #2f6b55;width:58px;height:42px;position:absolute;bottom:33px;box-shadow:0 4px 10px #2a120a30,inset 0 2px 3px #ffffff40}.bow-left{border-radius:70% 20% 55% 45%;right:50%;transform:rotate(17deg)}.bow-right{border-radius:20% 70% 45% 55%;left:50%;transform:rotate(-17deg)}.note-card{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);text-align:left;background:linear-gradient(#fffffff2,#fff8e6d9);border:1px solid #ffffff59;border-radius:18px;width:min(560px,94vw);margin:0;padding:12px 14px 10px;animation:.8s 1.2s both rise-in;box-shadow:0 18px 50px #04101466,inset 0 1px #fff}.note-heading{align-items:center;gap:10px;display:flex}.note-heading>span{color:#fff;background:linear-gradient(#4ea183,#2f6b55);border-radius:50%;place-items:center;width:32px;height:32px;font-size:14px;display:grid;box-shadow:0 4px 10px #2f6b554d}.note-heading h2{font-family:var(--serif);color:#1e3a34;margin:0;font-size:18px}.note-heading p{color:#6f8881;margin:1px 0 0;font-size:11px}.note-card textarea{resize:none;color:#244d47;background:#fffdf4;border:1px solid #cfe2da;border-radius:11px;outline:none;width:100%;height:58px;min-height:58px;max-height:58px;margin-top:10px;padding:10px 12px;font-size:14px;line-height:1.45;transition:border .2s,box-shadow .2s}.note-card textarea:focus{border-color:#5b9ba0;box-shadow:0 0 0 4px #5b9ba01c}.note-card textarea::placeholder{color:#8da69f}.note-actions{justify-content:space-between;align-items:center;gap:10px;margin-top:8px;display:flex}.note-actions>span{color:#b29b94;font-size:11px}.continue-button{color:#fff;background:linear-gradient(#3f9db3,#2b6f81);border:0;border-radius:999px;padding:10px 16px;font-size:13px;font-weight:700;transition:transform .2s,background .2s;box-shadow:0 8px 20px #04101440,inset 0 1px #ffffff40}.continue-button:hover:not(:disabled){background:#347b74;transform:translateY(-2px)}.continue-button:disabled{cursor:not-allowed;opacity:.4}.continue-button span{margin-left:7px}.skip-button{color:#718c84;text-align:center;text-underline-offset:4px;background:0 0;border:0;width:100%;margin-top:6px;padding:2px;font-size:11px;-webkit-text-decoration:underline #b8d0c8;text-decoration:underline #b8d0c8}.wish-screen{color:#f4f9ef;text-align:center;background:radial-gradient(circle at 50% 33%,#3e8da052,#0000 25%),linear-gradient(145deg,#071b25,#0c2730 50%,#0b1d21);place-items:center;min-height:100vh;padding:80px 20px;animation:1.1s both wish-reveal;display:grid;position:relative;overflow:hidden}.aurora{filter:blur(110px);opacity:.16;background:conic-gradient(from 90deg,#3c9aae,#4e8ac7,#71b67b,#d4b35c);border-radius:50%;width:70vw;height:60vw;animation:14s linear infinite aurora-spin;position:absolute}.star-field{position:absolute;inset:0}.star-field i{background:#e6f6ff;border-radius:50%;width:3px;height:3px;animation:2s ease-in-out infinite alternate star-twinkle;position:absolute;box-shadow:0 0 10px #b7e6ff}.wish-leaves{z-index:1;opacity:.55}.wish-leaves i{color:#76c989;text-shadow:0 0 14px #4dbb7980}.wish-content{z-index:2;width:min(700px,94vw);animation:1s .35s both rise-in;position:relative}.spring-emblem{filter:drop-shadow(0 18px 24px #07151d8f);width:180px;height:170px;margin:8px auto -2px;position:relative}.spring-emblem svg{width:100%;height:100%;overflow:visible}.gem{transform-box:fill-box;transform-origin:50%;animation:4.6s ease-in-out infinite gem-float}.gem-sheen{opacity:.42;animation:3.8s ease-in-out infinite gem-sheen}.gem-stars path{transform-box:fill-box;transform-origin:50%;animation:2.4s ease-in-out infinite gem-star}.gem-stars path:nth-child(2){animation-delay:-.8s}.gem-stars path:nth-child(3){animation-delay:-1.6s}.vine{fill:none;stroke:#62b77d;stroke-width:2px;stroke-linecap:round;stroke-dasharray:4 7;opacity:.7;animation:2.2s both vine-draw}.emblem-leaf{background:linear-gradient(135deg,#a5dda3,#3b9563);border-radius:100% 0;width:18px;height:9px;animation:3.2s ease-in-out infinite leaf-breathe;position:absolute;box-shadow:0 0 14px #5ab97952}.leaf-one{top:91px;left:26px;transform:rotate(31deg)}.leaf-two{animation-delay:-.9s;top:115px;left:45px;transform:rotate(65deg)scale(.75)}.leaf-three{animation-delay:-1.7s;top:91px;right:26px;transform:rotate(59deg)scaleX(-1)}.leaf-four{animation-delay:-2.4s;top:115px;right:45px;transform:rotate(25deg)scale(-.75,.75)}.wish-content h1{font-family:var(--serif);letter-spacing:-.055em;margin:0 0 30px;font-size:clamp(48px,8vw,86px);font-weight:600;line-height:.97}.wish-content h1 em{color:#77cbe0;font-weight:600}.letter{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#dff8f511;border:1px solid #91d2df38;border-radius:3px 28px;padding:clamp(29px,5vw,49px);position:relative;box-shadow:0 30px 80px #0000003b}.letter:before,.letter:after{content:"◆";color:#80c99c;font-size:11px;position:absolute}.letter:before{top:14px;left:17px}.letter:after{bottom:14px;right:17px}.quote-mark{color:#83d1e52e;font-family:var(--serif);font-size:76px;line-height:1;position:absolute;top:13px;left:28px}.letter>p{color:#e4f0e9;font-family:var(--serif);margin:0;font-size:clamp(17px,2.3vw,22px);line-height:1.75;position:relative}.signature{color:#a99ca8;letter-spacing:.06em;flex-direction:column;gap:4px;margin-top:28px;font-size:11px;display:flex}.signature strong{color:#83cad9;font-family:var(--serif);font-size:18px;font-style:italic;font-weight:600}@keyframes screen-in{0%{opacity:0}}@keyframes target-pulse{50%{opacity:.65;transform:scale(1.25)}}@keyframes mate-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.6)}}@keyframes notice-pop{0%{opacity:0;transform:translate(-50%,8px)scale(.94)}}@keyframes celebration-in{0%{opacity:0;filter:brightness(1.8)}}@keyframes rise-in{0%{opacity:0;transform:translateY(25px)}}@keyframes confetti-fall{to{transform:translateY(110vh)rotate(760deg)}}@keyframes cake-rise{0%{opacity:0;transform:translate(-50%,130px)scale(.72)}}@keyframes box-arrive{0%{opacity:0;transform:translate(-50%,70px)scale(.85)}}@keyframes lid-open{0%{opacity:0;transform:translate(-50%,60px)}35%{opacity:1;transform:translate(-50%)}to{transform:translate(-58%,-128px)rotate(-13deg)}}@keyframes flame-dance{to{transform:translate(-50%)rotate(-6deg)scaleY(.88)}}@keyframes wish-reveal{0%{opacity:0;transform:scale(1.05)}}@keyframes aurora-spin{to{transform:rotate(360deg)}}@keyframes star-twinkle{to{opacity:.2;transform:scale(.55)}}@keyframes gem-float{0%,to{transform:translateY(2px)rotate(-1deg)}50%{transform:translateY(-7px)rotate(1.5deg)}}@keyframes gem-sheen{0%,25%{opacity:.08;transform:translate(-8px)}55%{opacity:.58}80%,to{opacity:.12;transform:translate(8px)}}@keyframes gem-star{0%,to{opacity:.2;transform:scale(.45)rotate(0)}45%{opacity:1;transform:scale(1.15)rotate(45deg)}}@keyframes vine-draw{0%{stroke-dashoffset:70px;opacity:0}}@keyframes leaf-breathe{50%{filter:brightness(1.28);translate:0 -3px}}@keyframes leaf-float{0%{opacity:0;transform:translateY(-5vh)rotate(0)scaleX(.55)}15%{opacity:.8}50%{transform:translate(34px,50vh)rotate(180deg)scaleX(.55)}to{opacity:0;transform:translate(-18px,108vh)rotate(420deg)scaleX(.55)}}@media (width<=900px){.game-screen{width:100%}}@media (width<=520px){.game-header{gap:9px;height:64px;padding:0 12px}.brand{font-size:18px}.brand-logo{width:32px;height:32px}.special-date{gap:5px;min-height:27px;padding:5px 7px}.special-date strong{font-size:8px}.special-date span{font-size:7px}.player-row{gap:12px;min-height:86px;padding:12px 15px}.avatar{width:48px;height:48px;font-size:28px}.player-row strong{font-size:15px}.player-row strong small,.player-row span{font-size:12px}.player-row .captured{font-size:17px}.captured-icons img{width:20px;height:20px;margin-left:-7px}.captured em{margin-left:7px;font-size:13px}.player-row time{min-width:82px;padding:8px 7px;font-size:17px}.game-controls{height:68px}.game-controls button{font-size:30px}.game-controls button.active{width:65px;height:51px}.celebration-screen{padding:12px 12px calc(8px + env(safe-area-inset-bottom));gap:2px}.celebration-copy h1{font-size:clamp(28px,9vw,38px)}.celebration-copy p{font-size:12px}.cake-scene{width:min(360px,92vw);height:252px;min-height:232px}.cake{transform-origin:bottom;transform:translate(-50%)scale(.92)}.gift-box{width:292px;height:112px}.gift-lid{width:316px}.note-card{border-radius:16px;padding:10px 12px 8px}.note-actions{align-items:center}.wish-screen{padding:55px 16px}}@media (height<=700px){.cake-scene{height:232px;min-height:212px}.cake{transform-origin:bottom;transform:translate(-50%)scale(.86)}.celebration-copy h1{font-size:clamp(26px,7vw,36px)}.note-card textarea{height:48px;min-height:48px;max-height:48px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.admin-screen{color:#f2efe4;background:linear-gradient(160deg,#0b1e24,#123239 55%,#1a3a34);place-items:center;min-height:100vh;padding:24px 16px;display:grid}.admin-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);text-align:center;background:#ffffff12;border:1px solid #ffffff2e;border-radius:18px;width:min(380px,94vw);padding:28px 24px;box-shadow:0 24px 60px #00000059}.admin-card h1{font-family:var(--serif);margin:8px 0 4px;font-size:34px}.admin-card p{color:#c9d4c9;margin:0 0 14px;font-size:13px}.admin-card input{color:#fff;background:#00000040;border:1px solid #fff3;border-radius:10px;outline:none;width:100%;padding:11px 13px}.admin-card input:focus{border-color:#77cbe0;box-shadow:0 0 0 3px #77cbe033}.admin-card .continue-button{width:100%;margin-top:12px}.admin-error{color:#ff9d8a;margin-top:10px;font-size:12px;font-weight:700;display:block}.admin-table-card{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffff0f;border:1px solid #ffffff2e;border-radius:18px;width:min(860px,96vw);padding:22px;box-shadow:0 24px 60px #00000059}.admin-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.admin-header h1{font-family:var(--serif);margin:6px 0 0;font-size:28px}.admin-header-actions{align-items:center;gap:8px;display:flex}.admin-refresh{color:#fff;background:0 0;border:1px solid #fff3;border-radius:50%;width:38px;height:38px;font-size:18px}.admin-exit{width:auto;margin:0}.admin-table-wrap{margin-top:14px;overflow-x:auto}.admin-table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}.admin-table th{color:#8fd6a2;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;border-bottom:1px solid #ffffff26;padding:8px 10px;font-size:10px}.admin-table td{color:#e8ece2;vertical-align:top;border-bottom:1px solid #ffffff14;padding:9px 10px}.admin-badge{text-transform:uppercase;letter-spacing:.08em;border-radius:999px;padding:3px 10px;font-size:11px;font-style:normal;font-weight:800}.admin-badge.saved{color:#8fd6a2;background:#4f9d8340}.admin-badge.skipped{color:#b9b9b9;background:#ffffff1c}.admin-empty{color:#9aa89a;text-align:center}
