/* Gemeinsame Basis aller Konzepte: Reset, Barrierefreiheit, Utility.
   Jedes Konzept überschreibt nur Tokens (tokens/<id>.css) und baut eigenes Layout. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body,h1,h2,h3,h4,p,figure,ul,ol,blockquote{margin:0}
ul,ol{padding:0;list-style:none}
img{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
:focus-visible{outline:3px solid var(--focus,currentColor);outline-offset:3px}
.skip{position:absolute;left:-999px;top:8px;z-index:100;background:var(--bg,#fff);color:var(--fg,#000);padding:12px 16px}
.skip:focus{left:8px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.btn{display:inline-flex;align-items:center;min-height:44px;padding:0 24px;text-decoration:none;cursor:pointer;border:1px solid currentColor;background:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Toast (toast.js) – Farben kommen aus den Tokens des Konzepts */
.toast{position:fixed;right:16px;bottom:16px;z-index:50;max-width:min(420px,calc(100vw - 32px));display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:14px 14px 14px 18px;background:var(--toast-bg,var(--fg));color:var(--toast-fg,var(--bg));border-radius:var(--radius,0);box-shadow:0 12px 40px -12px #0008;opacity:0;transform:translateY(12px);transition:opacity .3s,transform .3s}
.toast.in{opacity:1;transform:none}
.toast[hidden]{display:none}
.toast-body{display:grid;gap:2px;font-size:15px;line-height:1.35}
.toast-t{font-size:16px}
.toast-d{opacity:.85}
.toast-cta{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;background:var(--toast-cta-bg,var(--accent));color:var(--toast-cta-fg,var(--on-accent));text-decoration:none;font-weight:600;white-space:nowrap;border-radius:var(--radius,0)}
.toast-cta:hover{filter:brightness(.92)}
.toast-x{min-width:44px;min-height:44px;background:none;border:0;color:inherit;font-size:24px;cursor:pointer;opacity:.8}
.toast-x:hover{opacity:1}
.toast :focus-visible{outline-color:var(--toast-fg,var(--bg))}
@media(max-width:560px){.toast{left:12px;right:12px;bottom:12px;max-width:none;grid-template-columns:1fr auto}.toast-cta{grid-column:1;grid-row:2}.toast-x{grid-column:2;grid-row:1}}

/* Lightbox (lightbox.js) */
dialog.lb{border:0;padding:0;max-width:100vw;max-height:100vh;width:100vw;height:100vh;background:#0c0c0cf2;color:#fff;overflow:hidden}
dialog.lb::backdrop{background:#000c}
dialog.lb figure{height:100%;display:grid;grid-template-rows:1fr auto;gap:12px;padding:56px 72px 20px}
dialog.lb img{width:100%;height:100%;object-fit:contain;min-height:0}
dialog.lb figcaption{display:flex;gap:16px;align-items:baseline;flex-wrap:wrap;font-size:16px}
dialog.lb button{position:absolute;min-width:48px;min-height:48px;background:#0008;color:#fff;border:1px solid #fff5;font-size:28px;cursor:pointer;border-radius:var(--radius,0)}
.lb-x{top:12px;right:12px}.lb-p{left:12px;top:50%}.lb-n{right:12px;top:50%}
dialog.lb button:hover{background:#fff;color:#000}
@media(max-width:700px){dialog.lb figure{padding:56px 12px 76px}.lb-p,.lb-n{top:auto;bottom:12px}}

/* Bühnen-Viewer (stage.js) – Farben aus den Tokens des Konzepts */
dialog.sv{border:0;padding:0;width:100vw;max-width:100vw;height:100vh;max-height:100vh;background:var(--bg);color:var(--fg);overflow:hidden;display:none;grid-template-rows:auto minmax(0,1fr) auto auto}
dialog.sv[open]{display:grid}
dialog.sv::backdrop{background:#000d}
.sv-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:14px clamp(16px,3vw,40px) 10px}
.sv-t{font:inherit;font-family:var(--f-head);font-weight:500;font-size:clamp(24px,3.4vw,44px);line-height:1.05;letter-spacing:var(--sv-ls,0);text-transform:var(--sv-tt,none)}
.sv-m{color:var(--muted);font-size:15px;margin-top:4px}
.sv-top-r{display:flex;align-items:center;gap:12px}
.sv-c{white-space:nowrap;font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums}
.sv-x{min-width:48px;min-height:48px;border:1px solid var(--line);background:var(--bg);color:var(--fg);font-size:28px;cursor:pointer;border-radius:var(--radius)}
.sv-x:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.sv-fig{position:relative;margin:0 clamp(16px,3vw,40px);background:var(--surface);border-radius:calc(var(--radius)*2);overflow:hidden;min-height:0}
.sv-fig img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .3s}
.sv-fig img.fade{opacity:0}
.sv-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:60px;border:0;background:var(--bg);color:var(--fg);font-size:28px;cursor:pointer;opacity:.92}
.sv-nav:hover{background:var(--accent);color:var(--on-accent)}
.sv-p{left:0;border-radius:0 var(--radius) var(--radius) 0}.sv-n{right:0;border-radius:var(--radius) 0 0 var(--radius)}
.sv-tools{position:absolute;right:12px;top:12px}
.sv-tools button{min-height:44px;padding:0 14px;border:0;border-radius:var(--radius);background:var(--bg);color:var(--fg);font:600 14px var(--f-body);cursor:pointer}
.sv-tools button:hover{background:var(--accent);color:var(--on-accent)}
.sv-film{display:flex;gap:8px;overflow-x:auto;padding:10px clamp(16px,3vw,40px) 12px;scrollbar-width:thin}
.sv-film button{flex:none;width:96px;padding:0;border:0;background:none;cursor:pointer;border-radius:var(--radius);opacity:.65}
.sv-film button:hover{opacity:1}
.sv-film button[aria-current=true]{opacity:1;box-shadow:0 4px 0 var(--accent)}
.sv-film img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius);display:block}
.sv-pn{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center;padding:6px clamp(16px,3vw,40px) 14px;border-top:1px solid var(--line)}
.sv-pn button{background:none;border:0;color:var(--fg);font:500 17px var(--f-head);cursor:pointer;text-align:left;min-height:48px;padding:0}
.sv-pn button:last-child{text-align:right}
.sv-pn button:hover{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:3px;text-underline-offset:5px}
.sv-pn small{display:block;font:400 12px var(--f-body);color:var(--muted)}
.sv-cta{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.sv-cta a{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border:1px solid var(--fg);border-radius:var(--radius);text-decoration:none;font-weight:600;font-size:15px}
.sv-cta a:first-child{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
@media(max-width:700px){.sv-pn{grid-template-columns:1fr 1fr}.sv-cta{grid-column:1/-1;order:3}.sv-nav{width:40px;height:52px}}
