/* ==========================================================================
   THE CONFERENCE — "Ideas Meet Here"
   Design system: typography, grid, time, motion, no photography.
   Display: Bricolage Grotesque · Body: Inter · Metadata: IBM Plex Mono
   ========================================================================== */

:root{
  --ink:#141311;
  --ink-2:#211f1b;
  --ink-3:#332f28;
  --ivory:#f4efe4;
  --ivory-2:#eae3d3;
  --paper:#fbf8f1;
  --cobalt:#2438e0;
  --cobalt-deep:#1a2aa8;
  --vermilion:#e8431f;
  --vermilion-deep:#b8330f;
  --lime:#c3d445;
  --lime-deep:#9aab2a;
  --line:rgba(20,19,17,.14);
  --line-on-dark:rgba(244,239,228,.18);

  --display:'Bricolage Grotesque', 'Arial Black', sans-serif;
  --sans:'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --mono:'IBM Plex Mono', 'SFMono-Regular', monospace;

  --max:1360px;
  --gutter:clamp(20px,4vw,56px);
  --pad:clamp(56px,9vw,132px);
  --ease:cubic-bezier(.16,.8,.28,1);
  --col-gap:clamp(14px,1.6vw,24px);
}

*,*::before,*::after{box-sizing:border-box;}
[hidden]{display:none !important;}
html{-webkit-text-size-adjust:100%;}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important;}
}

body{
  margin:0;
  background:var(--ivory);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit; text-decoration:none;}
button{font-family:inherit; cursor:pointer; background:none; border:0;}
ul{margin:0; padding:0; list-style:none;}
h1,h2,h3,h4,p,figure{margin:0;}
input,textarea,select{font-family:inherit; font-size:inherit;}
svg{display:block;}

:focus-visible{outline:3px solid var(--cobalt); outline-offset:2px;}
.ink :focus-visible, .on-ink :focus-visible{outline-color:var(--lime);}

.skip-link{position:absolute; left:-999px; top:0; background:var(--cobalt); color:var(--ivory); padding:12px 20px; z-index:999; font-family:var(--mono); font-size:13px;}
.skip-link:focus{left:12px; top:12px;}

.wrap{max-width:var(--max); margin:0 auto; padding-left:var(--gutter); padding-right:var(--gutter);}
.section{padding-top:var(--pad); padding-bottom:var(--pad); position:relative;}
.ink{background:var(--ink); color:var(--ivory);}
.cobalt-field{background:var(--cobalt); color:var(--ivory);}
.vermilion-field{background:var(--vermilion); color:var(--ivory);}
.lime-field{background:var(--lime); color:var(--ink);}
.paper-field{background:var(--paper);}

/* ---------- grid system: 12 / 8 / 4 ---------- */
.grid{display:grid; grid-template-columns:repeat(12,1fr); gap:var(--col-gap);}
@media (max-width:980px){ .grid{grid-template-columns:repeat(8,1fr);} }
@media (max-width:620px){ .grid{grid-template-columns:repeat(4,1fr);} }
.grid-lines{position:absolute; inset:0; display:grid; grid-template-columns:repeat(12,1fr); gap:var(--col-gap); padding-left:var(--gutter); padding-right:var(--gutter); pointer-events:none; z-index:0; max-width:var(--max); margin:0 auto;}
.grid-lines span{border-left:1px solid var(--line);}
.grid-lines span:last-child{border-right:1px solid var(--line);}
.on-ink .grid-lines span{border-color:var(--line-on-dark);}
@media (max-width:980px){ .grid-lines{grid-template-columns:repeat(8,1fr);} }
@media (max-width:620px){ .grid-lines{grid-template-columns:repeat(4,1fr);} }

/* ---------- type ---------- */
.display{font-family:var(--display); font-weight:800; letter-spacing:-.01em; line-height:.92; text-transform:uppercase;}
.display-xxl{font-size:clamp(52px,11vw,168px);}
.display-xl{font-size:clamp(40px,7.2vw,104px);}
.display-l{font-size:clamp(32px,5vw,72px);}
.display-m{font-size:clamp(24px,3.4vw,44px);}
.display-s{font-size:clamp(19px,2.2vw,26px); text-transform:none; letter-spacing:-.005em; line-height:1.15;}

.lede{font-size:clamp(17px,1.8vw,21px); line-height:1.55; color:var(--ink-3); max-width:620px;}
.on-ink .lede, .ink .lede{color:var(--ivory-2);}

.label{font-family:var(--mono); font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3);}
.on-ink .label, .ink .label{color:var(--ivory-2);}
.label.cobalt-tx{color:var(--cobalt);}
.label.vermilion-tx{color:var(--vermilion);}

.num{font-family:var(--mono); font-variant-numeric:tabular-nums;}

.section-head{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:clamp(32px,5vw,64px);}

/* ---------- buttons / controls ---------- */
.btn{display:inline-flex; align-items:center; gap:10px; padding:14px 24px; font-family:var(--sans); font-weight:600; font-size:15px; border:1.5px solid var(--ink); border-radius:2px; transition:background .18s var(--ease), color .18s var(--ease), border-color .18s var(--ease);}
.btn-solid{background:var(--ink); color:var(--ivory);}
.btn-solid:hover{background:var(--cobalt); border-color:var(--cobalt);}
.btn-outline{background:transparent; color:var(--ink); border-color:var(--ink);}
.btn-outline:hover{background:var(--ink); color:var(--ivory);}
.on-ink .btn-outline, .ink .btn-outline{color:var(--ivory); border-color:var(--ivory);}
.on-ink .btn-outline:hover, .ink .btn-outline:hover{background:var(--ivory); color:var(--ink);}
.on-ink .btn-solid, .ink .btn-solid{background:var(--ivory); color:var(--ink); border-color:var(--ivory);}
.on-ink .btn-solid:hover, .ink .btn-solid:hover{background:var(--cobalt); color:var(--ivory); border-color:var(--cobalt);}
.btn-vermilion{background:var(--vermilion); color:var(--ivory); border-color:var(--vermilion);}
.btn-vermilion:hover{background:var(--vermilion-deep); border-color:var(--vermilion-deep);}
.btn:disabled{opacity:.4; cursor:not-allowed;}
.btn-sm{padding:9px 16px; font-size:13px;}
.btn-block{width:100%; justify-content:center;}

/* ---------- header ---------- */
.site-header{position:sticky; top:0; z-index:80; background:var(--ivory); border-bottom:1px solid var(--line);}
.header-row{max-width:var(--max); margin:0 auto; padding:16px var(--gutter); display:flex; align-items:center; justify-content:space-between; gap:24px;}
.wordmark{font-family:var(--display); font-weight:800; font-size:19px; letter-spacing:-.01em; display:flex; align-items:center; gap:8px; white-space:nowrap;}
.wordmark .dot{width:8px; height:8px; border-radius:50%; background:var(--vermilion); display:inline-block;}
.main-nav{display:flex; align-items:center; gap:28px;}
.main-nav ul{display:flex; gap:24px;}
.main-nav a{font-family:var(--mono); font-size:13px; letter-spacing:.04em; text-transform:uppercase; padding:6px 0; border-bottom:2px solid transparent; transition:border-color .15s var(--ease), color .15s;}
.main-nav a:hover, .main-nav a.active{border-color:var(--vermilion);}
.header-actions{display:flex; align-items:center; gap:14px;}
.icon-btn{width:38px; height:38px; display:flex; align-items:center; justify-content:center; border:1px solid var(--line); border-radius:2px; color:var(--ink);}
.icon-btn:hover{border-color:var(--ink);}
.schedule-pill{display:flex; align-items:center; gap:8px; font-family:var(--mono); font-size:13px; border:1.5px solid var(--ink); padding:8px 14px; border-radius:2px;}
.schedule-pill .count{background:var(--vermilion); color:var(--ivory); border-radius:50%; min-width:20px; height:20px; display:flex; align-items:center; justify-content:center; font-size:11px; padding:0 4px;}
.schedule-pill:hover{background:var(--ink); color:var(--ivory);}
.menu-btn{width:40px; height:40px; display:none; flex-direction:column; align-items:center; justify-content:center; gap:5px;}
.menu-btn span{width:22px; height:2px; background:var(--ink); display:block;}

@media (max-width:980px){
  .main-nav ul{display:none;}
  .header-actions .schedule-pill span.label-text{display:none;}
  .menu-btn{display:flex;}
}
@media (max-width:620px){
  .wordmark{font-size:15px;}
}

/* ---------- mobile drawer ---------- */
.mobile-drawer{position:fixed; inset:0; background:var(--ink); color:var(--ivory); z-index:200; transform:translateX(100%); transition:transform .32s var(--ease); display:flex; flex-direction:column; padding:20px var(--gutter) 32px;}
.mobile-drawer.open{transform:translateX(0);}
.mobile-drawer-top{display:flex; justify-content:space-between; align-items:center; margin-bottom:40px;}
.mobile-drawer-close{width:38px; height:38px; border:1px solid var(--line-on-dark); display:flex; align-items:center; justify-content:center; font-size:22px; color:var(--ivory);}
.mobile-drawer nav{display:flex; flex-direction:column; gap:4px; flex:1;}
.mobile-drawer nav a{font-family:var(--display); font-size:clamp(28px,8vw,42px); text-transform:uppercase; padding:10px 0; border-bottom:1px solid var(--line-on-dark); display:flex; justify-content:space-between; align-items:center;}
.mobile-drawer nav a .num{font-family:var(--mono); font-size:13px; color:var(--stone,#8a8171);}
.mobile-drawer-foot{display:flex; flex-direction:column; gap:14px; margin-top:24px;}

/* ---------- footer ---------- */
.site-footer{background:var(--ink); color:var(--ivory); padding:var(--pad) 0 32px;}
.footer-grid{display:grid; grid-template-columns:1.4fr repeat(4,1fr); gap:32px; padding-bottom:56px; border-bottom:1px solid var(--line-on-dark);}
.footer-col h4{font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--lime); margin-bottom:16px;}
.footer-col a, .footer-col p{display:block; font-size:14px; color:var(--ivory-2); margin-bottom:10px;}
.footer-col a:hover{color:var(--ivory); text-decoration:underline;}
.footer-brand{font-family:var(--display); font-size:clamp(26px,3vw,34px); text-transform:uppercase; margin-bottom:14px; line-height:1;}
.footer-bottom{display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; padding-top:24px; font-family:var(--mono); font-size:12px; color:var(--ivory-2);}
.footer-bottom a{color:var(--ivory-2);}
.footer-bottom a:hover{color:var(--lime);}
@media (max-width:980px){ .footer-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:620px){ .footer-grid{grid-template-columns:1fr;} }

/* ---------- monogram (typographic speaker mark) ---------- */
.monogram{font-family:var(--display); font-weight:800; display:flex; align-items:center; justify-content:center; text-transform:uppercase; border:1.5px solid currentColor; aspect-ratio:1;}
.mono-cobalt{color:var(--cobalt); background:rgba(36,56,224,.08);}
.mono-vermilion{color:var(--vermilion); background:rgba(232,67,31,.08);}
.mono-lime{color:var(--lime-deep); background:rgba(195,212,69,.16);}
.mono-ink{color:var(--ink); background:rgba(20,19,17,.06);}

/* ---------- hero ---------- */
.hero{padding-top:clamp(28px,6vw,56px); padding-bottom:clamp(48px,7vw,88px); border-bottom:1px solid var(--line); position:relative; overflow:hidden;}
.hero-eyebrow{display:flex; align-items:center; gap:10px; margin-bottom:20px;}
.hero-eyebrow .dot{width:8px; height:8px; border-radius:50%; background:var(--vermilion); animation:pulse 2.4s infinite;}
@keyframes pulse{0%,100%{opacity:1;} 50%{opacity:.3;}}
.hero-title{margin:0;}
.hero-title .line{display:block; overflow:hidden;}
.hero-title span.reveal-word{display:inline-block; transform:translateY(105%); animation:riseUp .7s var(--ease) forwards;}
@keyframes riseUp{to{transform:translateY(0);}}
.hero-sub{margin-top:28px; display:grid; grid-template-columns:2fr 1fr; gap:40px; align-items:end;}
@media (max-width:820px){ .hero-sub{grid-template-columns:1fr;} }
.hero-meta{display:flex; flex-wrap:wrap; gap:28px; margin-top:32px; padding-top:28px; border-top:1px solid var(--line);}
.hero-meta-item .num{display:block; font-size:26px; font-weight:700; color:var(--ink);}
.hero-cta-row{display:flex; flex-wrap:wrap; gap:14px; margin-top:32px;}
.countdown{display:flex; gap:18px; font-family:var(--mono);}
.countdown-unit{text-align:center;}
.countdown-unit .val{font-size:clamp(28px,4vw,42px); font-weight:700; display:block; line-height:1;}
.countdown-unit .lbl{font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-3);}

/* ---------- cards: speaker ---------- */
.speaker-card{border:1px solid var(--line); padding:24px; display:flex; flex-direction:column; gap:16px; background:var(--paper); color:var(--ink); transition:border-color .2s, transform .2s; position:relative;}
.speaker-card:hover{border-color:var(--ink);}
.speaker-card-top{display:flex; justify-content:space-between; align-items:flex-start; gap:12px;}
.speaker-card .monogram{width:52px; height:52px; font-size:18px; border-radius:50%; flex:none;}
.speaker-card h3{font-family:var(--display); font-size:clamp(20px,2.2vw,26px); text-transform:uppercase; line-height:1.02; color:var(--ink);}
.speaker-card .role{font-size:14px; color:var(--ink-3); margin-top:4px;}
.speaker-card .label{color:var(--ink-3);}
.speaker-meta{display:flex; flex-wrap:wrap; gap:10px 18px; font-family:var(--mono); font-size:12px; color:var(--ink-3); border-top:1px solid var(--line); padding-top:14px;}
.speaker-meta strong{color:var(--ink); font-weight:600;}
.discipline-tag{display:inline-block; font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.04em; padding:3px 9px; border:1px solid currentColor; border-radius:20px;}

/* ---------- cards: session ---------- */
.session-card{border:1px solid var(--line); background:var(--paper); color:var(--ink); padding:22px; display:flex; flex-direction:column; gap:14px; transition:border-color .2s;}
.session-card:hover{border-color:var(--ink);}
.session-card h3{color:var(--ink);}
.session-card .label{color:var(--ink-3);}
.session-time-row{display:flex; justify-content:space-between; align-items:baseline; font-family:var(--mono); font-size:13px;}
.session-time-row .time{font-size:20px; font-weight:600; font-family:var(--mono);}
.session-type-tag{font-family:var(--mono); font-size:11px; text-transform:uppercase; letter-spacing:.05em; padding:3px 8px; border-radius:20px; border:1px solid currentColor;}
.session-card h3{font-family:var(--display); font-size:clamp(19px,2vw,23px); text-transform:uppercase; line-height:1.05;}
.session-card .desc{font-size:14px; color:var(--ink-3); line-height:1.55;}
.session-foot{display:flex; justify-content:space-between; align-items:center; gap:12px; border-top:1px solid var(--line); padding-top:14px; margin-top:auto;}
.session-foot .meta{font-family:var(--mono); font-size:12px; color:var(--ink-3);}
.save-btn{display:inline-flex; align-items:center; gap:8px; font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.04em; border:1.5px solid var(--ink); padding:8px 14px; border-radius:2px; transition:background .15s,color .15s;}
.save-btn:hover{background:var(--ink); color:var(--ivory);}
.save-btn.is-saved{background:var(--vermilion); border-color:var(--vermilion); color:var(--ivory);}
.save-btn.is-saved:hover{background:var(--vermilion-deep); border-color:var(--vermilion-deep);}
.capacity-row{display:flex; align-items:center; gap:8px; font-family:var(--mono); font-size:11px;}
.capacity-dot{width:8px; height:8px; border-radius:50%; flex:none;}
.cap-Available .capacity-dot{background:var(--lime-deep);}
.cap-Filling.Fast .capacity-dot, .cap-Filling-Fast .capacity-dot{background:var(--vermilion);}
.cap-Full .capacity-dot{background:var(--ink-3);}
.cap-Registration.Required .capacity-dot, .cap-Registration-Required .capacity-dot{background:var(--cobalt);}
.cap-Open .capacity-dot{background:var(--lime-deep);}

/* ---------- filter bar ---------- */
.filter-bar{display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin-bottom:36px; padding:18px; border:1px solid var(--line); background:var(--paper);}
.filter-bar select, .filter-bar input[type=search]{border:1px solid var(--line); padding:10px 12px; font-family:var(--mono); font-size:13px; background:var(--ivory); border-radius:2px; min-width:150px;}
.filter-bar input[type=search]{flex:1; min-width:200px;}
.filter-group{display:flex; flex-direction:column; gap:4px;}
.filter-group label{font-family:var(--mono); font-size:10px; text-transform:uppercase; color:var(--ink-3); letter-spacing:.04em;}
.chip-row{display:flex; flex-wrap:wrap; gap:8px;}
.chip{font-family:var(--mono); font-size:12px; padding:7px 13px; border:1px solid var(--ink); border-radius:20px; transition:background .15s,color .15s;}
.chip[aria-pressed=true]{background:var(--ink); color:var(--ivory);}
.chip:hover{background:var(--ink); color:var(--ivory);}
.results-count{font-family:var(--mono); font-size:12px; color:var(--ink-3); margin-bottom:20px;}
.empty-state{text-align:center; padding:80px 20px; border:1px dashed var(--line);}
.empty-state h3{font-family:var(--display); font-size:clamp(24px,3vw,36px); text-transform:uppercase; margin-bottom:12px;}
.empty-state .btn-row{display:flex; gap:12px; justify-content:center; margin-top:24px; flex-wrap:wrap;}

/* ---------- schedule page: room lanes ---------- */
.day-tabs{display:flex; gap:0; border:1px solid var(--ink); width:fit-content; margin-bottom:32px;}
.day-tab{font-family:var(--mono); font-size:13px; text-transform:uppercase; padding:12px 22px; border-right:1px solid var(--ink);}
.day-tab:last-child{border-right:0;}
.day-tab[aria-selected=true]{background:var(--ink); color:var(--ivory);}
.schedule-grid{display:grid; grid-template-columns:80px repeat(5,1fr); border-top:1px solid var(--line); border-left:1px solid var(--line); overflow-x:auto;}
.schedule-room-head{font-family:var(--mono); font-size:12px; text-transform:uppercase; padding:12px 10px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--paper); position:sticky; top:0;}
.schedule-time-col{border-right:1px solid var(--line); padding-top:0;}
.time-mark{font-family:var(--mono); font-size:11px; color:var(--ink-3); padding:8px 8px; border-bottom:1px solid var(--line); height:64px; display:flex; align-items:flex-start;}
.room-lane{border-right:1px solid var(--line); position:relative; min-height:64px;}
.lane-session{position:absolute; left:4px; right:4px; border:1px solid var(--ink); background:var(--paper); padding:8px 10px; overflow:hidden; font-size:12px; display:flex; flex-direction:column; gap:4px; transition:box-shadow .15s;}
.lane-session:hover{box-shadow:3px 3px 0 var(--ink);}
.lane-session .t-title{font-family:var(--sans); font-weight:700; font-size:12.5px; line-height:1.2;}
.lane-session .t-time{font-family:var(--mono); font-size:10.5px; color:var(--ink-3);}
.lane-session.is-saved{border-color:var(--vermilion); border-width:2px;}
.lane-session.topic-Leadership{border-left:4px solid var(--cobalt);}
.lane-session.topic-Technology{border-left:4px solid var(--lime-deep);}
.lane-session.topic-Design{border-left:4px solid var(--vermilion);}
.lane-session.topic-Sustainability{border-left:4px solid var(--lime-deep);}
.lane-session.topic-Innovation{border-left:4px solid var(--cobalt);}
.lane-session.topic-Community{border-left:4px solid var(--ink-3);}
.lane-session.topic-Creative.Economy, .lane-session.topic-Creative-Economy{border-left:4px solid var(--vermilion);}
.lane-session.topic-Future.of.Work, .lane-session.topic-Future-of-Work{border-left:4px solid var(--cobalt);}

/* mobile schedule: chronological cards */
.mobile-schedule{display:none;}
@media (max-width:900px){
  .schedule-grid{display:none;}
  .mobile-schedule{display:block;}
}
.time-group{margin-bottom:32px;}
.time-group-head{font-family:var(--mono); font-size:15px; font-weight:600; padding-bottom:10px; border-bottom:2px solid var(--ink); margin-bottom:14px; display:flex; align-items:center; gap:10px;}

/* ---------- venue map ---------- */
.venue-map-wrap{display:grid; grid-template-columns:1.3fr 1fr; gap:40px; align-items:start;}
@media (max-width:900px){ .venue-map-wrap{grid-template-columns:1fr;} }
.venue-svg-room{cursor:pointer; transition:fill .15s;}
.venue-svg-room:hover, .venue-svg-room.active{fill:var(--cobalt) !important; opacity:.16;}
.venue-svg-label{font-family:var(--mono); font-size:11px; text-transform:uppercase; pointer-events:none;}
.room-info-panel{border:1px solid var(--line); padding:24px; background:var(--paper); min-height:220px;}
.room-list-mobile{display:none;}
@media (max-width:640px){
  .room-list-mobile{display:flex; flex-direction:column; gap:10px;}
}

/* ---------- ticket cards ---------- */
.ticket-card{border:1px solid var(--ink); padding:28px; display:flex; flex-direction:column; gap:18px; position:relative;}
.ticket-card.featured{border-width:2px; border-color:var(--vermilion);}
.ticket-price{font-family:var(--display); font-size:clamp(30px,3vw,42px); font-weight:800;}
.ticket-price .currency{font-size:18px; vertical-align:super;}
.qty-control{display:flex; align-items:center; gap:0; border:1px solid var(--ink); width:fit-content;}
.qty-control button{width:38px; height:38px; font-size:18px; font-weight:700;}
.qty-control button:hover{background:var(--ink); color:var(--ivory);}
.qty-control .qty-val{width:44px; text-align:center; font-family:var(--mono); font-size:15px;}
table.compare-table{width:100%; border-collapse:collapse; font-size:14px;}
table.compare-table th, table.compare-table td{border:1px solid var(--line); padding:14px; text-align:left; vertical-align:top;}
table.compare-table th{font-family:var(--mono); font-size:12px; text-transform:uppercase; background:var(--paper);}
@media (max-width:760px){
  table.compare-table{display:none;}
}
.ticket-total-bar{position:sticky; bottom:0; background:var(--ink); color:var(--ivory); padding:20px var(--gutter); display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; margin-top:40px;}

/* ---------- FAQ accordion ---------- */
.accordion-item{border-bottom:1px solid var(--line);}
.accordion-trigger{display:flex; justify-content:space-between; align-items:center; width:100%; padding:22px 0; text-align:left; gap:20px;}
.accordion-trigger h3{font-family:var(--display); font-size:clamp(17px,1.8vw,21px); text-transform:none; font-weight:700;}
.accordion-trigger .plus{font-size:22px; font-family:var(--mono); transition:transform .2s var(--ease); flex:none;}
.accordion-trigger[aria-expanded=true] .plus{transform:rotate(45deg);}
.accordion-panel{max-height:0; overflow:hidden; transition:max-height .25s var(--ease);}
.accordion-panel-inner{padding-bottom:22px; font-size:15px; color:var(--ink-3); max-width:720px; line-height:1.6;}
.faq-cat-pills{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:32px;}

/* ---------- toast ---------- */
.toast-region{position:fixed; bottom:20px; right:20px; z-index:300; display:flex; flex-direction:column; gap:10px; max-width:340px;}
@media (max-width:620px){ .toast-region{left:16px; right:16px; max-width:none;} }
.toast{background:var(--ink); color:var(--ivory); padding:14px 18px; font-family:var(--mono); font-size:13px; display:flex; align-items:center; gap:12px; border-left:4px solid var(--lime); animation:toastIn .25s var(--ease);}
@keyframes toastIn{from{transform:translateY(12px); opacity:0;} to{transform:translateY(0); opacity:1;}}

/* ---------- modal ---------- */
.modal-overlay{position:fixed; inset:0; background:rgba(20,19,17,.7); z-index:250; display:flex; align-items:center; justify-content:center; padding:20px;}
.modal-box{background:var(--ivory); max-width:520px; width:100%; padding:32px; border:1px solid var(--ink); max-height:88vh; overflow-y:auto;}
.modal-box h3{font-family:var(--display); font-size:clamp(22px,2.6vw,30px); text-transform:uppercase; margin-bottom:16px;}
.modal-actions{display:flex; gap:12px; flex-wrap:wrap; margin-top:24px;}

/* ---------- command palette ---------- */
.cmdk-overlay{position:fixed; inset:0; background:rgba(20,19,17,.55); z-index:260; display:flex; align-items:flex-start; justify-content:center; padding:12vh 20px 20px;}
.cmdk-box{background:var(--ivory); width:100%; max-width:560px; border:1px solid var(--ink); max-height:60vh; display:flex; flex-direction:column; overflow:hidden;}
.cmdk-input{width:100%; border:0; border-bottom:1px solid var(--line); padding:20px; font-size:17px; background:transparent;}
.cmdk-input:focus-visible{outline:none;}
.cmdk-list{overflow-y:auto; padding:8px;}
.cmdk-item{display:flex; justify-content:space-between; padding:12px 14px; font-size:14px; border-radius:2px;}
.cmdk-item[aria-selected=true], .cmdk-item:hover{background:var(--ink); color:var(--ivory);}
.cmdk-item .tag{font-family:var(--mono); font-size:11px; text-transform:uppercase; color:var(--ink-3);}
.cmdk-item[aria-selected=true] .tag{color:var(--ivory-2);}

/* ---------- misc editorial elements ---------- */
.timeline-rail{position:relative; padding-left:32px; border-left:2px solid var(--ink);}
.timeline-item{position:relative; padding-bottom:32px;}
.timeline-item::before{content:''; position:absolute; left:-38px; top:4px; width:12px; height:12px; border-radius:50%; background:var(--vermilion); border:2px solid var(--ivory); outline:2px solid var(--ink);}
.stat-block .num{display:block; font-family:var(--display); font-size:clamp(38px,5vw,64px); font-weight:800; line-height:1;}
.stat-block .lbl{font-family:var(--mono); font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-3); margin-top:8px;}
.divider{height:1px; background:var(--line); border:0; margin:0;}
.on-ink .divider, .ink .divider{background:var(--line-on-dark);}
.pagehead{padding:clamp(48px,7vw,88px) 0 clamp(32px,4vw,48px); border-bottom:1px solid var(--line);}
.breadcrumb{font-family:var(--mono); font-size:12px; color:var(--ink-3); margin-bottom:20px; display:flex; gap:8px; align-items:center;}
.breadcrumb a:hover{color:var(--ink);}
.related-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px;}
@media (max-width:900px){ .related-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:620px){ .related-grid{grid-template-columns:1fr;} }

.detail-hero{padding:clamp(40px,7vw,80px) 0; border-bottom:1px solid var(--line);}
.detail-hero .grid{align-items:end;}
.detail-name{grid-column:span 8;}
@media (max-width:620px){ .detail-name{grid-column:span 4;} }
.detail-meta-col{grid-column:span 4; display:flex; flex-direction:column; gap:14px; font-family:var(--mono); font-size:13px;}
@media (max-width:620px){ .detail-meta-col{grid-column:span 4;} }
.detail-meta-col dt{color:var(--ink-3); text-transform:uppercase; font-size:11px;}
.detail-meta-col dd{margin:2px 0 0; font-size:14px;}
.big-monogram{font-family:var(--display); font-size:clamp(60px,10vw,140px); font-weight:800; line-height:.9; grid-column:span 4;}
@media (max-width:620px){ .big-monogram{display:none;} }

.skeleton{background:linear-gradient(90deg, var(--line) 25%, rgba(20,19,17,.06) 50%, var(--line) 75%); background-size:200% 100%; animation:shimmer 1.4s infinite;}
@keyframes shimmer{0%{background-position:200% 0;} 100%{background-position:-200% 0;}}

.print-only{display:none;}
@media print{
  .site-header, .site-footer, .filter-bar, .toast-region, .mobile-drawer, .print-hide{display:none !important;}
  .print-only{display:block;}
  body{background:#fff; color:#000;}
}

@media (max-width:640px){
  .footer-bottom{flex-direction:column; align-items:flex-start;}
}
