@font-face{font-family:Funkis;src:url('assets/funkis-500.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Funkis;src:url('assets/funkis-700.woff2') format('woff2');font-weight:700;font-display:swap}
:root{--pine:#082e25;--deep:#05241d;--green:#124b3c;--gold:#e8c782;--gold-dark:#c9a25d;--cream:#fbf3df;--muted:#b5c8b8;--red:#a83d30;--ease:cubic-bezier(.16,1,.3,1);color-scheme:dark;font-family:Funkis,Arial,sans-serif;font-weight:500;color:var(--cream);background:var(--pine)}
*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(ellipse at 50% 36%,#215540 0%,var(--pine) 58%,var(--deep) 100%);min-height:100svh}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button{border:0}a{color:inherit}button:disabled{cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid var(--gold);outline-offset:5px}::selection{background:var(--gold);color:var(--deep)}button,input{touch-action:manipulation}button{transition:background .18s,color .18s,transform .25s var(--ease)}button:active:not(:disabled){transform:scale(.975)}p,h1,h2,h3{margin:0}h1,h2,h3{text-wrap:balance}button svg{width:21px;height:21px;display:block;flex-shrink:0}svg{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}::-webkit-scrollbar{width:5px;height:3px}::-webkit-scrollbar-thumb{background:#52715a;border-radius:5px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body.modal-open{overflow:hidden}#snow{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.site-shell{position:relative;z-index:2;max-width:1250px;margin:auto}.masthead{height:92px;margin:0 48px;border-bottom:1px solid #d5d6b826;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;min-height:44px;width:200px}.brand img,.detail-header img,.intro-logo{width:100%;filter:brightness(0) invert(93%) sepia(13%) saturate(340%);display:block}.masthead-right{display:flex;align-items:center;gap:22px}.edition{font-size:11px;letter-spacing:.13em;color:var(--gold)}.icon-button{width:44px;height:44px;border-radius:50%;background:transparent;display:flex;align-items:center;justify-content:center;flex-shrink:0}.icon-button:hover{background:#ffffff0d}.icon-button:disabled{opacity:.25}.headline{text-align:center;position:relative;width:fit-content;margin:31px auto 0;padding:0 40px}.headline h1{font-size:45px;line-height:1.06;letter-spacing:-.035em;font-weight:700}.headline em{font-style:normal;color:var(--gold)}.headline p{font-size:13px;color:var(--muted);margin-top:14px}.headline-star{position:absolute;color:var(--gold);width:23px;height:30px;background:var(--gold);clip-path:polygon(50% 0,59% 38%,100% 50%,59% 59%,50% 100%,41% 59%,0 50%,41% 38%)}.star-left{left:-18px;top:24px;transform:rotate(16deg)}.star-right{right:-21px;top:67px;width:16px;height:22px;transform:rotate(-16deg)}.scene-viewport{position:relative;width:640px;height:524px;margin:0 auto;isolation:isolate}.scene{position:absolute;z-index:2;width:400px;bottom:13px;left:120px;will-change:transform;transition:transform .72s var(--ease),filter .72s var(--ease)}.scene.camera-zoom{z-index:5;filter:brightness(1.15)}.moon{position:absolute;width:46px;height:46px;border-radius:50%;background:#eadbb4;top:55px;right:65px;opacity:.78}.moon:after{content:'';position:absolute;background:#174333;border-radius:50%;width:42px;height:42px;left:-8px;top:-6px}.roof-sign{width:204px;height:66px;background:#103d30;color:var(--gold);border:1px solid #c9a25d;position:relative;z-index:3;margin:0 auto -9px;display:flex;flex-direction:column;justify-content:center;align-items:center;box-shadow:0 7px 17px #00130f38}.roof-sign:before{content:'';position:absolute;inset:4px;border:1px solid #c9a25d66}.roof-sign span{font-size:9px;letter-spacing:.19em}.roof-sign b{font-size:27px;line-height:1.2;letter-spacing:-.025em}.sign-star{position:absolute;width:12px;height:12px;top:-15px;background:var(--gold);clip-path:polygon(50% 0,60% 39%,100% 50%,60% 61%,50% 100%,40% 61%,0 50%,40% 39%)}.roof{height:35px;background:#8a3b32;position:relative;z-index:2;width:420px;left:-10px;border-bottom:6px solid #052a20}.roof-snow{height:9px;position:absolute;top:0;left:-3px;right:-3px;background:#f3f0da;border-radius:8px 5px 7px 3px}.roof-snow:before,.roof-snow:after{content:'';position:absolute;background:#f3f0da;border-radius:0 0 5px 5px;width:7px;height:17px;left:29px;top:2px}.roof-snow:after{left:auto;right:41px;height:11px;width:11px}.roof-line{position:absolute;bottom:10px;height:1px;background:#c36a50;left:0;right:0}.chimney{position:absolute;width:34px;height:45px;background:#774138;top:16px;right:25px;border-top:7px solid #f4efd8}.chimney i{position:absolute;width:12px;height:19px;border-radius:50%;background:#c8d5c429;left:9px;top:-29px;animation:smoke 5s ease-out infinite}.chimney i:nth-child(2){animation-delay:1.6s}.chimney i:nth-child(3){animation-delay:3.2s}@keyframes smoke{to{transform:translate(20px,-60px) scale(2.7);opacity:0}}.bar-building{position:relative;background:#18513e;border-left:9px solid #0b3b2e;border-right:9px solid #0b3b2e;box-shadow:inset 0 0 0 1px #d4b97725,0 18px 35px #00120e2b;padding:14px 19px 0}.bar-building:before,.bar-building:after{content:'';position:absolute;top:8px;bottom:0;width:5px;border-left:1px solid #d6bd7c40;border-right:1px solid #d6bd7c30;left:6px;pointer-events:none}.bar-building:after{left:auto;right:6px}.building-cornice{position:absolute;left:-8px;right:-8px;top:0;height:5px;border-top:1px solid #c2ab6c80;border-bottom:1px solid #c2ab6c80}.string-lights{position:absolute;top:-1px;left:2px;right:2px;height:21px;display:flex;justify-content:space-around;border-bottom:1px solid #092e23;border-radius:0 0 50% 50%;z-index:2;pointer-events:none}.string-lights i{height:5px;width:4px;border-radius:50%;background:#f5dca1;margin-top:9px;box-shadow:0 2px 8px #e8bf6a90}.string-lights i:nth-child(3n){margin-top:15px}.string-lights i:nth-child(3n+1){background:#d6a275}.door-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px 15px;padding:10px 0 16px}.door{position:relative;height:53px;border-radius:25px 25px 2px 2px;border:2px solid #a5864e;background:#0c3228;box-shadow:0 3px 0 #082d23,inset 0 0 0 3px #e1b5690d;color:#ead5a3;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:23px;isolation:isolate;padding:0;transition:background .2s,transform .3s var(--ease),box-shadow .2s}.door:before{content:'';position:absolute;left:50%;top:3px;bottom:2px;width:1px;background:#ccad6a40;z-index:-1}.door:after{content:'';position:absolute;left:-4px;right:-4px;bottom:-4px;height:4px;background:#b3a175;border-bottom:2px solid #0b3025}.door .door-number{position:relative;text-shadow:0 1px 3px #052a20}.door.available{background:#665c35;color:#fff1c8;border-color:#c4a465}.door.available:before{background:#edcf854a}.door.available:hover{background:#897443;transform:translateY(-2px)}.door.future{border-color:#65816a;color:#9db49b;background:#153e30;box-shadow:0 3px 0 #082d23}.door.future:after{background:#778970}.door.today{background:#ebcd87;border-color:#f8e6b0;color:#153a2c;box-shadow:0 4px 12px #071e1670}.door.today .door-number{text-shadow:none}.door.today:before{background:#60482440}.door.today:after{background:#f9e4aa}.door-today-dot{position:absolute;top:-8px;right:-7px;width:16px;height:16px;border-radius:50%;background:#b64f3b;border:3px solid #1b513e}.door.opened{background:#1e674b;color:#f8e6b4}.door.opened .door-number{font-size:19px}.door-opened-mark{position:absolute;width:10px;height:10px;bottom:3px;right:3px}.door-opened-mark svg{width:10px;height:10px;stroke-width:3}.door.special .door-number:after{content:'';position:absolute;width:5px;height:7px;background:currentColor;clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%);left:50%;top:-10px}.awning{height:20px;margin:0 -26px;position:relative;background:repeating-linear-gradient(90deg,#dbd0ab 0,#dbd0ab 23px,#833d32 23px,#833d32 46px);border-top:3px solid #bfad80;border-bottom:4px solid #092f23;z-index:2}.awning:after{content:'';position:absolute;bottom:-5px;left:0;right:0;height:7px;background:repeating-linear-gradient(90deg,#dbd0ab 0,#dbd0ab 23px,#833d32 23px,#833d32 46px);border-radius:0 0 5px 5px}.bar-ground{height:54px;display:flex;align-items:center;justify-content:space-between;padding:5px 1px 0;gap:12px}.bar-label{font-size:8px;letter-spacing:.1em;color:var(--gold);max-width:110px;line-height:1.5}.bar-entrance{display:flex;gap:3px;height:43px;width:59px;align-self:end;border:3px solid #c4a86d;border-bottom:0;background:#483e27;padding:4px 3px 0;position:absolute;left:calc(50% - 29px)}.bar-entrance div{width:50%;height:100%;background:#e4bb66;position:relative;opacity:.75}.bar-entrance div:before{content:'';position:absolute;top:21px;left:0;right:0;height:2px;background:#634f2a}.open-sign{font-size:9px;line-height:1.25;letter-spacing:.13em;color:#f0d594;transform:rotate(-5deg);border:1px solid #c6b47d;padding:4px 6px;text-align:center;margin-right:6px}.building-step{width:426px;height:9px;background:#d7d3b9;margin-left:-13px;border-radius:3px;border-bottom:4px solid #8d9d87;position:relative;z-index:3}.snow-bank{position:absolute;bottom:5px;left:31px;right:31px;height:16px;border-radius:50%;background:#dae2cc;z-index:0;box-shadow:0 11px 20px #00180f40}.tree{position:absolute;z-index:3;width:67px;height:130px;bottom:15px;pointer-events:none}.tree-left{left:48px}.tree-right{right:50px;transform:scale(.84);transform-origin:bottom}.tree i{position:absolute;left:0;bottom:14px;width:67px;height:69px;clip-path:polygon(50% 0,100% 100%,0 100%);background:#32604a}.tree i:nth-child(2){bottom:44px;left:7px;width:54px;height:57px;background:#47715a}.tree i:nth-child(3){bottom:72px;left:16px;width:36px;height:48px;background:#5b7d60}.tree i:before{content:'';position:absolute;top:-4px;left:0;right:0;height:25px;background:#d8dfc4;clip-path:polygon(50% 0,100% 100%,0 100%)}.tree b{position:absolute;bottom:0;width:7px;height:19px;background:#725640;left:30px}.calendar-action{max-width:360px;margin:7px auto 0;text-align:center}.today-line{font-size:10px;letter-spacing:.11em;color:var(--gold);text-transform:uppercase;margin-bottom:10px}.today-line:before,.today-line:after{content:'';display:inline-block;width:17px;height:1px;background:#a6ac7160;vertical-align:middle;margin:0 10px}.primary-button{min-height:54px;background:var(--gold);color:#15372b;width:100%;border-radius:4px;padding:15px 20px;font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center;gap:13px}.primary-button:hover{background:#f5db9f}.primary-button:disabled{opacity:.5}.primary-button svg{width:18px;height:18px}.calendar-hint{font-size:11px;color:var(--muted);margin-top:12px}.bottom-nav{display:flex;align-items:center;justify-content:center;gap:34px;padding:23px 0 20px}.bottom-nav button{background:transparent;display:flex;align-items:center;gap:8px;font-size:12px;min-height:44px;padding:0}.bottom-nav svg{width:18px;height:18px}.count{border:1px solid #73917a;font-size:10px;min-width:18px;height:18px;border-radius:50%;display:grid;place-items:center}.site-footer{border-top:1px solid #d5d6b826;display:flex;justify-content:space-between;align-items:center;max-width:850px;margin:0 auto;padding:19px 0 68px;font-size:10px;color:var(--muted)}.site-footer div{display:flex;gap:16px}.site-footer button{padding:10px 0;background:transparent;font-size:10px;color:var(--muted)}.preview-control{position:fixed;bottom:12px;left:50%;transform:translateX(-50%);z-index:15;background:#153b2e;color:#d8ddc6;border:1px solid #73917a66;border-radius:30px;min-height:32px;white-space:nowrap;padding:7px 13px;display:flex;align-items:center;gap:9px;font-size:10px;box-shadow:0 3px 12px #001a1266}.preview-control:active{transform:translateX(-50%) scale(.98)!important}.preview-dot{width:5px;height:5px;border-radius:50%;background:var(--gold)}.intro{position:fixed;inset:0;background:var(--pine);z-index:40;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;transition:opacity .5s ease,visibility .5s;overflow:hidden}.intro:before{content:'';position:absolute;width:570px;height:570px;border:1px solid #c6b47d22;border-radius:50%;pointer-events:none}.intro-logo{width:235px}.intro p{font-size:10px;letter-spacing:.2em;color:var(--gold);margin:22px 0 43px}.intro h1{font-size:clamp(26px,7.4vw,48px);max-width:calc(100% - 40px);line-height:1.1;letter-spacing:-.035em;color:var(--cream);animation:intro-in 1s var(--ease) both}.intro-stars{color:var(--gold);font-size:36px;margin-bottom:38px;animation:star-turn 2.5s ease both}.intro-line{height:1px;width:95px;background:var(--gold);margin:38px 0 20px;transform-origin:left;animation:line-in 2.4s var(--ease) both}.text-button{min-height:44px;background:transparent;display:flex;align-items:center;justify-content:center;gap:18px;padding:8px 4px;font-size:12px;color:var(--muted)}.intro.is-gone{opacity:0;visibility:hidden;pointer-events:none}.intro[hidden]{display:none}@keyframes intro-in{from{transform:translateY(22px);opacity:0}}@keyframes star-turn{from{transform:rotate(-90deg);opacity:0}}@keyframes line-in{from{transform:scaleX(0)}}
/* The gift lives on its own page, within the same Christmas bar. */
dialog{color:var(--cream);border:0;padding:0;background:var(--pine)}dialog::backdrop{background:#021c16d9}.door-dialog{max-width:510px;width:100%;max-height:100dvh;height:100dvh;margin:auto;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.door-dialog[open]{animation:detail-in .45s var(--ease)}@keyframes detail-in{from{opacity:0;transform:translateY(14px)}}.detail-shell{padding:0 25px 25px;min-height:100%}.detail-header{display:flex;justify-content:space-between;align-items:center;height:80px;border-bottom:1px solid #d5d6b826}.detail-header img{width:164px}.day-navigation{display:flex;align-items:center;justify-content:space-between;padding:19px 0 16px}.day-navigation>div{text-align:center;display:flex;flex-direction:column;gap:4px}.day-navigation #door-date{font-size:14px;color:var(--gold)}#door-status{font-size:10px;color:var(--muted)}.gift-heading{text-align:center;font-size:32px;line-height:1.05;letter-spacing:-.03em;margin:4px 0 12px}.gift-intro{text-align:center;max-width:300px;margin:0 auto 23px;color:var(--muted);font-size:13px;line-height:1.5}.scratch-wrap{height:280px;position:relative;background:#f1e4c1;color:#184330;overflow:hidden;border-radius:140px 140px 10px 10px;max-width:330px;margin:0 auto;box-shadow:0 12px 30px #021d1640;isolation:isolate}.gift-art{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 25px 12px;text-align:center;background:#f2e5c6}.gift-art:before{content:'';position:absolute;inset:10px;border:1px solid #a9915659;border-radius:130px 130px 5px 5px;pointer-events:none}.gift-art>svg{width:85px;height:85px;stroke-width:1;stroke:var(--pine);margin-bottom:15px}.gift-art .gift-value{font-size:34px;font-weight:700;letter-spacing:-.03em;line-height:1.1;max-width:100%}.gift-art .gift-partner{font-size:12px;letter-spacing:.07em;text-transform:uppercase;margin-top:8px}.scratch-wrap canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;transition:opacity .7s;z-index:2}.scratch-wrap.revealed canvas{opacity:0;pointer-events:none}.scratch-caption{display:flex;align-items:center;justify-content:center;gap:7px;color:var(--gold);font-size:11px;margin:17px 0 5px;min-height:18px}.scratch-caption svg{width:18px;height:18px}.scratch-alternative{display:block;margin:0 auto;background:transparent;color:var(--muted);font-size:10px;text-decoration:underline;text-underline-offset:3px;min-height:44px;min-width:44px;padding:6px 15px}.reveal-details{margin:23px 0 0;text-align:center;animation:detail-in .5s var(--ease)}.partner-name{color:var(--gold);font-size:12px;margin:0 0 8px}.reveal-details h2{font-size:27px;line-height:1.1;letter-spacing:-.025em}.reveal-details .description{font-size:13px;line-height:1.5;color:var(--muted);margin:12px 0 18px}.prize-fineprint{font-size:10px;color:var(--muted);line-height:1.55;margin:12px 0}.day-strip{display:flex;gap:8px;margin:25px -25px 0;padding:0 25px 10px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none}.day-strip::-webkit-scrollbar{display:none}.day-strip button{width:44px;height:44px;flex-shrink:0;background:transparent;border:1px solid #7d997640;border-radius:4px;font-size:13px;color:var(--muted);scroll-snap-align:center}.day-strip button.active{background:var(--gold);color:var(--pine);border-color:var(--gold);font-weight:700}.day-strip button.locked{color:#78947e;border-color:#7d997625}.day-strip button.completed{color:var(--gold);border-color:var(--gold-dark)}.demo-note{text-align:center;color:var(--muted);font-size:9px;line-height:1.5;margin:13px 0 0}.locked-illustration{width:180px;height:240px;border-radius:100px 100px 5px 5px;border:3px solid #8b9e76;margin:15px auto 25px;background:#163f2f;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:15px;color:var(--gold)}.locked-illustration svg{width:35px;height:35px;stroke-width:1.1}.locked-illustration b{font-size:64px}.locked-content{text-align:center;padding:15px 0 5px}.locked-content h2{font-size:30px;line-height:1.1;margin-bottom:13px}.locked-content p{font-size:13px;line-height:1.6;color:var(--muted);max-width:310px;margin:0 auto 24px}.form-header{text-align:center;padding:4px 0 24px}.form-header h2{font-size:30px;line-height:1.08;margin:10px 0;letter-spacing:-.03em}.form-header p{font-size:13px;color:var(--muted);line-height:1.5}.mini-prize{display:flex;align-items:center;gap:15px;padding:15px 0;border-top:1px solid #c9a25d40;border-bottom:1px solid #c9a25d40;margin-bottom:22px}.mini-prize>svg{color:var(--gold);width:35px;height:35px;flex-shrink:0}.mini-prize strong{font-size:14px;display:block}.mini-prize span{font-size:11px;color:var(--muted);display:block;margin-top:4px}.field{display:block;font-size:12px;margin-bottom:17px}.field>span{display:block;margin-bottom:8px}.field input,.field select{width:100%;min-height:50px;background:#ffffff07;border:1px solid #6d8b71;border-radius:4px;padding:13px;color:var(--cream);font-size:16px;caret-color:var(--gold)}.field input::placeholder{color:#a2b4a3}.field input:focus{border-color:var(--gold)}.field select option{background:var(--pine)}.checkbox-field{display:flex;align-items:flex-start;gap:10px;font-size:11px;line-height:1.6;margin:15px 0;color:#d2dfca;cursor:pointer}.checkbox-field input{accent-color:var(--gold);width:19px;height:19px;margin:0;flex-shrink:0}.checkbox-field button{font-size:inherit;color:var(--gold);padding:0;background:none;text-decoration:underline;text-underline-offset:3px}.optional-divider{border-top:1px solid #c9a25d30;margin:20px 0}.form-error{background:#6e332b;color:#fff2d7;padding:12px;border-radius:4px;font-size:12px;line-height:1.5;margin-bottom:16px}.form-error:empty{display:none}.form-submit{margin-top:25px}.form-back{margin:5px auto}.receipt{text-align:center;padding:16px 0}.receipt-seal{width:68px;height:68px;background:var(--gold);color:var(--pine);border-radius:50%;display:grid;place-items:center;margin:3px auto 24px}.receipt-seal svg{width:32px;height:32px;stroke-width:1.3}.receipt h2{font-size:34px;letter-spacing:-.025em;line-height:1.1;margin-bottom:15px}.receipt>p{font-size:13px;line-height:1.6;color:var(--muted);margin:0 auto 22px;max-width:350px}.voucher-code{background:var(--cream);color:var(--pine);padding:24px 16px;margin:26px 0;border-radius:4px}.voucher-code p{font-size:10px;letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}.voucher-code strong{display:block;font-size:24px;overflow-wrap:anywhere}.voucher-code button{margin:12px auto 0;display:flex;gap:7px;align-items:center;justify-content:center;background:transparent;color:var(--pine);font-size:12px;min-height:44px}.voucher-code button svg{width:16px;height:16px}.receipt-note{border:1px solid #6f896d66;padding:17px;font-size:12px;line-height:1.6;color:var(--muted);margin:22px 0;border-radius:4px}.receipt .primary-button{margin-top:22px}.secondary-button{min-height:48px;width:100%;border:1px solid #9eb18b;background:transparent;color:var(--cream);border-radius:4px;padding:12px 18px;font-size:13px;margin-top:12px}.info-dialog{max-width:440px;width:calc(100% - 32px);max-height:85dvh;border:1px solid #8a9b6540;border-radius:12px;overflow:auto}.info-inner{padding:35px 26px 29px;position:relative}.info-close{position:absolute;right:9px;top:9px}.info-inner h2{font-size:29px;letter-spacing:-.025em;line-height:1.1;margin:16px 30px 22px 0}.info-inner p{font-size:13px;line-height:1.65;color:var(--muted);margin:13px 0}.info-inner h3{font-size:16px;color:var(--gold);margin:22px 0 7px}.journey-step{display:grid;grid-template-columns:28px 1fr;gap:12px;margin:22px 0}.journey-step>b{border:1px solid #bfa76a80;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;color:var(--gold);font-size:12px}.journey-step strong{font-size:15px}.journey-step p{margin:5px 0;font-size:12px}.saved-gift{width:100%;text-align:left;display:flex;align-items:center;gap:13px;background:transparent;border-top:1px solid #9eb18b40;padding:17px 0}.saved-gift>svg{width:28px;height:28px;color:var(--gold);flex-shrink:0}.saved-gift b{font-size:14px}.saved-gift small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.toast{position:fixed;z-index:70;left:50%;bottom:63px;transform:translate(-50%,12px);background:var(--cream);color:var(--pine);border-radius:5px;padding:14px 20px;font-size:12px;text-align:center;max-width:calc(100% - 35px);width:max-content;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;box-shadow:0 8px 22px #021d1640}.toast.visible{opacity:1;transform:translate(-50%,0)}.confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:5}.confetti i{position:absolute;width:6px;height:11px;left:50%;top:48%;background:var(--gold);animation:confetti .9s var(--ease) forwards}@keyframes confetti{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}
@media(min-width:900px){.calendar-view{position:relative}.headline{margin-top:31px}.scene-viewport{margin-top:1px}.calendar-action{position:absolute;top:240px;right:29px;width:200px;text-align:left}.calendar-action .primary-button{font-size:13px;min-height:52px;padding:13px 10px}.today-line{font-size:9px;line-height:1.5;letter-spacing:.05em}.today-line:before,.today-line:after{display:none}.calendar-hint{font-size:11px;line-height:1.6;max-width:170px}.scene-viewport{transform:translateX(-70px);margin-bottom:-4px}.bottom-nav{position:absolute;top:411px;right:29px;display:flex;flex-direction:column;gap:3px;align-items:flex-start;padding:0;width:200px}.site-footer{max-width:none;margin:0 48px;padding-bottom:47px}.door-dialog{height:min(900px,96dvh);border-radius:13px;box-shadow:0 30px 100px #00160d80}.preview-control{bottom:14px}}
@media(max-width:600px){.masthead{height:71px;margin:0 23px}.brand{width:164px}.edition{display:none}.masthead-right{gap:0}.masthead .icon-button{width:44px;height:44px}.headline{margin-top:25px;padding:0 14px}.headline h1{font-size:34px;line-height:1.07}.headline p{font-size:10px;margin-top:10px}.headline-star{width:16px;height:20px}.star-left{left:-11px;top:24px}.star-right{right:-9px;top:50px;width:11px;height:15px}.scene-viewport{width:390px;max-width:100%;height:411px;margin-top:4px;overflow:clip}.scene{width:310px;left:calc(50% - 155px);bottom:14px}.roof-sign{width:170px;height:57px;margin-bottom:-7px}.roof-sign span{font-size:8px}.roof-sign b{font-size:23px}.roof{width:326px;left:-8px;height:28px;border-bottom-width:4px}.roof-snow{height:7px}.roof-line{bottom:7px}.chimney{right:20px;top:19px;width:25px;height:36px;border-top-width:5px}.bar-building{border-left-width:7px;border-right-width:7px;padding:10px 13px 0}.door-grid{gap:10px 11px;padding-top:11px;padding-bottom:13px}.door{height:44px;font-size:21px;border-width:1.5px}.door-today-dot{width:13px;height:13px;border-width:2px;right:-5px;top:-6px}.string-lights i{width:3px;height:4px}.awning{height:17px;margin:0 -18px;background-size:36px 100%;background-image:repeating-linear-gradient(90deg,#dbd0ab 0,#dbd0ab 18px,#833d32 18px,#833d32 36px)}.awning:after{background-image:repeating-linear-gradient(90deg,#dbd0ab 0,#dbd0ab 18px,#833d32 18px,#833d32 36px);height:5px;bottom:-4px}.bar-ground{height:46px}.bar-label{font-size:6px;max-width:80px;letter-spacing:.07em}.bar-entrance{height:36px;width:48px;left:calc(50% - 24px);border-width:2px}.open-sign{font-size:7px;margin-right:0;padding:3px 5px}.building-step{width:332px;margin-left:-11px;height:8px}.tree{width:67px;height:130px;transform:scale(.64);transform-origin:bottom}.tree-left{left:-13px;bottom:15px}.tree-right{right:-17px;transform:scale(.54);bottom:15px}.snow-bank{left:3px;right:3px;height:15px;bottom:7px}.moon{width:30px;height:30px;top:27px;right:37px}.moon:after{width:28px;height:28px;top:-4px;left:-5px}.calendar-action{margin:8px 24px 0;max-width:none}.today-line{font-size:9px;margin-bottom:9px}.primary-button{min-height:52px;font-size:14px}.calendar-hint{font-size:10px;margin-top:10px}.bottom-nav{padding:15px 0 9px;gap:28px}.bottom-nav button{font-size:11px}.bottom-nav svg{width:16px;height:16px}.site-footer{margin:0 23px;display:block;text-align:center;padding:16px 0 62px;font-size:9px}.site-footer div{justify-content:center;gap:24px;margin-top:4px}.site-footer button{font-size:9px;min-height:36px}.intro h1{font-size:clamp(26px,7.4vw,44px)}.intro-logo{width:206px}.intro p{margin:18px 0 34px}.intro-stars{margin-bottom:32px}.detail-shell{padding-left:23px;padding-right:23px}.detail-header{height:71px}.day-strip{margin-left:-23px;margin-right:-23px;padding-left:23px;padding-right:23px}.day-navigation{padding:13px 0}.gift-heading{font-size:30px}.gift-intro{font-size:12px;margin-bottom:20px}.scratch-wrap{height:270px;max-width:315px}.detail-header img{width:154px}.info-inner{padding:30px 23px 25px}}
@media(max-width:359px){.headline h1{font-size:30px}.headline p{font-size:9px}.scene{transform:scale(.92);transform-origin:center bottom}.scene-viewport{height:383px}.headline-star{display:none}.calendar-action{margin-left:20px;margin-right:20px}.bottom-nav{gap:20px}.masthead{margin:0 20px}.detail-shell{padding-left:19px;padding-right:19px}.gift-heading{font-size:27px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.chimney i{display:none}#snow{opacity:.3}.intro{display:none}}

/* Legible controls, architectural breathing room, and the seasonal material. */
:root{--muted:#c5d1bc;--painted-wood:url("assets/textures/painted-wood.webp")}
.scene-viewport{height:551px}
.roof-sign{padding:7px;box-shadow:none}
.headline p,.calendar-hint{font-size:12px;line-height:1.5}
.today-line{font-size:11px}
.site-footer,.site-footer button,.preview-control,.scratch-alternative,.demo-note,.prize-fineprint{font-size:11px}
.site-footer button{min-height:44px;min-width:44px}
.preview-control{min-height:44px;min-width:44px}
.checkbox-field{font-size:13px;line-height:1.6}
.field{font-size:13px}
.day-navigation #door-status{font-size:11px}
.bottom-nav button{font-size:12px}
.intro p{font-size:13px;letter-spacing:0;text-transform:none;margin:24px 0 0}
.intro-logo{margin-bottom:38px}
.intro-stars svg{width:37px;height:37px;stroke-width:1;fill:#e8c78211}
.door,.door.available,.door.future,.door.today,.door.opened{background-image:var(--wood-grain);background-size:70px 140px}
.detail-tools{display:flex;gap:0}
.detail-tools .icon-button{width:44px}
.music-button[aria-pressed=true]{color:var(--gold);background:#e8c78216}
.detail-shell{position:relative;z-index:1;background:transparent}
.door-dialog{transform:translateZ(0);background:linear-gradient(160deg,#154331,var(--pine) 62%)}
#detail-snow{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.8}
@media(min-width:900px){.calendar-action{top:260px}.bottom-nav{top:440px}.calendar-action .today-line{font-size:11px}}
@media(max-width:600px){.scene-viewport{height:466px}.headline p{font-size:12px;max-width:320px}.headline{padding:0 18px}.masthead-right{gap:4px}.masthead .icon-button{width:44px}.site-footer{font-size:11px}.site-footer button{font-size:11px}.calendar-hint{font-size:12px}.today-line{font-size:10px}.today-line:before,.today-line:after{width:8px;margin:0 7px}.detail-header img{width:145px}.intro p{margin:22px 0 0}.intro-logo{margin-bottom:30px}.calendar-action{margin-top:10px}}
@media(max-width:359px){.scene{transform:none}.scene-viewport{height:466px}.headline h1{font-size:29px}.headline p{font-size:12px;max-width:270px}.brand{width:155px}.masthead{margin:0 19px}.masthead-right{gap:0}.masthead .icon-button{width:44px}.day-strip{margin-left:-19px;margin-right:-19px;padding-left:19px;padding-right:19px}.detail-header img{width:132px}.detail-tools .icon-button{width:44px}.detail-header .back-button{width:44px}}

/* Christmas movement: light, wood shutters, then the camera. */
.roof-sign{animation:sign-sway 8s ease-in-out infinite;transform-origin:50% 95%}
@keyframes sign-sway{0%,100%{transform:rotate(-.7deg)}50%{transform:rotate(.7deg)}}
.string-lights i{animation:light-twinkle 3.8s ease-in-out infinite alternate}
.string-lights i:nth-child(3n){animation-delay:-1.4s}.string-lights i:nth-child(3n+1){animation-delay:-2.5s}
@keyframes light-twinkle{from{opacity:.45}to{opacity:1}}
.door-surface{position:absolute;inset:1px;border-radius:inherit;background:inherit;display:flex;align-items:center;justify-content:center;transform-origin:left center;transition:transform .48s var(--ease);backface-visibility:hidden}
.door-opening .door-surface{transform:perspective(160px) rotateY(-67deg);filter:brightness(.82)}
.window-glint{position:absolute;inset:2px;border-radius:inherit;background:linear-gradient(115deg,transparent 20%,#f9e5a625 55%,transparent 76%);opacity:.25;animation:candle-light 5s ease-in-out infinite alternate;pointer-events:none}
.door:nth-child(3n) .window-glint{animation-delay:-2s}.door:nth-child(3n+1) .window-glint{animation-delay:-3.8s}
.future .window-glint{display:none}
@keyframes candle-light{from{opacity:.15}to{opacity:.8}}
.bar-arrived .scene{animation:bar-arrival 1.15s var(--ease)}
@keyframes bar-arrival{from{opacity:.3;translate:0 28px}to{opacity:1;translate:0 0}}
.scratch-wrap.revealed .gift-art>svg,.scratch-wrap.revealed .prize-photo{animation:gift-unveil .8s var(--ease)}
@keyframes gift-unveil{from{transform:translateY(18px) scale(.9);opacity:.5}to{transform:translateY(0) scale(1);opacity:1}}
.intro:before{display:none}.intro{background:#082e25}
.intro-doors{position:absolute;inset:0;display:flex;perspective:1200px;pointer-events:none;z-index:-1}
.intro-doors>div{width:50%;height:100%;position:relative;background-color:#0b382c;background-image:var(--painted-wood);background-size:280px 560px;background-blend-mode:soft-light;border:1px solid #c9a25d50;transform-origin:left;transition:transform 1.2s var(--ease),opacity 1s}
.intro-doors>div:before{content:'';position:absolute;inset:7% 10%;border:1px solid #c9a25d45;border-radius:50% 50% 4px 4px}
.intro-doors>div:nth-child(2){transform-origin:right}
.intro.opening .intro-doors>div:first-child{transform:rotateY(-105deg);opacity:0}
.intro.opening .intro-doors>div:nth-child(2){transform:rotateY(105deg);opacity:0}
.intro-stars,.intro-logo,.intro h1,.intro p,.intro-line,.intro .text-button{transition:opacity .5s,transform .9s var(--ease)}
.intro.opening>h1,.intro.opening>.intro-logo,.intro.opening>.intro-stars,.intro.opening>p,.intro.opening>.intro-line{opacity:0;transform:translateY(-15px) scale(1.04)}
.intro-stars{animation:star-turn 1.2s var(--ease) backwards}
.intro-logo{animation:intro-in .9s var(--ease) .12s backwards}
.intro h1{animation:intro-in .9s var(--ease) .26s backwards}
.intro-line{animation:line-in 1.2s var(--ease) .45s backwards}
.intro .text-button{animation:intro-appear .6s ease .6s backwards}
@keyframes intro-appear{from{opacity:0}to{opacity:1}}
.gift-art.has-media{padding:0;background:#f3ead6}
.prize-photo{width:100%;height:100%;object-fit:cover;display:block;position:absolute;inset:0}
.prize-photo.contain{object-fit:contain;padding:25px 35px 75px;background:#f3ead6}
.gift-art.has-media:after{content:'';position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#051d17e8);pointer-events:none}
.gift-art.has-media .gift-value{position:absolute;bottom:39px;left:15px;right:15px;z-index:1;color:var(--cream);font-size:27px;text-shadow:0 2px 6px #0008}
.gift-art.has-media .gift-partner{position:absolute;bottom:18px;left:15px;right:15px;color:var(--cream);z-index:1;font-size:12px}
.partner-brand{height:53px;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;padding:9px 18px;width:fit-content;min-width:90px;max-width:220px;background:var(--cream);border-radius:4px}
.partner-brand.dark{background:#06281e}
.partner-brand img{display:block;width:auto;max-width:180px;height:auto;max-height:36px;object-fit:contain}
.claim-error{margin-top:14px}
.preview-context{font-size:11px;color:var(--muted);line-height:1.5}
.onboarding-pending .site-shell,.onboarding-pending .preview-control{visibility:hidden}
@media(max-width:600px){.preview-control{position:relative;left:auto;bottom:auto;transform:none;margin:0 auto 22px}.preview-control:active{transform:scale(.98)!important}.site-footer{padding-bottom:10px}}
/* Tactile miniature scenery: photographed material, with the original paint colours. */
.bar-building{background-image:var(--painted-wood);background-size:230px 460px;background-blend-mode:soft-light}
.roof-sign{background-image:var(--painted-wood);background-size:170px 340px;background-blend-mode:soft-light}
.door-surface{background-image:var(--painted-wood);background-size:90px 180px;background-blend-mode:soft-light}
.tree{background-image:url("assets/textures/winter-fir.webp");background-position:center bottom;background-size:contain;background-repeat:no-repeat;animation:fir-drift 10s ease-in-out infinite}
.tree-right{animation-delay:-4s}
.tree i,.tree b{visibility:hidden}
@keyframes fir-drift{0%,100%{translate:0 0}50%{translate:2px -1px}}
.bar-arrived .tree-left{animation:fir-arrival .85s var(--ease) .12s backwards,fir-drift 10s ease-in-out .97s infinite}
.bar-arrived .tree-right{animation:fir-arrival .85s var(--ease) .25s backwards,fir-drift 10s ease-in-out 1.1s infinite}
@keyframes fir-arrival{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
.bar-arrived .roof-sign{animation:sign-sway 8s ease-in-out infinite,prop-arrival .7s var(--ease) .18s backwards}
@keyframes prop-arrival{from{opacity:0;translate:0 -7px}to{opacity:1;translate:0 0}}
.bar-arrived .awning{transform-origin:center top;animation:awning-arrival .6s var(--ease) .26s backwards}
@keyframes awning-arrival{from{opacity:.5;transform:scaleY(.78)}to{opacity:1;transform:scaleY(1)}}
@media(prefers-reduced-motion:reduce){.roof-sign,.string-lights i,.window-glint,.tree,.bar-arrived .scene,.bar-arrived .awning,.scratch-wrap.revealed .prize-photo{animation:none!important}.intro-doors{display:none}.door-surface{transition:none}}
