:root{color-scheme:light dark;--canvas:#f7f7f5;--card:#fffefd;--ink:#1a1c1e;--muted:#696964;--line:#e3e2df;--red:#d83220;--accent:#d83220;--soft:#f1eee9;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.4}a{color:inherit;text-decoration:none}button{border:0;background:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button:not(:disabled):active{transform:scale(.98)}[hidden]{display:none!important}p,h1,h2,h3{margin:0}img{display:block}button,input,select{min-height:44px}
.masthead{max-width:1180px;margin:auto;padding:24px 40px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:600}.brand img{border-radius:10px}.wordmark{display:block;font-size:8px;letter-spacing:2px;margin-top:3px;color:var(--muted)}.text-button{font-size:13px;color:var(--accent);padding:8px 0}.text-button span{margin-left:8px;font-size:18px}
.layout{max-width:1180px;margin:10px auto 0;padding:0 40px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.16fr);gap:64px;align-items:start}.invitation{position:sticky;top:30px}.artwork{height:590px;position:relative;overflow:hidden;background:#ba180b;border-radius:28px;color:#fff9ed;isolation:isolate}.door{position:absolute;width:100%;height:100%;object-fit:cover;object-position:center}.art-copy{position:relative;z-index:1;height:100%;padding:32px;display:flex;flex-direction:column;align-items:flex-start}.eyebrow{font-size:10px;letter-spacing:2.3px;font-weight:500}.artwork h1{font-size:clamp(56px,6.6vw,82px);font-weight:250;line-height:1.17;letter-spacing:5px;margin-top:52px}.welcome{margin-top:auto;max-width:75%}.welcome h2{font-size:21px;font-weight:500;margin-bottom:8px}.welcome p{font-size:12px;color:#ffe0cd;line-height:1.7}.art-mark{position:absolute;right:28px;bottom:35px;font-size:38px;font-weight:200}.invitation-note{font-family:"Songti SC","STSong",serif;color:var(--muted);font-size:16px;letter-spacing:1px;padding:24px 4px}
.intro{padding:18px 0 30px}.intro .eyebrow{color:var(--accent);font-size:9px;margin-bottom:12px}.intro h2{font-size:clamp(24px,2.5vw,32px);font-weight:650;letter-spacing:-1px}.intro>p:last-child{font-size:13px;color:var(--muted);margin-top:12px}.calendar-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:12px;color:var(--muted)}.day-arrows{display:flex;gap:10px}.day-arrows button{font-size:26px;width:44px;border-radius:50%;background:var(--card);line-height:1}.date-rail{display:flex;gap:8px;overflow:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:4px 1px 8px}.date-rail::-webkit-scrollbar{display:none}.date{flex:0 0 58px;height:87px;border-radius:18px;background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;transition:background .18s,color .18s}.date .weekday{font-size:10px}.date strong{font-size:24px;line-height:1;font-weight:600}.date i{height:4px;width:4px;border-radius:50%;margin-top:3px}.date i.has-events{background:var(--accent)}.date[aria-pressed=true]{background:var(--red);color:#fff9ed}.date[aria-pressed=true] i.has-events{background:#fff9ed}.more-dates{min-width:44px;font-size:24px;color:var(--accent)}
.occupied{margin-top:30px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.section-heading h3{font-size:17px;font-weight:600}.section-heading>span{font-size:12px;color:var(--muted)}.event{display:flex;align-items:flex-start;gap:20px;padding:19px 0;border-bottom:1px solid var(--line)}.event-time{flex:0 0 78px;display:flex;flex-direction:column;gap:7px;font-size:14px;font-variant-numeric:tabular-nums}.event-time time:first-child{font-weight:600}.event-time time:last-child{font-size:12px;color:var(--muted)}.event-copy{min-width:0}.event-title{font-size:15px;font-weight:500;line-height:1.7;overflow-wrap:anywhere}.event-detail{display:flex;align-items:center;gap:10px;margin-top:6px;font-size:11px;color:var(--muted)}.status{border:1px dashed #b98637;color:#a06d23;border-radius:6px;padding:2px 5px;font-size:10px}.mask{display:inline-block;height:.82em;max-width:100%;background:repeating-linear-gradient(110deg,currentColor 0 2px,transparent 2px 4px);filter:blur(2.5px);opacity:.45;border-radius:3px;vertical-align:-.05em;margin:0 3px}.availability{margin-top:32px}.duration{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);white-space:nowrap}.duration select{color:var(--accent);background:transparent;border:0;font-size:13px;padding:0 1px}.slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.slot{border-radius:14px;background:var(--card);text-align:left;display:flex;justify-content:space-between;align-items:center;padding:16px;color:var(--accent);font-size:16px;font-weight:550;font-variant-numeric:tabular-nums;min-height:57px}.slot:hover{background:var(--soft)}.arrow{font-size:14px;font-weight:400}.empty,.load-state{font-size:13px;color:var(--muted);line-height:1.8;padding:14px 0}.load-state{margin-top:24px}.privacy{font-size:11px;color:var(--muted);margin-top:32px;line-height:1.7}.privacy span{margin-right:4px}.updated{font-size:10px;color:var(--muted);margin-top:8px}footer{max-width:1180px;margin:68px auto 0;padding:22px 40px max(24px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;gap:20px;font-size:9px;letter-spacing:1.5px;color:var(--muted)}
 dialog{margin:auto;border:0;background:var(--canvas);color:var(--ink);width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:36px 28px 26px;border-radius:26px;overflow:auto}dialog::backdrop{background:#10131588;backdrop-filter:blur(7px)}.close{position:absolute;right:13px;top:12px;width:44px;border-radius:50%;font-size:25px;color:var(--muted)}dialog .eyebrow{font-size:9px;color:var(--accent);margin:6px 30px 18px 0}dialog h2{font-size:23px;font-weight:600}.claim-date{font-size:26px;font-weight:550;margin-top:28px}.claim-time{font-size:14px;color:var(--muted);margin:9px 0 26px}.field{display:block;font-size:13px;font-weight:500;margin:18px 0}.optional{font-size:11px;color:var(--muted);font-weight:400;margin-left:7px}.field input{display:block;width:100%;margin-top:9px;border:1px solid var(--line);border-radius:13px;background:var(--card);padding:14px;color:var(--ink);font-size:16px}.primary{display:flex;justify-content:space-between;align-items:center;width:100%;border-radius:15px;background:var(--red);color:#fff9ed;padding:16px 18px;font-size:15px;font-weight:500;margin-top:28px;min-height:54px}.fine-print{font-size:11px;line-height:1.6;color:var(--muted);margin-top:13px}.form-error{color:var(--accent);font-size:13px;line-height:1.6}.success{padding:15px 0;text-align:center}.success>img{margin:10px auto 24px;border-radius:20px}.success p{font-size:14px;line-height:1.8;color:var(--muted);margin-top:15px}.success .primary{justify-content:center}.success .text-button{margin-top:14px}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);max-width:90%;background:var(--ink);color:var(--canvas);padding:14px 22px;border-radius:99px;font-size:13px;z-index:3;box-shadow:0 8px 30px #0002}
@media(prefers-color-scheme:dark){:root{--canvas:#121315;--card:#1d1e20;--ink:#f1f0ea;--muted:#a1a19d;--line:#303135;--accent:#ff806b;--soft:#2b2726}.status{color:#e7b16a;border-color:#8b693d}.brand img{border:1px solid #ffffff12}}
@media(max-width:760px){.masthead{padding:18px 22px}.layout{display:block;padding:0 22px;margin-top:0}.invitation{position:static}.artwork{height:252px;border-radius:24px}.door{object-position:50% 43%}.art-copy{padding:23px}.art-copy .eyebrow{font-size:8px;letter-spacing:1.7px}.artwork h1{font-size:46px;line-height:1.14;margin-top:20px;letter-spacing:4px}.welcome h2{font-size:14px;margin-bottom:4px}.welcome p{font-size:10px}.art-mark{font-size:29px;bottom:23px;right:23px}.invitation-note{display:none}.intro{padding:30px 0 18px}.intro .eyebrow{display:none}.intro h2{font-size:24px;letter-spacing:-.5px}.intro>p:last-child{font-size:12px;margin-top:9px}.calendar-heading{margin-bottom:7px}.date{flex-basis:54px;height:80px;border-radius:17px}.occupied{margin-top:26px}.slots{grid-template-columns:repeat(2,minmax(0,1fr))}.slot{font-size:17px;padding:17px}.section-heading h3{font-size:16px}.event{gap:12px}.event-time{flex-basis:70px}.event-title{font-size:15px}footer{margin-top:42px;padding:22px 22px max(24px,env(safe-area-inset-bottom));font-size:8px}dialog{padding:34px 24px 24px}}@media(min-width:761px) and (max-width:1000px){.layout{gap:32px;padding:0 28px}.artwork{height:535px}.art-copy{padding:25px}.slots{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.time-legend{font-size:11px;line-height:1.6;color:var(--muted);margin:-5px 0 17px}
.slots{align-items:stretch}.slot{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px;padding:14px;min-height:116px}
.slot-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:20px;font-weight:600}.slot-end{font-size:12px;font-weight:400}.slot-detail{margin-top:auto;font-size:11px;font-weight:400}
.occupied-slot:disabled{opacity:1;color:var(--muted);background:color-mix(in srgb,var(--ink) 4.5%,var(--canvas));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ink) 7%,transparent);cursor:default}
.occupied-slot .event-time{flex:none;gap:4px;font-weight:400}.occupied-slot .event-time time:first-child{font-size:20px;font-weight:600;display:flex;justify-content:space-between;align-items:center;gap:4px}.occupied-slot .event-time time:first-child::after{content:'◈';font-size:10px;font-weight:400}.occupied-slot .event-time time:last-child{font-size:12px}
.occupied-slot .event-copy{display:flex;flex-direction:column;flex:1;gap:8px}.occupied-slot .event-title{font-size:13px;line-height:1.55;font-weight:500}.occupied-slot .event-detail{flex-wrap:wrap;gap:3px 6px;font-size:10px;margin-top:auto;font-weight:400}
