/* Little worlds — house style.
   Calm editorial base (restraint, breathing room) · each card holds its own hour of light ·
   white keylines + a soft solid lift for tactile depth · one sun-warm accent for optimism. */
:root{
  --bg:#f4f0e6; --bg-2:#efe9dc; --card:#fffcf5; --ink:#1f231f; --muted:#595e55; --line:#ddd6c6;
  --lift:#e4dac5; --keyline:#ffffff;
  --sun:#e8742c; --sun-ink:#a4461b; --sun-soft:#fbe3cf;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Charter,"Bitstream Charter",Georgia,serif;
  --sans:"Avenir Next",Avenir,"Segoe UI",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --ease:cubic-bezier(.22,.8,.26,1); --spring:cubic-bezier(.3,1.35,.5,1);
  --gut:clamp(16px,3.2vw,48px);
  color-scheme:light;
}
/* Each card is an hour of the day, dawn → sunset, 2–3 colours apiece. */
[data-tone="1"]{--a:#f7dccb;--b:#efd4df;--stroke:#95533f}
[data-tone="2"]{--a:#e6edd7;--b:#d2e3d3;--stroke:#476c50}
[data-tone="3"]{--a:#f3e7c7;--b:#ead7aa;--stroke:#7f6023}
[data-tone="4"]{--a:#dde7f4;--b:#cad8ee;--stroke:#43598a}
[data-tone="5"]{--a:#ebe1f1;--b:#dccfe8;--stroke:#644f8a}
[data-tone="6"]{--a:#f7e0ae;--b:#f0c888;--stroke:#83541b}
[data-tone="7"]{--a:#d5e8e4;--b:#bcd8d7;--stroke:#35645f}
[data-tone="8"]{--a:#f9d8ca;--b:#f2bda9;--stroke:#8f4128}

@media (prefers-color-scheme:dark){
  :root{--bg:#18191f;--bg-2:#1d1e26;--card:#22232c;--ink:#efe8da;--muted:#b3ac9d;--line:#343540;--lift:#0d0e13;--keyline:#3a3944;
    --sun:#f2934e;--sun-ink:#f5a56a;--sun-soft:#3b2a22;color-scheme:dark}
  [data-tone="1"]{--a:#46303f;--b:#3a2c3c;--stroke:#f2b9a4}
  [data-tone="2"]{--a:#2c3a33;--b:#27352f;--stroke:#aad2b3}
  [data-tone="3"]{--a:#3f3726;--b:#372f20;--stroke:#e9cf8f}
  [data-tone="4"]{--a:#27324a;--b:#232c42;--stroke:#aac0ec}
  [data-tone="5"]{--a:#342c47;--b:#2d263f;--stroke:#c9b6ee}
  [data-tone="6"]{--a:#453521;--b:#3d2d1b;--stroke:#f3c784}
  [data-tone="7"]{--a:#223a3a;--b:#1e3333;--stroke:#9fd6cf}
  [data-tone="8"]{--a:#472c26;--b:#3e2520;--stroke:#f5ae95}
}

*{box-sizing:border-box}
html,body{margin:0}
body{background:radial-gradient(120% 70% at 85% -10%,var(--sun-soft),transparent 55%),var(--bg);color:var(--ink);
  font:15px/1.5 var(--sans);-webkit-font-smoothing:antialiased;min-height:100dvh;display:grid;grid-template-rows:auto 1fr auto}
a{color:inherit}
kbd{font:600 11px/1 var(--mono);display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:6px;
  background:var(--card);border:1px solid var(--line);box-shadow:0 2px 0 var(--lift);color:var(--ink);margin:0 1px}
.skip{position:absolute;left:12px;top:-60px;background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:8px;z-index:9}
.skip:focus{top:12px}
:focus-visible{outline:2px solid var(--sun);outline-offset:4px;border-radius:6px}

/* Header */
.top{display:flex;align-items:center;justify-content:space-between;padding:18px var(--gut) 0}
.brand{display:inline-flex;align-items:center;gap:10px;font:500 20px/1 var(--serif);text-decoration:none;letter-spacing:-.01em}
.sun{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#ffd08f,var(--sun) 70%);box-shadow:0 0 0 4px color-mix(in srgb,var(--sun) 18%,transparent)}
.top-nav{display:flex;gap:26px;font-size:14px}
.top-nav a{text-decoration:none;color:var(--muted);transition:color .2s}
.top-nav a:hover{color:var(--ink)}

/* Main composition */
main{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(14px,2.4vh,26px);padding:clamp(14px,3.2vh,40px) var(--gut) clamp(10px,2vh,20px);min-height:0}
.hero{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(24px,5vw,80px);align-items:end}
.eyebrow{margin:0 0 clamp(6px,1.2vh,14px);font:600 11px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--sun-ink)}
h1{margin:0;font:400 clamp(40px,min(6.2vw,8.4vh),84px)/.96 var(--serif);letter-spacing:-.025em}
h1 em{font-style:italic;color:var(--ink)}
h1 em::after{content:"";display:inline-block;width:.16em;height:.16em;border-radius:50%;background:var(--sun);margin-left:.04em;vertical-align:baseline}
.hero-copy{padding-bottom:6px;max-width:440px}
.thesis{margin:0 0 8px;font:400 clamp(16px,2.3vh,19px)/1.42 var(--serif);color:var(--ink)}
.sub{margin:0 0 12px;font-size:13.5px;color:var(--muted)}
.hint{margin:0;font-size:12px;color:var(--muted);display:flex;align-items:center;flex-wrap:wrap;gap:4px}
.hint .dot{margin:0 4px}

/* Cards */
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:clamp(12px,1.6vw,22px);min-height:0;outline:none}
.card{position:relative;display:grid;grid-template-rows:minmax(56px,1fr) auto;min-height:0;text-decoration:none;color:var(--ink);
  background:var(--card);border-radius:18px;padding:6px;
  box-shadow:0 0 0 1px var(--line),5px 6px 0 var(--lift);
  opacity:0;translate:0 12px;
  transition:translate .45s var(--spring),box-shadow .35s var(--ease),opacity .5s var(--ease)}
.ready .card{opacity:1;translate:0 0;transition-delay:calc(var(--i)*45ms),0s,calc(var(--i)*45ms)}
.ready .card:hover,.ready .card:focus-visible{translate:-2px -4px;transition-delay:0s;box-shadow:0 0 0 1px color-mix(in srgb,var(--stroke) 45%,var(--line)),9px 11px 0 var(--lift)}
.card:focus-visible{outline:2px solid var(--sun);outline-offset:5px;border-radius:18px}

.preview{position:relative;overflow:hidden;border-radius:13px;min-height:0;
  background:linear-gradient(180deg,var(--a),var(--b) 55%,var(--a));background-size:100% 220%;background-position:0 0;
  box-shadow:inset 0 0 0 3px var(--keyline);transition:background-position .9s var(--ease)}
/* The light moves: a low sun slides in from the upper right as a card is chosen. */
.preview::after{content:"";position:absolute;width:70%;aspect-ratio:1;right:-30%;top:-45%;border-radius:50%;
  background:radial-gradient(circle,color-mix(in srgb,#fff1c9 70%,var(--sun)),color-mix(in srgb,#fff1c9 40%,transparent) 30%,transparent 66%);mix-blend-mode:soft-light;opacity:0;translate:10% -10%;
  transition:opacity .6s var(--ease),translate .8s var(--ease);pointer-events:none}
.card:hover .preview,.card:focus-visible .preview{background-position:0 70%}
.card:hover .preview::after,.card:focus-visible .preview::after{opacity:1;translate:0 0}
.preview svg{position:absolute;inset:10% 6%;width:88%;height:80%;overflow:visible}
.preview svg *{vector-effect:non-scaling-stroke}
.base{fill:none;stroke:color-mix(in srgb,var(--stroke) 45%,transparent);stroke-width:1.2}
.dash{fill:none;stroke:color-mix(in srgb,var(--stroke) 55%,transparent);stroke-width:1.2;stroke-dasharray:3 5}
.draw{fill:none;stroke:var(--stroke);stroke-width:2.4;stroke-linecap:round;stroke-dasharray:420;stroke-dashoffset:0;transition:stroke-dashoffset 1s var(--ease)}
.card:hover .draw,.card:focus-visible .draw{animation:draw 1.1s var(--ease)}
@keyframes draw{from{stroke-dashoffset:420}to{stroke-dashoffset:0}}
.mark{fill:var(--sun);transition:r .4s var(--spring)}
.card:hover .mark,.card:focus-visible .mark{r:6}
.band{fill:color-mix(in srgb,var(--sun) 22%,transparent)}
.pills rect,.pill{fill:var(--keyline);stroke:color-mix(in srgb,var(--stroke) 30%,transparent)}
.pill.alt{fill:color-mix(in srgb,var(--keyline) 70%,var(--b))}
.pills+text,.preview text{font:500 11px var(--sans);fill:var(--stroke);text-anchor:middle}
.nodes circle{fill:var(--keyline);stroke:var(--stroke);stroke-width:1.4}
.glyph{font:italic 400 64px var(--serif)!important;fill:var(--stroke)!important;text-anchor:middle}
.glyph.ghost{opacity:.4}
.sym{font:400 38px var(--serif)!important;text-anchor:middle;dominant-baseline:middle;fill:var(--stroke)!important}
.lbl{font:600 10px var(--mono)!important}
.pill,.pills rect,.nodes circle{transition:translate .5s var(--spring)}
.card:hover .pill.alt,.card:focus-visible .pill.alt{translate:0 -3px}
.card:hover .pills rect:nth-child(2),.card:focus-visible .pills rect:nth-child(2){translate:0 -3px}

.key{position:absolute;left:10px;top:10px;font:600 11px/1 var(--mono);width:22px;height:22px;display:grid;place-items:center;border-radius:7px;
  background:var(--keyline);color:var(--stroke);box-shadow:0 1px 0 color-mix(in srgb,var(--stroke) 25%,transparent)}
.new{position:absolute;right:10px;top:10px;font:700 10px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;padding:6px 9px;border-radius:99px;background:var(--sun);color:#2a1406}

.copy{display:grid;gap:4px;padding:clamp(10px,1.6vh,16px) 12px clamp(8px,1.2vh,12px)}
.kicker{font:600 10px/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kicker .sep{color:var(--line);margin:0 2px}
.title{font:400 clamp(17px,min(1.55vw,2.8vh),23px)/1.12 var(--serif);letter-spacing:-.01em;margin-top:2px}
.text{font-size:12.5px;line-height:1.45;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.9em}
.enter{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;font-weight:600;margin-top:4px;color:var(--ink)}
.arrow{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--bg-2);transition:translate .4s var(--spring),background-color .3s,color .3s}
.card:hover .arrow,.card:focus-visible .arrow{translate:4px 0;background:var(--sun);color:#2a1406}

/* Routes */
.routes{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:clamp(16px,3vw,44px);padding:14px 20px;border-radius:16px;background:var(--card);box-shadow:0 0 0 1px var(--line),4px 5px 0 var(--lift)}
.routes h2{margin:0;font:400 20px/1.1 var(--serif);letter-spacing:-.01em}
.route-list{display:flex;flex-wrap:wrap;gap:6px 36px}
.route{margin:0;display:flex;align-items:center;gap:12px;font-size:13px;color:var(--muted)}
.route-name{font:600 10px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--sun-ink)}
.steps{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.steps i{width:14px;height:1px;background:color-mix(in srgb,var(--sun) 60%,var(--line));display:inline-block}
.cta{font-size:13px;font-weight:600;text-decoration:none;padding:9px 14px;border-radius:99px;background:var(--bg-2);box-shadow:0 0 0 1px var(--line);white-space:nowrap;transition:background-color .25s,translate .35s var(--spring)}
.cta:hover{background:var(--sun-soft);translate:0 -1px}

/* Footer */
.foot{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:0 var(--gut) 16px;font-size:12px;color:var(--muted)}
.siblings{display:flex;gap:14px;flex-wrap:wrap}
.siblings a{text-decoration:none;color:var(--muted);border-bottom:1px solid transparent}
.siblings a:hover{color:var(--ink);border-color:var(--line)}
.siblings a[aria-current]{color:var(--sun-ink);font-weight:600}

/* One screen on laptops and up; natural scroll below. */
@media (min-width:1024px) and (min-height:680px){html,body{height:100%;overflow:hidden}body{height:100dvh}}
@media (max-height:760px) and (min-width:1024px){
  .sub{display:none}.routes{padding:9px 18px}
  h1{font-size:clamp(36px,7.2vh,58px)}
  main{gap:12px;padding-top:12px}
  .card{grid-template-rows:minmax(44px,1fr) auto}
  .copy{gap:2px;padding:8px 12px 6px}
  .enter{margin-top:0}
}
@media (max-width:1180px){.foot>span{display:none}.foot{justify-content:flex-end}}
@media (max-width:1023px){
  .hero{grid-template-columns:1fr;gap:16px}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none}
  .card{grid-template-rows:140px auto}
  .routes{grid-template-columns:1fr;gap:12px}
  .cta{justify-self:start}
}
@media (max-width:560px){
  .top-nav a:first-child{display:none}
  h1{font-size:44px}
  .cards{grid-template-columns:1fr}
  .card{grid-template-rows:130px auto}
  .foot{flex-direction:column;align-items:flex-start}
  .hint{display:none}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation:none!important}
  .card{opacity:1;translate:none}
  .ready .card:hover,.ready .card:focus-visible{translate:none}
}
