:root{--gold:#e8b53a;--cream:#fff4d6}
*{box-sizing:border-box}
body{margin:0}
.acp-js{font-family:Georgia,"Times New Roman",serif;color:#fff;background:radial-gradient(ellipse at 50% 25%,#b00000 0,#8a0000 55%,#5c0000 100%)}
.acp-wrap{position:relative;min-height:100vh;max-width:760px;margin:0 auto;padding:18px 14px 14px;text-align:center}
.acp-js h1{font-size:clamp(1.1rem,3.6vw,1.7rem);margin:.1em 0 .8em;text-shadow:0 2px 6px rgba(0,0,0,.45)}
.acp-js h1::after{content:"✦";display:block;color:var(--gold);font-size:.7em;margin-top:.15em}
.acp-frame{width:min(100%,640px);margin:0 auto;padding:10px;border-radius:3px;background:linear-gradient(145deg,#ff3a5e,#8d0a22 45%,#ff2450);box-shadow:0 0 0 1px rgba(255,255,255,.85),0 12px 30px rgba(0,0,0,.55)}
.acp-scene{position:relative;aspect-ratio:628/470;overflow:hidden;background:#150a05 center/cover no-repeat;box-shadow:inset 0 0 40px rgba(0,0,0,.7)}
.acp-art{position:absolute;inset:0;width:100%;height:100%}
.flame{transform-box:fill-box;transform-origin:50% 100%;animation:fl 2.4s ease-in-out infinite}
.glow{animation:gl 2.4s ease-in-out infinite}
.bk{animation:bk 9s ease-in-out infinite}
@keyframes fl{0%,100%{transform:scale(1,1) rotate(0)}30%{transform:scale(.93,1.08) rotate(-1.6deg)}60%{transform:scale(1.05,.96) rotate(1.3deg)}}
@keyframes gl{0%,100%{opacity:.85}40%{opacity:.6}70%{opacity:1}}
@keyframes bk{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
/* doors */
.acp-door{position:absolute;width:8.4%;aspect-ratio:1;margin:-4.2% 0 0 -4.2%;padding:0;border:1.5px solid rgba(255,226,160,.6);border-radius:3px;background:linear-gradient(135deg,rgba(255,255,255,.14),rgba(255,255,255,.02));color:rgba(255,244,214,.95);font:700 clamp(.6rem,2.2vw,1rem) Georgia,serif;cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s;-webkit-tap-highlight-color:transparent;perspective:300px}
.acp-door span{position:relative;z-index:2;text-shadow:0 1px 3px #000;transition:opacity .3s}
.acp-door::before{content:"✦";position:absolute;inset:0;display:grid;place-items:center;color:#fff0b8;font-size:1.3em;opacity:0;transition:opacity .4s;background:radial-gradient(circle,rgba(255,220,120,.9),rgba(255,160,40,.25) 70%);text-shadow:0 0 10px #ffd35a}
.acp-door::after{content:"";position:absolute;inset:0;z-index:1;border-radius:2px;background:linear-gradient(135deg,rgba(255,255,255,.24),rgba(255,255,255,.06));transform-origin:left center;transition:transform .7s cubic-bezier(.3,.7,.2,1)}
.acp-door:hover,.acp-door:focus-visible{transform:scale(1.14);border-color:#ffe08a;box-shadow:0 0 16px 3px rgba(255,214,110,.8);z-index:3;outline:none}
.acp-door[data-open="0"]{border-color:rgba(255,255,255,.3);color:rgba(255,255,255,.62)}
.acp-door[data-open="0"]:hover{box-shadow:0 0 12px 2px rgba(255,90,90,.6);border-color:#ff9c9c}
.acp-door.is-seen::after{transform:rotateY(-60deg)}.acp-door.is-seen::before{opacity:.5}
.acp-door.is-open::after{transform:rotateY(-108deg)}.acp-door.is-open::before{opacity:1}.acp-door.is-open span{opacity:0}
.shake{animation:sh .4s}@keyframes sh{25%{margin-left:calc(-4.2% - 4px)}75%{margin-left:calc(-4.2% + 4px)}}
/* info */
.acp-meta{display:flex;justify-content:center;gap:2.2em;flex-wrap:wrap;margin:18px 0 4px;font-size:.95rem}
.acp-msgline{margin:.9em 0 .3em;min-height:1.5em}
.acp-js audio{display:block;width:min(100%,380px);height:42px;margin:.7em auto 0}
.acp-foot{margin-top:10px;font-size:.88rem;line-height:1.5}.acp-foot a{color:#fff}
/* content panel */
.acp-panel{position:absolute;inset:0;z-index:5;overflow:auto;padding:16px;text-align:left;background:radial-gradient(ellipse at 50% 0,#b00000,#5c0000);animation:pin .35s}
.acp-panel[hidden]{display:none}
@keyframes pin{from{opacity:0;transform:translateY(12px)}}
.acp-back{background:none;border:1px solid rgba(255,255,255,.6);color:#fff;border-radius:999px;padding:.35em 1em;margin-bottom:12px;font:inherit;cursor:pointer}
.acp-back:hover,.acp-back:focus-visible{background:#fff;color:#900}
.acp-card{background:var(--cream);color:#2b1a12;border:2px solid var(--gold);border-radius:6px;padding:16px 20px}
.acp-card h2{color:#990000;margin:0 0 .3em}.acp-card h3{margin:.2em 0 .6em}.acp-card h4{color:#990000;margin:1em 0 .2em}
.acp-card a{color:#7a0000}.acp-card audio{width:100%!important;margin:.4em 0}
blockquote{margin:.4em 0;padding-left:12px;border-left:4px solid var(--gold);font-style:italic}
@media(prefers-reduced-motion:reduce){.flame,.glow,.bk,.shake,.acp-panel{animation:none}.acp-door,.acp-door::after{transition:none}}
/* accessible + plain pages */
.acp-plain{margin:0;font-family:Georgia,serif;font-size:var(--acp-fs,24px);line-height:1.5;background:#fff;color:#000}
.acp-plain .acp-wrap{min-height:0;text-align:left}
.acp-plain h1{color:#000;font-size:1.4em}.acp-plain a{color:#0000cc}
.acp-plain .acp-fs{font-size:.8em}.acp-plain audio{width:100%}
.acp-msg{color:#b00;font-weight:700}
.acp-table{border-collapse:separate;border-spacing:8px;margin:0 auto}
.acp-table td{border:2px solid #000;text-align:center;padding:0}
.acp-table td a{display:block;padding:.4em .7em;font-weight:700;text-decoration:none}
.acp-table td a:hover,.acp-table td a:focus{background:#000;color:#fff}
/* v3: boxes only, number on hover */
.acp-scene{background-position:50% 40%}
.acp-door{border-color:rgba(255,255,255,.6);background:rgba(0,0,0,.14);backdrop-filter:blur(1.5px)}
.acp-door span{opacity:0;transform:scale(.6);transition:opacity .2s,transform .2s;font-size:1.25em}
.acp-door:hover span,.acp-door:focus-visible span{opacity:1;transform:scale(1)}
.acp-door.is-open span{opacity:0}
.acp-door[data-open="0"]{color:#fff;border-color:rgba(255,255,255,.6)}
/* "Zu früh dran" page */
.acp-early{max-width:500px;margin:14px auto 0;background:#fff;color:#000;border:2px solid #0a7a0a;padding:12px 20px 16px;text-align:center;font-family:Verdana,Geneva,sans-serif;line-height:1.35}
.acp-early h2{font-size:clamp(1.7rem,6vw,2.3rem);margin:.1em 0 .5em;color:#000}
.acp-early p{margin:.4em 0}
.acp-early audio{width:min(100%,380px)!important;margin:10px auto 14px;display:block}
.acp-early ul{list-style:none;margin:10px 0 0;padding:0}
.acp-early a{color:#000;text-decoration:underline}.acp-early a:hover{color:#990000}
.acp-holly{display:block;margin:22px auto 8px}
/* v4: santa head nod */
.acp-santa{position:relative;display:block;height:130px;aspect-ratio:65/103;margin:14px auto}
.acp-santa img{position:absolute;inset:0;width:100%;height:100%}
.acp-santa .s-head{transform-origin:50% 46%;animation:nod 2.6s ease-in-out infinite}
@keyframes nod{0%,100%{transform:rotate(0)}20%{transform:rotate(-7deg)}50%{transform:rotate(6deg) translateY(1px)}75%{transform:rotate(-3deg)}}
@media(prefers-reduced-motion:reduce){.acp-santa .s-head{animation:none}}
/* ===== Accessible calendar (v5): original look, improved ===== */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.acp-a{margin:0;min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:.5em .5em 1.2em;font-family:Verdana,Geneva,sans-serif;font-size:var(--acp-fs,24px);line-height:1.45;color:#fff;background:radial-gradient(ellipse at 50% 18%,#b00000 0,#990000 50%,#6a0000 100%)}
.acp-a *{box-sizing:border-box}
.acp-a-top{width:100%;text-align:center;margin:.1em 0 .9em}
.acp-a-fs{display:flex;gap:.45em;justify-content:center;align-items:center;flex-wrap:wrap;margin:0;font-weight:700}
.acp-a-fs span{margin-right:.2em}
.acp-a-fs a{border:2px solid currentColor;border-radius:999px;padding:.05em .75em;color:inherit;text-decoration:none;font-size:.75em}
.acp-a-top .acp-a-fs{color:#fff}
.acp-a-top .acp-a-fs a:hover,.acp-a-top .acp-a-fs a:focus-visible,.acp-a-top .acp-a-fs a[aria-current]{background:#fff;color:#900}
.acp-a-box .acp-a-fs{color:#800000}
.acp-a-box .acp-a-fs a:hover,.acp-a-box .acp-a-fs a:focus-visible,.acp-a-box .acp-a-fs a[aria-current]{background:#800000;color:#fff}
.acp-a a:focus-visible{outline:.14em solid #e8b53a;outline-offset:.1em}
.acp-a-frame{width:min(100%,26em);padding:.3em;border-radius:3px;background:linear-gradient(145deg,#ff3a5e,#8d0a22 45%,#ff2450);box-shadow:0 0 0 1px rgba(255,255,255,.85),0 12px 30px rgba(0,0,0,.5)}
.acp-a-head{background:#f0f0ff;color:#800000;text-align:center;padding:.4em .5em .5em;border-radius:2px}
.acp-a-head h1{margin:0 0 .1em;font:700 1.45em/1.15 Georgia,"Times New Roman",serif;color:#800000}
.acp-a-head p{margin:0;font:1em Georgia,serif}.acp-a-head b{font:700 1.05em Verdana,Arial,sans-serif}
.acp-a-gridwrap{margin-top:.3em;padding:.25em;border:2px solid #e8173f;background:#990000}
.acp-a-table{width:100%;table-layout:fixed;border-collapse:collapse;background:#fff}
.acp-a-table td{padding:0;border:1px solid #800000}
.acp-a-table a{position:relative;display:block;padding:.5em 0;text-align:center;color:#800000;font:700 1.5em/1.2 Arial,Helvetica,sans-serif;text-decoration:none;transition:background .15s,color .15s}
.acp-a-table a:hover,.acp-a-table a:focus-visible{background:#800000;color:#fff}
.acp-a-table a:focus-visible{outline:.1em solid #e8b53a;outline-offset:-.12em}
.acp-a-table a.is-locked{background:repeating-linear-gradient(135deg,#fff 0 .3em,#f5e6e6 .3em .6em)}
.acp-a-table a.is-locked::after{content:"";position:absolute;right:.18em;top:.14em;width:.42em;height:.42em;background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23800000' d='M6 10V8a6 6 0 1112 0v2h1v12H5V10zm2 0h8V8a4 4 0 10-8 0z'/%3E%3C/svg%3E")}
.acp-a-table a.is-locked:hover::after,.acp-a-table a.is-locked:focus-visible::after{filter:invert(1)}
.acp-a-info{margin:.7em .2em .3em;text-align:center;font-size:.6em;color:#fff}
.acp-a-box{width:min(100%,21em);margin:0 auto;padding:.7em 1em 1em;background:#fff;color:#000;text-align:center;border-radius:3px;box-shadow:0 12px 30px rgba(0,0,0,.5)}
.acp-a-box h1{margin:.5em 0 .5em;font:700 1.7em/1.15 Verdana,Geneva,sans-serif;color:#000}
.acp-a-box p{margin:.5em 0}
.acp-a-box a{color:#000}.acp-a-box a:hover{color:#990000}
.acp-a-box h3{margin:.8em 0 .3em;font-size:1.1em}.acp-a-box h4{margin:1em 0 .2em;color:#800000;font-size:1em}
.acp-a-box blockquote{border:0;padding:0;margin:.3em 0}
.acp-a-box audio{width:100%;margin:.5em 0 0}
.acp-a-dl{font-size:.65em}
.acp-a-links{list-style:none;margin:.4em 0 0;padding:0}
.acp-a-back{margin-top:1em!important}
.acp-a-back a{display:inline-block;border:2px solid #800000;border-radius:999px;padding:.1em .9em;font-size:.8em;font-weight:700;text-decoration:none;color:#800000}
.acp-a-back a:hover,.acp-a-back a:focus-visible{background:#800000;color:#fff}
.acp-a-back a+a{margin-left:.4em}
.acp-a-home{margin:.5em 0 0;font-weight:700}
.acp-a-home a{display:inline-block;border:2px solid #fff;border-radius:999px;padding:.05em .75em;color:#fff;text-decoration:none;font-size:.75em}
.acp-a-home a:hover,.acp-a-home a:focus-visible{background:#fff;color:#900}
.acp-home{margin:12px 0 0}
.acp-home a{display:inline-block;border:2px solid #fff;border-radius:999px;padding:3px 14px;color:#fff;text-decoration:none;font-weight:700;font-size:.9rem}
.acp-home a:hover,.acp-home a:focus-visible{background:#fff;color:#900}
@media(prefers-reduced-motion:reduce){.acp-a-table a{transition:none}}
/* display options of the accessible calendar */
.acp-a-fs .acp-a-br{flex-basis:100%;height:0}
.acp-a-fs .is-off{border:2px dashed currentColor;border-radius:999px;padding:.05em .75em;font-size:.75em;opacity:.55}
.acp-a #acp-main:focus{outline:none}
.acp-skip{position:absolute;left:.5em;top:-10em;z-index:10;padding:.3em .8em;background:#fff;color:#800000;font-weight:700;border-radius:4px}
.acp-skip:focus{top:.5em}
.acp-a a:focus-visible{outline:.18em solid #e8b53a;outline-offset:.12em}
/* high contrast: black / white / yellow */
.acp-hc{background:#000;color:#fff}
.acp-hc .acp-a-top .acp-a-fs,.acp-hc .acp-a-box .acp-a-fs{color:#ff0}
.acp-hc .acp-a-fs a:hover,.acp-hc .acp-a-fs a:focus-visible,.acp-hc .acp-a-fs a[aria-current]{background:#ff0!important;color:#000!important}
.acp-hc .acp-a-frame{background:#fff;box-shadow:none}
.acp-hc .acp-a-head{background:#000;color:#fff;border:2px solid #fff}.acp-hc .acp-a-head h1{color:#ff0}
.acp-hc .acp-a-gridwrap{background:#000;border-color:#fff}
.acp-hc .acp-a-table{background:#000}.acp-hc .acp-a-table td{border-color:#fff}
.acp-hc .acp-a-table a{color:#ff0}
.acp-hc .acp-a-table a.is-locked{background:#000;color:#fff}
.acp-hc .acp-a-table a.is-locked::after{filter:brightness(0) invert(1)}
.acp-hc .acp-a-table a:hover,.acp-hc .acp-a-table a:focus-visible{background:#ff0;color:#000}
.acp-hc .acp-a-table a.is-locked:hover::after,.acp-hc .acp-a-table a.is-locked:focus-visible::after{filter:brightness(0)}
.acp-hc .acp-a-info{color:#fff}
.acp-hc .acp-a-box{background:#000;color:#fff;border:2px solid #fff;box-shadow:none}
.acp-hc .acp-a-box h1,.acp-hc .acp-a-box h3{color:#fff}.acp-hc .acp-a-box h4{color:#ff0}
.acp-hc .acp-a-box a{color:#ff0}.acp-hc .acp-a-box a:hover{color:#fff}
.acp-hc .acp-a-back a{border-color:#ff0;color:#ff0}.acp-hc .acp-a-back a:hover,.acp-hc .acp-a-back a:focus-visible{background:#ff0;color:#000}
.acp-hc .acp-a-home a{border-color:#ff0;color:#ff0}.acp-hc .acp-a-home a:hover,.acp-hc .acp-a-home a:focus-visible{background:#ff0;color:#000}
.acp-hc a:focus-visible{outline-color:#0ff}
.acp-hc .acp-skip{background:#ff0;color:#000}
/* wide spacing (WCAG 1.4.12 text spacing) */
.acp-ls{line-height:1.9;letter-spacing:.08em;word-spacing:.16em}
.acp-ls .acp-a-box p,.acp-ls .acp-a-box blockquote{margin:1em 0}
.acp-ls .acp-a-links li{margin:.35em 0}
/* no animation */
.acp-rm *,.acp-rm *::before,.acp-rm *::after{animation:none!important;transition:none!important}
/* success view (matches the "Zu früh dran" page) */
.acp-ok h2{display:flex;align-items:center;justify-content:center;gap:.3em;flex-wrap:wrap}
.acp-ok h2 svg{width:.9em;height:.9em;flex:none}
.acp-ok-sub{color:#14532d;font-weight:700}
.acp-ok h3{font-size:1.15rem;margin:1em 0 .3em}.acp-ok h4{font-size:1rem;margin:1.1em 0 .2em;color:#800000}
.acp-ok blockquote{border:0;padding:0;margin:.3em 0}
.acp-ok .acp-tick{stroke-dasharray:24;stroke-dashoffset:24;animation:tick .5s .2s ease-out forwards}
@keyframes tick{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.acp-ok .acp-tick{animation:none;stroke-dashoffset:0}}
.acp-pic{margin:.4em 0}.acp-pic img{max-width:min(100%,185px);height:auto}
.acp-door-links{list-style:none;margin:1.2em 0 0;padding:0;font-size:.9rem;line-height:1.6}
.acp-ok audio{width:min(100%,380px)!important;margin:.3em auto;display:block}
