/* ===========================================================================
   Components drawn by the theme's shortcodes (inc/render.php): the
   chalkboards and the menu, the sardine-tin favorites, the shellfish tags,
   the ways to eat an oyster, reviews, hours, the reservation ticket, the map.

   Everything here is live from wp-admin — the owner edits the data, never
   this markup — so it is styled as components, not as Elementor widgets.
   =========================================================================== */

/* ============================================================ chalkboards */

/* A chalkboard in a wooden frame: slate inside the padding box, wood across
   the border box, a bevel drawn over the frame, and depth inside the slate. */
.tf .board{
  --frame:clamp(12px, .6rem + .6vw, 18px);
  position:relative;color:var(--chalk);text-align:left;
  border:var(--frame) solid transparent;border-radius:8px;
  padding:clamp(1.3rem, .9rem + 1.6vw, 2.4rem) clamp(1.15rem, .7rem + 1.8vw, 2.5rem);
  background:var(--tx-slate) center / 760px auto padding-box,var(--tx-wood) center / 520px auto border-box;
  box-shadow:inset 0 0 0 2px rgba(0,0,0,.5),inset 0 0 48px rgba(0,0,0,.55),var(--shadow-board);
}
.tf .board::after{                                   /* the bevel on the frame */
  content:"";position:absolute;inset:calc(var(--frame) * -1);border-radius:8px;pointer-events:none;
  box-shadow:inset 2px 2px 0 rgba(255,255,255,.14),inset -2px -2px 0 rgba(0,0,0,.35),inset 0 0 0 1px rgba(0,0,0,.4);
}
.tf .board-tilt-left{transform:rotate(-1.3deg)}
.tf .board-tilt-right{transform:rotate(1.3deg)}
/* drawn straight onto a slate band: no frame, no slate of its own */
.tf .board.board-bare{border:0;padding:0;background:none;box-shadow:none}
.tf .board.board-bare::after{content:none}

.tf .board-head{text-align:center;margin-bottom:1.3rem}
.tf .board-title{
  display:inline-block;margin:0;padding-bottom:.35em;
  font-family:var(--font-chalk);font-weight:400;font-size:clamp(1.8rem, 1.4rem + 1.4vw, 2.6rem);letter-spacing:.05em;text-transform:uppercase;line-height:1.05;
  color:var(--chalk);background:var(--tx-rule) center bottom / 100% 8px no-repeat;
}
.tf .board-title-art{display:block;padding:0;background:none}
.tf .board-title-art img{display:block;margin:0 auto;width:auto;max-width:100%;max-height:clamp(64px, 3rem + 4vw, 118px)}
.tf .board-bare .board-title-art img{max-height:clamp(120px, 5rem + 8vw, 230px)}
.tf .board-note{max-width:52ch;margin:.8rem auto 0;font-size:.98rem;line-height:1.5;color:var(--chalk-2)}
.tf .board-empty{margin:0;text-align:center;color:var(--chalk-2);font-family:var(--font-chalk);font-size:1.3rem;text-transform:uppercase}
.tf .board-link{
  display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:1.4rem;
  font-family:var(--font-chalk);font-size:1.25rem;letter-spacing:.04em;text-transform:uppercase;color:var(--chalk-y);text-decoration:none;
}
.tf .board-link .ico{width:1.1em;height:1.1em;transition:transform .2s var(--ease)}
.tf .board-link:hover{color:var(--white)}
.tf .board-link:hover .ico{transform:translateX(4px)}

/* -------------------------------------------------------------- prices */

.tf .pr{display:inline-flex;align-items:baseline;gap:.3em;white-space:nowrap}
.tf .pl{                                             /* G, F, T, P, Cup, Bowl: chalked in a ring */
  display:inline-flex;align-items:center;justify-content:center;min-width:1.55em;height:1.55em;padding:0 .35em;
  border:1.5px solid currentColor;border-radius:1em;opacity:.85;
  font-size:.62em;line-height:1;letter-spacing:.03em;transform:translateY(-.12em);
}
.tf .cur{font-size:.68em;vertical-align:.32em;margin-right:.04em}
.tf .sep{margin:0 .45em;opacity:.45}
.tf .price-words{font-size:.82em;letter-spacing:.02em}

/* --------------------------------------------------------------- dishes */

.tf .dishes{list-style:none;margin:0;padding:0}
.tf .dish{padding:.8rem 0;border-bottom:1px dashed rgba(244,241,232,.16)}
.tf .dish:first-child{padding-top:0}
.tf .dish:last-child{border-bottom:0;padding-bottom:0}
.tf .dish-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:.2rem .5rem}
.tf .dish-name{
  margin:0;flex:0 1 auto;min-width:0;
  font-family:var(--font-chalk);font-weight:400;font-size:clamp(1.12rem, 1rem + .4vw, 1.32rem);letter-spacing:.03em;text-transform:uppercase;line-height:1.2;color:var(--chalk);
}
.tf .dish.is-starred .dish-name::before,.tf .cm-item.is-starred .cm-name::before{
  content:"";display:inline-block;width:.9em;height:.9em;margin-right:.35em;vertical-align:-.05em;background:var(--chalk-y);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m12 2.8 2.7 5.8 6.3.8-4.6 4.4 1.2 6.3L12 17l-5.6 3.1 1.2-6.3L3 9.4l6.3-.8Z'/%3E%3C/svg%3E") center / contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m12 2.8 2.7 5.8 6.3.8-4.6 4.4 1.2 6.3L12 17l-5.6 3.1 1.2-6.3L3 9.4l6.3-.8Z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.tf .dish-dots{flex:1 1 1.5rem;min-width:1.5rem;align-self:flex-end;margin-bottom:.38em;border-bottom:2px dotted rgba(244,241,232,.32)}
.tf .dish-price{margin-left:auto;font-family:var(--font-chalk);font-size:clamp(1.15rem, 1.05rem + .4vw, 1.38rem);color:var(--chalk-y);white-space:nowrap}
.tf .dish-desc{margin:.3rem 0 0;max-width:62ch;font-size:.95rem;line-height:1.5;color:var(--chalk-2)}
.tf .dish-addons{margin:.3rem 0 0;font-size:.9rem;line-height:1.45;color:var(--chalk-b)}
.tf .dish-out{display:inline-block;margin:.45rem 0 0;padding:.1rem .5rem;border:1.5px solid var(--closed);border-radius:4px;
  font-family:var(--font-chalk);font-size:.95rem;letter-spacing:.05em;text-transform:uppercase;color:var(--closed);transform:rotate(-2deg)}
.tf .is-unavailable > .dish-line,.tf .is-unavailable > .dish-desc{opacity:.5}
.tf .is-unavailable .dish-name{text-decoration:line-through;text-decoration-thickness:2px}

/* tags: chalked in a ring, small */
.tf .dish-tags{display:flex;flex-wrap:wrap;gap:.35rem;list-style:none;margin:.5rem 0 0;padding:0}
.tf .tag{
  display:inline-flex;align-items:center;padding:.12rem .55rem .08rem;border-radius:999px;border:1.5px solid rgba(244,241,232,.42);
  font-family:var(--font-display);font-size:.8rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;line-height:1.2;color:var(--chalk);
}
.tf .tag-signature,.tf .tag-house{border-color:var(--chalk-y);color:var(--chalk-y)}
.tf .tag-new{border-color:var(--chalk-b);color:var(--chalk-b)}
.tf .tag-spicy{border-color:#F4A27F;color:#F4A27F}

/* the raw bar on a board: each oyster large */
.tf .dishes-oysters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:1.1rem 2rem}
.tf .dishes-oysters .dish{padding:0 0 0 1.1rem;border:0;border-left:3px solid rgba(169,205,255,.45)}
.tf .dishes-oysters .dish-name{font-size:clamp(1.45rem, 1.2rem + .9vw, 1.9rem)}

/* the feature board (the Famous Fish Sandwich): four tickets chalked on */
.tf .dishes-feature{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem}
.tf .dishes-feature .dish{
  display:flex;flex-direction:column;padding:1.05rem 1.1rem 1rem;border:2px dashed rgba(244,241,232,.34);border-radius:12px;text-align:center;
}
.tf .dishes-feature .dish:first-child{padding-top:1.05rem}
.tf .dishes-feature .dish:last-child{padding-bottom:1rem;border-bottom:2px dashed rgba(244,241,232,.34)}
.tf .dishes-feature .dish-line{flex-direction:column;align-items:center;gap:.35rem}
.tf .dishes-feature .dish-dots{display:none}
.tf .dishes-feature .dish-name{font-size:clamp(1.25rem, 1.1rem + .5vw, 1.5rem)}
.tf .dishes-feature .dish-price{margin:0;font-size:clamp(1.7rem, 1.4rem + 1vw, 2.2rem)}
.tf .dishes-feature .dish-desc{margin-inline:auto;font-size:.9rem}
.tf .dishes-feature .dish-tags{justify-content:center}
@media (max-width:400px){ .tf .dishes-feature{grid-template-columns:1fr} }

/* -------------------------------------------------------------- cocktails */

.tf .cocktails{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:1rem}
.tf .cocktail{
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:.35rem;
  padding:1.2rem 1rem 1.1rem;border:2px dashed rgba(244,241,232,.3);border-radius:14px;
}
.tf .cocktail-ico{display:grid;place-items:center;width:58px;height:58px;margin-bottom:.2rem;color:var(--chalk-b)}
.tf .cocktail-ico .ico{width:46px;height:46px;stroke-width:1.25}
.tf .cocktail-name{margin:0;font-family:var(--font-chalk);font-weight:400;font-size:1.32rem;letter-spacing:.03em;text-transform:uppercase;line-height:1.15;color:var(--chalk)}
.tf .cocktail-desc{margin:0;font-size:.92rem;line-height:1.45;color:var(--chalk-2)}
.tf .cocktail-price{margin:.25rem 0 0;font-family:var(--font-chalk);font-size:1.3rem;color:var(--chalk-y)}
.tf .cocktail .dish-tags{justify-content:center}

/* ----------------------------------------------------------- names lists */

.tf .names{list-style:none;margin:0;padding:0;columns:2 200px;column-gap:2rem}
.tf .names li{
  break-inside:avoid;display:flex;align-items:baseline;gap:.5rem;padding:.4rem 0;border-bottom:1px dashed rgba(244,241,232,.14);
  font-family:var(--font-chalk);font-size:1.12rem;letter-spacing:.03em;text-transform:uppercase;line-height:1.25;color:var(--chalk);
}
.tf .names li::before{content:"";width:6px;height:6px;flex:none;border-radius:50%;background:var(--chalk-b);transform:translateY(-.2em)}
.tf .names-price{margin-left:auto;color:var(--chalk-y)}
.tf .names .is-unavailable{opacity:.5;text-decoration:line-through}

/* ------------------------------------------------------------ the menu */

/* the jump links: chalk chips that follow you down the board wall */
.tf .menu-tabs{
  position:sticky;top:calc(var(--wp-admin--admin-bar--height, 0px) + var(--header-h));z-index:20;
  margin:0 calc(var(--gutter) * -1) clamp(2.5rem, 2rem + 2vw, 4rem);padding:.65rem var(--gutter);
  background:rgba(22,29,27,.94);border-block:1px solid rgba(244,241,232,.16);
  box-shadow:0 18px 30px -24px rgba(0,0,0,.9);
}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .tf .menu-tabs{background:rgba(22,29,27,.82);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
}
.tf .menu-tabs ul{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem;list-style:none;margin:0 auto;padding:0;max-width:var(--container)}
.tf .menu-tabs li{list-style:none}
.tf .menu-tabs a{
  display:inline-flex;align-items:center;gap:.35rem;min-height:38px;padding:.4rem .85rem .35rem;border-radius:999px;border:1.5px solid rgba(244,241,232,.24);
  font-family:var(--font-display);font-size:1rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;line-height:1;
  color:var(--chalk);text-decoration:none;white-space:nowrap;transition:background-color .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease);
}
.tf .menu-tabs a:hover{border-color:var(--chalk);color:var(--white)}
.tf .menu-tabs a.is-active{background:var(--chalk);border-color:var(--chalk);color:var(--slate)}
.tf .menu-tabs-menu a{border-color:var(--gold);color:var(--gold-hi)}
.tf .menu-tabs-special a{border-color:var(--chalk-y);color:var(--chalk-y)}
.tf .menu-tabs-special a.is-active{background:var(--chalk-y);border-color:var(--chalk-y);color:var(--slate)}
.tf .menu-tabs-menu .ico{width:1em;height:1em}
/* phones: one row, swiped (no scrollbar drawn) */
@media (max-width:767px){
  .tf .menu-tabs ul{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity;
    -webkit-mask:linear-gradient(90deg,#000 85%,transparent);mask:linear-gradient(90deg,#000 85%,transparent);padding-right:2rem}
  .tf .menu-tabs ul::-webkit-scrollbar{display:none}
  .tf .menu-tabs li{scroll-snap-align:start}
}

/* One long chalkboard, like the one at the counter: each section under its
   chalk-lettered title, two short ones side by side, a chalk rule between
   rows. Every line runs a chalk line from the name to its price, and the
   prices stand in columns: G under G, F under F, a lone price in the last
   column (the renderer places them; see tf_chalk_slots()). */
.tf .chalkmenu{--cm-w:1400px;--cm-bg:var(--charcoal);--cm-line:#7E7E7B;max-width:var(--cm-w);margin-inline:auto;color:var(--chalk)}
.tf .cm-row{
  position:relative;display:grid;grid-template-columns:minmax(0,1fr);
  gap:clamp(2.6rem, 2rem + 2vw, 3.6rem) clamp(2rem, 1rem + 3vw, 4.2rem);
  padding-block:clamp(2.4rem, 1.8rem + 2vw, 3.6rem);
}
.tf .cm-row:first-child{padding-top:0}
.tf .cm-row:last-child{padding-bottom:0}
.tf .cm-row + .cm-row::before{             /* a chalk rule between rows */
  content:"";position:absolute;top:0;left:50%;width:min(560px,72%);height:10px;transform:translateX(-50%);pointer-events:none;
  background:var(--tx-rule) center / 100% 100% no-repeat;opacity:.32;
}
@media (min-width:1025px){ .tf .cm-pair{grid-template-columns:repeat(2,minmax(0,1fr))} }
.tf .cm-sec{min-width:0}

.tf .cm-head{max-width:62ch;margin:0 auto clamp(1.3rem, 1rem + 1vw, 2rem);text-align:center}
.tf .cm-title{
  display:inline-block;margin:0;padding:.38em .95em .32em;border:2px solid rgba(244,241,232,.85);border-radius:12px;
  box-shadow:0 0 0 5px var(--cm-bg, var(--slate)),0 0 0 7px rgba(244,241,232,.5);
  font-family:var(--font-chalk);font-weight:400;font-size:clamp(1.9rem, 1.4rem + 1.8vw, 3rem);letter-spacing:.06em;text-transform:uppercase;line-height:1;color:var(--chalk);
}
.tf .cm-title-art{display:block;padding:0;border:0;border-radius:0;box-shadow:none}
.tf .cm-title-art img{display:block;width:auto;max-width:min(100%,540px);height:auto;max-height:clamp(70px, 3.4rem + 2.6vw, 104px);margin:0 auto}
.tf .cm-note{max-width:58ch;margin:.85rem auto 0;font-size:1rem;line-height:1.5;color:var(--chalk-2)}
.tf .cm-empty{margin:0;text-align:center;font-family:var(--font-chalk);font-size:1.3rem;letter-spacing:.04em;text-transform:uppercase;color:var(--chalk-2)}

/* the lines: name and its chalk line, then the price columns. The rows
   share the list's columns (subgrid), so each column is as wide as its
   widest price and every price stands under the one above it. */
.tf .cm-list{--cm-gap:.75rem;list-style:none;margin:0;padding:0}
.tf .cm-list:is(.cm-cols-1,.cm-cols-2,.cm-cols-3){display:grid;column-gap:var(--cm-gap)}
.tf .cm-list.cm-cols-1{grid-template-columns:minmax(0,1fr) auto}
.tf .cm-list.cm-cols-2{grid-template-columns:minmax(0,1fr) repeat(2,auto)}
.tf .cm-list.cm-cols-3{grid-template-columns:minmax(0,1fr) repeat(3,auto)}
.tf .cm-item{
  display:grid;grid-column:1 / -1;grid-template-columns:subgrid;column-gap:var(--cm-gap);
  align-items:end;align-items:last baseline;padding:.5rem 0;
}
.tf .cm-cols-0 .cm-item{grid-template-columns:minmax(0,1fr)}
.tf .cm-item > :not(.cm-line,.cm-p){grid-column:1 / -1;justify-self:start}
/* no subgrid: fixed columns, wide enough for a labelled price */
@supports not (grid-template-columns:subgrid){
  .tf .cm-list:is(.cm-cols-1,.cm-cols-2,.cm-cols-3){display:block}
  .tf .cm-cols-1 .cm-item{grid-template-columns:minmax(0,1fr) 5.5rem}
  .tf .cm-cols-2 .cm-item{grid-template-columns:minmax(0,1fr) repeat(2,5.5rem)}
  .tf .cm-cols-3 .cm-item{grid-template-columns:minmax(0,1fr) repeat(3,5.5rem)}
  .tf .cm-slots-wide .cm-item{grid-template-columns:minmax(0,1fr) repeat(2,7rem)}
}
.tf .cm-line{display:flex;align-items:flex-end;align-items:last baseline;gap:var(--cm-gap);min-width:0}
.tf .cm-name{
  flex:0 1 auto;min-width:0;margin:0;max-width:30ch;overflow-wrap:anywhere;
  font-family:var(--font-chalk);font-weight:400;font-size:clamp(1.1rem, 1rem + .35vw, 1.3rem);letter-spacing:.035em;text-transform:uppercase;line-height:1.2;color:var(--chalk);
}
/* the chalk line: through the middle of the letters, and on through any
   empty column before the first price, so no line ever stops short */
.tf .cm-lead,.tf .cm-p.is-lead{display:block;height:0;border-bottom:1.5px solid var(--cm-line, #7D827C);transform:translateY(-.42em)}
.tf .cm-lead{flex:1 1 1rem;min-width:1rem}
.tf .cm-p.is-lead{margin-left:calc(var(--cm-gap) * -1 - 1px)}
.tf .cm-p{
  display:flex;align-items:baseline;gap:.4em;white-space:nowrap;
  font-family:var(--font-chalk);font-size:clamp(1.12rem, 1.02rem + .35vw, 1.34rem);line-height:1.2;color:var(--chalk-y);
}
.tf .cm-p .pl{color:var(--chalk)}
.tf .cm-list .cur{display:none}               /* the board at the counter has no $ signs either */
.tf .cm-desc{margin:.2rem 0 0;max-width:62ch;font-size:.94rem;line-height:1.5;color:var(--chalk-2)}
.tf .cm-addons{margin:.2rem 0 0;max-width:62ch;font-size:.9rem;line-height:1.45;color:var(--chalk-b)}
.tf .cm-tags{margin-top:.4rem}
.tf .cm-item.is-unavailable :is(.cm-name,.cm-p,.cm-desc,.cm-addons){opacity:.5}
.tf .cm-item.is-unavailable .cm-name{text-decoration:line-through;text-decoration-thickness:2px}

/* centred boards: the raw bar, the famous sandwich, the cocktails, and a
   section of one dish (the chowder) */
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) .cm-list{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;gap:1.15rem;text-align:center}
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) .cm-item{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:0 .6rem;max-width:46rem;padding:0;
}
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) .cm-item > :not(.cm-line,.cm-p){flex:1 1 100%;justify-self:auto}
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) .cm-line{flex:0 1 auto;justify-content:center}
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) .cm-lead{
  flex:none;width:.4em;min-width:0;height:.4em;border:0;border-radius:50%;background:var(--chalk-3);transform:translateY(-.3em);
}
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) .cm-p:is(.is-lead,.is-empty){display:none}
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) :is(.cm-desc,.cm-addons){margin-inline:auto}
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) .dish-tags{justify-content:center}
.tf :is(.cm-oysters,.cm-feature,.cm-cards,.cm-single) .dish-out{margin-inline:auto}
.tf :is(.cm-oysters,.cm-feature,.cm-single) .cm-name{max-width:none;font-size:clamp(1.3rem, 1.1rem + .6vw, 1.6rem)}
/* one dish: the name, then its prices underneath */
.tf .cm-single .cm-line{flex-basis:100%}
.tf .cm-single .cm-lead{display:none}
.tf .cm-single .cm-p{margin-top:.35rem;font-size:clamp(1.25rem, 1.1rem + .5vw, 1.5rem)}
.tf .cm-cards .cm-name{max-width:none}
.tf .cm-cards .cm-desc{margin-top:.1rem;font-size:.9rem}

/* wine and beer: two short columns, a dot of yellow chalk before each */
.tf .cm-namelist{
  columns:2;column-gap:clamp(1.4rem, 1rem + 1.5vw, 2.4rem);width:fit-content;max-width:100%;margin:0 auto;padding:0;list-style:none;text-align:left;
  font-family:var(--font-chalk);font-size:clamp(1.08rem, 1rem + .3vw, 1.22rem);letter-spacing:.04em;text-transform:uppercase;line-height:1.3;color:var(--chalk);
}
.tf .cm-namelist li{display:flex;align-items:baseline;gap:.6em;padding:.22rem 0;break-inside:avoid}
.tf .cm-namelist li::before{content:"";flex:none;width:.3em;height:.3em;border-radius:50%;background:var(--chalk-y);transform:translateY(-.3em)}
.tf .cm-names-price{margin-left:auto;padding-left:.6em;color:var(--chalk-y)}
.tf .cm-namelist .is-unavailable{opacity:.5;text-decoration:line-through}
@media (max-width:400px){ .tf .cm-namelist{columns:1} }

/* today's specials, chalked in yellow inside a dotted frame */
.tf .cm-specials{
  padding:clamp(1.5rem, 1rem + 1.6vw, 2.4rem) clamp(1.1rem, .5rem + 2.2vw, 2.6rem);
  border:3px dotted rgba(243,217,133,.8);border-radius:24px;background:rgba(243,217,133,.04);
}
.tf .cm-specials .cm-title{border-color:var(--chalk-y);box-shadow:0 0 0 5px var(--cm-bg, var(--slate)),0 0 0 7px rgba(243,217,133,.5);color:var(--chalk-y)}
.tf .cm-specials .cm-name{color:var(--white)}

/* phones: the columns tighten, a long name wraps over its line */
@media (max-width:560px){
  .tf .cm-list{--cm-gap:.5rem}
  .tf .cm-item{padding:.45rem 0}
  .tf .cm-name{max-width:none}
  .tf .cm-p .pl{font-size:.56em}
}

/* each board hangs from a nail on a wire */
.tf .board.board-tilt-left::before,.tf .board.board-tilt-right::before{
  content:"";position:absolute;left:50%;bottom:calc(100% + var(--frame) - 6px);width:150px;height:44px;margin-left:-75px;pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='44' viewBox='0 0 150 44'%3E%3Cpath d='M8 42 75 8l67 34' fill='none' stroke='%23B9B2A4' stroke-width='1.6'/%3E%3Ccircle cx='75' cy='7' r='5.5' fill='%23716A5E'/%3E%3Ccircle cx='73.5' cy='5.5' r='2' fill='%23D8D2C6'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* ======================================================= house favorites */

/* sardine tins: a pressed-metal rim around a printed label. Two printings
   alternate down the shelf (the brand cobalt, and cream with cobalt ink).
   Each label is numbered like a cannery's line, carries the badge fish over
   the dish, and has the price in an oval seal (the badge's own shape) sat on
   the label's gold frame. Content is centred, so a short dish fills the tin
   as well as a long one. */
.tf .tins{
  list-style:none;margin:2.6rem 0 2.8rem;padding:0;text-align:center;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:clamp(1.2rem, .9rem + 1vw, 1.8rem);
}
.tf .tin{
  --label:var(--cobalt);--band:var(--navy);--ink:var(--white);--ink-2:var(--on-dark-2);--band-ink:var(--gold-hi);
  --frame:rgba(227,182,90,.55);--fish:rgba(255,255,255,.07);--seal:var(--gold);--seal-ink:var(--abyss);--seal-ring:var(--gold-hi);
  position:relative;display:flex;flex-direction:column;min-height:260px;padding:0;
  border:7px solid transparent;border-radius:22px;
  background:
    var(--tx-swell-dark) 0 0 / 240px 48px padding-box,
    radial-gradient(130% 80% at 50% 0%,rgba(255,255,255,.1),rgba(255,255,255,0) 60%) padding-box,
    linear-gradient(var(--label),var(--label)) padding-box,
    linear-gradient(150deg,#FBFCFD 0%,#B3BDC8 24%,#F1F3F6 46%,#8C98A6 72%,#DCE1E7 100%) border-box;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.22),0 1px 0 rgba(255,255,255,.7),var(--shadow-2);
  color:var(--ink);transition:transform .3s var(--ease),box-shadow .3s var(--ease);
}
.tf .tin:nth-child(even){
  --label:#F7F2E8;--band:var(--cobalt);--ink:var(--navy);--ink-2:var(--text-2);--band-ink:var(--white);
  --frame:rgba(154,112,32,.5);--fish:rgba(0,62,143,.07);--seal:var(--navy);--seal-ink:var(--gold-hi);--seal-ring:var(--gold);
  background:
    var(--tx-paper) 0 0 / 240px 240px padding-box,
    linear-gradient(var(--label),var(--label)) padding-box,
    linear-gradient(150deg,#FBFCFD 0%,#B3BDC8 24%,#F1F3F6 46%,#8C98A6 72%,#DCE1E7 100%) border-box;
}
.tf .tin:hover{transform:translateY(-5px);box-shadow:inset 0 0 0 1px rgba(0,0,0,.22),0 1px 0 rgba(255,255,255,.7),0 2px 6px rgba(3,19,49,.1),0 44px 80px -34px rgba(3,19,49,.75)}
/* the printed band across the top of the lid */
/* (0,3,0): a centred column's `body .elementor .center p{margin-inline:auto}` would shrink it to a tab */
.tf .tin .tin-top{
  display:flex;align-items:center;gap:.6rem;margin:0;padding:.62rem 1rem .55rem;border-radius:15px 15px 0 0;
  background:var(--band);color:var(--band-ink);
  font-family:var(--font-display);font-size:.8rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;line-height:1.1;
}
.tf .tin-top::after{content:"";order:1;flex:1;min-width:1rem;border-top:2px dotted currentColor;opacity:.4}
.tf .tin-no{flex:none;order:0}
.tf .tin-sec{order:2;text-align:right}
/* the label: a gold hairline frame, the badge fish behind the name */
.tf .tin-body{
  position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.55rem;
  margin:.7rem .7rem 0;padding:1.5rem 1rem 2.2rem;border:1.5px solid var(--frame);border-radius:10px;
}
.tf .tin-body:last-child{margin-bottom:.7rem;padding-bottom:1.5rem}
.tf .tin-fish{
  position:absolute;inset:.9rem 8% auto;height:62%;pointer-events:none;background:var(--fish);
  -webkit-mask:var(--tx-fish) center / contain no-repeat;mask:var(--tx-fish) center / contain no-repeat;
}
.tf .tin-name{position:relative;margin:0;font-family:var(--font-display);font-weight:800;font-size:clamp(1.55rem, 1.3rem + .6vw, 1.9rem);line-height:.98;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);text-wrap:balance}
.tf .tin-desc{
  position:relative;margin:0;max-width:26ch;font-size:.92rem;line-height:1.45;color:var(--ink-2);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
/* the price seal: an oval sat on the frame's bottom line */
.tf .tin-price{
  position:relative;align-self:center;display:inline-flex;align-items:center;justify-content:center;
  min-width:7.2rem;height:3.1rem;margin:-1.55rem auto .9rem;padding:.1rem 1.3rem 0;border-radius:50%;
  background:var(--seal);color:var(--seal-ink);box-shadow:0 0 0 2.5px var(--label),0 0 0 4px var(--seal-ring),0 8px 16px -8px rgba(0,0,0,.55);
  font-family:var(--font-display);font-size:1.65rem;font-weight:800;line-height:1;white-space:nowrap;
}
.tf .tin-price .pl{margin-right:.35em;font-size:.6em;letter-spacing:.08em;text-transform:uppercase}
.tf .tin-price .cur{margin-right:.06em;font-size:.6em;align-self:flex-start;margin-top:.55em}
.tf .tin-price .price-words{font-size:.66em;letter-spacing:.06em;text-transform:uppercase}
/* 86'd today: a stamp across the corner */
.tf .tin-out{
  position:absolute;z-index:1;top:2.9rem;right:-.7rem;margin:0;padding:.32rem .7rem .26rem;border-radius:4px;transform:rotate(5deg);
  background:var(--closed);color:var(--abyss);font-family:var(--font-display);font-size:.8rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  box-shadow:0 6px 12px -6px rgba(0,0,0,.5);
}
.tf .tin.is-unavailable .tin-body,.tf .tin.is-unavailable .tin-price{opacity:.55}

/* ========================================================= shellfish tags */

/* The tag every shipment of oysters arrives with: manila card, notched top
   corners, a brass grommet, printed in navy. */
.tf .shelltag{
  --manila:#EFE4C6;
  position:relative;color:var(--navy);text-align:left;
  padding:3rem 1.4rem 1.3rem;
  background:
    linear-gradient(135deg,transparent 17px,var(--manila) 17.5px) top left / 51% 51% no-repeat,
    linear-gradient(225deg,transparent 17px,var(--manila) 17.5px) top right / 51% 51% no-repeat,
    linear-gradient(var(--manila),var(--manila)) bottom / 100% 50% no-repeat;
  filter:drop-shadow(0 18px 22px rgba(3,19,49,.32)) drop-shadow(0 2px 2px rgba(3,19,49,.2));
}
.tf .shelltag-hole{
  position:absolute;left:50%;top:13px;width:22px;height:22px;margin-left:-11px;border-radius:50%;
  background:radial-gradient(circle,#11213C 0 5px,#B78D2E 5.5px 8.5px,#E3C274 9px 10px,#8C6A1E 10.5px 11px);
}
.tf .shelltag-k{
  display:flex;justify-content:space-between;gap:.6rem;margin:0 0 .7rem;padding-bottom:.55rem;border-bottom:2px solid rgba(6,32,74,.8);
  font-family:var(--font-display);font-size:.82rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;line-height:1.1;
}
.tf .shelltag-k span{color:var(--cobalt);font-weight:700}
.tf .shelltag-title{margin:0 0 .6rem;font-family:var(--font-display);font-weight:800;font-size:2.1rem;line-height:.95;text-transform:uppercase}
.tf .shelltag-list{list-style:none;margin:0;padding:0}
.tf .shelltag-list li{display:grid;grid-template-columns:1fr auto;gap:0 .8rem;padding:.55rem 0;border-bottom:1px dashed rgba(6,32,74,.35)}
.tf .shelltag-name{font-family:var(--font-display);font-weight:800;font-size:1.35rem;line-height:1.1;text-transform:uppercase}
.tf .shelltag-price{font-family:var(--font-display);font-weight:800;font-size:1.3rem;color:var(--cobalt)}
.tf .shelltag-from{grid-column:1 / -1;font-size:.88rem;line-height:1.35;color:var(--gray)}
.tf .shelltag-out{grid-column:1 / -1;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#B23A1E}
.tf .shelltag-list .is-unavailable .shelltag-name{text-decoration:line-through;opacity:.6}
.tf .shelltag-link{
  display:inline-flex;align-items:center;gap:.45rem;margin-top:1rem;
  font-family:var(--font-display);font-size:1.05rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--cobalt);text-decoration:none;
}
.tf .shelltag-link .ico{width:1.1em;height:1.1em;transition:transform .2s var(--ease)}
.tf .shelltag-link:hover{color:var(--navy)}
.tf .shelltag-link:hover .ico{transform:translateX(4px)}

/* hung on the hero by its string, swaying a little */
.tf .shelltag-hero{width:min(340px,100%);margin-left:auto;transform:rotate(4deg);transform-origin:50% 0}
.tf .shelltag-string{
  position:absolute;left:50%;bottom:calc(100% - 22px);width:2px;height:150px;margin-left:-1px;pointer-events:none;
  background:linear-gradient(180deg,rgba(239,228,198,0),#E8DDBE 30%);transform-origin:50% 100%;
}
@media (prefers-reduced-motion:no-preference){
  html.js body:not(.elementor-editor-active) .shelltag-hero{animation:tf-sway 7s ease-in-out infinite}
}
@keyframes tf-sway{0%,100%{transform:rotate(4deg)}50%{transform:rotate(2deg)}}
@media (max-width:1024px){
  .tf .shelltag-hero{margin:1rem auto 0;transform:rotate(2deg)}
  .tf .shelltag-string{display:none}
}

/* every oyster on the ice, each on its own tag */
.tf .shelltags{
  list-style:none;margin:2.6rem 0 0;padding:0;text-align:left;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:2rem clamp(1.2rem, 2vw, 2rem);
}
.tf .shelltags .shelltag:nth-child(odd){transform:rotate(-1.4deg)}
.tf .shelltags .shelltag:nth-child(even){transform:rotate(1.2deg)}
.tf .shelltags .shelltag-name{display:block;margin:0 0 .8rem;font-size:2rem;line-height:.95}
.tf .shelltag-dl{margin:0;display:grid;gap:.45rem}
.tf .shelltag-dl div{display:grid;grid-template-columns:7.5rem 1fr;gap:.6rem;padding-bottom:.45rem;border-bottom:1px dashed rgba(6,32,74,.35)}
.tf .shelltag-dl dt{font-family:var(--font-display);font-size:.85rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--cobalt)}
.tf .shelltag-dl dd{margin:0;font-size:.98rem;line-height:1.4}
.tf .shelltag .dish-tags{margin-top:.8rem}
.tf .shelltag .tag{border-color:var(--navy);color:var(--navy)}
.tf .shelltag .tag-house,.tf .shelltag .tag-signature{background:var(--navy);color:var(--manila)}
.tf .shelltag .dish-out{border-color:#B23A1E;color:#B23A1E}
.tf .shelltag.is-unavailable{opacity:.7}

/* ======================================================= ways to eat one */

.tf .ways{
  list-style:none;margin:2.4rem 0 0;padding:0;
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(.9rem, .6rem + 1vw, 1.5rem);
}
.tf .way{
  display:flex;flex-direction:column;align-items:center;gap:.4rem;text-align:center;
  padding:1.6rem 1.1rem 1.4rem;border-radius:20px;
  background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(255,255,255,.66));border:1px solid rgba(255,255,255,.95);
  box-shadow:0 1px 0 #fff inset,0 24px 44px -28px rgba(0,62,143,.55);
}
.tf .way-ico{display:grid;place-items:center;width:66px;height:66px;margin-bottom:.4rem;border-radius:50%;background:var(--navy);color:var(--ice);box-shadow:0 0 0 6px rgba(0,62,143,.12)}
.tf .way-ico .ico{width:34px;height:34px}
.tf .way-name{margin:0;font-family:var(--font-display);font-weight:800;font-size:1.65rem;line-height:1;text-transform:uppercase;color:var(--charcoal)}
.tf .way-note{margin:0;font-size:.93rem;line-height:1.4;color:var(--text-2)}
.tf .way-price{margin:.4rem 0 0;padding:.3rem .8rem;border-radius:999px;background:var(--cobalt);color:var(--white);font-family:var(--font-display);font-size:1.25rem;font-weight:800;line-height:1.1}
.tf .way-price .pl{border-color:rgba(255,255,255,.7)}
.tf .ways-more{margin:1.8rem 0 0;text-align:center}
@media (max-width:1024px){ .tf .ways{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:400px){ .tf .ways{grid-template-columns:1fr} }

/* ================================================================ reviews */

.tf .stars{
  --stars:5;display:inline-block;width:6.2em;height:1.15em;flex:none;
  background:linear-gradient(90deg,var(--gold) calc(var(--stars) / 5 * 100%),rgba(29,30,32,.16) 0);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 23'%3E%3Cpath d='m12 1 3.2 6.6 7.3 1-5.3 5.1 1.3 7.2L12 17.5l-6.5 3.4 1.3-7.2-5.3-5.1 7.3-1Z'/%3E%3C/svg%3E") 0 0 / 1.24em 1.15em repeat-x;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 23'%3E%3Cpath d='m12 1 3.2 6.6 7.3 1-5.3 5.1 1.3 7.2L12 17.5l-6.5 3.4 1.3-7.2-5.3-5.1 7.3-1Z'/%3E%3C/svg%3E") 0 0 / 1.24em 1.15em repeat-x;
}
.tf .rating{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:.6rem 1.1rem;margin:.4rem 0 2.4rem}
.tf .rating-n{font-family:var(--font-display);font-weight:800;font-size:clamp(3.6rem, 2.6rem + 3vw, 5.2rem);line-height:.85;color:var(--cobalt)}
.tf .rating-r{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;text-align:left}
.tf .rating .stars{font-size:1.45rem}
.tf .rating-t{font-size:.98rem;color:var(--text-2)}
.tf .rating-link{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;color:var(--cobalt)}
.tf .rating-link .ico{width:1em;height:1em}

.tf .reviews{columns:3 290px;column-gap:1.4rem;text-align:left}
.tf .review{
  break-inside:avoid;-webkit-column-break-inside:avoid;display:block;position:relative;margin:0 0 1.4rem;
  padding:1.6rem 1.5rem 1.3rem;border-radius:20px;background:var(--white);border:1px solid rgba(0,62,143,.12);
  box-shadow:0 22px 44px -30px rgba(0,62,143,.55);
}
.tf .review::before{
  content:"\201C";position:absolute;right:1.2rem;top:.3rem;font-family:var(--font-display);font-weight:800;font-size:4.6rem;line-height:1;color:var(--ice);
}
.tf .review .stars{font-size:1.05rem}
.tf .review-q{margin:.8rem 0 1.1rem;padding:0;border:0}
.tf .review-q p{margin:0;font-size:1.02rem;line-height:1.6;color:var(--text)}
.tf .review-by{display:flex;align-items:center;gap:.65rem;font-size:.95rem}
.tf .review-av{display:grid;place-items:center;width:38px;height:38px;flex:none;border-radius:50%;background:var(--cobalt);color:var(--white);font-family:var(--font-display);font-weight:800;font-size:1.2rem}
.tf .review-name{font-weight:700;color:var(--charcoal)}
.tf .review-src{margin-left:auto;padding:.15rem .55rem;border-radius:999px;background:var(--foam);color:var(--cobalt);font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.tf .review-src-yelp{background:#FDECEA;color:#A42A1D}

/* ================================================================== hours */

.tf .hours-t{width:100%;border-collapse:collapse}
.tf .hours-t th,.tf .hours-t td{padding:.62rem 0;vertical-align:top;text-align:left;font-weight:400}
.tf .hours-t td{text-align:right}
.tf .hours-t td span{display:block}

/* the hours board: a chalkboard with today ringed */
.tf .hours.board .board-head{display:flex;flex-direction:column;align-items:center;gap:.7rem}
.tf .hours-status{margin:0;padding:.35rem .9rem;border:1.5px solid rgba(244,241,232,.3);border-radius:999px;font-size:.95rem;color:var(--chalk)}
.tf .hours.board .hours-t tr{border-bottom:1px dashed rgba(244,241,232,.16)}
.tf .hours.board .hours-t tr:last-child{border-bottom:0}
.tf .hours.board .hours-t th{font-family:var(--font-chalk);font-size:1.22rem;letter-spacing:.04em;text-transform:uppercase;color:var(--chalk);padding-left:.6rem}
.tf .hours.board .hours-t td{font-family:var(--font-chalk);font-size:1.22rem;color:var(--chalk-y);padding-right:.6rem;text-transform:uppercase}
.tf .hours.board .hours-t tr.is-today th,.tf .hours.board .hours-t tr.is-today td{background:rgba(243,217,133,.1)}
.tf .hours.board .hours-t tr.is-today th{border-radius:10px 0 0 10px}
.tf .hours.board .hours-t tr.is-today td{border-radius:0 10px 10px 0}
.tf .hours.board .hours-t tr.is-today th::after{
  content:"today";display:inline-block;margin-left:.6rem;padding:.05rem .45rem;border-radius:4px;background:var(--chalk-y);color:var(--slate);
  font-family:var(--font-display);font-size:.72rem;font-weight:800;letter-spacing:.12em;vertical-align:.2em;
}
.tf .hours-note{margin:1rem 0 0;font-size:.92rem;color:var(--chalk-2);text-align:center}
.tf .hours-special{margin-top:1.1rem;padding:.9rem 1rem;border:1.5px dashed var(--chalk-y);border-radius:12px}
.tf .hours-special-k{margin:0 0 .4rem;font-family:var(--font-chalk);font-size:1.1rem;text-transform:uppercase;color:var(--chalk-y)}
.tf .hours-special ul{list-style:none;margin:0;padding:0;font-size:.95rem;color:var(--chalk)}
.tf .hours-special li span{color:var(--chalk-2)}
.tf .hours-foot{margin:1.2rem 0 0;text-align:center}
.tf .hours-foot a{display:inline-flex;align-items:center;gap:.45rem;color:var(--chalk-2);text-decoration:none;font-size:.95rem}
.tf .hours-foot a:hover{color:var(--white)}
.tf .hours-foot .ico{width:1.05em;height:1.05em;color:var(--chalk-y)}

/* in the footer: compact lines */
.tf .hours-footer .hours-t th,.tf .hours-footer .hours-t td{padding:.28rem 0;font-size:.98rem;color:var(--on-dark-2)}
.tf .hours-footer .hours-t th{color:var(--on-dark);font-weight:700}
.tf .hours-footer .hours-t tr.is-today th,.tf .hours-footer .hours-t tr.is-today td{color:var(--gold-hi)}
.tf .hours-footer .hours-note,.tf .hours-footer .hours-special{color:var(--on-dark-3);text-align:left}
.tf .hours-footer .hours-special{border-color:var(--line-dark-strong)}
.tf .hours-footer .hours-special-k{font-family:var(--font-display);font-weight:800;letter-spacing:.1em;color:var(--gold-hi)}
.tf .hours-footer .hours-special ul{color:var(--on-dark-2)}

/* ========================================================== reservations */

/* a ticket: the call on the main part, the facts on the stub, notched where
   it tears */
.tf .ticket{
  --notch:16px;
  display:grid;grid-template-columns:minmax(0,1fr) 150px;max-width:620px;margin-inline:auto;
  filter:drop-shadow(0 26px 30px rgba(3,19,49,.28)) drop-shadow(0 2px 2px rgba(3,19,49,.18));
}
.tf .ticket-main{
  padding:2rem 2rem 1.8rem;background:var(--white);border-radius:18px 0 0 18px;
  -webkit-mask:radial-gradient(circle var(--notch) at 100% 0,#0000 98%,#000) top / 100% 51% no-repeat,radial-gradient(circle var(--notch) at 100% 100%,#0000 98%,#000) bottom / 100% 51% no-repeat;
          mask:radial-gradient(circle var(--notch) at 100% 0,#0000 98%,#000) top / 100% 51% no-repeat,radial-gradient(circle var(--notch) at 100% 100%,#0000 98%,#000) bottom / 100% 51% no-repeat;
}
.tf .ticket-k{margin:0 0 .9rem;font-family:var(--font-display);font-size:1rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--cobalt)}
.tf .ticket-phone{
  display:inline-flex;align-items:center;gap:.6rem;
  font-family:var(--font-display);font-weight:800;font-size:clamp(2.2rem, 1.6rem + 2.4vw, 3.4rem);line-height:1;color:var(--charcoal);text-decoration:none;
}
.tf .ticket-phone .ico{width:.8em;height:.8em;color:var(--gold)}
.tf .ticket-phone:hover{color:var(--cobalt)}
.tf .ticket-note{margin:1rem 0 0;font-size:1rem;color:var(--text-2)}
.tf .ticket-today{margin:1.2rem 0 0;padding-top:1rem;border-top:2px dotted var(--line-strong);font-size:.95rem;color:var(--text-2)}
.tf .ticket-today .open-status{font-weight:700;color:var(--charcoal);margin-right:.3rem}
.tf .ticket-stub{
  list-style:none;margin:0;padding:1.4rem .9rem;display:flex;flex-direction:column;justify-content:center;gap:1rem;text-align:center;
  background:var(--navy) var(--tx-swell-dark);color:var(--on-dark-2);border-radius:0 18px 18px 0;
  border-left:2px dashed rgba(180,213,255,.5);
  -webkit-mask:radial-gradient(circle var(--notch) at 0 0,#0000 98%,#000) top / 100% 51% no-repeat,radial-gradient(circle var(--notch) at 0 100%,#0000 98%,#000) bottom / 100% 51% no-repeat;
          mask:radial-gradient(circle var(--notch) at 0 0,#0000 98%,#000) top / 100% 51% no-repeat,radial-gradient(circle var(--notch) at 0 100%,#0000 98%,#000) bottom / 100% 51% no-repeat;
}
.tf .ticket-stub li{display:flex;flex-direction:column;gap:.15rem;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;line-height:1.2}
.tf .ticket-stub b{font-family:var(--font-display);font-size:2.2rem;font-weight:800;line-height:.95;color:var(--gold-hi);letter-spacing:0}
@media (max-width:560px){
  .tf .ticket{grid-template-columns:1fr}
  .tf .ticket-main{border-radius:18px 18px 0 0;padding:1.6rem 1.4rem;
    -webkit-mask:radial-gradient(circle var(--notch) at 0 100%,#0000 98%,#000) left / 51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% 100%,#0000 98%,#000) right / 51% 100% no-repeat;
            mask:radial-gradient(circle var(--notch) at 0 100%,#0000 98%,#000) left / 51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% 100%,#0000 98%,#000) right / 51% 100% no-repeat}
  .tf .ticket-stub{flex-direction:row;justify-content:space-around;border-left:0;border-top:2px dashed rgba(180,213,255,.5);border-radius:0 0 18px 18px;
    -webkit-mask:radial-gradient(circle var(--notch) at 0 0,#0000 98%,#000) left / 51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% 0,#0000 98%,#000) right / 51% 100% no-repeat;
            mask:radial-gradient(circle var(--notch) at 0 0,#0000 98%,#000) left / 51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% 0,#0000 98%,#000) right / 51% 100% no-repeat}
  .tf .ticket-stub li{font-size:.72rem}
  .tf .ticket-stub b{font-size:1.8rem}
}

/* ==================================================================== map */

.tf .map-frame{
  position:relative;aspect-ratio:4 / 3;border-radius:18px;overflow:hidden;
  border:10px solid transparent;background:var(--tx-tin-dark) center / 120px 120px border-box;box-shadow:var(--shadow-2);
}
.tf .map-frame iframe{display:block;width:100%;height:100%;border:0;border-radius:8px}
.tf .map-cta{
  position:absolute;left:1rem;bottom:1rem;display:inline-flex;align-items:center;gap:.45rem;padding:.6rem 1rem;border-radius:8px;
  background:var(--gold);color:var(--abyss);text-decoration:none;
  font-family:var(--font-display);font-size:1rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 10px 24px -10px rgba(0,0,0,.6);
}
.tf .map-cta:hover{background:var(--gold-hi);color:var(--abyss)}
.tf .map-cta .ico{width:1.1em;height:1.1em}

/* ================================================================ careers */

.tf .apply-card,.tf .jobs-form .wpforms-container,.tf .tf-preview-form{
  padding:clamp(1.5rem, 1rem + 2vw, 2.4rem);border-radius:var(--r-lg);background:var(--white);border:1px solid var(--line);box-shadow:var(--shadow-2);
}
.tf .apply-k{margin:0 0 .5rem;font-family:var(--font-display);font-size:2rem;font-weight:800;text-transform:uppercase;color:var(--charcoal)}
.tf .apply-t{color:var(--text-2)}
.tf .apply-links{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;margin:0}
.tf .apply-links a{display:inline-flex;align-items:center;gap:.45rem;font-weight:700;color:var(--cobalt);text-decoration:none}
.tf .apply-links .ico{width:1.1em;height:1.1em;color:var(--gold)}

/* WPForms (the careers form), in the house style */
.tf .wpforms-container .wpforms-field-label,.tf .tf-preview-form label{
  font-family:var(--font-display);font-size:1rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--charcoal);
}
.tf .wpforms-container .wpforms-field{padding:.55rem 0}
.tf .wpforms-container input:not([type=checkbox]):not([type=radio]):not([type=submit]),
.tf .wpforms-container select,.tf .wpforms-container textarea{
  width:100%;max-width:100%;min-height:48px;border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:.6rem .85rem;font:inherit;font-size:1rem;background:var(--white);
}
.tf .wpforms-container .wpforms-submit,.tf .wpforms-container button[type=submit],.tf .tf-preview-form button{
  min-height:52px;padding:.8rem 1.6rem;border:2px solid var(--gold);border-radius:var(--r-sm);background:var(--gold);color:var(--abyss);cursor:pointer;
  font-family:var(--font-display);font-size:1.05rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
}
.tf .wpforms-container .wpforms-submit:hover,.tf .wpforms-container button[type=submit]:hover{background:var(--gold-hi);border-color:var(--gold-hi)}
.tf .tf-preview-form{display:grid;gap:.8rem}
.tf .tf-preview-form p{margin:0}

/* ======================================================= hero status chip */

.tf .status-chip{
  display:inline-flex;align-items:center;flex-wrap:wrap;gap:.3rem .7rem;margin:0;padding:.5rem 1rem;border-radius:999px;
  background:rgba(3,19,49,.55);border:1px solid rgba(220,235,255,.3);color:var(--white);font-size:.95rem;line-height:1.3;
}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .tf .status-chip{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
}
.tf .status-chip .open-status{font-weight:700}
.tf .status-chip-t{color:var(--on-dark-2)}
.tf .status-chip-t::before{content:"·";margin-right:.6rem;color:var(--on-dark-3)}

/* =================================================== editor hints (only) */

.tf .tf-hint{padding:1rem 1.2rem;border:2px dashed rgba(194,145,43,.7);border-radius:8px;background:rgba(194,145,43,.08);color:inherit;font-size:.92rem}
