/* ---------------------------------------------------------------
   Schriften liegen im Projekt, nicht bei Google.
   Zwei Gründe: ohne Netz fiele die Handschrift sonst auf Comic Sans
   zurück, und ein Einbinden über fonts.gstatic.com überträgt die
   IP-Adresse jedes Besuchers an Google (LG München I, 3 O 17493/20).
   Beide Schriften stehen unter der SIL Open Font License 1.1.
   --------------------------------------------------------------- */
@font-face{
  font-family:'Just Another Hand';font-style:normal;font-weight:400;font-display:swap;
  src:url('assets/fonts/just-another-hand-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Just Another Hand';font-style:normal;font-weight:400;font-display:swap;
  src:url('assets/fonts/just-another-hand-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Courier Prime';font-style:normal;font-weight:400;font-display:swap;
  src:url('assets/fonts/courier-prime-400-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Courier Prime';font-style:normal;font-weight:400;font-display:swap;
  src:url('assets/fonts/courier-prime-400-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Courier Prime';font-style:normal;font-weight:700;font-display:swap;
  src:url('assets/fonts/courier-prime-700-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Courier Prime';font-style:normal;font-weight:700;font-display:swap;
  src:url('assets/fonts/courier-prime-700-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* =========================================================
   Nele Wolff — Mixtape
   Welt: Kartoninlay, Filzstift, Dymo-Prägeband, Klarsichthülle
   ========================================================= */

:root{
  --board:#e9e2d2;
  --board-dark:#ded5c1;
  --ink:#14110e;
  --marker:#cc3b28;        /* nur Grafik: Kringel, Fortschritt, Kreise */
  --marker-ink:#b32e20;    /* jede Schrift und jede Etikettenflaeche */
  --quiet:#5d564a;
  --rule:rgba(20,17,14,.28);
  --rule-soft:rgba(20,17,14,.18);
  --player-h:88px;
}

*{box-sizing:border-box;margin:0;padding:0}
img,video{max-width:100%}

html{
  scrollbar-color:var(--ink) var(--board-dark);
  scroll-behavior:smooth;
}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }

body{
  background:var(--board);
  color:var(--ink);
  font-family:'Courier Prime','Courier New',ui-monospace,monospace;
  font-size:15px;
  line-height:1.6;
  padding-bottom:var(--player-h);
  /* Kartonkorn: echtes Rauschen statt getackerter Punktraster */
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23g)' opacity='0.09'/%3E%3C/svg%3E");
  background-size:180px 180px;
  -webkit-text-size-adjust:100%;
}

/* Browser-Oberflächen mitgestalten */
::selection{background:var(--marker-ink);color:#f6f1e6}
:focus-visible{
  outline:2.5px solid var(--marker-ink);
  outline-offset:3px;
  border-radius:2px;
}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:var(--board-dark)}
::-webkit-scrollbar-thumb{background:var(--ink);border:3px solid var(--board-dark);border-radius:6px}

a{color:var(--ink);text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--marker-ink)}
a:hover{color:var(--marker-ink)}

/* nur fuer Screenreader */
.sr-only{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;
}

.skip{
  position:absolute;left:-9999px;top:0;z-index:50;
  background:var(--ink);color:#f4efe3;padding:12px 18px;
}
.skip:focus{left:10px;top:10px}
/* der Sprunglink liegt auf Tinte: a:hover darf ihn nicht auf Rot drehen */
.skip:hover,.skip:focus{color:#f4efe3}

/* ---------- Dymo-Prägeetikett ---------- */
.dymo{
  font-weight:700;font-size:12.5px;letter-spacing:.18em;text-transform:uppercase;
  background:#17140f;color:#f4efe3;
  padding:6px 12px;border-radius:3px;display:inline-block;
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.22),0 1px 2px rgba(0,0,0,.25);
  white-space:nowrap;
}
.dymo.hot{background:var(--marker-ink)}

/* ---------- Handschrift ---------- */
.hand{
  font-family:'Just Another Hand','Ink Free','Segoe Script',cursive;
  font-weight:400;line-height:.88;letter-spacing:.01em;
}

.quiet{
  font-size:12.5px;line-height:1.75;color:var(--quiet);letter-spacing:.03em;
  max-width:60ch;
}
.quiet em{font-style:normal;font-weight:700;color:var(--ink)}

/* =========================================================
   1 · Das Band
   ========================================================= */
.card{
  min-height:calc(100svh - var(--player-h));
  display:grid;
  grid-template-columns:128px 1fr minmax(330px,400px);
  border-bottom:1px solid var(--rule);
}

.spine{
  border-right:1px solid var(--rule);
  background:var(--board-dark);
  display:grid;place-items:center;position:relative;
}
.name{
  font-family:'Just Another Hand','Ink Free','Segoe Script',cursive;
  font-weight:400;font-size:clamp(56px,7vh,86px);line-height:.82;
  writing-mode:vertical-rl;transform:rotate(180deg);
  letter-spacing:.03em;white-space:nowrap;
}
.fold{
  position:absolute;right:-1px;top:0;bottom:0;width:1px;
  background:repeating-linear-gradient(180deg,var(--rule) 0 5px,transparent 5px 10px);
}

.inside{padding:26px 46px 26px;display:flex;flex-direction:column;min-width:0}

/* Vorderseite der Karte: hier ist das Covermotiv gedruckt */
.front{position:relative;flex:0 0 auto}
.front img{
  width:100%;height:clamp(180px,30vh,300px);
  object-fit:cover;object-position:50% 26%;display:block;
  background:var(--board-dark);
  box-shadow:0 1px 0 rgba(20,17,14,.25);
}
.front figcaption{position:absolute;left:14px;bottom:-13px}

.tracks{
  flex:1 1 auto;list-style:none;
  display:flex;flex-direction:column;justify-content:center;
  padding:30px 0 0;
}
.track{
  width:100%;background:none;border:none;cursor:pointer;
  font:inherit;color:inherit;text-align:left;
  display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:24px;
  font-family:'Just Another Hand','Ink Free','Segoe Script',cursive;
  font-size:clamp(34px,4.4vh,52px);line-height:1.02;
  border-bottom:1px dotted var(--rule);
  padding:10px 2px 7px;
  transition:color .18s cubic-bezier(.22,1,.36,1);
}
.tracks li:nth-child(odd) .track{transform:rotate(-.3deg)}
.tracks li:nth-child(even) .track{transform:rotate(.24deg)}
.track .t{position:relative;display:inline-block;justify-self:start}
.track .d{
  font-family:'Courier Prime','Courier New',monospace;font-size:14px;
  font-variant-numeric:tabular-nums;color:var(--quiet);letter-spacing:.04em;
}
.track:hover{color:var(--marker-ink)}
.track:hover .d{color:var(--marker-ink)}

/* Filzstift-Kringel um den laufenden Titel */
.ring{
  position:absolute;left:-.30em;right:-.26em;top:.07em;bottom:-.02em;
  border:3px solid var(--marker);
  border-radius:48% 52% 49% 51%/58% 42% 56% 44%;
  transform:rotate(-1.3deg) scale(.82);
  opacity:0;pointer-events:none;
  transition:opacity .2s ease-out,transform .42s cubic-bezier(.22,1,.36,1);
}
body.touched .track[aria-current="true"]{color:var(--marker-ink)}
body.touched .track[aria-current="true"] .d{color:var(--marker-ink)}
/* Der Kringel erscheint erst, wenn wirklich einmal Ton lief — sonst sieht
   der erste Titel beim Laden aus, als spiele er, während die Leiste "bereit" sagt. */
body.touched .track[aria-current="true"] .ring{opacity:.92;transform:rotate(-1.3deg) scale(1)}

.inside .quiet{
  margin-top:20px;padding-top:13px;border-top:1px solid var(--rule-soft);
}

/* Klarsichtfach */
.well{
  border-left:1px dashed var(--rule);
  padding:34px 38px;
  display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;
  gap:20px;
  background:linear-gradient(135deg,rgba(255,255,255,.5),rgba(0,0,0,.035));
}
.tape{width:100%;height:auto;display:block;filter:drop-shadow(0 16px 24px rgba(0,0,0,.32))}
.hub{transition:none}
/* der eine gestaltete Bewegungsmoment: die Wickel drehen sich beim Abspielen */
body.playing .hub{animation:spin 2.6s linear infinite}
body.playing .reel:last-of-type .hub{animation-duration:3.6s}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  body.playing .hub{animation:none}
  .ring{transition:opacity .2s ease-out}
  .track,.pbtn{transition:none}
}

/* =========================================================
   2 · Wer das hier singt
   ========================================================= */
.sheet{
  display:grid;
  grid-template-columns:1fr minmax(180px,208px) 1fr;
  align-items:center;gap:40px;
  padding:64px 52px;
  border-bottom:1px solid var(--rule);
  overflow-x:clip;
}

.cover{
  position:relative;background:#fdfbf5;
  padding:13px 13px 56px;
  transform:rotate(-1.8deg);
  box-shadow:0 20px 34px -18px rgba(0,0,0,.45),0 2px 0 rgba(0,0,0,.06);
  justify-self:end;width:100%;max-width:400px;
}
.cover img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;display:block;background:var(--board-dark)}
.cover figcaption{position:absolute;left:15px;bottom:14px}

.strip{
  position:relative;
  display:flex;flex-direction:column;gap:7px;
  background:#f7f3e9;padding:11px 11px 38px;
  transform:rotate(2.4deg);
  box-shadow:0 26px 40px -20px rgba(0,0,0,.5);
  z-index:2;
}
.strip img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;display:block;background:var(--board-dark)}
.strip-foot{
  position:absolute;left:0;right:0;bottom:13px;text-align:center;
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--quiet);
}
.sticky{
  position:absolute;width:104px;height:30px;
  background:rgba(226,214,186,.82);
  border-left:1px solid rgba(0,0,0,.09);border-right:1px solid rgba(0,0,0,.09);
  box-shadow:0 1px 3px rgba(0,0,0,.14);
}
.sticky.s1{top:-15px;left:-30px;transform:rotate(-27deg)}
.sticky.s2{bottom:-13px;right:-28px;transform:rotate(-24deg)}

.aside{display:flex;flex-direction:column;align-items:flex-start;gap:20px;justify-self:start;max-width:430px}
.aside .hand{font-size:clamp(52px,6vw,78px)}
.declaration{
  font-size:12.5px;line-height:1.75;color:var(--quiet);letter-spacing:.03em;
  max-width:46ch;padding-top:12px;border-top:1px solid var(--rule-soft);
}
.declaration em{font-style:normal;font-weight:700;color:var(--marker-ink)}

.contact{
  background:#221d16;padding:9px;
  display:grid;grid-template-columns:1fr 1fr;gap:7px;
  transform:rotate(1.1deg);
  box-shadow:0 16px 26px -16px rgba(0,0,0,.5);
  width:100%;
}
.contact figure{position:relative;overflow:hidden;aspect-ratio:3/2}
.contact img{width:100%;height:100%;object-fit:cover;display:block}
.contact figcaption{
  position:absolute;left:6px;bottom:4px;
  font-size:11px;letter-spacing:.12em;color:#f0ead9;
  text-shadow:0 1px 3px rgba(0,0,0,.9);
}

/* =========================================================
   3 · Aus dem Aufnahmeraum
   ========================================================= */
.room{
  display:grid;grid-template-columns:1fr minmax(380px,620px);
  align-items:center;gap:48px;
  padding:64px 52px;
  border-bottom:1px solid var(--rule);
}
.room-text{display:flex;flex-direction:column;align-items:flex-start;gap:16px;justify-self:end;max-width:380px}
.room-text .hand{font-size:clamp(48px,5.5vw,70px)}

.polaroid{
  background:#fdfbf5;padding:13px 13px 16px;
  transform:rotate(-1.1deg);
  box-shadow:0 22px 36px -18px rgba(0,0,0,.45);
}
.polaroid video{
  width:100%;height:auto;display:block;background:#0c0a08;
  aspect-ratio:16/9;object-fit:cover;
  /* der Ersatztext erscheint auf dem dunklen Videogrund, nicht auf Karton */
  color:#f4efe3;
}
.polaroid figcaption{
  font-family:'Just Another Hand','Ink Free','Segoe Script',cursive;font-size:34px;line-height:1;
  padding-top:11px;
}

/* =========================================================
   Fußzeile
   ========================================================= */
.foot{
  padding:40px 52px 48px;
  display:flex;flex-direction:column;align-items:flex-start;gap:14px;
}

/* =========================================================
   Abspielleiste
   ========================================================= */
.player{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  height:var(--player-h);
  background:var(--board-dark);
  border-top:1px solid var(--rule);
  box-shadow:0 -10px 26px -18px rgba(0,0,0,.6);
  position:fixed;
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:26px;
  padding:0 34px;
  padding-bottom:env(safe-area-inset-bottom);
}
/* Die Suchleiste laeuft ueber die volle Breite auf der Oberkante:
   bedienbar ueber die ganze Seite statt in einem schmalen Streifen. */
.seek{
  position:absolute;left:0;right:0;top:0;
  width:100%;height:20px;
}
.pbtn{
  width:56px;height:56px;border-radius:50%;
  border:2px solid var(--ink);background:var(--ink);color:var(--board);
  cursor:pointer;display:grid;place-items:center;
  transition:transform .16s cubic-bezier(.22,1,.36,1);
}
.pbtn:hover{transform:scale(1.06)}
.pbtn:active{transform:scale(.96)}
.pbtn .ico-pause{display:none}
body.playing .pbtn .ico-play{display:none}
body.playing .pbtn .ico-pause{display:block}

.pinfo{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.ptitle{
  font-size:40px;line-height:.95;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
}

/* Fortschritt als Suchleiste */
.seek{
  -webkit-appearance:none;appearance:none;
  background:none;cursor:pointer;margin:0;z-index:2;
}
.seek::-webkit-slider-runnable-track{
  height:3px;
  background:linear-gradient(to right,
    var(--marker) 0 var(--progress,0%),
    rgba(20,17,14,.26) var(--progress,0%) 100%);
}
.seek::-moz-range-track{height:3px;background:rgba(20,17,14,.26)}
.seek::-moz-range-progress{height:3px;background:var(--marker)}
.seek::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;
  width:15px;height:15px;border-radius:50%;background:var(--marker);
  border:2px solid var(--board-dark);margin-top:-6px;
}
.seek::-moz-range-thumb{
  width:15px;height:15px;border-radius:50%;background:var(--marker);
  border:2px solid var(--board-dark);
}
.seek:hover::-webkit-slider-thumb{transform:scale(1.15)}

.ptime{
  font-size:14px;letter-spacing:.06em;color:var(--quiet);white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.ptime b{color:var(--ink)}

/* =========================================================
   Tablet
   ========================================================= */
@media (max-width:1100px){
  .card{grid-template-columns:104px 1fr minmax(260px,320px)}
  .inside{padding:28px 32px 22px}
  .well{padding:28px 26px}
  .sheet{grid-template-columns:1fr 180px;gap:30px;padding:48px 32px}
  .aside{grid-column:1 / -1;justify-self:stretch;max-width:none}
  .room{grid-template-columns:1fr minmax(300px,460px);gap:30px;padding:48px 32px}
}

/* =========================================================
   Handy
   ========================================================= */
@media (max-width:760px){
  :root{--player-h:80px}

  .card{
    grid-template-columns:1fr;grid-template-rows:auto 1fr auto;
    min-height:calc(100svh - var(--player-h));
  }
  .spine{
    border-right:none;border-bottom:1px solid var(--rule);
    place-items:start;padding:7px 18px 4px;
  }
  .name{writing-mode:horizontal-tb;transform:none;font-size:46px;line-height:.78}
  .fold{display:none}

  .inside{padding:0 0 18px}
  .front img{height:clamp(104px,15vh,132px)}
  .front figcaption{left:20px}
  .tracks{gap:0;padding:24px 20px 0;justify-content:center}
  .track{font-size:34px;gap:14px;padding:5px 2px 3px}
  .track .d{font-size:13px}
  .inside .quiet{margin:12px 20px 0;padding-top:9px;line-height:1.62}

  .well{
    border-left:none;border-top:1px dashed var(--rule);
    flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;
    padding:10px 20px 12px;gap:8px 10px;
  }
  .tape{max-width:196px;order:-1;flex:0 0 100%}

  .sheet{
    grid-template-columns:1fr;gap:30px;padding:44px 20px;
    justify-items:center;
  }
  .cover{justify-self:center;max-width:340px}
  .strip{width:100%;max-width:230px}
  .aside{align-items:flex-start;justify-self:stretch;max-width:none;width:100%}
  .aside .hand{font-size:56px}

  .room{grid-template-columns:1fr;gap:26px;padding:44px 20px;justify-items:center}
  .room-text{justify-self:stretch;max-width:none}
  .polaroid{width:100%}

  .foot{padding:32px 20px 40px}

  .player{gap:14px;padding:0 16px;padding-bottom:env(safe-area-inset-bottom)}
  .pbtn{width:50px;height:50px}
  .ptitle{font-size:32px}
  .ptime{font-size:12px}
}

@media (max-width:380px){
  .name{font-size:50px}
  .track{font-size:34px}
  .ptime{display:none}
}


/* =========================================================
   Rechtstexte — Impressum und Datenschutz
   Gleiche Welt, ruhigerer Modus: hier wird gelesen, nicht gehört.
   ========================================================= */
.doc{
  max-width:74ch;
  margin:0 auto;
  padding:40px 24px 64px;
}
.doc-back{
  display:inline-block;margin-bottom:34px;
  font-size:12.5px;letter-spacing:.06em;
}
.doc h1{
  font-family:'Just Another Hand','Ink Free','Segoe Script',cursive;
  font-weight:400;font-size:clamp(56px,7vw,86px);line-height:.86;
  margin-bottom:10px;
}
.doc > p.lead{
  font-size:12.5px;line-height:1.75;color:var(--quiet);letter-spacing:.03em;
  padding-bottom:26px;border-bottom:1px solid var(--rule);margin-bottom:34px;
}
.doc h2{
  font-family:'Courier Prime','Courier New',monospace;
  font-weight:700;font-size:12.5px;letter-spacing:.18em;text-transform:uppercase;
  background:#17140f;color:#f4efe3;
  padding:6px 12px;border-radius:3px;display:inline-block;
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.22),0 1px 2px rgba(0,0,0,.25);
  margin:38px 0 16px;
}
.doc h2:first-of-type{margin-top:0}
.doc h3{
  font-size:14px;font-weight:700;letter-spacing:.04em;margin:24px 0 7px;
}
.doc p,.doc li{
  font-size:14px;line-height:1.78;letter-spacing:.01em;
}
.doc p{margin-bottom:14px}
.doc ul{margin:0 0 16px 20px}
.doc li{margin-bottom:6px}
.doc address{font-style:normal;line-height:1.78;font-size:14px;margin-bottom:14px}
.doc .note{
  border-left:2px solid var(--marker-ink);
  padding:2px 0 2px 16px;margin:20px 0;
  font-size:12.5px;line-height:1.7;color:var(--quiet);
}

/* Auszufüllende Stellen: sollen unübersehbar sein, solange sie leer sind */
.todo{
  background:var(--marker-ink);color:#f7f1ea;
  padding:1px 7px;border-radius:2px;
  font-weight:700;letter-spacing:.04em;
}

/* Fußzeile mit den Pflichtlinks */
.foot nav{display:flex;flex-wrap:wrap;gap:20px;font-size:12.5px;letter-spacing:.05em}

@media (max-width:760px){
  .doc{padding:28px 20px 56px}
  .doc h1{font-size:52px}
}
