/* Merivale Station: "All Aboard". A departures board for a diner called Station.
   Type scale 1.25 (base 17px). Spacing scale 4/8. Red only on Call, the roundel, the sign bar and quote marks. */
@font-face{font-family:"Familjen Grotesk";src:url(../fonts/familjen-grotesk.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible";src:url(../fonts/atkinson-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible";src:url(../fonts/atkinson-700.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible";src:url(../fonts/atkinson-400i.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}

:root{
  --paper:#F5F1E8; --white:#FFFFFF; --ink:#141414; --slate:#4A463F; --red:#C8201C; --red-lt:#FF6A5F; --line:#D9D2C1; --mute-on-ink:#BDB7AA;
  --f-head:"Familjen Grotesk","Helvetica Neue",Helvetica,sans-serif;
  --f-body:"Atkinson Hyperlegible","Helvetica Neue",Helvetica,sans-serif;
  /* type scale, ratio 1.25 */
  --t-1:.8rem; --t0:1rem; --t1:1.25rem; --t2:1.563rem; --t3:1.953rem; --t4:2.441rem; --t5:3.052rem; --t6:3.815rem;
  /* spacing scale */
  --s1:4px; --s2:8px; --s3:16px; --s4:24px; --s5:32px; --s6:48px; --s7:64px; --s8:96px;
  --wrap:1180px;
}
*{box-sizing:border-box}
html{font-size:106.25%;scroll-behavior:smooth;scroll-padding-top:16px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:var(--t0);line-height:1.6;overflow-x:hidden}
img{display:block;max-width:100%;height:auto}
h1,h2,h3{font-family:var(--f-head);font-weight:700;margin:0;line-height:1.05;letter-spacing:.005em;text-transform:uppercase}
p{margin:0 0 var(--s3)}
a{color:inherit}
:focus-visible{outline:3px solid var(--red);outline-offset:3px}
.board :focus-visible,.words :focus-visible,.dock :focus-visible,.foot :focus-visible{outline-color:var(--red-lt)}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:8px;top:-80px;z-index:100;background:var(--white);color:var(--ink);padding:12px 16px;font-family:var(--f-head);font-weight:700;border:3px solid var(--ink)}
.skip:focus{top:8px}
.wrap{width:100%;max-width:calc(var(--wrap) + 2*var(--s4));margin:0 auto;padding:0 var(--s3)}
@media(min-width:720px){.wrap{padding:0 var(--s4)}}

.label{font-family:var(--f-head);font-weight:700;font-size:var(--t-1);letter-spacing:.16em;text-transform:uppercase;color:var(--slate);margin:0 0 var(--s2);line-height:1.4}
.label-lt{color:var(--mute-on-ink)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 var(--s4);font-family:var(--f-head);font-weight:700;font-size:var(--t0);letter-spacing:.06em;text-transform:uppercase;text-decoration:none;border:3px solid var(--ink);background:transparent;color:var(--ink);transition:transform .15s,background-color .15s,color .15s}
.btn:hover{transform:translateY(-2px)}
.btn-call{background:var(--red);border-color:var(--red);color:var(--white)}
.btn-call:hover{background:#A91915;border-color:#A91915}
.btn-ghost:hover{background:var(--ink);color:var(--paper)}

/* header */
.top{background:var(--paper);border-bottom:6px solid var(--ink)}
.top-in{display:flex;align-items:center;gap:var(--s3);min-height:72px;padding-top:var(--s2);padding-bottom:var(--s2)}
.brand{display:flex;align-items:center;gap:var(--s2);text-decoration:none;margin-right:auto;min-height:44px}
.roundel{flex:none}
.brand-name{font-family:var(--f-head);font-weight:700;font-size:var(--t1);line-height:1;text-transform:uppercase;letter-spacing:.02em}
.brand-name small{display:block;font-size:var(--t-1);letter-spacing:.18em;color:var(--slate);margin-top:3px}
.nav{display:none}
.nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--s3);font-family:var(--f-head);font-weight:700;font-size:var(--t0);letter-spacing:.1em;text-transform:uppercase;text-decoration:none;border-bottom:3px solid transparent}
.nav a:hover{border-bottom-color:var(--ink)}
.top-call{display:none}
@media(min-width:760px){.nav{display:flex}.top-call{display:inline-flex;min-height:48px}}
@media(max-width:420px){.brand-name{font-size:var(--t0)}}

/* hero */
.hero{background:var(--paper);overflow-x:clip}
.hero-in{display:grid;gap:var(--s5);padding-top:var(--s6);padding-bottom:var(--s5)}
.hero-copy h1{font-size:var(--t4);margin-bottom:var(--s4)}
.lede{font-size:var(--t1);line-height:1.5;max-width:34ch;margin-bottom:var(--s4)}
.cta{display:flex;flex-wrap:wrap;gap:var(--s3)}
.fine{margin:var(--s3) 0 0;color:var(--slate)}
/* ticket-stub crop: half-circle notches cut from both sides */
.stub{margin:0;position:relative}
.stub img{width:100%;height:100%;object-fit:cover;
  -webkit-mask:radial-gradient(circle 14px at 0 50%,#0000 97%,#000) left/51% 100% no-repeat,radial-gradient(circle 14px at 100% 50%,#0000 97%,#000) right/51% 100% no-repeat;
          mask:radial-gradient(circle 14px at 0 50%,#0000 97%,#000) left/51% 100% no-repeat,radial-gradient(circle 14px at 100% 50%,#0000 97%,#000) right/51% 100% no-repeat}
.hero-stub{position:relative;z-index:2;transform:rotate(1.5deg);filter:drop-shadow(0 10px 0 rgba(20,20,20,.12));margin-bottom:calc(var(--s7)*-1);aspect-ratio:3/2}
@media(min-width:960px){
  .hero-in{grid-template-columns:6fr 6fr;gap:var(--s7);align-items:start;padding-top:var(--s7)}
  .hero-copy h1{font-size:var(--t6)}
  .hero-stub{margin-top:var(--s5);margin-bottom:calc(var(--s8)*-1 + var(--s3));aspect-ratio:5/4;transform:rotate(2deg)}
}
@media(min-width:600px) and (max-width:959px){.hero-copy h1{font-size:var(--t5)}}

/* departures board */
.board-wrap{background:var(--ink);padding:calc(var(--s7) + var(--s5)) 0 var(--s6)}
@media(min-width:960px){.board-wrap{padding-top:calc(var(--s8) + var(--s6))}}
.board{color:var(--paper)}
.board-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:3px solid var(--paper);padding-bottom:var(--s2);margin-bottom:var(--s3)}
.board-head h2{font-size:var(--t1);letter-spacing:.2em}
.board-head p{margin:0;font-family:var(--f-head);font-weight:700;font-size:var(--t-1);letter-spacing:.2em;text-transform:uppercase;color:var(--red-lt)}
.rows{list-style:none;margin:0;padding:0}
.row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"pl st" "dish dish";gap:var(--s2) var(--s3);padding:var(--s3) 0;border-bottom:1px dashed #5b564c}
.pl{grid-area:pl;font-family:var(--f-head);font-weight:700;font-size:var(--t-1);letter-spacing:.2em;text-transform:uppercase;color:var(--red-lt);font-variant-numeric:tabular-nums;display:flex;gap:var(--s2);align-items:baseline}
.pl b{font-size:var(--t2);letter-spacing:0;color:var(--paper);line-height:1}
.dish{grid-area:dish}
.st{grid-area:st;color:var(--red-lt);justify-self:end}
.dish,.st{font-family:var(--f-head);font-weight:700;text-transform:uppercase;font-variant-numeric:tabular-nums;line-height:1}
.dish{font-size:var(--t2)}
.st{font-size:var(--t-1);letter-spacing:.1em}
.cells{display:flex;flex-wrap:wrap;column-gap:.5em;row-gap:.2em}
.w{display:inline-flex;gap:2px}
.c{display:inline-flex;align-items:center;justify-content:center;width:.78em;height:1.28em;background:#232323;border-radius:2px;position:relative;backface-visibility:hidden;
  background-image:linear-gradient(#0000 calc(50% - 1px),rgba(0,0,0,.7) calc(50% - 1px),rgba(0,0,0,.7) calc(50% + 1px),#0000 calc(50% + 1px))}
.st .c{width:.8em;height:1.4em}
@media(min-width:720px){
  .row{grid-template-columns:150px 1fr auto;grid-template-areas:"pl dish st";align-items:center;gap:var(--s4)}
  .dish{font-size:var(--t3)}
  .st{font-size:var(--t0)}
  .pl{font-size:var(--t-1)}
  .pl b{font-size:var(--t3)}
}

/* rail divider with sleepers; draws in on scroll where supported */
.rail{height:22px;background:
  linear-gradient(var(--ink),var(--ink)) 0 4px/100% 4px no-repeat,
  linear-gradient(var(--ink),var(--ink)) 0 14px/100% 4px no-repeat,
  repeating-linear-gradient(90deg,var(--ink) 0 5px,#0000 5px 24px) 0 0/100% 100% no-repeat}
@supports (animation-timeline:view()){
  @media(prefers-reduced-motion:no-preference){
    .rail{animation:draw linear both;animation-timeline:view();animation-range:entry 10% entry 100%}
    @keyframes draw{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
  }
}

/* section heads */
.sec-head{margin-bottom:var(--s6);max-width:40ch}
.sec-head h2{font-size:var(--t4);margin-bottom:var(--s3)}
.sec-lede{font-size:var(--t1);line-height:1.5;color:var(--slate);margin:0}
@media(min-width:960px){.sec-head h2{font-size:var(--t5)}}

/* tickets */
.dishes{padding:var(--s7) 0 var(--s8);overflow-x:clip}
.tickets{list-style:none;margin:0;padding:0 0 0 var(--s4);position:relative;display:grid;gap:var(--s6)}
/* the rail the tickets hang on */
.tickets::before{content:"";position:absolute;left:0;top:0;bottom:0;width:10px;background:
  repeating-linear-gradient(180deg,var(--ink) 0 4px,#0000 4px 18px) 0 0/10px 100%,
  linear-gradient(var(--ink),var(--ink)) 3px 0/4px 100% no-repeat}
.ticket{position:relative;background:var(--white);border:3px solid var(--ink);display:grid;transition:transform .2s}
.ticket:nth-child(odd){transform:rotate(-.8deg)}
.ticket:nth-child(even){transform:rotate(.8deg)}
.ticket:hover{transform:translateY(-4px) rotate(0)}
/* notches: half-circles cut into the tear line */
.ticket .stub::before,.ticket .stub::after{content:"";position:absolute;z-index:2;width:28px;height:28px;border-radius:50%;background:var(--paper);border:3px solid var(--ink)}
.ticket .stub::before{left:-17px;bottom:-15.5px;clip-path:inset(0 0 0 50%)}
.ticket .stub::after{right:-17px;bottom:-15.5px;clip-path:inset(0 50% 0 0)}
.ticket .stub{aspect-ratio:3/2;border-bottom:3px dashed var(--ink)}
.ticket .stub img{-webkit-mask:none;mask:none}
.t-body{padding:var(--s4)}
.t-no{display:inline-block;font-family:var(--f-head);font-weight:700;font-size:var(--t-1);letter-spacing:.2em;text-transform:uppercase;color:var(--slate);margin-bottom:var(--s2)}
.t-body h3{font-size:var(--t2);margin-bottom:var(--s2)}
.t-body p{margin:0;max-width:44ch}
@media(min-width:800px){
  .tickets{padding-left:var(--s7);gap:var(--s5)}
  .tickets::before{left:var(--s4)}
  .ticket{grid-template-columns:5fr 6fr;align-items:stretch;max-width:880px}
  .ticket:nth-child(even){margin-left:var(--s7);grid-template-columns:6fr 5fr}
  .ticket:nth-child(even) .stub{order:2;border-bottom:0;border-left:3px dashed var(--ink)}
  .ticket .stub{border-bottom:0;border-right:3px dashed var(--ink);aspect-ratio:auto;min-height:240px}
  .ticket .stub img{position:absolute;inset:0}
  .ticket .stub::before{left:auto;right:-14.5px;top:-15.5px;bottom:auto;clip-path:inset(50% 0 0 0)}
  .ticket .stub::after{left:auto;right:-14.5px;bottom:-15.5px;clip-path:inset(0 0 50% 0)}
  .ticket:nth-child(even) .stub::before{right:auto;left:-14.5px}
  .ticket:nth-child(even) .stub::after{right:auto;left:-14.5px}
  .t-body{padding:var(--s5);align-self:center}
  .t-body h3{font-size:var(--t3)}
}

/* menu timetable */
.menu{background:var(--white);border-top:3px solid var(--ink);padding:var(--s7) 0 var(--s8)}
.menu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:var(--s6) var(--s5)}
.m-block h3{font-size:var(--t1);letter-spacing:.08em;padding-bottom:var(--s2);border-bottom:3px solid var(--ink);margin-bottom:var(--s2)}
.m-block ul{list-style:none;margin:0;padding:0}
.m-block li{padding:var(--s2) 0;border-bottom:1px dotted #8a8478;line-height:1.35}
.m-block p{margin:var(--s2) 0 0}
.note{color:var(--slate);font-size:var(--t0);margin-top:var(--s3)!important}
.m-wide{grid-column:1/-1;background:var(--paper);padding:var(--s4);border:3px solid var(--ink)}
.m-wide h3{border-bottom:0;padding-bottom:0}
.m-wide p{max-width:70ch}
.wide-photo{margin:var(--s7) 0 0;border:3px solid var(--ink)}
.wide-photo img{width:100%;aspect-ratio:16/8;object-fit:cover}

/* reviews */
.words{overflow:hidden;background:var(--ink);color:var(--paper);padding:var(--s7) 0 var(--s8)}
.q{margin:0;position:relative;padding-top:var(--s7)}
.q::before{content:"\201C";position:absolute;top:0;left:-4px;font-family:var(--f-head);font-weight:700;font-size:6rem;line-height:1;color:var(--red-lt);height:64px;overflow:visible}
.q blockquote{margin:0}
.q p{font-family:var(--f-head);font-weight:700;font-size:var(--t2);line-height:1.2;margin:0 0 var(--s3);letter-spacing:.005em}
.q figcaption{font-family:var(--f-head);font-weight:700;font-size:var(--t-1);letter-spacing:.18em;text-transform:uppercase;color:var(--mute-on-ink)}
.ghost{position:absolute;right:0;top:var(--s6);width:min(34vw,380px);height:auto;opacity:.09;transform:rotate(8deg);display:none}
.words .wrap{position:relative}
.q-lead p{font-size:var(--t4);text-transform:uppercase;line-height:1.05;max-width:16ch}
.q-pair,.q-short{display:grid;gap:var(--s2) var(--s6);margin-top:var(--s6)}
.q-sm p{font-size:var(--t1)}
.q-sm{padding-top:var(--s6)}
.q-short{border-top:1px dashed #5b564c;padding-top:var(--s3)}
@media(min-width:800px){
  .ghost{display:block}
  .q-lead p{font-size:var(--t6);max-width:14ch}
  .q-pair{grid-template-columns:1fr 1fr;margin-top:var(--s7)}
  .q-short{grid-template-columns:1fr 1fr;margin-top:var(--s7)}
  .q-pair .q p{font-size:var(--t2)}
}

/* visit sign */
.visit{padding:var(--s7) 0 var(--s8);overflow-x:clip}
.sign{border:6px solid var(--ink);background:var(--white);box-shadow:12px 12px 0 var(--ink)}
.sign-bar{background:var(--red);color:var(--white);padding:var(--s3) var(--s4)}
.sign-bar h2{font-size:var(--t2);letter-spacing:.04em}
.sign-body{display:grid}
.sign-photo{margin:0;border-bottom:6px solid var(--ink)}
.sign-photo img{width:100%;aspect-ratio:3/2;object-fit:cover}
.sign-info{padding:var(--s4)}
.phone{display:block;font-family:var(--f-head);font-weight:700;font-size:var(--t4);line-height:1.05;text-decoration:none;margin:0 0 var(--s3);letter-spacing:-.005em;min-height:44px}
.phone:hover{text-decoration:underline;text-decoration-thickness:4px;text-underline-offset:6px}
address{font-style:normal;font-family:var(--f-head);font-weight:700;font-size:var(--t1);line-height:1.3;margin:var(--s4) 0 var(--s3);text-transform:uppercase;letter-spacing:.02em}
.access{color:var(--slate);margin-bottom:var(--s4)}
.sign .cta .btn{flex:1 1 140px}
@media(min-width:900px){
  .sign-body{grid-template-columns:6fr 5fr}
  .sign-photo{border-bottom:0;border-right:6px solid var(--ink)}
  .sign-photo img{height:100%;aspect-ratio:auto}
  .sign-info{padding:var(--s6)}
  .phone{font-size:var(--t5)}
  .sign-bar{padding:var(--s3) var(--s6)}
  .sign-bar h2{font-size:var(--t3)}
}
.room{margin:var(--s7) 0 0;display:grid;gap:var(--s4);align-items:center}
.room figure{margin:0}
.room img{width:100%;max-width:340px;aspect-ratio:4/5;object-fit:cover;border:3px solid var(--ink);transform:rotate(-1.5deg)}
.room-copy h2{font-size:var(--t3);margin-bottom:var(--s2)}
.room-copy p{font-size:var(--t1);max-width:30ch;margin:0;color:var(--slate)}
@media(min-width:800px){
  .room{grid-template-columns:auto 1fr;gap:var(--s7)}
  .room img{max-width:300px}
  .room-copy h2{font-size:var(--t4)}
}

/* footer and dock */
.foot{background:var(--ink);color:var(--paper);padding:var(--s5) 0}
.foot p{margin:0;font-size:var(--t0)}
.dock{display:none}
@media(max-width:719px){
  .foot{padding-bottom:calc(var(--s5) + 76px)}
  .dock{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;gap:var(--s2);padding:var(--s2) var(--s3);background:var(--ink);border-top:3px solid var(--paper)}
  .dock .btn{flex:1;min-height:52px;padding:0 var(--s3)}
  .btn-dock{border-color:var(--paper);color:var(--paper)}
  .skip:focus{top:8px}
}

/* 404 */
.nf{background:var(--ink);color:var(--paper);min-height:70vh;padding:var(--s7) 0}
.nf h1{font-size:var(--t4);margin:var(--s3) 0}
.nf p{font-size:var(--t1);max-width:36ch}
.nf .btn-ghost{border-color:var(--paper);color:var(--paper)}
.nf .btn-ghost:hover{background:var(--paper);color:var(--ink)}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
  .btn:hover,.ticket:hover{transform:none}
}

@media(max-width:759px){html{scroll-padding-bottom:96px}}
.top-call{white-space:nowrap}
@media(min-width:720px) and (max-width:759px){
  .foot{padding-bottom:calc(var(--s5) + 76px)}
  .dock{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;gap:var(--s2);padding:var(--s2) var(--s3);background:var(--ink);border-top:3px solid var(--paper)}
  .dock .btn{flex:1;min-height:52px;padding:0 var(--s3)}
  .btn-dock{border-color:var(--paper);color:var(--paper)}
}

@media(min-width:900px) and (max-width:1049px){.phone{white-space:nowrap;font-size:40px}}
@media(max-width:374px){.phone{white-space:nowrap;font-size:clamp(28px,9.4vw,36px)}}
