/* v8: transparent liquid surfaces, grounded portals and a quieter frame.
   Button refraction inspired by designali-in's Liquid Glass Button on 21st.dev. */
:root{--display-font:Bluecurve;--script-font:GoodVibes;--glass-edge:rgba(255,255,255,.6);--glass-shadow:inset 1px 1px 1px #ffffffb0,inset -1px -1px 1px #ffffff78,inset 0 0 5px #ffffff24,0 6px 22px #071d2926}
.frame{inset:20px;border:1px solid #fce8b87a;border-radius:34px;background:none;box-shadow:0 0 0 1px #102f3220,inset 0 0 0 1px #102f3220;opacity:1}
.frame::after{display:block;inset:5px;border:1px solid #fce8b826;border-radius:29px}
.frame::before{content:none}
.scene-header{top:5%;right:5.5%}
.invitation{top:10%;left:12%;right:12%}
h1{font-family:var(--display-font),Onest,sans-serif;font-weight:700;font-size:clamp(32px,3.7vw,52px);line-height:1.2;letter-spacing:-.025em}
.invitation-script{font-family:var(--script-font),cursive;font-size:clamp(26px,2.9vw,40px);line-height:1.4;font-weight:400;margin:6px 0 0;color:#fff4d7}
.doors{--door-height:min(43dvh,430px);bottom:22%;height:calc(var(--door-height) + 84px)}
.door-caption{height:84px;flex-basis:84px;padding-top:0;width:290px;max-width:90vw;margin-top:-17px}
.door-name{font-family:var(--display-font),Onest,sans-serif;font-weight:700;font-size:31px;line-height:1.2;letter-spacing:-.02em}
.door-description{white-space:normal;text-wrap:balance;font-size:12px;line-height:1.6;max-width:28ch;margin-top:9px;color:#fff2d9;letter-spacing:0}
.portal,.door:hover .portal,.door:focus-visible .portal{filter:none}
.portal::before{content:'';position:absolute;left:-9%;right:-9%;height:7%;bottom:9.2%;border-radius:50%;background:#0b2828a3;filter:blur(4px);transform:skewX(-18deg);z-index:-1}
.portal::after{content:'';position:absolute;left:-27%;width:116%;height:22%;bottom:-4%;background:linear-gradient(125deg,#0b28287a,#0b282800 90%);clip-path:polygon(20% 0,96% 0,70% 100%,0 100%);filter:blur(2px);z-index:-2;transform:skewX(-12deg)}
.door-art{transition:filter .3s}.door:hover .door-art{filter:brightness(1.06)}
.carousel-controls{bottom:13.4%}.help-request{bottom:6.5%}
/* Light follows the edge; the landscape remains visible through the surface. */
.primary-button,.carousel-arrow,.help-request,.answer-option{isolation:isolate;border:1px solid #ffffff59;color:#fffaf0;background:linear-gradient(130deg,#ffffff16,#ffffff03 55%,#ffffff13);box-shadow:var(--glass-shadow);backdrop-filter:blur(2px) saturate(1.12);-webkit-backdrop-filter:blur(2px) saturate(1.12);text-shadow:0 1px 5px #142d3b70;transition:background .25s,box-shadow .25s,scale .25s}
.primary-button::before,.carousel-arrow::before,.help-request::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;backdrop-filter:url('#liquid-refraction');-webkit-backdrop-filter:blur(2px);box-shadow:inset 3px 3px .5px -3px #fff,inset -3px -3px .5px -3px #ffffffc4,inset 0 0 6px 3px #ffffff14}
.primary-button{position:relative;min-height:46px;border-radius:28px;min-width:140px;padding:12px 22px;font-size:12px;color:inherit}
.primary-button:hover,.carousel-arrow:hover,.help-request:hover,.answer-option:hover{background-color:#ffffff16;box-shadow:inset 1px 1px 1px #fff,inset -1px -1px 1px #ffffff8c,0 7px 24px #091f302e}
.primary-button:active,.answer-option:active{scale:.98}.carousel-arrow{position:relative;background-color:#ffffff08}.help-request{background-color:#ffffff05;padding:12px 21px;font-size:12px}.help-spark{color:#fff7de}
.glass-filters{position:fixed;pointer-events:none}
.world-shade{background:linear-gradient(90deg,#0b2b3b26,transparent 45%,#10283e52)}
.world-intro h2{font-family:var(--display-font),Onest,sans-serif;font-weight:700;font-size:clamp(32px,3.7vw,52px);line-height:1.16;max-width:12ch;letter-spacing:-.02em}
.world-intro>p:last-child{font-family:var(--script-font),cursive;font-size:30px;line-height:1.4;max-width:25ch}
dialog{width:min(430px,43vw);border:1px solid #ffffff85;border-radius:30px;color:#fffaf1;background:linear-gradient(135deg,#ffffff1c,#ffffff05 52%,#ffffff0d);backdrop-filter:blur(3px) saturate(1.1);-webkit-backdrop-filter:blur(3px) saturate(1.1);box-shadow:inset 1px 1px 1px #ffffffb3,inset -1px -1px 1px #ffffff4d,inset 0 0 18px #ffffff08,0 24px 65px #06203129;color-scheme:dark;text-shadow:0 1px 8px #0e263a59}
.dialog-inner{padding:34px 30px 30px}.dialog-navigation{position:absolute;right:14px;top:12px;margin:0}.close-dialog{color:inherit;font:26px/1 Onest,sans-serif;width:36px;height:36px;padding:0;opacity:.8}.close-dialog:hover{opacity:1}.dialog-topline{margin:0 0 24px;min-height:8px}.form-steps{display:flex;gap:6px}.form-step-dot{display:block;width:5px;height:5px;border-radius:50%;background:#ffffff52;transition:width .3s,background .3s}.form-step-dot.is-current{width:20px;border-radius:5px;background:#fff6dd}
dialog h2{font:700 28px/1.23 var(--display-font),Onest,sans-serif;letter-spacing:-.015em;margin:0 0 24px;max-width:95%;color:inherit}
.answer-options{display:grid;grid-template-columns:1fr;gap:9px}.answer-option{position:relative;border-radius:15px;min-height:47px;padding:12px 16px;text-align:left;font-size:13px;line-height:1.4;font-weight:400}
.answer-option::after{content:'';position:absolute;width:12px;height:12px;right:15px;top:50%;transform:translateY(-50%);border:1px solid #ffffff7a;border-radius:50%;opacity:0}
.answer-option[aria-pressed=true]{background:linear-gradient(110deg,#ffffff32,#ffffff0d);border-color:#ffffffe0;padding-right:39px;box-shadow:inset 1px 1px 1px #ffffffbd,0 2px 16px #ffffff08}
.answer-option[aria-pressed=true]::after{opacity:1;background:radial-gradient(#fff7df 0 3px,transparent 3.5px)}
.answer-option:last-child{border-style:dashed;border-color:#ffffff66;background:#ffffff03;box-shadow:none;color:#fff2d9}
textarea,input:not([type=checkbox]){border:1px solid #ffffff66;background:#ffffff0c;box-shadow:inset 1px 1px 1px #ffffff2e;border-radius:14px;color:inherit;caret-color:#fff5d8}
textarea{margin-top:12px;min-height:105px}textarea::placeholder,input::placeholder{color:#fff8e7a6}textarea:focus,input:focus{border-color:#fff5dc;box-shadow:0 0 0 2px #ffffff17;background:#ffffff12}label,.consent,.field-note,.field-intro,.text-button{color:inherit}.text-button{font-size:12px}.field-note{opacity:.8}.consent{margin-top:18px;color:#fff6e6}.consent input{accent-color:#b8c7d0;outline-color:#fff}.form-actions{margin-top:24px}.form-error{color:#ffded1}.preview-notice{background:none;border:0;border-radius:0;color:#fff4d8;padding:0;font-size:10px;opacity:.85}.primary-button:focus-visible,dialog button:focus-visible{outline-color:#fff3d2}#form-result h3{font-family:var(--display-font),Onest,sans-serif;font-weight:700}#form-result p{color:inherit}#result-preview{background:#ffffff0d;border:1px solid #ffffff3b}#draft-block{margin-bottom:14px}.result-light{background:#fff7df;box-shadow:0 0 18px #fff0b580}
#firefly{width:7px;height:7px;margin:-3.5px 0 0 -3.5px;background:#fffff1;box-shadow:0 0 9px 4px #fffce0c9,0 0 29px 11px #fff5c754;z-index:100}
#firefly.is-hovered{box-shadow:0 0 12px 6px #fffef0d9,0 0 36px 16px #fff7d369}
/* Native dialog lives in the top layer; preserve the regular cursor there. */
.font-preview-bar{position:fixed;bottom:8px;left:50%;transform:translateX(-50%);z-index:25;display:flex;gap:10px;align-items:center;padding:7px 12px;background:#193c46e8;backdrop-filter:blur(8px);border:1px solid #fff5d350;border-radius:30px;font:11px Onest,sans-serif;color:#fff3d7;box-shadow:0 2px 18px #0002}
.font-preview-bar label{font-size:10px;white-space:nowrap;margin:0}.font-preview-bar select{font:11px Onest,sans-serif;color:inherit;background:transparent;border:0;max-width:210px;padding:7px 3px;outline-offset:2px}.font-preview-bar option{background:#193c46}.font-preview-bar a{color:inherit;white-space:nowrap;font-size:10px;text-underline-offset:3px}
body[data-font^=kudry] h1,body[data-font^=igra] h1,body[data-font^=kudry] .door-name,body[data-font^=igra] .door-name{font-weight:400}
@media(max-width:900px){.invitation{top:12%;left:7%;right:7%}.scene-header{top:4.5%}.world-intro>p:last-child{font-size:26px}dialog{right:4%;width:46vw}.dialog-inner{padding:30px 24px 26px}}
@media(max-width:650px){.frame{inset:10px;border-radius:26px}.frame::after{inset:4px;border-radius:22px}.frame::before{background-size:49px 49px}.scene-header{top:4%;right:7%}.invitation{top:15%;left:6%;right:6%}h1{font-size:30px;line-height:1.2}.invitation-script{font-size:27px;line-height:1.22;margin:6px auto 0;max-width:25ch}.doors{--door-height:38dvh;bottom:23%;height:calc(var(--door-height) + 86px);--side-x:29vw}.door-caption{height:86px;flex-basis:86px;width:270px;margin-top:-11px}.door-name{font-size:27px}.door-description{font-size:11px;margin-top:7px;max-width:27ch;line-height:1.5}.carousel-controls{bottom:14%;height:44px;gap:15px}.help-request{bottom:7%;font-size:11px;padding:12px 17px}.world-intro{top:6%;left:8%;max-width:84%}.world-intro h2{font-size:30px;max-width:14ch;margin-bottom:9px}.world-intro>p:last-child{font-size:25px;max-width:25ch;line-height:1.25}dialog{width:90%;left:5%;right:5%;max-height:66dvh;bottom:max(18px,env(safe-area-inset-bottom));border-radius:27px}.dialog-inner{padding:29px 22px 25px}dialog h2{font-size:26px;margin-bottom:21px}.answer-option{min-height:46px;font-size:13px}.dialog-topline{margin-bottom:20px}textarea,input:not([type=checkbox]){font-size:16px}.form-actions{margin-top:21px}.primary-button{font-size:12px}.font-preview-bar{max-width:94%;gap:6px;padding:5px 10px;bottom:3px}.font-preview-bar label{display:none}.font-preview-bar select{font-size:10px;max-width:190px}.font-preview-bar a{font-size:9px}}
@media(max-height:700px) and (max-width:650px){.invitation{top:14%;left:6%;right:6%}h1{font-size:25px}.invitation-script{font-size:23px;max-width:25ch;margin-top:3px}.doors{--door-height:34dvh;bottom:23%;height:calc(var(--door-height) + 68px)}.door-caption{height:68px;flex-basis:68px;width:245px;margin-top:-8px}.door-name{font-size:23px}.door-description{font-size:10px;max-width:28ch;margin-top:5px;line-height:1.35}.carousel-controls{bottom:13.2%;height:36px}.help-request{bottom:5.3%;padding:10px 14px;font-size:10px}.scene-header{top:3.5%}.world-intro{top:4%}.world-intro h2{font-size:25px}.world-intro>p:last-child{font-size:21px}dialog{max-height:67dvh;bottom:12px}.dialog-inner{padding:26px 19px 20px}.dialog-topline{margin-bottom:16px}dialog h2{font-size:23px;margin-bottom:17px}.answer-options{gap:8px}.answer-option{min-height:43px;padding:10px 14px;font-size:12px}.form-actions{margin-top:17px}.primary-button{min-height:43px}}
@media(max-height:740px) and (min-width:651px){.invitation{top:9%}h1{font-size:35px}.invitation-script{font-size:28px}.doors{--door-height:39dvh;bottom:22%;height:calc(var(--door-height) + 73px)}.door-caption{height:73px;flex-basis:73px}.door-name{font-size:27px}.door-description{font-size:10px}.help-request{bottom:4.5%}.carousel-controls{bottom:12.5%}}
@media(prefers-reduced-transparency:reduce){dialog{background:#284857f0;backdrop-filter:none}.answer-option{background:#ffffff0f}}
/* Use the supplied masters, without synthetic bold or italic. */
h1,.door-name,.world-intro h2,dialog h2,#form-result h3{font-weight:var(--display-weight,700)!important;font-synthesis:none}.invitation-script,.world-intro>p:last-child{font-weight:var(--script-weight,400);font-synthesis:none}
/* A diffuse cast shadow sits on the grass, without a rectangular light platform. */
.portal::after{left:-25%;width:120%;height:12%;bottom:3%;clip-path:none;border-radius:50%;background:radial-gradient(ellipse at 65% 25%,#0b282857,transparent 72%);filter:blur(5px);transform:skewX(-28deg)}
body[data-font$=christopher] .invitation-script{font-size:clamp(34px,3.8vw,52px);line-height:1.08}
body[data-font$=christopher] .world-intro>p:last-child{font-size:38px;line-height:1.15}
@media(max-width:650px){body[data-font$=christopher] .invitation-script{font-size:34px;line-height:1.05}body[data-font$=christopher] .world-intro>p:last-child{font-size:32px}}
@media(max-height:700px) and (max-width:650px){body[data-font$=christopher] .invitation-script{font-size:29px}body[data-font$=christopher] .world-intro>p:last-child{font-size:27px}}
/* v9: the chosen Igra + Good Vibes pair, quiet glass and a larger central door. */
:root{--display-font:Igra;--script-font:GoodVibes;--display-weight:400;--script-weight:400;--glass-shadow:inset 0 1px 1px #ffffff8c,inset 0 -1px 1px #ffffff38,0 5px 18px #071d2926}
.invitation{top:6%;left:13%;right:13%}
h1{font-size:clamp(32px,3.3vw,46px);line-height:1.2;letter-spacing:-.02em}
.invitation-script,body[data-font$=christopher] .invitation-script{font-family:var(--display-font),sans-serif;font-weight:var(--display-weight,400);font-size:clamp(17px,1.7vw,24px);line-height:1.45;max-width:39ch;margin:9px auto 0;color:#fff4df;letter-spacing:0}
.doors{--door-height:min(53dvh,520px);bottom:24%;height:calc(var(--door-height) + 91px);--side-x:clamp(175px,19vw,260px)}
.door-caption{height:91px;flex-basis:91px;width:350px;margin-top:-22px}.door-name{font-size:32px}.door-description{font-family:var(--script-font),cursive;font-weight:var(--script-weight,400);font-size:27px;line-height:1.2;max-width:27ch;margin-top:7px;color:#fff0cf;font-synthesis:none}
body[data-font$=christopher] .door-description{font-size:34px;line-height:1.05}
.carousel-controls{top:44%;bottom:auto;left:50%;width:min(850px,88vw);justify-content:space-between;height:52px;gap:0;pointer-events:none}.carousel-arrow{pointer-events:auto;border:0!important;box-shadow:none!important;background:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-radius:0;width:52px;height:52px;color:#fff6e3;font:300 38px/1 Arial,sans-serif;text-shadow:0 1px 9px #0c2729;transition:translate .25s,opacity .25s}.carousel-arrow::before{display:none}.carousel-arrow:hover{transform:none;opacity:.75}#door-prev:hover{translate:-3px 0}#door-next:hover{translate:3px 0}.carousel-middle{display:none}
.help-request{bottom:15%;font-size:13px;padding:13px 23px;min-height:48px}.calendar-link{position:absolute;bottom:9.9%;left:50%;transform:translateX(-50%);z-index:6;font:12px Igra,Onest,sans-serif;white-space:nowrap;color:#fff2d7;background:none;border:0;border-bottom:1px solid #fff2d755;border-radius:0;padding:7px 2px;text-shadow:0 1px 8px #153439}
.scene-header{top:auto;bottom:3%;left:0;right:0;justify-content:center;pointer-events:none}.theme-toggle{pointer-events:auto}
.primary-button,.help-request{background:linear-gradient(150deg,#ffffff16,#ffffff05);border:1px solid #ffffff73;box-shadow:var(--glass-shadow);backdrop-filter:blur(2px) saturate(1.08);-webkit-backdrop-filter:blur(2px) saturate(1.08)}
.primary-button::before,.help-request::before{content:none!important;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}
.primary-button:hover,.help-request:hover{background:#ffffff17;box-shadow:inset 0 1px 1px #ffffffb0,0 5px 18px #071d2926}
.answer-option{box-shadow:none;border-color:#ffffff5c;background:#ffffff08;backdrop-filter:none;-webkit-backdrop-filter:none}.answer-option:hover{box-shadow:none;background:#ffffff15}.answer-option[aria-pressed=true]{box-shadow:inset 0 1px 0 #ffffff46;border-color:#fff8dbb3;background:#ffffff19}.answer-option:last-child{border-style:solid}
.world-scene{font-family:Igra,Onest,sans-serif}.world-intro h2,dialog h2,#form-result h3{font-family:Igra,Onest,sans-serif;font-weight:400!important}.world-intro>p:last-child,body[data-font$=christopher] .world-intro>p:last-child{font-family:Igra,Onest,sans-serif;font-size:17px;line-height:1.55;max-width:33ch;font-weight:400}.world-scene button,.world-scene textarea,.world-scene input,.world-scene #result-preview{font-family:Igra,Onest,sans-serif}
.world-open .font-preview-bar{display:none}.font-preview-bar{bottom:3px;left:18px;transform:none}
#calendar-dialog{inset:0;margin:auto;width:min(430px,90vw);max-height:90dvh;font-family:Igra,Onest,sans-serif;background:linear-gradient(135deg,#173f46c7,#17394bab);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}#calendar-dialog::backdrop{background:#08252b55;backdrop-filter:blur(2px)}.calendar-dialog-inner{padding:32px 28px 27px}#close-calendar{position:absolute;top:10px;right:10px}#calendar-dialog h2{font-size:26px;margin-bottom:23px}#calendar-choose-topic{margin-top:23px}
@media(max-width:650px){.invitation{top:5.8%;left:8%;right:8%}h1{font-size:28px}.invitation-script,body[data-font$=christopher] .invitation-script{font-size:17px;line-height:1.4;max-width:31ch;margin-top:8px}.doors{--door-height:46dvh;--side-x:33vw;bottom:25.5%;height:calc(var(--door-height) + 90px)}.door-caption{height:90px;flex-basis:90px;margin-top:-17px;width:290px}.door-name{font-size:27px}.door-description{font-size:25px;line-height:1.2;max-width:24ch;margin-top:8px}.carousel-controls{top:44%;width:92vw;height:48px}.carousel-arrow{width:44px;height:48px;font-size:32px}.help-request{bottom:17%;font-size:11px;min-height:45px;padding:11px 18px}.calendar-link{bottom:11.7%;font-size:11px}.scene-header{top:auto;bottom:4.4%;left:0;right:0}.world-intro>p:last-child,body[data-font$=christopher] .world-intro>p:last-child{font-size:14px;line-height:1.5;max-width:29ch}.font-preview-bar{left:50%;transform:translateX(-50%);bottom:2px}#calendar-dialog h2{font-size:24px}.calendar-dialog-inner{padding:30px 21px 24px}}
@media(max-height:700px) and (max-width:650px){.invitation{top:4.5%;left:9%;right:9%}h1{font-size:24px}.invitation-script,body[data-font$=christopher] .invitation-script{font-size:15px;line-height:1.35;margin-top:6px}.doors{--door-height:40dvh;bottom:27%;height:calc(var(--door-height) + 75px)}.door-caption{height:75px;flex-basis:75px;margin-top:-12px;width:260px}.door-name{font-size:23px}.door-description{font-size:22px;max-width:25ch;line-height:1.12}.help-request{bottom:18.1%;padding:9px 15px;min-height:42px;font-size:10px}.calendar-link{bottom:11.6%;font-size:10px;padding:6px 1px}.scene-header{bottom:3%}.carousel-controls{top:41%;width:93vw}.world-intro>p:last-child,body[data-font$=christopher] .world-intro>p:last-child{font-size:13px}}
@media(max-height:740px) and (min-width:651px){.invitation{top:5%}h1{font-size:34px}.invitation-script,body[data-font$=christopher] .invitation-script{font-size:19px}.doors{--door-height:47dvh;bottom:24%;height:calc(var(--door-height) + 78px)}.door-caption{height:78px;flex-basis:78px}.door-name{font-size:27px}.door-description{font-size:25px}.help-request{bottom:14.5%;padding:10px 20px;min-height:44px}.calendar-link{bottom:8.6%}.scene-header{bottom:1.5%}}
/* Clear glass surface: keep the liquid motion without opaque blue water. */
#theme-toggle.liquid-toggle{--lt-tint:rgba(255,255,255,.045);--lt-rim:rgba(255,255,255,.4)}
#theme-toggle.liquid-toggle .lt-water{opacity:.6}#theme-toggle.liquid-toggle .lt-glass{backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);box-shadow:inset 0 1px 1px #ffffff52,inset 0 -1px 1px #ffffff40,0 3px 12px #0c23351c}
#theme-toggle.liquid-toggle[data-lt-tone=dark]{--lt-tint:rgba(10,18,40,.08)}#theme-toggle.liquid-toggle[data-lt-tone=dark] .lt-glass{box-shadow:inset 0 1px 1px #ffffff40,inset 0 -1px 1px #ffffff38}#theme-toggle.liquid-toggle .lt-fill{opacity:.25}
/* A calendar is one compact step, with occupied slots kept in view. */
.booking-calendar{font-family:Igra,Onest,sans-serif;font-size:13px;color:#fff7e8;line-height:1.45}.calendar-status{font-size:11px;line-height:1.5;color:#fff1d5;opacity:.85;margin:0 0 16px}.calendar-status:empty{display:none}.calendar-navigation{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.calendar-nav{background:none;border:0;color:inherit;font-size:23px;width:36px;height:36px;display:grid;place-items:center}.calendar-month{font-size:17px;font-weight:400;text-align:center}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.calendar-weekdays{text-align:center;font-size:10px;color:#fff1d5a8;margin-bottom:8px}.calendar-day{position:relative;display:grid;place-items:center;aspect-ratio:1;border:1px solid transparent;border-radius:11px;background:none;color:#fff7e7;font:13px Igra,Onest,sans-serif;min-width:0;padding:3px}.calendar-day:disabled{cursor:default;opacity:.25}.calendar-day.has-slots{border-color:#ffffff29;background:#ffffff06}.calendar-day.has-slots::after{content:'';position:absolute;width:3px;height:3px;bottom:5px;border-radius:50%;background:#fff0c2}.calendar-day.is-selected{background:#ffffff26;border-color:#fff7d8a8}.calendar-day.is-full{color:#f7ebd193;background:#ffffff03;border-color:#ffffff10}.calendar-day.is-full::after{background:#fff4dc50}.calendar-day.has-selection{box-shadow:inset 0 0 0 1px #fff7da}.calendar-day:not(:disabled):hover{background:#ffffff1c}.calendar-day-title{font-size:13px;font-weight:400;margin:20px 0 10px}.calendar-times{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.calendar-slot{font:13px/1.4 Igra,Onest,sans-serif;display:flex;flex-direction:column;gap:2px;border:1px solid #ffffff6b;background:#ffffff08;border-radius:14px;min-height:56px;padding:10px 13px;text-align:center;color:inherit;box-shadow:inset 0 1px 0 #ffffff26}.calendar-slot-time{font-size:16px}.calendar-slot-status{font-size:10px;opacity:.8}.calendar-slot.is-selected{background:#ffffff24;border-color:#fff6da}.calendar-slot.is-booked,.calendar-slot:disabled{opacity:.5;cursor:default;box-shadow:none;border-color:#ffffff25;background:#ffffff03}.calendar-timezone{font-size:10px;opacity:.72;margin:12px 0 0}.calendar-selection,.selected-slot-summary{font:12px/1.6 Igra,Onest,sans-serif;padding:11px 0 0;margin:12px 0 0;border-top:1px solid #fff4d730;color:#fff3dc}.calendar-empty{font-size:12px;line-height:1.5;opacity:.8}.calendar-retry{border:1px solid #ffffff50;border-radius:20px;color:inherit;background:#ffffff0c;font-size:12px;padding:9px 16px}.selected-slot-summary{margin:0 0 17px;padding:0 0 13px;border-top:0;border-bottom:1px solid #fff4d730}
@media(max-width:650px){.calendar-dialog-inner{padding:30px 22px 24px}.calendar-navigation{margin-bottom:10px}.calendar-month{font-size:16px}.calendar-day{font-size:12px;min-height:30px}.calendar-day-title{margin-top:15px}.calendar-slot-time{font-size:15px}.calendar-times{gap:8px}.calendar-status{font-size:10px;margin-bottom:12px}.calendar-selection{font-size:11px}}
@media(max-height:700px) and (max-width:650px){.calendar-day{aspect-ratio:auto;min-height:30px}.calendar-grid{gap:2px}.calendar-day-title{margin-top:12px}.calendar-slot{min-height:48px;padding:7px 10px}.calendar-timezone{margin-top:9px}.calendar-selection{margin-top:9px;padding-top:8px}}

/* v10: lettering, shared scene anchors and a centered, compact questionnaire. */
:root { --script-font: Denistina; }
.forest {
  --doors-bottom: 21dvh;
  --caption-height: 104px;
  --caption-title-center: 19px;
}
.invitation { top: 4dvh; left: 8%; right: 8%; }
#invitation-title {
  font-family: Igra, sans-serif;
  font-size: clamp(1.5rem, 2.8vw, 2rem);
  line-height: 1.15;
  letter-spacing: .005em;
  max-width: 1000px;
  margin: 0 auto;
}
.invitation-script, body[data-font$=christopher] .invitation-script {
  font-family: Denistina, Igra, sans-serif;
  font-weight: 400;
  font-size: clamp(2rem, 3vw, 2.75rem);
  line-height: 1.05;
  letter-spacing: 0;
  max-width: 34ch;
  margin: 8px auto 0;
  text-wrap: balance;
}
.invitation-heart { display: inline-block; width: .6em; height: .6em; vertical-align: -.04em; margin-left: .16em; overflow: visible; }
.doors { bottom: var(--doors-bottom); height: calc(var(--door-height) + var(--caption-height)); }
.door-caption { height: var(--caption-height); flex-basis: var(--caption-height); }
.door-name { max-width: calc(100vw - 112px); white-space: normal; line-height: 1.15; text-wrap: balance; }
.door-description, body[data-font$=christopher] .door-description {
  font-family: var(--script-font), Igra, sans-serif;
  font-size: 1.875rem;
  line-height: .98;
  max-width: 27ch;
  margin-top: 7px;
}
body[data-font=igra-regular] .door-description { font-size: 1.125rem; line-height: 1.35; }
.door.is-left { transform: translateX(calc(-50% - var(--side-x))) translateY(-24px) scale(.77); }
.door.is-right { transform: translateX(calc(-50% + var(--side-x))) translateY(-24px) scale(.77); }
/* The sprite's visible threshold is at 88% of its box. */
.portal::before { left: 9%; right: 9%; bottom: 10.3%; height: 3.4%; background: #061c27b3; filter: blur(2px); transform: none; }
.portal::after { left: -18%; width: 136%; bottom: 6%; height: 10%; background: radial-gradient(ellipse at 52% 20%, #061b277a, #061b272b 48%, transparent 74%); filter: blur(4px); transform: skewX(-27deg); }
.carousel-controls {
  top: auto;
  bottom: calc(var(--doors-bottom) + var(--caption-height) - var(--caption-title-center) - 22px);
  width: min(770px, 91vw);
  height: 44px;
}
.carousel-arrow { width: 44px; height: 44px; font-size: 32px; }
.forest-actions { position: absolute; left: 50%; bottom: 11dvh; transform: translateX(-50%); display: flex; align-items: stretch; justify-content: center; gap: 12px; z-index: 6; width: min(340px, 82vw); }
.forest-actions > button {
  position: relative;
  inset: auto;
  transform: none;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 0;
  max-width: none;
  min-width: 0;
  min-height: 52px;
  padding: 12px 18px;
  margin: 0;
  border: 1px solid #ffffff73;
  border-radius: 28px;
  background: linear-gradient(150deg, #ffffff16, #ffffff05);
  box-shadow: var(--glass-shadow);
  backdrop-filter: blur(2px) saturate(1.08);
  -webkit-backdrop-filter: blur(2px) saturate(1.08);
  font: 12px/1.4 Igra, Onest, sans-serif;
  white-space: normal;
  text-wrap: balance;
  text-align: center;
  color: #fff6e4;
}
.forest-actions > button:first-child { flex-grow: 1.35; }
.forest-actions > button:hover { background: #ffffff17; }
.forest-actions > button:focus-visible { outline: 2px solid #fff3d2; outline-offset: 4px; }
.scene-header { bottom: 3dvh; }
#theme-toggle.liquid-toggle[data-lt-tone=light] { --lt-tint: rgba(255, 221, 120, .10); }
.world-intro { top: 6dvh; left: 7%; right: 7%; max-width: none; }
.world-intro h2 { font-size: clamp(28px, 3.6vw, 46px); max-width: none; margin: 0; }
.world-intro > p { display: none; }
#application {
  inset: 0;
  margin: auto;
  width: min(430px, 90vw);
  max-height: 76dvh;
}
#application .dialog-inner { padding: 32px 28px 26px; }
#form-heading:focus, #calendar-title:focus { outline: none; }
#notes { margin-top: 0; min-height: 126px; }
.optional-hint { font-size: 11px; opacity: .8; margin: 10px 0 0; }
#calendar-dialog { max-height: 84dvh; }
.calendar-dialog-inner { padding: 30px 26px 24px; }
#calendar-dialog h2 { font-size: 25px; line-height: 1.2; margin-bottom: 16px; }
.calendar-navigation { margin-bottom: 10px; }
.calendar-weekdays { margin-bottom: 6px; }
.calendar-day { aspect-ratio: auto; min-height: 32px; height: 34px; }
.calendar-day-title { margin: 14px 0 9px; }
.calendar-slot { min-height: 48px; padding: 8px 10px; }
.calendar-timezone { margin-top: 10px; }
#calendar-choose-topic { margin-top: 18px; }
#application:has(fieldset[data-step="4"]:not([hidden])) { max-height: calc(100dvh - 160px); }
#form-calendar .calendar-selection { display: none; }
@media (max-width: 650px) {
  .forest { --caption-title-center: 16px; }
  .invitation { top: 4.8dvh; left: 5%; right: 5%; }
  #invitation-title { font-size: 1.4375rem; }
  .invitation-script, body[data-font$=christopher] .invitation-script { font-size: 2.125rem; max-width: 31ch; margin-top: 7px; }
  .doors { --door-height: 46dvh; }
  .door-caption { width: 300px; }
  .door-name { font-size: 27px; }
  .door-description, body[data-font$=christopher] .door-description { font-size: 1.625rem; max-width: 25ch; }
  body[data-font=igra-regular] .door-description { font-size: 1rem; }
  .forest-actions { bottom: 12dvh; gap: 10px; width: min(340px, 82vw); }
  .forest-actions > button { min-height: 56px; font-size: 12px; line-height: 1.4; padding: 10px 12px; }
  .scene-header { bottom: 3.6dvh; }
  .world-intro { top: 5dvh; left: 8%; right: 8%; }
  .world-intro h2 { font-size: 28px; }
  #application { inset: 0; margin: auto; width: 90vw; max-height: 74dvh; }
  #application .dialog-inner { padding: 30px 22px 24px; }
  #application h2 { font-size: 25px; margin-bottom: 20px; }
  .calendar-dialog-inner { padding: 30px 22px 24px; }
  #calendar-dialog h2 { font-size: 24px; }
}
@media (max-height: 700px) and (max-width: 650px) {
  .forest { --doors-bottom: 23dvh; --caption-height: 102px; --caption-title-center: 14px; }
  .invitation { top: 3.5dvh; }
  #invitation-title { font-size: 1.1875rem; }
  .invitation-script, body[data-font$=christopher] .invitation-script { font-size: 1.875rem; max-width: 30ch; margin-top: 5px; }
  .doors { --door-height: 37dvh; }
  .door-caption { width: 260px; }
  .door-name { font-size: 23px; }
  .door-description, body[data-font$=christopher] .door-description { font-size: 1.4375rem; margin-top: 5px; }
  .forest-actions { bottom: 12dvh; width: min(300px, 86vw); gap: 8px; }
  .forest-actions > button { min-height: 56px; font-size: 11px; padding: 8px 10px; }
  .scene-header { bottom: 2dvh; }
  .world-intro { top: 4dvh; }
  .world-intro h2 { font-size: 24px; }
  #application { max-height: 76dvh; }
  #application .dialog-inner { padding: 26px 19px 20px; }
  #application h2 { font-size: 22px; margin-bottom: 17px; }
  #application:has(fieldset[data-step="4"]:not([hidden])) { max-height: calc(100dvh - 110px); }
  #calendar-dialog { max-height: 92dvh; }
  .calendar-dialog-inner { padding: 26px 20px 20px; }
  #calendar-dialog h2 { font-size: 22px; margin-bottom: 12px; }
  .calendar-day { min-height: 28px; height: 28px; }
}
@media (max-height: 740px) and (min-width: 651px) {
  .forest { --caption-height: 90px; --caption-title-center: 16px; }
  .door-description, body[data-font$=christopher] .door-description { font-size: 1.75rem; }
  .forest-actions { bottom: 11dvh; }
  .forest-actions > button { min-height: 46px; padding: 10px 16px; }
  .scene-header { bottom: 1.5dvh; }
}

/* v15–17: supplied display and supporting fonts, with readable UI weights. */
body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) {
  font-family: var(--script-font), Helvetica, Arial, sans-serif;
  font-weight: var(--ui-weight, var(--script-weight));
  font-optical-sizing: auto;
  font-synthesis: none;
}
body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) :is(#invitation-title, .door-name, .world-intro h2, dialog h2, #form-result h3) {
  font-family: var(--display-font), Georgia, serif;
  font-weight: 400 !important;
  letter-spacing: 0;
}
body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) .invitation-script {
  font-family: var(--script-font), Helvetica, Arial, sans-serif;
  font-size: clamp(1rem, 1.5vw, 1.25rem);
  font-weight: var(--script-weight);
  line-height: 1.4;
  margin-top: 12px;
  max-width: none;
}
body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) .invitation-heart {
  width: 1em;
  height: 1em;
  vertical-align: -.16em;
}
body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) .door-description {
  font-family: var(--script-font), Helvetica, Arial, sans-serif;
  font-size: 1rem;
  font-weight: var(--script-weight);
  line-height: 1.4;
  max-width: 35ch;
  margin-top: 9px;
  letter-spacing: 0;
}
body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) :is(.world-scene, #calendar-dialog, #calendar-dialog button, .booking-calendar, .calendar-month, .calendar-day-title, .calendar-day, .calendar-slot, .calendar-selection, .selected-slot-summary, .forest-actions > button, .world-scene button, .world-scene textarea, .world-scene input, #result-preview, .loading-number) {
  font-family: var(--script-font), Helvetica, Arial, sans-serif;
  font-weight: var(--ui-weight, var(--script-weight));
}
@media (max-width: 650px) {
  body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) .invitation-script { font-size: 1rem; margin-top: 10px; }
  body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) .door-description { font-size: .9375rem; line-height: 1.4; margin-top: 9px; }
}
@media (max-height: 700px) and (max-width: 650px) {
  body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) .invitation-script { font-size: .875rem; margin-top: 8px; }
  body:is([data-font=bergamasco-inter], [data-font=bergamasco-gros], [data-font=literature-gros]) .door-description { font-size: .8125rem; line-height: 1.4; margin-top: 8px; }
}

/* The three-line invitation keeps its own space above the door on short screens. */
@media (max-height: 740px) and (min-width: 651px) {
  #invitation-title { font-size: 1.5rem; }
}
/* Literature's wider capitals need a smaller mobile topic line. */
@media (max-width: 650px) {
  body[data-font=literature-gros] .door-name { font-size: 23px; }
}
@media (max-height: 700px) and (max-width: 650px) {
  body[data-font=literature-gros] .door-name { font-size: 19px; }
}
