@font-face{font-family:"CC Deep Thoughts";src:url("fonts/CCDeepThoughts-Regular.woff2") format("woff2"),url("fonts/CCDeepThoughts-Regular.woff") format("woff");font-weight:400;font-display:swap}
@font-face{font-family:"CC Deep Thoughts";src:url("fonts/CCDeepThoughts-Bold.woff2") format("woff2"),url("fonts/CCDeepThoughts-Bold.woff") format("woff");font-weight:700;font-display:swap}
@font-face{font-family:"CC Victory Speech";src:url("fonts/CCVictorySpeech-Regular.woff2") format("woff2"),url("fonts/CCVictorySpeech-Regular.woff") format("woff");font-weight:400;font-display:swap}
@font-face{font-family:"CC Victory Speech";src:url("fonts/CCVictorySpeech-Bold.woff2") format("woff2"),url("fonts/CCVictorySpeech-Bold.woff") format("woff");font-weight:700;font-display:swap}
@font-face{font-family:"CC Victory Speech Lower";src:url("fonts/CCVictorySpeechLower-Regular.woff2") format("woff2"),url("fonts/CCVictorySpeechLower-Regular.woff") format("woff");font-weight:400;font-display:swap}
@font-face{font-family:"CC Victory Speech Lower";src:url("fonts/CCVictorySpeechLower-Bold.woff2") format("woff2"),url("fonts/CCVictorySpeechLower-Bold.woff") format("woff");font-weight:700;font-display:swap}

:root{color-scheme:light;font-family:"CC Victory Speech Lower",system-ui,sans-serif;color:#111;background:#e9772e}
*{box-sizing:border-box}
html{min-width:320px;background:#e9772e}
body{margin:0;min-height:100vh}
button,a{font:inherit}
button:focus-visible,a:focus-visible{outline:4px solid #fff;outline-offset:3px}
button:disabled{cursor:default;opacity:.4}
[hidden]{display:none!important}
.page-shell{min-height:100vh;padding:clamp(20px,4vw,48px) clamp(14px,3vw,40px) 80px;background-color:#e9772e;background-image:radial-gradient(rgba(90,25,0,.18) 1.6px,transparent 1.8px);background-size:13px 13px}
.page-content{display:flex;max-width:1080px;margin:0 auto;flex-direction:column;gap:clamp(22px,3.5vw,36px)}
.site-header{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}
.site-header h1{margin:0 0 clamp(2px,1.1vw,10px);color:#ffd23f;font-family:"CC Deep Thoughts",system-ui,sans-serif;font-size:clamp(46px,8.5vw,106px);font-weight:700;line-height:1;paint-order:stroke fill;text-shadow:4px 4px 0 #111;transform:rotate(-2deg);-webkit-text-stroke:5px #111}
.site-header>p{max-width:48ch;margin:0;font-size:clamp(17px,2.1vw,22px);line-height:1.35;text-wrap:balance}
.countdown-panel{display:flex;align-items:stretch;max-width:100%;margin-top:4px;border:3px solid #111;background:#fff6dc;box-shadow:4px 4px 0 #111}
.countdown-copy{display:flex;padding:8px 18px;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;text-align:left}
#countdown-label{font-size:14px;line-height:1.2;white-space:nowrap}
#countdown-time{display:block;width:4.6em;color:#e9772e;font-family:"CC Victory Speech",system-ui,sans-serif;font-size:clamp(26px,3.4vw,34px);font-variant-numeric:tabular-nums;letter-spacing:.04em;line-height:1;paint-order:stroke fill;white-space:nowrap;-webkit-text-stroke:3px #111}
.sound-toggle{display:flex;min-width:64px;min-height:44px;padding:8px 16px;flex:none;align-items:center;justify-content:center;border:0;border-left:3px solid #111;background:#ffd23f;color:inherit;cursor:pointer}
.sound-toggle:hover{background:#ffe27a}.sound-toggle:active{background:#f5c400}.sound-toggle img{width:44px;height:auto}

.calendar{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(104px,calc((100% - 20px)/3)),1fr));grid-auto-flow:dense;gap:clamp(10px,1.4vw,16px)}
.calendar-cell{position:relative;min-width:0;aspect-ratio:1;perspective:3200px;perspective-origin:0 50%;container-type:inline-size}
.calendar-cell.large{grid-column:span 2;grid-row:span 2;perspective:6400px}
.calendar-cell.today{z-index:4}
.calendar-cell.message-visible{z-index:6}
.strip-preview{position:absolute;inset:0;overflow:hidden;border:4px solid #111;border-radius:6px;background:#2a1a10;box-shadow:inset 0 0 18px rgba(0,0,0,.6);container-type:size}
.strip-preview picture{position:absolute;inset:0;display:block}
.strip-preview picture>img{position:absolute;inset:-12%;display:block;width:124%;height:124%;object-fit:cover;filter:blur(6px) saturate(1.1)}
.strip-title-layer{position:absolute;inset:0;background:rgba(17,17,17,.12)}
.strip-title{position:absolute;top:50%;left:50%;width:max-content;max-width:82cqw;padding:max(3px,2.5cqw) max(5px,4cqw);border:max(2px,1.6cqw) solid #111;background:#ffd23f;box-shadow:max(2px,2cqw) max(2px,2cqw) 0 #111;font-size:max(11px,8.5cqw);hyphens:auto;line-height:1.1;text-align:center;text-wrap:balance;transform:translate(-50%,-50%) rotate(-2deg)}
.view-strip{position:absolute;inset:0;display:flex;padding:0 8px 9%;align-items:flex-end;justify-content:center;border:0;background:transparent;cursor:zoom-in}
.view-strip span{position:relative;z-index:2;padding:max(5px,3.5cqw) max(8px,5cqw);border:max(2px,1.6cqw) solid #111;border-radius:999px;background:#fff;box-shadow:max(2px,2cqw) max(2px,2cqw) 0 #111;font-size:max(11px,8.5cqw);line-height:1;white-space:nowrap;transform:rotate(2deg)}
.view-strip:hover span{background:#ffd23f}.view-strip:active span{transform:translate(2px,2px) rotate(2deg)}
.door{position:absolute;inset:0;padding:0;border:0;background:transparent;cursor:pointer;transform:rotateY(0);transform-origin:left center;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.55,.05,.25,1)}
.calendar-cell.open .door{pointer-events:none;transform:rotateY(-78deg)}
.door-face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2cqh;border:4px solid #111;border-radius:6px;backface-visibility:hidden;background-color:var(--door-color);background-image:radial-gradient(rgba(255,255,255,.28) 1.4px,transparent 1.7px);background-size:10px 10px;box-shadow:5px 5px 0 #111;container-type:size;transition:filter .9s}
.calendar-cell.open .door-front{filter:brightness(.8)}
.door-back{background:var(--door-color);background-image:none;box-shadow:none;filter:brightness(.72);transform:rotateY(180deg)}
.door-number{color:#fff;font-family:"CC Victory Speech",system-ui,sans-serif;font-size:46cqw;line-height:.9;paint-order:stroke fill;text-shadow:max(3px,2.4cqw) max(3px,2.4cqw) 0 #111;transform:rotate(var(--number-tilt));-webkit-text-stroke:max(2px,1.6cqw) #111}
.door-date{max-width:94cqw;overflow:hidden;padding:0 .45em;border:2px solid #111;border-radius:3px;background:#fff;font-size:max(11px,9cqw);white-space:nowrap}
.door-knob{position:absolute;top:50%;right:7cqw;width:max(8px,7cqw);height:max(8px,7cqw);margin-top:-3.5cqw;border:2px solid #111;border-radius:50%;background:#ffd23f}
.today-badge{position:absolute;top:-14px;right:-12px;z-index:4;padding:4px 12px 7px;border:4px solid #111;background:#ffd23f;box-shadow:4px 4px 0 #111;font-family:"CC Deep Thoughts",system-ui,sans-serif;font-size:max(18px,14cqw);font-weight:700;letter-spacing:.04em;line-height:1;pointer-events:none;transform:rotate(6deg)}
.locked-message{position:absolute;bottom:calc(100% + 10px);left:50%;z-index:5;padding:8px 14px;border:3px solid #111;border-radius:18px;background:#fff;box-shadow:3px 3px 0 #111;font-size:15px;pointer-events:none;transform:translateX(-50%);white-space:nowrap}
.locked-message.align-left{right:auto;left:0;transform:none}.locked-message.align-right{right:0;left:auto;transform:none}.locked-message.below{top:calc(100% + 10px);bottom:auto}
.door.shake{animation:shake 420ms ease}
@keyframes shake{0%,100%{transform:rotate(0)}25%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}75%{transform:rotate(-2deg)}}

.preview-bar{position:fixed;bottom:max(16px,env(safe-area-inset-bottom));left:50%;z-index:40;display:flex;max-width:calc(100vw - 24px);padding:8px 8px 8px 18px;align-items:center;justify-content:center;gap:12px;border-radius:999px;background:#111;box-shadow:0 6px 20px rgba(0,0,0,.35);color:#ffd23f;flex-wrap:wrap;font-size:14px;transform:translateX(-50%)}
.preview-bar button{min-height:44px;padding:6px 14px;border:0;border-radius:999px;background:#fff;color:#111;cursor:pointer}.preview-bar #close-all{background:#ffd23f}
.lightbox{position:fixed;inset:0;z-index:50;display:flex;padding:12px;align-items:center;justify-content:center;overflow:auto;overscroll-behavior:contain;background-color:rgba(20,10,5,.88);background-image:radial-gradient(rgba(255,210,63,.12) 1.6px,transparent 1.8px);background-size:13px 13px}
.lightbox-dialog{display:grid;width:min(900px,calc(100vw - 34px),calc(100vh - 168px),calc(100dvh - 168px));margin:auto;grid-template-areas:"header" "picture" "footer";grid-template-columns:minmax(0,1fr);gap:12px}
.lightbox-header{display:flex;min-width:0;align-items:center;justify-content:flex-end;gap:10px;grid-area:header;flex-wrap:wrap}
.lightbox-header h2{min-width:0;margin:0 auto 0 0;padding:4px 14px;flex:1 1 auto;border:3px solid #111;background:#ffd23f;box-shadow:4px 4px 0 #111;font-family:"CC Victory Speech",system-ui,sans-serif;font-size:clamp(22px,3vw,32px);font-weight:700;hyphens:auto;letter-spacing:.04em;line-height:1.15;text-wrap:balance}
.lightbox button,.lightbox a{display:inline-flex;min-height:44px;padding:8px 14px;align-items:center;justify-content:center;border:3px solid #111;background:#fff;box-shadow:3px 3px 0 #111;color:#111;cursor:pointer;font-size:16px;text-decoration:none;white-space:nowrap}
.lightbox .round-button{width:44px;padding:0;flex:none;border-radius:50%;font-size:22px;line-height:1}
.lightbox-picture{width:100%;aspect-ratio:1;overflow:hidden;border:4px solid #111;background:#fff;box-shadow:6px 6px 0 #111;grid-area:picture}
.lightbox-picture picture,.lightbox-picture img{display:block;width:100%;height:100%}
.lightbox-picture img{object-fit:contain}
.lightbox-footer{display:flex;align-self:end;align-items:center;justify-content:space-between;gap:10px;grid-area:footer;flex-wrap:wrap}
.lightbox-footer #download-strip{background:#ffd23f}.lightbox-footer #next-strip{margin-left:auto}
body.modal-open{overflow:hidden}

@media (orientation:landscape) and (max-height:639px){.lightbox-dialog{width:auto;grid-template-areas:"picture header" "picture footer";grid-template-columns:min(calc(100vh - 34px),calc(100vw - 256px)) 210px;grid-template-rows:auto minmax(0,1fr)}.lightbox-header h2{font-size:21px}.lightbox-picture{width:min(calc(100vh - 34px),calc(100vw - 256px))}}
@media (max-width:519px){.today-badge{top:-8px;right:-5px;padding:3px 8px 5px;border-width:3px;box-shadow:3px 3px 0 #111;font-size:clamp(16px,9cqw,22px);letter-spacing:.02em;transform:rotate(4deg)}.lightbox-footer{padding-bottom:4px}.lightbox-header h2{flex-basis:100%}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
