﻿:root{--forest:#213c34;--forest-deep:#142e28;--paper:#fbf7ef;--cream:#efe8d9;--ink:#29382f;--muted:#6d7168;--gold:#b18c52;--line:#ded5c4;--leaf:#a56f3e;--shadow:0 28px 75px rgba(8,29,24,.29)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;min-width:320px;background:radial-gradient(circle at 10% 12%,#567164 0,transparent 36%),radial-gradient(circle at 87% 82%,#5c5846 0,transparent 40%),#1e3b33;color:var(--ink);font-family:Arial,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased}
button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}button:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid #c89443;outline-offset:3px}button[hidden],section[hidden],div[hidden],p[hidden]{display:none!important}
.app-shell{--book-height:clamp(720px,calc(100svh - 106px),920px);width:min(1520px,100%);padding:18px 18px 12px;margin:0 auto}
.site-header{display:flex;align-items:center;justify-content:space-between;gap:15px;color:#efe8d8;min-height:34px;margin-bottom:17px}.wordmark{display:inline-flex;align-items:center;gap:12px;color:inherit;text-decoration:none;font-size:11px;font-weight:700;letter-spacing:.17em}.wordmark-icon{display:grid;place-items:center;width:31px;height:31px;border:1px solid rgba(238,223,188,.6);border-radius:50%;font-family:Georgia,serif;font-size:21px;font-weight:400;color:#d8bd86}.header-actions{display:flex;align-items:center;gap:16px}.header-note{font-family:Georgia,serif;font-size:13px;font-style:italic;color:#d4d5c7}.music-toggle{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:34px;padding:6px 11px;border:1px solid rgba(238,223,188,.6);border-radius:2px;background:rgba(20,46,40,.45);color:#fff7e8;font-size:11px;font-weight:700;white-space:nowrap}.music-toggle:hover,.music-toggle[aria-pressed="true"]{background:#efe8d9;color:#213c34}.music-toggle span:first-child{font-size:16px;line-height:1}
.book{display:grid;grid-template-columns:minmax(350px,42%) minmax(0,58%);min-height:var(--book-height);background:var(--paper);border:1px solid rgba(238,224,195,.6);box-shadow:var(--shadow);overflow:hidden}
.poster{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:space-between;min-height:var(--book-height);overflow:hidden;padding:34px 37px 29px;color:#fff7e8;background:radial-gradient(ellipse at 70% 23%,rgba(188,168,119,.16),transparent 35%),radial-gradient(ellipse at 14% 75%,rgba(200,176,115,.13),transparent 37%),linear-gradient(150deg,#304d40,#1e392e 62%,#112a24)}
.poster::before{content:"";position:absolute;z-index:-1;inset:13% -35% auto auto;width:370px;height:370px;border:1px solid rgba(220,194,139,.14);border-radius:50%;box-shadow:0 0 0 66px rgba(220,194,139,.035),0 0 0 130px rgba(220,194,139,.02);pointer-events:none}
.photo-layer{position:absolute;z-index:-3;inset:0;opacity:0;background-size:cover;background-position:center;transition:opacity .8s ease}.photo-layer.active{opacity:1}.poster-shade{position:absolute;z-index:-2;inset:0;background:linear-gradient(180deg,rgba(11,31,28,.45),rgba(7,24,20,.26) 35%,rgba(8,24,20,.7)),linear-gradient(90deg,rgba(12,35,29,.27),transparent 90%)}.poster-frame{position:absolute;inset:17px;border:1px solid rgba(245,224,179,.42);pointer-events:none}.poster-top,.poster-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;position:relative;z-index:1}.poster-eyebrow{font-size:10px;font-weight:700;letter-spacing:.2em}.poster-sparkle{font-size:18px;color:#e2c996}.poster-main{text-align:center;position:relative;z-index:1;margin:8px 0 18px;text-shadow:0 2px 20px rgba(4,21,17,.6)}.ornament{display:flex;align-items:center;justify-content:center;gap:14px;color:#dfc899;font:34px Georgia,serif;margin-bottom:32px}.ornament span{height:1px;width:39px;background:rgba(235,215,166,.72)}.poster-overline{font-family:Georgia,serif;font-style:italic;font-size:15px;letter-spacing:.03em;color:#e6dfcb;margin:0 0 14px}.poster h1{font:400 clamp(48px,4.6vw,67px)/1.07 Georgia,"Times New Roman",serif;letter-spacing:-.055em;margin:0}.poster h1 em{font-weight:400;color:#ead0a0}.poster-caption{font:italic 15px/1.65 Georgia,serif;margin:25px 0 0;color:#f0e9db}.poster-bottom{border-top:1px solid rgba(247,227,184,.5);padding-top:18px;font:italic 13px Georgia,serif;color:#f1e8d4}
.weather{position:absolute;z-index:-1;inset:0;pointer-events:none;overflow:hidden;opacity:0;transition:opacity .5s}.poster.has-photo .weather{opacity:.85}.weather i{position:absolute;top:-9%;width:8px;height:8px;background:#c89456;opacity:.52;border-radius:80% 10% 80% 10%;animation:fall 13s linear infinite}.weather i:nth-child(1){left:9%;animation-delay:-2s;animation-duration:14s}.weather i:nth-child(2){left:23%;animation-delay:-9s;animation-duration:16s}.weather i:nth-child(3){left:35%;animation-delay:-5s;animation-duration:12s}.weather i:nth-child(4){left:49%;animation-delay:-12s;animation-duration:17s}.weather i:nth-child(5){left:62%;animation-delay:-7s;animation-duration:14s}.weather i:nth-child(6){left:73%;animation-delay:-3s;animation-duration:19s}.weather i:nth-child(7){left:85%;animation-delay:-10s;animation-duration:15s}.weather i:nth-child(8){left:96%;animation-delay:-15s;animation-duration:17s}body[data-season="advent"] .weather i{width:5px;height:5px;background:#fff;border-radius:50%;opacity:.77;box-shadow:0 0 7px #fff8;animation-name:snow}body[data-season="advent"] .poster-shade{background:linear-gradient(180deg,rgba(9,25,27,.44),rgba(13,29,35,.27) 35%,rgba(9,25,27,.72))}body[data-season="advent"] .poster h1 em{color:#f1dcc2}@keyframes fall{from{transform:translate3d(-10px,-10px,0) rotate(0)}to{transform:translate3d(48px,760px,0) rotate(480deg)}}@keyframes snow{from{transform:translate3d(-15px,-10px,0)}to{transform:translate3d(28px,760px,0)}}
.paper{position:relative;background:linear-gradient(125deg,#fffdf8,#f9f4ea 75%,#f3ecde);min-width:0}.paper::before{content:"";position:absolute;inset:15px;border:1px solid #ddd1bc;pointer-events:none}.paper-inner{position:relative;display:flex;flex-direction:column;min-height:var(--book-height);padding:36px 53px 24px}.topline{display:flex;align-items:center;justify-content:space-between;min-height:20px;color:#967348;font-size:10px;letter-spacing:.18em;font-weight:700}.quiet-link{border:0;background:none;color:#7b6045;text-decoration:underline;text-underline-offset:4px;padding:4px 2px;font-size:12px;letter-spacing:0;font-weight:600}.quiet-link:hover{color:var(--forest)}.progress{display:flex;align-items:center;gap:15px;margin:19px 0 32px}.progress>span{font-size:10px;white-space:nowrap;color:#8c8171;letter-spacing:.13em}.progress-bars{display:flex;gap:5px;width:100%}.progress-bars i{flex:1;height:2px;background:#dfd5c5}.progress-bars i.active{background:#9c7547}.progress-bars i.done{background:#b7a27e}
.screen{display:flex;flex-direction:column;justify-content:space-between;flex:1;animation:enter .38s ease both}.screen[hidden]{display:none}.screen-copy{width:100%}.eyebrow{display:flex;align-items:center;gap:10px;color:#9c7447;text-transform:uppercase;letter-spacing:.17em;font-size:10px;font-weight:700;margin:0 0 13px}.eyebrow::before{content:"";width:20px;height:1px;background:#ad8c5e}.screen h2{font:400 clamp(31px,3.5vw,43px)/1.18 Georgia,"Times New Roman",serif;letter-spacing:-.035em;margin:0 0 19px;color:#293b32}.screen h2 em{font-weight:400;color:#9a6748}.screen p{font-size:14px;line-height:1.75;color:#66665d;margin:0 0 15px}.screen .eyebrow{font-size:10px;line-height:1.2;color:#9c7447}.intro-text{max-width:540px}.intro-text p{font-size:15px;line-height:1.85}.screen-actions{display:flex;gap:11px;flex-wrap:wrap;margin:24px 0 0}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:48px;border-radius:2px;padding:12px 18px;text-align:center;font-size:12px;font-weight:700;line-height:1.4;transition:transform .18s,background .18s,box-shadow .18s}.button:hover{transform:translateY(-2px);box-shadow:0 6px 17px #24392e24}.button-primary{background:var(--forest);border:1px solid var(--forest);color:#fffaf0}.button-primary:hover{background:#33594b}.button-outline{border:1px solid #a79b89;background:transparent;color:#35433a}.button-outline:hover{background:#f0e7d7}.intro-actions{align-items:stretch}.intro-actions .button:first-child{flex:1 1 260px}.intro-actions .button:last-child{flex:1 1 185px}.paper-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);min-height:47px;margin-top:28px;padding-top:11px}.paper-footer span{margin-left:auto;font:italic 12px Georgia,serif;color:#938b7b}.paper-footer .quiet-link{font-size:12px}
.city-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:22px 0 0}.city-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;min-height:91px;padding:13px 16px;border:1px solid #d9cfbd;background:#fffcf5;color:var(--ink);text-align:left;transition:background .2s,border-color .2s,transform .2s}.city-card:hover,.activity-card:hover{border-color:#b7945f;transform:translateY(-2px)}.city-card[aria-pressed="true"],.activity-card[aria-pressed="true"]{background:#eee3cf;border-color:#9c7447;box-shadow:inset 0 0 0 1px #9c7447}.city-card[aria-pressed="true"]::after,.activity-card[aria-pressed="true"]::after{content:"✓";position:absolute;right:12px;top:10px;color:#6b4f2d;font-size:13px;font-weight:bold}.city-card .city-number{font:italic 12px Georgia,serif;color:#9d774c;margin-bottom:7px}.city-card strong{font:400 18px Georgia,serif;margin-bottom:4px}.city-card>span:last-child{font-size:11px;color:#7c796d}.city-card-wide{grid-column:1/-1;min-height:70px;display:grid;grid-template-columns:32px 1fr;align-content:center;column-gap:4px}.city-card-wide .city-number{grid-row:span 2;align-self:center;margin:0}.city-card-wide strong{margin:0}.field{margin-top:16px}.field label,.time-field label{display:block;color:#554d40;font-size:12px;font-weight:700;margin-bottom:8px}.field input{width:100%;min-height:45px;border:1px solid #cabfab;background:#fffdf7;padding:10px 12px;border-radius:2px;color:var(--ink)}
.calendar{margin:19px 0 0;border:1px solid #d8ccba;background:#fffcf6;padding:17px 19px 15px}.calendar-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:15px}.calendar h3{font:400 22px Georgia,serif;margin:0;color:#2e3b32}.month-controls{display:flex;gap:8px}.month-controls button{width:31px;height:31px;border:1px solid #cfc3ae;background:transparent;border-radius:50%;font-size:21px;line-height:1;color:#415246}.month-controls button:disabled{opacity:.3}.weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.weekdays{margin-bottom:6px}.weekdays span{font-size:10px;font-weight:700;color:#998e7c;text-align:center;padding:5px 0}.calendar-days button,.calendar-days span{display:grid;place-items:center;min-width:0;min-height:38px;border:1px solid transparent;border-radius:2px;background:transparent;color:#414940;font-size:12px}.calendar-days button.available{background:#f3e8d4;border-color:#eadbc0}.calendar-days button.available:hover{background:#ead6b3}.calendar-days button.selected{background:var(--forest);border-color:var(--forest);color:#fff}.calendar-days button:disabled{color:#c2b8aa}.calendar-days button.special{position:relative}.calendar-days button.special::after{content:"✦";position:absolute;right:2px;top:1px;color:#a16e30;font-size:9px}.calendar-days button.special.selected::after{color:#f2d195}.calendar-legend{display:flex;gap:16px;flex-wrap:wrap;margin:13px 0 0;color:#80776a;font-size:10px}.calendar-legend span{display:flex;align-items:center;gap:5px}.calendar-legend i{display:inline-block;width:10px;height:10px}.legend-available{background:#f3e8d4;border:1px solid #ddcbae}.calendar-legend .legend-special{width:auto;color:#a16e30;font-style:normal;font-size:14px}
.time-field{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;margin:17px 0 0}.time-field label{margin:0;flex:1 1 150px}.time-field input{min-width:120px;min-height:39px;background:#fffdf7;border:1px solid #cdbfa9;border-radius:2px;color:var(--ink);padding:7px 10px}.time-field input:disabled{opacity:.5}.screen .field-help{width:100%;margin:0;color:#80786b;font-size:11px;line-height:1.5}.screen .info-note{margin:14px 0 0;padding:11px 13px;background:#eee5d6;border-left:2px solid #b39261;color:#6b6254;font-size:12px;line-height:1.55}
.activity-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:24px 0 11px}.activity-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;min-height:131px;padding:15px;border:1px solid #d9cfbd;background:#fffcf5;text-align:left;color:var(--ink);transition:background .2s,border-color .2s,transform .2s}.activity-icon{font:25px Georgia,serif;color:#9c7547;margin-bottom:9px}.activity-card strong{font:400 17px/1.25 Georgia,serif;margin-bottom:7px}.activity-card>span:last-child{font-size:11px;line-height:1.45;color:#797668}
.ticket{position:relative;border:1px solid #cbb893;background:linear-gradient(135deg,#f8f0df,#efe1c9);padding:20px 22px 16px;margin:21px 0 22px}.ticket::before{content:"";position:absolute;inset:7px;border:1px solid #d9c8a9;pointer-events:none}.ticket-heading{text-align:center;padding-bottom:15px;border-bottom:1px dashed #c8b08b}.ticket-heading span{display:block;font-size:9px;letter-spacing:.18em;color:#897352;margin-bottom:7px}.ticket-heading strong{font:400 20px Georgia,serif;color:#3d4c3d}.ticket-details{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;padding:16px 3px 0}.ticket-details>div{min-width:0}.ticket-details span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:#8c785d;margin-bottom:5px}.ticket-details strong{display:block;font-size:13px;line-height:1.45;color:#3c493a;font-weight:600;overflow-wrap:anywhere}.ticket-wide{grid-column:1/-1}.ticket .ticket-heading+p{margin-top:10px}.screen .ticket>p{font:italic 11px Georgia,serif;color:#806e56;margin:17px 0 0;padding-top:10px;border-top:1px solid #d5c1a4}.final-question{border-left:2px solid #b59463;padding-left:15px;margin:9px 0}.screen .final-question p{color:#3c483d;font:400 16px/1.6 Georgia,serif;margin:0 0 12px}.screen .final-question p:last-child{margin-bottom:0}.screen .privacy-note{font-size:11px;color:#888174;line-height:1.5;margin:13px 0 0}.decision-actions .button{flex:1 1 150px}
.ending{justify-content:center}.ending-mark{font:46px Georgia,serif;color:#ab895c;margin-bottom:23px}.ending .screen-copy>p:not(.eyebrow):not(.privacy-note){font-size:16px;max-width:440px}.ending .screen-actions{justify-content:flex-start}.toast{position:fixed;left:50%;bottom:22px;z-index:10;transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;padding:11px 17px;background:#213c34;color:#fff8e8;box-shadow:0 8px 25px #0b241c55;font-size:12px;text-align:center;max-width:min(92vw,460px)}.toast.visible{opacity:1;transform:translate(-50%,0)}.bottom-caption{text-align:center;color:#c6cbbf;font:italic 12px Georgia,serif;margin:16px 0 0}
@keyframes enter{from{opacity:0;transform:translateY(11px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:940px){.book{grid-template-columns:minmax(280px,38%) minmax(0,62%)}.poster{padding:30px 26px}.poster h1{font-size:47px}.paper-inner{padding:31px 36px 22px}.ornament{margin-bottom:20px}}
@media(max-width:720px){.app-shell{padding:12px 10px 18px}.header-note{display:none}.site-header{margin:0 3px 10px}.book{display:block;min-height:0}.poster{min-height:218px;padding:17px 21px 16px}.poster-frame{inset:9px}.poster-top{font-size:9px}.poster-main{margin:8px 0}.ornament,.poster-overline,.poster-caption{display:none}.poster h1{font-size:clamp(28px,7vw,39px);line-height:1.1}.poster h1 br:nth-of-type(1),.poster h1 br:nth-of-type(2){display:none}.poster-bottom{padding-top:9px;font-size:11px}.paper-inner{min-height:550px;padding:24px 28px 21px}.paper::before{inset:9px}.progress{margin:15px 0 26px}.screen h2{font-size:clamp(31px,7vw,39px)}.intro-text p{font-size:14px}.bottom-caption{margin-top:12px}}
@media(max-width:420px){.paper-inner{padding:22px 20px 18px}.poster h1{font-size:28px}.city-grid,.activity-grid{gap:8px}.city-card{padding:11px;min-height:87px}.city-card strong{font-size:16px}.activity-card{padding:12px;min-height:125px}.activity-card strong{font-size:15px}.calendar{padding:13px 10px}.calendar-days,.weekdays{gap:2px}.calendar-days button,.calendar-days span{min-height:36px}.screen-actions .button{width:100%}.ticket{padding:17px 15px}.ticket-details{gap:12px}.wordmark{font-size:9px;letter-spacing:.11em}}
@media(max-width:360px){.wordmark>span:last-child{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.weather{display:none}}
