/* ============================================================
   Lab 12 — Die Korrespondenz · ein Brief als Website
   Bogen auf dem Schreibtisch, Garamond-Handsatz, Berry-Siegel.
   ============================================================ */

@font-face { font-family:'EB Garamond'; src:url('fonts/eb-garamond-latin-400-normal.woff2') format('woff2'); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:'EB Garamond'; src:url('fonts/eb-garamond-latin-400-italic.woff2') format('woff2'); font-weight:400; font-style:italic; font-display:swap; }
@font-face { font-family:'Inter'; src:url('fonts/inter-latin-400-normal.woff2') format('woff2'); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:'Inter'; src:url('fonts/inter-latin-500-normal.woff2') format('woff2'); font-weight:500; font-style:normal; font-display:swap; }
@font-face { font-family:'Inter'; src:url('fonts/inter-latin-600-normal.woff2') format('woff2'); font-weight:600; font-style:normal; font-display:swap; }

:root {
  --berry:#8B1A6B; --berry-deep:#6E1455;
  --gold:#C8A55B; --gold-deep:#A8853F; --gold-soft:#DCC089;
  --plum:#3A1530;
  --paper:#FBF8F3; --paper-mid:#F3EDE2; --paper-deep:#E8DDC8;
  --ink:#1F1A17; --ink-soft:#4A413B; --ink-mute:#877B71;
  --serif:'EB Garamond', Georgia, serif;
  --sans:'Inter', -apple-system, sans-serif;
}

* { margin:0; padding:0; box-sizing:border-box; }

body {
  background:
    radial-gradient(120% 100% at 50% -10%, #F7F1E4 0%, var(--paper-mid) 60%, #EDE4D2 100%) fixed,
    var(--paper-mid);
  color:var(--ink);
  font-family:var(--serif);
  font-size:clamp(17px, 1.3vw, 19px);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}

::selection { background:var(--berry); color:var(--paper); }

/* ---------- Schreibtisch ---------- */
.desk {
  display:flex; flex-direction:column; align-items:center;
  padding:clamp(2rem, 7vh, 5.5rem) 1.2rem 4rem;
}

/* ---------- Der Bogen ---------- */
.sheet {
  width:min(660px, 100%);
  background:var(--paper);
  padding:clamp(2.2rem, 6vw, 4.2rem) clamp(1.6rem, 5.5vw, 4rem) clamp(2.6rem, 6vw, 4rem);
  box-shadow:
    0 1px 2px rgba(58,21,48,.06),
    0 12px 40px rgba(58,21,48,.14),
    0 30px 80px rgba(58,21,48,.12);
  position:relative;
}
/* feine Blattkante */
.sheet::after {
  content:""; position:absolute; inset:0;
  box-shadow:inset 0 0 0 1px rgba(232,221,200,.7);
  pointer-events:none;
}

.sheet__head { margin-bottom:2.6rem; }
.sender {
  font-family:var(--sans); font-size:.62rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--ink-mute);
  padding-bottom:.7rem;
  border-bottom:1px solid var(--paper-deep);
}
.dateline {
  margin-top:1.8rem; text-align:right;
  font-style:italic; color:var(--ink-soft);
  font-size:.95em;
}

.subject {
  font-family:var(--sans); font-weight:600; font-size:.92rem;
  color:var(--berry);
  margin-bottom:2rem;
}

.salutation { margin-bottom:1.2em; }

.body p { margin-bottom:1.15em; text-align:justify; hyphens:auto; -webkit-hyphens:auto; }
.nobreak { hyphens:none; white-space:nowrap; }

/* ---------- Gruß + Signatur + Siegel ---------- */
.closing {
  margin-top:2.2rem;
  display:flex; flex-direction:column; gap:.2rem;
  position:relative;
}
.closing__formula { font-style:italic; }
.signature { position:relative; width:fit-content; }
.signature__name {
  font-style:italic;
  font-size:1.9em; line-height:1.2;
  color:var(--berry);
  transform:rotate(-2.4deg);
  transform-origin:left bottom;
}
.signature__name span { font-size:1.18em; letter-spacing:.02em; }
.signature__swash {
  position:absolute; left:.4em; bottom:-.48em;
  width:min(220px, 88%);
  overflow:visible;
}
.seal-wrap {
  position:absolute; right:0; bottom:-1.4rem;
  display:flex; flex-direction:column; align-items:center; gap:.55rem;
}
.seal-wrap__hint {
  font-style:italic; font-size:.82rem; color:var(--ink-mute);
  text-align:center; line-height:1.3;
}
.seal-wrap__credit {
  font-family:var(--sans); font-size:.56rem; font-weight:500;
  letter-spacing:.09em; text-transform:uppercase;
  color:var(--ink-mute); opacity:.8;
  text-align:center; line-height:1.6; max-width:10rem;
}
.seal {
  position:relative;
  border:0; padding:0; cursor:pointer;
  -webkit-appearance:none; appearance:none;
  width:78px; height:78px; border-radius:50%;
  background:
    radial-gradient(circle at 34% 30%, var(--berry) 0%, var(--berry-deep) 62%, #5A0F45 100%);
  box-shadow:
    inset 0 2px 5px rgba(255,255,255,.22),
    inset 0 -4px 8px rgba(30,5,24,.5),
    0 4px 10px rgba(58,21,48,.3);
  display:grid; place-items:center;
  transform:rotate(-8deg);
}
.seal::before {
  content:""; position:absolute; inset:7px; border-radius:50%;
  border:1.5px solid rgba(220,192,137,.55);
  box-shadow:inset 0 1px 2px rgba(30,5,24,.4);
}
.seal span {
  font-family:var(--serif); font-style:italic;
  font-size:2rem; color:var(--gold-soft);
  text-shadow:0 1px 1px rgba(30,5,24,.6);
}
.seal:focus-visible { outline:2px solid var(--gold-deep); outline-offset:6px; }
.seal:hover { transform:rotate(-8deg) scale(1.04); }
.seal { transition:transform .4s cubic-bezier(.2,.65,.25,1); }
.seal[aria-pressed="true"] { animation:sealBreath 3.4s ease-in-out infinite; }
@keyframes sealBreath {
  0%,100% { transform:rotate(-8deg) scale(1); }
  50% { transform:rotate(-8deg) scale(1.035); }
}
.seal__ring {
  position:absolute; inset:-8px;
  width:calc(100% + 16px); height:calc(100% + 16px);
  transform:rotate(-90deg);
  pointer-events:none;
}
.seal__ring circle {
  fill:none;
  stroke:var(--gold-deep);
  stroke-width:2.6;
  stroke-linecap:round;
  stroke-dasharray:298.5;
  stroke-dashoffset:298.5;
}
@media (max-width:560px) {
  .seal-wrap { bottom:auto; top:-1.6rem; }
  .seal { width:62px; height:62px; }
  .seal span { font-size:1.6rem; }
  .seal-wrap__hint { font-size:.72rem; }
}

.ps {
  margin-top:2.6rem; padding-top:1.4rem;
  border-top:1px solid var(--paper-deep);
  font-size:.92em; color:var(--ink-soft);
}
.ps a { color:var(--berry); text-decoration:none; border-bottom:1px solid rgba(139,26,107,.3); }
.ps a:hover { color:var(--berry-deep); border-color:var(--berry-deep); }

/* ---------- Unter dem Brief ---------- */
.after {
  margin-top:3rem; text-align:center;
  display:flex; flex-direction:column; align-items:center; gap:.9rem;
}
.btn {
  display:inline-block;
  font-family:var(--sans); font-weight:600; font-size:.76rem;
  letter-spacing:.2em; text-transform:uppercase;
  color:var(--paper); background:var(--berry);
  text-decoration:none; border-radius:100px;
  padding:1.1rem 2.5rem;
  transition:background .3s;
}
.btn:hover { background:var(--berry-deep); }
.after__hint { font-style:italic; font-size:.92rem; color:var(--ink-mute); }

/* ---------- Footer ---------- */
.footer {
  text-align:center; padding:2.8rem 1.4rem 2.2rem;
  font-family:var(--sans);
}
.footer__firm {
  font-weight:600; font-size:.64rem; letter-spacing:.3em;
  text-transform:uppercase; color:var(--berry);
}
.footer__meta { margin-top:.55rem; font-size:.72rem; color:var(--ink-mute); }
.footer__lab { margin-top:1.2rem; font-size:.66rem; letter-spacing:.1em; }
.footer__lab a { color:var(--gold-deep); text-decoration:none; }
.footer__lab a:hover { color:var(--berry); }

/* ---------- Zeilen-Reveal ---------- */
[data-line] {
  opacity:0; transform:translateY(10px);
  transition:opacity 1s ease, transform 1s ease;
  transition-delay:var(--d, 0s);
}
[data-line].in { opacity:1; transform:none; }

#swashPath { stroke-dasharray:var(--len, 300); stroke-dashoffset:var(--len, 300); }
#swashPath.draw { animation:drawSwash 1.4s cubic-bezier(.4,.1,.3,1) forwards .35s; }
@keyframes drawSwash { to { stroke-dashoffset:0; } }

@media (prefers-reduced-motion: reduce) {
  [data-line] { opacity:1; transform:none; transition:none; }
  #swashPath { stroke-dashoffset:0 !important; animation:none; }
  .seal, .seal[aria-pressed="true"] { animation:none; transition:none; }
}
