/* Poland Trip — shared design tokens (forked + refined from styles.css) */
:root{
  /* Palette — preserved from origin */
  --paper:#f4ecd8;
  --paper-deep:#ebe1c9;
  --paper-warm:#f8f1de;
  --ink:#1a1612;
  --ink-soft:#3d362e;
  --ink-mute:#6e6358;
  --crimson:#a8231d;
  --crimson-deep:#7a1812;
  --amber:#c4892b;
  --amber-deep:#8b5e15;
  --moss:#3d4a2a;
  --rule:#1a1612;

  /* Accent (tweakable) */
  --accent:var(--crimson);
  --accent-deep:var(--crimson-deep);

  /* Type scale */
  --type-scale:1;
  --fs-xs:calc(0.72rem * var(--type-scale));
  --fs-sm:calc(0.85rem * var(--type-scale));
  --fs-base:calc(1rem * var(--type-scale));
  --fs-md:calc(1.12rem * var(--type-scale));
  --fs-lg:calc(1.35rem * var(--type-scale));
  --fs-xl:calc(1.7rem * var(--type-scale));
  --fs-2xl:calc(2.4rem * var(--type-scale));
  --fs-3xl:calc(3.4rem * var(--type-scale));

  /* Density (lower = tighter layout) */
  --density:.88;
  --pad-xs:calc(0.4rem * var(--density));
  --pad-sm:calc(0.7rem * var(--density));
  --pad-md:calc(1.1rem * var(--density));
  --pad-lg:calc(1.8rem * var(--density));
  --gap-sm:calc(0.5rem * var(--density));
  --gap-md:calc(1rem * var(--density));
  --gap-lg:calc(1.6rem * var(--density));

  --serif:'Bodoni Moda','Noto Serif TC','Songti TC','Source Han Serif TC',Georgia,serif;
  --display:'Cormorant Garamond','Noto Serif TC','Songti TC','Source Han Serif TC',Georgia,serif;
  --body:'Noto Serif TC','Cormorant Garamond','Songti TC',Georgia,serif;
  --mono:'JetBrains Mono',ui-monospace,'Songti TC',monospace;

  --shadow-sm:0 1px 2px rgba(26,22,18,0.06), 0 4px 10px rgba(26,22,18,0.04);
  --shadow-md:0 2px 6px rgba(26,22,18,0.08), 0 12px 28px rgba(26,22,18,0.07);

  /* Motion */
  --ease-out:cubic-bezier(.2,.8,.2,1);
  --dur-fast:.16s;
  --dur-base:.24s;

  /* Focus ring (accessible keyboard outline that respects paper aesthetic) */
  --focus-ring:0 0 0 2px var(--paper), 0 0 0 4px var(--accent);

  /* Sticky offsets used to align scroll anchors below sticky chrome */
  --sticky-nav-h:54px;
  --sticky-rail-h:48px;

  /* iOS safe area passthroughs */
  --safe-top:env(safe-area-inset-top, 0px);
  --safe-bottom:env(safe-area-inset-bottom, 0px);
  --safe-left:env(safe-area-inset-left, 0px);
  --safe-right:env(safe-area-inset-right, 0px);
}

/* Global: smooth in-page navigation + base focus visible */
html{scroll-behavior:smooth}
:where(a,button,[role="button"],[tabindex]):focus-visible{
  outline:none;
  box-shadow:var(--focus-ring);
  border-radius:3px;
}

/* Honor users who prefer fewer animations */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}

/* Paper texture utility — fixed to viewport so it costs O(viewport),
   not O(full page height). mix-blend-mode + scrolling = jank otherwise. */
.paper-tex{position:relative}
.paper-tex::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.1 0 0 0 0 0.08 0 0 0 0 0.05 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode:multiply;opacity:.45;
}
.paper-tex > *{position:relative;z-index:1}

/* Mono kicker */
.kicker{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-mute)}
