:root{color-scheme:dark;--gold:#e8c27d;--cream:#f7e7c6;--ink:#193429}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#0b2017 url('/background.png') center top / cover fixed no-repeat;color:var(--cream);font-family:Georgia,'Times New Roman',serif;overflow-x:hidden}body:before{content:'';position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 15% 25%,#e6b35b16 0,transparent 30%),radial-gradient(circle at 86% 20%,#e6b35b14 0,transparent 26%)}.lights{position:absolute;top:0;left:0;right:0;height:60px;display:flex;justify-content:space-around;border-top:1px solid #907c48;z-index:2;pointer-events:none}.lights i{position:relative;width:8px;height:13px;border-radius:50%;background:#ffe4a2;box-shadow:0 0 9px 3px #f4c368aa,0 0 28px 8px #d9a54666;top:18px;animation:twinkle 3s infinite alternate}.lights i:nth-child(3n){top:33px;animation-delay:1s}.lights i:nth-child(2n){top:27px;animation-delay:2s}.snow{position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(#fff9 1px,transparent 1.5px),radial-gradient(#ffe5a65c 1px,transparent 1.5px);background-size:147px 137px,231px 211px;background-position:30px 20px,80px 90px;opacity:.55}header{text-align:center;position:relative;padding:66px 20px 0}.ornament{font-size:17px;color:#e9bb69;letter-spacing:9px}.ornament span{font-size:30px}.eyebrow{font:10px/1.2 Arial,sans-serif;letter-spacing:.28em;color:#ddb879;margin:12px 0 12px}h1{font-size:clamp(2.8rem,5.3vw,5.4rem);font-weight:400;letter-spacing:-.04em;color:#f2d49b;margin:0;line-height:1.07;text-shadow:0 4px 18px #0005}.subtitle{font-size:clamp(1rem,1.6vw,1.35rem);font-style:italic;color:#e9d1a9;margin:15px 0}.divider{color:#c89e59;letter-spacing:3px;font-size:14px}main{max-width:1150px;margin:7px auto 0;padding:0 30px;display:grid;grid-template-columns:1.03fr .97fr;align-items:center;gap:42px;position:relative}.scene{position:relative;min-width:0;text-align:center}.scene img{position:relative;width:100%;max-width:560px;filter:drop-shadow(0 24px 20px #0008);z-index:1}.glow{position:absolute;inset:16% 10% 14%;border-radius:50%;background:#d8a34d19;filter:blur(45px)}.scene-caption{position:relative;font-style:italic;color:#d9c39c;margin-top:-10px;font-size:16px}.scene-caption span{color:#ddbb7e;padding:0 12px}.parchment{position:relative;color:var(--ink);background:radial-gradient(ellipse at 45% 30%,#fff8df,#f3dfba 68%,#e7ca99);border:2px solid #c79851;border-radius:19px;box-shadow:0 12px 40px #0008,inset 0 0 30px #ba8b4b40;padding:9px}.inner{border:1px solid #c59b5e;border-radius:12px;padding:32px 38px 24px;min-height:390px}h2{font-size:30px;line-height:1.1;margin:0 0 10px;font-weight:normal}p.intro{color:#56614d;line-height:1.5;margin:0 0 22px;font-size:15px}label{display:block;font-size:17px;font-weight:bold;margin:17px 0 8px}label small{font-weight:normal;font-style:italic}input,textarea,select{font:16px Georgia,serif;color:#24382b;background:#fff9ebd9;border:1px solid #bdac8a;border-radius:8px;width:100%;padding:13px 14px;outline:none}input:focus,textarea:focus,select:focus{border-color:#967038;box-shadow:0 0 0 3px #b68a4c35}textarea{min-height:90px;resize:vertical}button,.button{font:600 17px Georgia,serif;cursor:pointer;border:1px solid #ba904e;border-radius:9px;background:linear-gradient(#9c292b,#6d1119);color:#fff0d1;padding:14px 20px;box-shadow:0 4px 8px #653b2160;width:100%;margin-top:20px}button:hover,.button:hover{filter:brightness(1.13)}button:disabled{opacity:.55;cursor:not-allowed}.secondary{background:transparent;color:#5e4328;box-shadow:none;border:1px solid #bda279;margin-top:10px}.count{border-top:1px solid #ccb488;margin-top:22px;padding-top:17px;text-align:center;font-size:14px;color:#5c694e}.count:before{content:'✦';color:#bb9050;margin-right:10px}.count:after{content:'✦';color:#bb9050;margin-left:10px}.message{color:#8d2222;line-height:1.4}.message:empty{display:none}.linkbox{word-break:break-all;font:13px/1.5 Arial,sans-serif;background:#fff8e9;border:1px dashed #bca074;padding:12px;border-radius:6px;color:#4d5142}.note{font:13px/1.5 Arial,sans-serif;color:#5e6752}.result{text-align:center;padding:22px 6px}.result .receiver{font-size:clamp(2rem,4vw,3rem);color:#7f1820;margin:15px 0}.wish{white-space:pre-wrap;font-size:18px;font-style:italic;line-height:1.5}.badge{font:11px Arial,sans-serif;letter-spacing:.16em;color:#967544;text-transform:uppercase}.paper{position:absolute;z-index:2;background:#f9e6bf;color:#503b29;padding:18px;top:5%;left:42%;width:130px;opacity:0;box-shadow:0 7px 13px #0006;transform:rotate(-8deg);pointer-events:none}.paper b{position:absolute;right:-10px;top:-12px}.paper.drop{animation:drop 2.1s ease-in forwards}.shake{animation:shake .8s ease-in-out 2}.admin-list{padding:0;list-style:none;max-height:190px;overflow:auto}.admin-list li{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #d5c19a;padding:7px 0;gap:8px}.admin-list button,.mini{width:auto;margin:0;padding:5px 10px;font-size:13px}.row{display:flex;gap:8px;align-items:center}.row select{min-width:0}.row button{width:auto;flex-shrink:0}.exclusion{font:14px/1.4 Arial,sans-serif}.locked{padding:12px;background:#e9dcc1;border-radius:8px;font-size:15px}footer{text-align:center;padding:28px 10px 35px;color:#b7a67f;font-style:italic;font-size:13px;position:relative}footer span{color:#e2bc73;margin-left:8px}@keyframes twinkle{to{opacity:.45;box-shadow:0 0 5px 1px #f4c36888}}@keyframes shake{0%,100%{transform:rotate(0)}25%{transform:rotate(-5deg) translateX(-8px)}75%{transform:rotate(5deg) translateX(8px)}}@keyframes drop{0%{opacity:0;transform:translateY(-60px) rotate(-12deg)}15%,50%{opacity:1}100%{opacity:0;transform:translateY(220px) rotate(20deg) scale(.55)}}@media(max-width:760px){header{padding-top:60px}.eyebrow{font-size:9px}main{display:flex;flex-direction:column;gap:12px;padding:0 18px}.scene{width:min(84vw,400px)}.scene-caption{margin-top:-30px;font-size:14px}.parchment{width:min(100%,500px)}.inner{min-height:0;padding:25px 24px 20px}h2{font-size:27px}footer{padding-top:24px}.lights i:nth-child(even){display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
.paper span{display:block;overflow:hidden;white-space:nowrap;max-width:100%}.paper.drop span{animation:handwrite 1.1s steps(14,end) both}.paper.drop b{animation:penwrite 1.1s ease-in-out both}@keyframes handwrite{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes penwrite{from{right:90%}to{right:0}}
