:root{font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:#246e83;background:#e2f3ed;font-synthesis:none;--blue:#1485a7;--ink:#246e83;--mint:#9cddd7;--cream:#fffbed}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:3px solid #e99758;outline-offset:5px}button:disabled{cursor:default}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.celebration{position:relative;overflow:hidden;min-height:100svh;background:radial-gradient(ellipse at 81% 23%,#fdfdf5 0,transparent 50%),radial-gradient(ellipse at 30% 26%,#f4fbf6 0,transparent 49%),linear-gradient(166deg,#edf8f1 0%,#e9f5ee 46%,#b6e7df 70%,#7bd3cf 100%)}.paper-speckle{position:absolute;inset:0;pointer-events:none;opacity:.22;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.35' filter='url(%23n)'/%3E%3C/svg%3E")}.page-frame{position:absolute;inset:12px;width:calc(100% - 24px);height:calc(100% - 24px);pointer-events:none;fill:none;stroke:#73b4be;stroke-width:1.9;opacity:.7}.page-content{position:relative;max-width:1260px;margin:auto;padding:35px 50px 22px}.topbar{display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:9px;font-size:11px;line-height:1.15;letter-spacing:1.8px;font-weight:600;color:#3b8ca0;transform:rotate(-5deg)}.brand svg{width:34px;height:34px}.brand b{font-size:14px;letter-spacing:1.3px}.share-button{display:flex;align-items:center;gap:9px;border:1px solid #97c5c4;background:#ffffff4a;border-radius:24px;padding:10px 19px;font-size:12px;letter-spacing:1px;color:var(--ink);transition:background .2s,transform .2s}.share-button:hover{background:#fff9d7;transform:translateY(-2px)}.share-button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.hero{display:flex;align-items:center;justify-content:space-between;padding:27px 0 25px;position:relative}.eyebrow{display:flex;gap:10px;align-items:center;font-size:9px;letter-spacing:2.6px;color:#69a2a8;margin:0 0 12px}.eyebrow span{width:22px;height:1px;background:#8bbabe}h1{position:relative;font-size:clamp(40px,4.5vw,61px);letter-spacing:8px;line-height:1.18;font-weight:850;margin:0;color:#177c98;transform:rotate(-2deg);text-shadow:2px 3px 0 #fffef3}.title-spark{position:absolute;right:-62px;top:-17px;font-weight:400;font-size:60px;color:#7ebcb6}.hero-subtitle{font-size:16px;letter-spacing:4px;color:#578c92;margin:17px 0 0 3px}.handwritten{font:italic 29px "Segoe Print","Comic Sans MS",cursive;transform:rotate(-8deg);color:#669da9;padding-right:25px;margin-top:16px}.handwritten svg{display:block;width:194px;height:34px;margin:7px 0 0 75px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.party-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:58px;padding-top:7px}.section-caption{display:flex;align-items:center;gap:9px;font-size:12px;letter-spacing:1.1px;padding:8px 0;color:#598d92}.caption-dot{width:6px;height:6px;border-radius:50%;background:#50a9b1}.mini-star{margin-left:auto;font-size:19px;color:#a5bf97}.ticket-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 18px;padding:35px 18px 27px 9px}.ticket{position:relative;width:100%;aspect-ratio:1.8;display:block;padding:0;border:0;background:transparent;color:#fcf4a9;transform:rotate(-17deg);isolation:isolate;transition:transform .25s,filter .25s,opacity .25s;filter:drop-shadow(0 7px 0 #207d921b)}.ticket:nth-child(3n+2){transform:translateY(-3px) rotate(-15deg)}.ticket:nth-child(3n){transform:translateY(3px) rotate(-18deg)}.ticket:hover:not(:disabled){transform:translateY(-8px) rotate(-12deg);filter:drop-shadow(0 10px 7px #207d922b)}.ticket:active:not(:disabled){transform:translateY(-2px) rotate(-12deg)}.ticket:focus-visible{outline-offset:2px;border-radius:13px}.ticket-shape{position:absolute;inset:0;width:100%;height:100%;z-index:-1;overflow:visible}.ticket-fill{fill:#188ca9}.ticket:nth-child(3n+2) .ticket-fill{fill:#309caf}.ticket:nth-child(3n) .ticket-fill{fill:#278ca5}.ticket-border{fill:none;stroke:#9ed9d6;stroke-width:1.3;stroke-dasharray:3 3;opacity:.8}.ticket-number{position:absolute;left:10%;top:14%;font-size:10px;letter-spacing:1px;opacity:.85}.ticket-amiya{position:absolute;width:60%;height:90%;left:20%;top:0;object-fit:contain;pointer-events:none;filter:drop-shadow(0 2px 0 #15677c26)}.ticket-name{position:absolute;bottom:12%;right:10%;font-size:9px;letter-spacing:2px;writing-mode:vertical-rl;opacity:.85}.ticket-tiny-star{position:absolute;left:12%;bottom:16%;width:20px;height:20px;color:#a2dbd7}.ticket[disabled]:not(.picked){opacity:.24;filter:none}.ticket.picked .ticket-fill{fill:#fffce7}.ticket.picked .ticket-border{stroke:#58a4aa}.ticket.picked{filter:drop-shadow(0 5px 0 #207d9216);color:#328398}.ticket.picked .ticket-number{opacity:.7}.ticket-result{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:5px}.ticket-result strong{font-size:40px;font-family:Georgia,serif;font-weight:600;line-height:.9;color:#1b8099}.ticket-result span{font-size:10px;letter-spacing:2px}.ticket.pending .ticket-fill{fill:#e3f4e6}.ticket.pending .ticket-result strong{font-family:inherit;font-size:20px}.scratch-hint{display:flex;gap:12px;align-items:center;justify-content:center;font-size:12px;letter-spacing:1px;color:#48838d;margin-top:12px}.scratch-hint>span{font-size:30px;line-height:1;transform:rotate(-15deg)}.birthday-side{position:relative;padding:9px 0 0 29px;border-left:1px dashed #8dbebb99}.remaining-heading>span{font-size:9px;letter-spacing:2.2px;color:#6d989b}.remaining-heading h2{font-size:16px;letter-spacing:3px;font-weight:500;margin:8px 0 0}.counter{display:flex;align-items:baseline;position:relative;padding:5px 0 15px}.counter strong{font-size:75px;letter-spacing:-3px;line-height:1.05;font-family:Arial,sans-serif;font-weight:800;color:#1886a3}.counter>span{font-size:19px;color:#80a8aa;margin-left:9px}.counter svg{width:31px;height:31px;position:absolute;right:10px;top:10px;transform:rotate(13deg);color:#82b5a7}.reward-list{display:flex;flex-direction:column;gap:10px;margin:5px 0 19px}.reward-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;color:#789ca0}.reward-row .reward-order{width:21px;height:21px;border:1px solid #a5c7bf;display:grid;place-items:center;border-radius:50%;font-family:Georgia,serif;font-size:12px}.reward-row .reward-text{flex:1;letter-spacing:1px}.reward-row strong{font-weight:500;letter-spacing:1px}.reward-row.is-revealed{color:#28798b}.reward-row.is-revealed .reward-order{background:#e9f5de;border-color:#72aa9b}.reward-row.is-revealed strong{font-size:16px;font-weight:700}.total-line{display:flex;align-items:center;gap:9px;padding:14px 0;border-top:1px solid #95c0b56b;font-size:11px;letter-spacing:1px}.total-line strong{font-family:Georgia,serif;font-size:24px;margin-left:auto;color:#207e93}.total-star{font-size:22px;color:#6caa97}.birthday-illustration{position:relative;width:calc(100% + 38px);margin:-9px -18px -17px;isolation:isolate}.cake-illustration{width:100%;height:auto;display:block;transform:rotate(-3deg)}.birthday-amiya{position:absolute;width:60%;height:auto;left:-8%;bottom:4%;object-fit:contain;transform:rotate(-4deg);filter:drop-shadow(0 3px 0 #74b8b52b);pointer-events:none}.birthday-wish{font-size:11px;letter-spacing:1.1px;text-align:center;margin:10px -10px 0}.page-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px dashed #3b9b9e70;margin-top:42px;padding-top:19px;color:#40828b}.footer-title{font-size:17px;letter-spacing:2px;font-weight:700}.footer-title span{color:#fff7c6;font-size:20px;padding:0 5px}.page-footer p{font-size:11px;letter-spacing:1px}.page-footer p span{padding:0 7px;color:#69a8a8}.footer-note{font-size:9px;letter-spacing:2px;opacity:.75}.floating-star{position:absolute;width:55px;height:55px;pointer-events:none;color:#69aaa7}.star-one{left:2.8%;top:37%;width:30px;height:30px;transform:rotate(8deg)}.star-two{right:4%;top:29%;width:23px;height:23px;color:#9fbdb1}.star-three{left:15%;bottom:5%;width:30px;height:30px;color:#fffbd4;transform:rotate(24deg)}.ribbon{position:absolute;pointer-events:none;border:1.5px solid #fff9;border-radius:50%;transform:rotate(-17deg)}.ribbon-one{width:145%;height:220px;left:-22%;bottom:-108px;box-shadow:0 -12px 0 -11px #fff8,0 -24px 0 -23px #fff7}.ribbon-two{width:70%;height:160px;right:-40%;bottom:100px;box-shadow:0 -13px 0 -12px #fff8}.scratch-dialog{width:min(480px,calc(100% - 32px));border:1px solid #b1d9cb;border-radius:22px;padding:37px 31px 23px;background:radial-gradient(ellipse at bottom right,#d7eee1,transparent 70%),#fffdf0;color:var(--ink);box-shadow:0 30px 100px #1b69794d;text-align:center;overflow:visible}.scratch-dialog::backdrop{background:#235b6178;backdrop-filter:blur(6px)}.close-button{position:absolute;right:15px;top:12px;width:32px;height:32px;background:transparent;color:#70a1a0;border:0;border-radius:50%;font:30px/1 Arial;font-weight:300}.close-button:hover{background:#cee7de}.dialog-eyebrow{font-size:9px;letter-spacing:2px;color:#79a3a0;margin:3px 0 13px}.scratch-dialog h2{font-size:24px;letter-spacing:2px;margin:0}.dialog-description{font-size:12px;color:#72969a;letter-spacing:1px;margin:13px 0 25px}.scratch-area{position:relative;aspect-ratio:38/23;border-radius:13px;overflow:hidden;background:#fff6d7;border:1px solid #d8dabb;box-shadow:0 4px 0 #90b9a51a}.prize-underlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;color:#46959f;background:radial-gradient(circle at center,#fffbea,#f5eebf)}.prize-underlay>span{font-size:12px;letter-spacing:3px}.prize-underlay>strong{font:700 77px/.95 Georgia,serif;color:#16869b}.prize-underlay b{font-size:16px;color:#dda75d;margin-left:8px}#scratch-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;transition:opacity .4s}.scratch-area.is-revealed #scratch-canvas{opacity:0;pointer-events:none}.scratch-sparkle{position:absolute;right:15px;top:10px;font-size:23px;color:#fffc;pointer-events:none}.scratch-area.is-revealed .scratch-sparkle{color:#cdb672}.reveal-message{min-height:20px;font-size:13px;letter-spacing:1px;margin:20px 0 14px;color:#438b91}.primary-button{width:100%;border:0;border-radius:12px;background:#1b879f;color:#fffbed;font-size:14px;letter-spacing:2px;padding:15px 20px;box-shadow:0 4px 0 #126b7f;transition:transform .2s}.primary-button:hover{background:#107b94;transform:translateY(-2px)}.primary-button span{margin-left:10px}.reveal-button{padding:5px 6px;background:transparent;border:0;border-bottom:1px solid #9fbbb4;color:#739792;font-size:11px;letter-spacing:1px}.dialog-footnote{font-size:10px;letter-spacing:1.2px;color:#8aa19b;margin:21px 0 0}[hidden]{display:none!important}.toast{position:fixed;bottom:30px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;background:#245f69;color:#fffbed;border-radius:30px;padding:13px 22px;font-size:12px;letter-spacing:1px;box-shadow:0 7px 20px #20545a26;transition:opacity .2s,transform .2s;z-index:20;max-width:calc(100% - 32px);text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}.confetti-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:10}.confetti{position:absolute;top:-30px;width:8px;height:12px;border-radius:2px;animation:confetti-fall 2.8s cubic-bezier(.15,.7,.5,1) forwards}@keyframes confetti-fall{to{transform:translate(var(--drift),110vh) rotate(var(--rotation));opacity:0}}
@media(min-width:1450px){.page-content{padding-top:46px}.hero{padding-top:41px;padding-bottom:35px}.ticket-grid{gap:37px 25px}.page-footer{margin-top:50px}}
@media(max-width:1000px){.page-content{padding:30px 45px 22px}.party-layout{grid-template-columns:minmax(0,1fr) 230px;gap:33px}.birthday-side{padding-left:20px}.ticket-grid{gap:29px 13px;padding-right:5px}.ticket-result strong{font-size:31px}.ticket-amiya{width:66%;left:17%}.ticket-name{font-size:8px;letter-spacing:1px}.counter strong{font-size:65px}.handwritten{font-size:23px;padding-right:0}.footer-note{display:none}.page-footer{margin-top:38px}.birthday-illustration{margin-top:5px}}
@media(max-width:720px){.page-content{padding:25px 27px 21px}.page-frame{inset:5px;width:calc(100% - 10px);height:calc(100% - 10px)}.brand svg{width:28px;height:28px}.brand{font-size:9px}.brand b{font-size:11px}.share-button{font-size:11px;padding:9px 13px;gap:6px}.share-button svg{width:15px;height:15px}.hero{padding:31px 0 27px}.eyebrow{font-size:7px;letter-spacing:1.5px;gap:7px}.eyebrow span{width:15px}h1{font-size:43px;letter-spacing:6px}.title-spark{font-size:43px;right:-43px;top:-6px}.hero-subtitle{font-size:13px;letter-spacing:3px;margin-top:13px}.handwritten{display:none}.party-layout{display:flex;flex-direction:column;gap:29px;padding-top:0}.section-caption{font-size:10px;letter-spacing:.4px;padding-right:4px}.ticket-grid{gap:23px 12px;padding:30px 7px 21px 0}.ticket{aspect-ratio:1.45;transform:rotate(-13deg)}.ticket:nth-child(3n+2){transform:rotate(-11deg)}.ticket:nth-child(3n){transform:rotate(-14deg)}.ticket-amiya{height:90%;width:72%;left:14%;top:0}.ticket-number{font-size:8px;top:12%}.ticket-tiny-star{width:13px;height:13px;bottom:13%;left:11%}.ticket-name{font-size:7px;right:9%;letter-spacing:1px;bottom:15%}.ticket-result strong{font-size:32px}.ticket.pending .ticket-result strong{font-size:14px}.ticket-result span{font-size:8px;letter-spacing:1px}.scratch-hint{font-size:10px;letter-spacing:.5px;gap:7px;margin-top:7px}.scratch-hint>span{font-size:24px}.birthday-side{padding:20px 0 0;border-left:0;border-top:1px dashed #70aaa890;display:grid;grid-template-columns:1fr 1fr;column-gap:20px}.remaining-heading{grid-column:1}.remaining-heading>span{font-size:7px;letter-spacing:1.4px}.remaining-heading h2{font-size:13px;letter-spacing:2px;margin-top:5px}.counter{grid-column:1;padding:7px 0 12px}.counter strong{font-size:62px}.counter>span{font-size:16px}.counter svg{width:22px;height:22px;right:15px;top:13px}.reward-list{grid-column:2;grid-row:1/span 2;align-self:center;margin:0;gap:14px}.reward-row{font-size:9px;gap:7px}.reward-row .reward-text{letter-spacing:0}.reward-row .reward-order{width:18px;height:18px;font-size:10px}.reward-row.is-revealed strong{font-size:14px}.total-line{grid-column:2;grid-row:3;align-self:start;padding:13px 0;font-size:9px;margin-top:7px;gap:5px}.total-line strong{font-size:24px}.total-star{font-size:18px}.birthday-illustration{width:100%;margin:-5px 0 -10px;grid-column:1;grid-row:3/span 2}.birthday-amiya{width:62%;left:-9%;bottom:3%}.birthday-wish{grid-column:2;grid-row:4;font-size:9px;letter-spacing:.4px;margin:12px 0 0;text-align:left;line-height:1.8;align-self:start}.page-footer{flex-wrap:wrap;gap:1px;margin-top:25px;padding-top:17px}.footer-title{font-size:14px;letter-spacing:2px}.page-footer p{font-size:9px;letter-spacing:.5px}.page-footer p span{padding:0 2px}.star-one{left:1%;top:11%;width:17px;height:17px}.star-two{top:18%;right:7%;width:19px;height:19px}.star-three{bottom:3%;left:52%;width:23px;height:23px}.ribbon-one{bottom:-122px;height:180px}.scratch-dialog{padding:33px 20px 23px;border-radius:18px}.scratch-dialog h2{font-size:21px}.dialog-eyebrow{font-size:8px;letter-spacing:1.5px}.dialog-description{font-size:11px}.prize-underlay>strong{font-size:64px}.prize-underlay{gap:11px}.prize-underlay>span{font-size:10px}.reveal-message{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti-layer{display:none}}

.entry-panel{margin:0 0 19px;padding:17px 19px 13px;border:1px solid #b2d4c5;background:#fffef276;border-radius:16px;box-shadow:0 3px 0 #8bbcaf12}.entry-greeting{margin:0 0 7px;color:#287e91;font-size:13px;font-weight:600;letter-spacing:.7px;overflow-wrap:anywhere}.entry-note{margin:0;color:#6d9695;font-size:10px;line-height:1.8;letter-spacing:.35px}.nickname-form{margin-top:13px}.nickname-form>label{display:block;margin-bottom:7px;color:#468993;font-size:11px;letter-spacing:1px}.nickname-controls{display:flex;align-items:stretch;gap:10px}.nickname-controls input{min-width:0;flex:1;border:1px solid #a8ccbc;border-radius:9px;background:#fffef1;font:inherit;font-size:12px;color:#276e81;padding:11px 12px;outline-offset:3px}.nickname-controls input::placeholder{color:#93aaa0}.nickname-controls input:focus-visible{outline:2px solid #dfb979}.nickname-button{flex:none;border:0;border-radius:9px;background:#278ca2;color:#fffbed;padding:11px 15px;font-size:11px;letter-spacing:.8px;box-shadow:0 3px 0 #1a7282;white-space:nowrap}.nickname-button:hover:not(:disabled){background:#187f98}.nickname-button span{margin-left:5px}.nickname-button:disabled{opacity:.65}.entry-error{margin:8px 0 0;min-height:0;font-size:11px;color:#ad6157;line-height:1.7;overflow-wrap:anywhere}.entry-error:empty{display:none}.session-status{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;font-size:11px;line-height:1.7;color:#6b979b}.session-status.is-error{color:#ad6157}.session-retry{flex:none;border:1px solid #afbfad;border-radius:8px;background:#fff9df;color:#587e78;padding:7px 10px;font-size:11px}.ticket-grid.is-locked .ticket:not(.picked){opacity:.62}.scratch-area:not(.is-revealed) .prize-underlay{visibility:hidden}.reveal-message.is-error{color:#ad6157;font-size:11px;line-height:1.7;letter-spacing:.4px;overflow-wrap:anywhere}.reveal-button:disabled{opacity:.65}.close-button:disabled{opacity:.4}.admin-link{font-size:10px;letter-spacing:1px;color:#528b91;text-decoration:none;border-bottom:1px solid #6fa5a778;padding:4px 0;white-space:nowrap}.admin-link:hover{color:#1b7084;border-color:currentColor}.admin-link:focus-visible{outline:2px solid #dfb979;outline-offset:4px}
@media(max-width:720px){.entry-panel{padding:14px 13px 12px;margin-bottom:14px;border-radius:12px}.entry-greeting{font-size:11px;letter-spacing:.4px;line-height:1.8}.entry-note{font-size:9px;letter-spacing:.1px}.nickname-controls{gap:7px}.nickname-controls input{font-size:12px;padding:10px 9px}.nickname-button{font-size:10px;padding:10px 11px;letter-spacing:.2px}.nickname-button span{display:none}.session-status{align-items:flex-start;gap:8px;font-size:10px}.session-retry{font-size:10px;padding:6px 8px}.entry-error{font-size:10px}.admin-link{font-size:9px;letter-spacing:.5px;margin-top:5px}}
@media(max-width:370px){.nickname-controls{flex-direction:column}.nickname-button{padding:11px 12px}}
