/* ==========================================================================
   Cinergy — FEC Field Research
   Clean corporate research hub
   ========================================================================== */

:root{
  --paper:#ffffff;
  --canvas:#f4f5f7;
  --canvas-2:#eceef1;
  --ink:#12161c;
  --ink-2:#3c4552;
  --ink-3:#69737f;
  --ink-4:#98a1ac;
  --line:#dfe3e8;
  --line-2:#eef0f3;
  --navy:#16324f;
  --navy-2:#1f4568;
  --accent:#16324f;
  --gold:#a8801f;
  --red:#b3261e;
  --amber:#8a5a00;
  --amber-bg:#fdf6e6;
  --amber-line:#eed9a6;
  --blue-bg:#eef4fb;
  --blue-line:#c9dcf0;
  --gray-bg:#f4f5f7;
  --green:#1c6b4b;
  --radius:6px;
  --sans:"Inter","Segoe UI",-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;
  --serif:"Source Serif 4","Georgia",serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --shadow-sm:0 1px 2px rgba(18,22,28,.06),0 1px 3px rgba(18,22,28,.05);
  --shadow:0 2px 6px rgba(18,22,28,.06),0 8px 24px rgba(18,22,28,.06);
  --hdr:126px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  font-family:var(--sans);
  font-size:15px;
  line-height:1.62;
  color:var(--ink);
  background:var(--canvas);
  -webkit-font-smoothing:antialiased;
}
a{color:var(--navy-2);text-decoration:none}
a:hover{text-decoration:underline}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
img{max-width:100%;display:block}
strong{font-weight:650}
em{font-style:italic}
code{font-family:var(--mono);font-size:.88em;background:var(--canvas-2);padding:.1em .35em;border-radius:3px}

/* ---------- Gate ---------- */
#gate{
  position:fixed;inset:0;z-index:9999;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(160deg,#101b28 0%,#16324f 55%,#0e1a26 100%);
  padding:2rem;
}
#gate.hide{display:none}
.gate__card{
  width:100%;max-width:360px;background:var(--paper);
  border-radius:12px;padding:2.75rem 2.25rem 2.5rem;
  box-shadow:0 24px 60px rgba(0,0,0,.35);
  text-align:center;
}
.gate__logo{
  width:112px;height:112px;object-fit:contain;
  margin:0 auto .85rem;display:block;
}
.gate__title{
  font-family:var(--serif);font-size:1.72rem;line-height:1.15;font-weight:600;
  letter-spacing:-.015em;color:var(--ink);
}
.gate__rule{
  width:46px;height:2px;margin:1.15rem auto 1.5rem;
  background:linear-gradient(90deg,var(--navy),var(--gold));
  border-radius:2px;opacity:.75;
}
.gate__row{display:flex;gap:.5rem}
#gatePw{
  flex:1;font:inherit;font-size:.95rem;padding:.7em .85em;
  border:1px solid var(--line);border-radius:var(--radius);background:var(--canvas);
}
#gatePw:focus{outline:none;border-color:var(--navy);background:var(--paper);box-shadow:0 0 0 3px rgba(22,50,79,.1)}
.gate__btn{
  background:var(--navy);color:#fff;padding:.7em 1.25em;border-radius:var(--radius);
  font-size:.88rem;font-weight:600;letter-spacing:.02em;transition:background .15s;
}
.gate__btn:hover{background:var(--navy-2)}
.gate__err{color:var(--red);font-size:.82rem;margin-top:.75rem;min-height:1.2em}

/* ---------- Header ---------- */
.hdr{
  position:sticky;top:0;z-index:100;background:var(--paper);
  border-bottom:1px solid var(--line);
}
.hdr__top{
  max-width:1560px;margin:0 auto;padding:.7rem 1.5rem;
  display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap;
}
.brand{display:flex;align-items:baseline;gap:.6rem;cursor:pointer}
.brand__mark{
  font-family:var(--serif);font-size:1.06rem;font-weight:600;color:var(--ink);letter-spacing:-.01em;
}
.brand__div{width:1px;height:15px;background:var(--line);align-self:center}
.brand__sub{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-4);font-weight:600}
.hdr__spacer{flex:1}
.hdr__links{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap}
.hlink{
  font-size:.76rem;color:var(--ink-3);padding:.4em .7em;border-radius:4px;
  letter-spacing:.02em;transition:background .15s,color .15s;white-space:nowrap;
}
.hlink:hover{background:var(--canvas);color:var(--ink);text-decoration:none}
.hlink.is-on{background:var(--canvas-2);color:var(--ink);font-weight:600}
.hlink--submit{color:#fff;background:var(--navy);font-weight:600}
.hlink--submit:hover{background:var(--navy-2);color:#fff;text-decoration:none}

/* ---------- Header menu ---------- */
.hmenu{position:relative;display:flex;align-items:center}
.hburger{
  width:34px;height:30px;border:1px solid var(--line);border-radius:5px;background:var(--paper);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent;
}
.hburger span{display:block;width:15px;height:1.5px;background:var(--ink-3);border-radius:1px;transition:background .15s}
.hburger:hover{background:var(--canvas)}
.hburger:hover span{background:var(--ink)}
.hburger[aria-expanded="true"]{background:var(--canvas-2);border-color:var(--ink-4)}
.hburger[aria-expanded="true"] span{background:var(--ink)}

.hpanel{
  position:absolute;right:0;top:calc(100% + .45rem);min-width:236px;
  background:var(--paper);border:1px solid var(--line);border-radius:9px;
  box-shadow:0 12px 34px rgba(14,22,32,.16);padding:.35rem;display:none;z-index:200;
  /* Never wider than the screen, whatever the button's position. */
  max-width:calc(100vw - 1.5rem);
}
.hpanel.on{display:block}
.hpanel a,.hpanel button{
  display:block;width:100%;text-align:left;box-sizing:border-box;
  padding:.55em .7em;font-size:.86rem;line-height:1.35;border-radius:5px;
  color:var(--ink-2);background:none;border:none;cursor:pointer;font-family:inherit;
}
.hpanel a:hover,.hpanel button:hover{background:var(--canvas);color:var(--ink);text-decoration:none}
.hpanel .lbl{
  font-size:.63rem;text-transform:uppercase;letter-spacing:.13em;color:var(--ink-4);
  font-weight:700;padding:.5em .75em .2em;
}
.hpanel .sep{height:1px;background:var(--line);margin:.35rem .3rem}

/* ---------- Help dialog ---------- */
.modal{
  position:fixed;inset:0;z-index:300;background:rgba(12,18,26,.55);
  display:none;align-items:flex-start;justify-content:center;padding:1.5rem;overflow-y:auto;
}
.modal.on{display:flex}
.modal__card{
  position:relative;background:var(--paper);border-radius:12px;max-width:600px;width:100%;
  margin:auto;padding:1.9rem 2rem 1.7rem;box-shadow:0 30px 70px rgba(0,0,0,.32);
}
.modal__x{
  position:absolute;top:.7rem;right:.85rem;border:none;background:none;
  font-size:1.6rem;line-height:1;color:var(--ink-4);cursor:pointer;padding:.2rem .4rem;border-radius:4px;
}
.modal__x:hover{color:var(--ink);background:var(--canvas)}
.modal__card h2{font-family:var(--serif);font-size:1.3rem;font-weight:600;letter-spacing:-.01em;margin-bottom:1rem;padding-right:2rem}
.modal__card h3{
  font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-4);
  font-weight:700;margin:1.35rem 0 .4rem;
}
.modal__card p{font-size:.92rem;line-height:1.62;color:var(--ink-2);margin-bottom:.7rem}
.modal__foot{margin-top:1.5rem;padding-top:.9rem;border-top:1px solid var(--line);
  font-size:.78rem !important;color:var(--ink-4) !important}

/* Below this the inline links crowd the brand and start wrapping onto a
   second row. Everything is still reachable — it moves into the menu. */
@media(max-width:820px){
  .hlink--main{display:none}
  /* The header wraps at this width and the links row starts at the left, so a
     right-anchored dropdown would hang off the left edge of the screen. Push
     the button itself to the right so "right:0" means the right of the page. */
  .hmenu{margin-left:auto}
}

/* ---------- Venue toggles ---------- */
.toggles{
  max-width:1560px;margin:0 auto;padding:0 1.5rem;
  display:flex;gap:0;overflow-x:auto;scrollbar-width:thin;
}
.tog{
  position:relative;flex:0 0 auto;
  padding:.75rem 1.15rem .8rem;
  border-bottom:2px solid transparent;
  display:flex;flex-direction:column;gap:1px;min-width:0;
  transition:background .15s;
}
.tog:hover{background:var(--canvas)}
.tog__name{font-size:.9rem;font-weight:600;color:var(--ink-3);white-space:nowrap;letter-spacing:-.005em}
.tog__meta{font-size:.68rem;color:var(--ink-4);white-space:nowrap;letter-spacing:.01em}
.tog.is-on{border-bottom-color:var(--tog,var(--navy));background:var(--paper)}
.tog.is-on .tog__name{color:var(--ink)}
.tog.is-on .tog__meta{color:var(--ink-3)}
/* Completed trips stay in the strip — a finished visit is still the reference —
   but sit back a step so the upcoming ones read first. */
.togsep{
  flex:0 0 auto;align-self:center;
  margin:0 .35rem;padding:.12rem .5rem;
  font-size:.6rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ink-4);background:var(--canvas);
  border:1px solid var(--line);border-radius:999px;white-space:nowrap;
}
.tog--past .tog__name{font-weight:500;color:var(--ink-4)}
.tog--past .tog__meta{opacity:.8}
.tog--past.is-on .tog__name{font-weight:600;color:var(--ink)}
.tog--past.is-on .tog__meta{color:var(--ink-3);opacity:1}

/* ---------- Layout ---------- */
.shell{max-width:1560px;margin:0 auto;padding:0 1.5rem;display:flex;gap:2rem;align-items:flex-start}

.side{
  position:sticky;top:var(--hdr);flex:0 0 224px;width:224px;
  padding:1.5rem 0 3rem;max-height:calc(100vh - var(--hdr));overflow-y:auto;
}
.side__label{
  font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-4);
  font-weight:650;padding:0 .75rem;margin-bottom:.55rem;
}
.side__nav{display:flex;flex-direction:column;gap:1px;margin-bottom:1.6rem}
.snav{
  display:flex;align-items:center;gap:.6rem;text-align:left;
  padding:.5em .75em;border-radius:5px;font-size:.845rem;color:var(--ink-2);
  transition:background .13s,color .13s;line-height:1.35;
}
.snav:hover{background:var(--canvas-2);color:var(--ink)}
.snav.is-on{background:var(--sideon,var(--navy));color:#fff;font-weight:600}
.snav.is-on .snav__icon{opacity:.85}
.snav__icon{font-size:.7rem;opacity:.45;width:.9em;text-align:center;flex:0 0 auto}
.side__card{
  margin:0 .35rem;padding:.9rem .95rem;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--radius);
}
.side__card h4{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-4);margin-bottom:.5rem;font-weight:650}
.side__card p{font-size:.78rem;color:var(--ink-2);line-height:1.5}
.side__card p + p{margin-top:.45rem}
.side__card a{font-size:.78rem;word-break:break-word}

.main{flex:1;min-width:0;padding:1.5rem 0 5rem}

/* ---------- Venue hero ---------- */
.vhero{
  position:relative;border-radius:8px;overflow:hidden;
  background:linear-gradient(135deg,var(--vaccent,#16324f) 0%,#101b28 100%);
  min-height:clamp(180px,26vw,300px);
  margin-bottom:1.5rem;box-shadow:var(--shadow-sm);
}
.vhero__img{
  width:100%;height:clamp(180px,26vw,300px);object-fit:cover;display:block;
  filter:saturate(.92);
}
.vhero__img[data-broken]{visibility:hidden}
.vhero__scrim{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(9,15,22,.15) 0%,rgba(9,15,22,.45) 45%,rgba(9,15,22,.9) 100%);
}
.vhero__body{position:absolute;left:0;right:0;bottom:0;padding:1.5rem 1.75rem}
.vhero__tagrow{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.5rem}
.vhero__chip{
  font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;font-weight:650;
  color:#fff;background:rgba(255,255,255,.17);border:1px solid rgba(255,255,255,.28);
  padding:.3em .65em;border-radius:3px;backdrop-filter:blur(4px);
}
.vhero__chip--go{background:var(--vaccent,#16324f);border-color:transparent}
.vhero__name{font-family:var(--serif);font-size:clamp(1.7rem,3.4vw,2.5rem);font-weight:600;color:#fff;line-height:1.08;letter-spacing:-.015em}
.vhero__addr{font-size:.84rem;color:rgba(255,255,255,.8);margin-top:.35rem}
.vhero__addr a{color:rgba(255,255,255,.95);text-decoration:underline;text-underline-offset:2px}

.vlede{
  background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--vaccent,var(--navy));
  border-radius:var(--radius);padding:1.05rem 1.25rem;margin-bottom:1.75rem;
  font-family:var(--serif);font-size:1.02rem;line-height:1.6;color:var(--ink-2);
}
.vlede strong{color:var(--ink);font-weight:600}

/* ---------- Section head ---------- */
.shead{display:flex;align-items:baseline;gap:.85rem;margin-bottom:1.25rem;flex-wrap:wrap}
.shead h2{font-family:var(--serif);font-size:1.5rem;font-weight:600;letter-spacing:-.015em;line-height:1.2}
.shead__ct{font-size:.72rem;color:var(--ink-4);letter-spacing:.1em;text-transform:uppercase;font-weight:600}

/* ---------- Citations ---------- */
.cite{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .45rem;
  font-size:.7rem;line-height:1.5;color:var(--ink-4);
}
.cite__lbl{
  font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;font-weight:700;
  color:var(--ink-4);opacity:.75;
}
.cite__lbl::after{content:":"}
.cite__sep{opacity:.35}
.cite a{color:var(--ink-4);text-decoration:none;border-bottom:1px dotted rgba(152,161,172,.6)}
.cite a:hover{color:var(--navy-2);border-bottom-color:var(--navy-2);text-decoration:none}
.cite__more{font-style:italic}
.cite--section{
  margin:-.6rem 0 1.5rem;padding:.5rem .75rem;
  background:var(--paper);border:1px solid var(--line-2);border-radius:var(--radius);
}
.cite--block{margin:-.3rem 0 .55rem}

/* ---------- Blocks ---------- */
.blk{margin-bottom:1.5rem}
.blk__title{
  font-size:.72rem;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3);
  font-weight:700;margin-bottom:.6rem;
}
.blk__note{font-size:.8rem;color:var(--ink-3);margin-bottom:.6rem;font-style:italic;line-height:1.5}

/* stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:1.5rem}
.stat{background:var(--paper);padding:.95rem 1.05rem}
.stat__n{font-family:var(--serif);font-size:1.45rem;font-weight:600;line-height:1.1;color:var(--ink);letter-spacing:-.02em}
.stat__l{font-size:.72rem;color:var(--ink-3);margin-top:.2rem;line-height:1.35}
.stat__s{font-size:.68rem;color:var(--ink-4);margin-top:.15rem;line-height:1.3}

/* kv + tables */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.tbl{width:100%;border-collapse:collapse;font-size:.875rem}
.tbl th{
  text-align:left;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3);font-weight:700;padding:.6rem .95rem;background:var(--canvas);
  border-bottom:1px solid var(--line);vertical-align:bottom;
}
.tbl td{padding:.62rem .95rem;border-bottom:1px solid var(--line-2);vertical-align:top;line-height:1.55;color:var(--ink-2)}
.tbl tr:last-child td{border-bottom:none}
.tbl tbody tr:hover{background:#fafbfc}
.tbl td:first-child{color:var(--ink)}
.tbl--kv td:first-child{
  width:29%;font-size:.78rem;color:var(--ink-3);font-weight:600;
  background:#fbfcfd;border-right:1px solid var(--line-2);
}
.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* prose */
.prose{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.25rem;font-size:.9rem;line-height:1.7;color:var(--ink-2)}
.prose strong{color:var(--ink)}

/* list */
.blist{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1.25rem .95rem 2.1rem;font-size:.89rem;line-height:1.65;color:var(--ink-2)}
.blist li{margin:.35rem 0}
.blist li::marker{color:var(--ink-4)}

/* flags */
.flag{border-radius:var(--radius);padding:.95rem 1.15rem;font-size:.88rem;line-height:1.65;border:1px solid;position:relative}
.flag__t{font-weight:700;font-size:.82rem;letter-spacing:.01em;margin-bottom:.4rem;display:flex;align-items:center;gap:.5rem}
.flag__t::before{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:.15em .5em;border-radius:3px}
.flag p, .flag div{color:inherit}
.flag--insight{background:var(--blue-bg);border-color:var(--blue-line);color:#1a3a5c}
.flag--insight .flag__t::before{content:"Insight";background:#1f4568;color:#fff}
.flag--alert{background:#fdf1ef;border-color:#f2cdc7;color:#7a2018}
.flag--alert .flag__t::before{content:"Flag";background:#b3261e;color:#fff}
.flag--gap{background:var(--gray-bg);border-color:var(--line);color:var(--ink-2)}
.flag--gap .flag__t::before{content:"Gap";background:#69737f;color:#fff}
.flag--ask{background:var(--amber-bg);border-color:var(--amber-line);color:#6b4600}
.flag--ask .flag__t::before{content:"Ask";background:#8a5a00;color:#fff}
.flag strong{color:inherit;font-weight:700}
.flag a{color:inherit;text-decoration:underline}

/* cards grid */
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:.85rem}
.ccard{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem;transition:box-shadow .18s,border-color .18s}
.ccard:hover{box-shadow:var(--shadow-sm);border-color:#cdd4dc}
.ccard__h{font-size:.95rem;font-weight:650;color:var(--ink);line-height:1.3;margin-bottom:.15rem}
.ccard__s{font-size:.74rem;color:var(--vaccent,var(--navy));font-weight:600;margin-bottom:.55rem;line-height:1.35}
.ccard__b{font-size:.85rem;line-height:1.62;color:var(--ink-2)}

/* photos */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.7rem}
.pfig{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin:0}
.pfig a{display:block}
.pfig img{width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--canvas-2);transition:transform .5s cubic-bezier(.22,1,.36,1)}
.pfig:hover img{transform:scale(1.035)}
.pfig figcaption{font-size:.74rem;color:var(--ink-3);padding:.5rem .7rem .6rem;line-height:1.4;border-top:1px solid var(--line-2)}
.pfig.is-dead{display:none}

/* links */
.lgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.lgrid a{
  background:var(--paper);padding:.55rem .85rem;font-size:.82rem;color:var(--ink-2);
  display:flex;align-items:center;gap:.45rem;transition:background .13s,color .13s;
}
.lgrid a:hover{background:var(--blue-bg);color:var(--navy-2);text-decoration:none}
.lgrid a::after{content:"↗";font-size:.7rem;color:var(--ink-4);margin-left:auto}

/* pager (prev / next section) */
.pager{display:flex;gap:.6rem;margin-top:.5rem;flex-wrap:wrap}
.pager a{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:.55rem 1rem;font-size:.84rem;font-weight:600;color:var(--ink-2);
  transition:border-color .15s,background .15s,color .15s;
}
.pager a:hover{border-color:var(--vaccent,var(--navy));color:var(--vaccent,var(--navy));background:var(--paper);text-decoration:none}
.pager a:last-child{margin-left:auto}

/* ---------- Trip brief / compare views ---------- */
.page{background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:1.75rem;margin-bottom:1.5rem}
.page h1{font-family:var(--serif);font-size:1.85rem;font-weight:600;letter-spacing:-.02em;line-height:1.15;margin-bottom:.35rem}
.page .sub{color:var(--ink-3);font-size:.92rem;margin-bottom:1.4rem}
.legs{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.leg{background:var(--paper);display:grid;grid-template-columns:110px 1fr 210px;gap:1rem;padding:.8rem 1rem;align-items:start}
.leg__day{font-size:.78rem;font-weight:700;color:var(--ink)}
.leg__move{font-size:.82rem;color:var(--ink-2);line-height:1.5}
.leg__v{font-size:.82rem;text-align:right}
.leg__v b{display:block;color:var(--ink);font-weight:650}
.leg__v span{color:var(--ink-3);font-size:.76rem}

/* ---------- Itinerary progress ----------
   Quiet on purpose. A finished leg recedes rather than shouting DONE; the
   live one gets a thin accent and a small label. Nothing moves or animates —
   this page gets read on a phone in a car. */
.leg__tick{display:inline-block;width:0;margin-right:0;color:var(--green);
  font-weight:700;transition:width .15s,margin .15s}
.leg.is-done .leg__tick{width:.85em;margin-right:.3em}
.leg.is-done{background:var(--canvas)}
.leg.is-done .leg__day{color:var(--ink-3)}
.leg.is-done .leg__move{color:var(--ink-4)}
.leg.is-done .leg__v b{color:var(--ink-3);font-weight:600}
.leg.is-done .leg__v span{color:var(--ink-4)}

.leg.is-now{box-shadow:inset 3px 0 0 var(--navy)}
.leg.is-now .leg__v b::after{
  content:'Now';margin-left:.5em;font-size:.62rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:#fff;background:var(--navy);
  padding:.15em .5em;border-radius:99px;vertical-align:1px;
}
.leg.is-next .leg__v b::after{
  content:'Next';margin-left:.5em;font-size:.62rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);background:var(--canvas-2,#eceef1);
  padding:.15em .5em;border-radius:99px;vertical-align:1px;
}
@media print{ .leg.is-now,.leg.is-done{box-shadow:none;background:none} }
.leg--link{cursor:pointer}
.leg--link:hover{background:var(--blue-bg)}
.assign{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.85rem}
.assign__c{background:var(--canvas);border:1px solid var(--line);border-radius:var(--radius);padding:.95rem 1.1rem}
.assign__c h4{font-size:.85rem;font-weight:700;margin-bottom:.5rem;color:var(--ink)}
.assign__c ul{padding-left:1.1rem;font-size:.82rem;color:var(--ink-2);line-height:1.55}
.assign__c li{margin:.22rem 0}

/* compare */
.cmp{width:100%;border-collapse:collapse;font-size:.82rem;min-width:900px}
.cmp th{position:sticky;top:var(--hdr);z-index:2}
.cmp th, .cmp td{padding:.6rem .8rem;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:top;line-height:1.5}
.cmp thead th{background:var(--canvas);border-bottom:1px solid var(--line);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
.cmp tbody th{
  background:#fbfcfd;font-size:.74rem;color:var(--ink-3);font-weight:700;width:150px;
  border-right:1px solid var(--line-2);position:sticky;left:0;z-index:1;top:auto;
}
.cmp td{color:var(--ink-2)}
.cmp tbody tr:hover td{background:#fafbfc}

/* footer */
.foot{max-width:1560px;margin:0 auto;padding:1.75rem 1.5rem 3rem;border-top:1px solid var(--line);font-size:.76rem;color:var(--ink-4);line-height:1.65}
.foot strong{color:var(--ink-3)}

/* utility */
.hidden{display:none !important}
.nowrap{white-space:nowrap}

/* ---------- Responsive ---------- */
@media(max-width:1080px){
  /* align-items:flex-start on the base .shell makes column-direction children
     size to content — which let wide tables shove the whole page sideways. */
  .shell{flex-direction:column;gap:0;align-items:stretch}
  .side{position:static;flex:none;width:100%;max-width:100%;max-height:none;padding:1.1rem 0 0;overflow:visible}
  .main{width:100%;max-width:100%}
  .side__nav{flex-direction:row;flex-wrap:wrap;gap:.35rem;margin-bottom:1.1rem}
  .snav{border:1px solid var(--line);background:var(--paper);font-size:.8rem;padding:.4em .7em}
  .snav__icon{display:none}
  .side__card{display:none}
  .main{padding-top:.5rem}
  .leg{grid-template-columns:1fr;gap:.3rem}
  .leg__v{text-align:left}
}
@media(max-width:640px){
  body{font-size:14.5px}
  html,body{overflow-x:hidden}
  .tog{padding:.6rem .8rem .65rem}
  .tog__name{font-size:.82rem}
  .tog__meta{font-size:.62rem}
  .toggles{-webkit-overflow-scrolling:touch}
  .vhero__body{padding:1rem 1.1rem}
  .stats{grid-template-columns:repeat(2,1fr)}
  .page{padding:1rem .9rem}
  .cite--section{padding:.45rem .6rem;margin:-.4rem 0 1.1rem}
  .pgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.5rem}
  .hdr__top{padding:.6rem 1rem}
  .toggles{padding:0 1rem}
  .shell{padding:0 1rem}
  .foot{padding:1.5rem 1rem 2.5rem}
  .tbl--kv td:first-child{width:38%}
  .page{padding:1.1rem}
}

/* ---------- Print ---------- */
@media print{
  body{background:#fff;font-size:10.5pt}
  .hdr,.side,.foot,#gate,.modal,.hpanel{display:none !important}
  .shell{display:block;padding:0;max-width:none}
  .main{padding:0}
  .card,.prose,.flag,.ccard,.stats,.lgrid{break-inside:avoid;box-shadow:none}
  .vhero__img{height:150px}
  a{color:inherit;text-decoration:none}
  .pgrid{grid-template-columns:repeat(3,1fr)}
}

/* ---------- Search ---------- */
.srch{position:relative;display:flex;align-items:center}
#srchBox{
  font:inherit;font-size:.8rem;width:190px;
  padding:.42em .78em .42em .78em;
  border:1px solid var(--line);border-radius:5px;background:var(--canvas);
  color:var(--ink);transition:width .22s ease,border-color .15s,background .15s;
}
#srchBox::placeholder{color:var(--ink-4)}
#srchBox:focus{outline:none;width:280px;border-color:var(--navy);background:var(--paper);box-shadow:0 0 0 3px rgba(22,50,79,.09)}
#srchBox:focus + .srch__hint{opacity:0}
#srchBox::-webkit-search-cancel-button{cursor:pointer}
.srch__hint{
  position:absolute;right:.55rem;pointer-events:none;
  font-size:.68rem;color:var(--ink-4);border:1px solid var(--line);
  border-radius:3px;padding:0 .35em;line-height:1.4;background:var(--paper);
  transition:opacity .15s;
}

.sres{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.sres__row{
  display:block;background:var(--paper);padding:.7rem .95rem;
  color:var(--ink-2);transition:background .12s;
}
.sres__row:hover{background:var(--blue-bg);text-decoration:none}
.sres__head{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;margin-bottom:.25rem}
.sres__venue{
  font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;
  color:#fff;padding:.16em .5em;border-radius:3px;white-space:nowrap;
}
.sres__sec{font-size:.68rem;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-4);font-weight:650}
.sres__title{font-size:.86rem;font-weight:650;color:var(--ink);line-height:1.3}
.sres__snip{font-size:.8rem;line-height:1.55;color:var(--ink-3)}
.sres__snip mark{background:#fdf0c3;color:var(--ink);padding:0 .1em;border-radius:2px;font-weight:600}

@media(max-width:1080px){
  #srchBox{width:100%}
  .srch{width:100%;order:-1;margin-bottom:.2rem}
  #srchBox:focus{width:100%}
}
@media print{ .srch{display:none} }

/* iOS Safari force-zooms the whole page when a focused input computes to
   under 16px, and it does NOT zoom back out afterwards — the page is left
   panned sideways with the header and sidebar clipped off the left edge.
   It reads exactly like a horizontal-overflow bug and is not one.
   16px on every focusable text field is the only reliable prevention. */
@media(max-width:1080px){
  #gatePw, #srchBox, input, select, textarea{ font-size:16px }
}


/* ---------- Photo cards: click to reveal detail ---------- */
.pfig{position:relative}
.pfig__media{position:relative;display:block;cursor:pointer;overflow:hidden}
.pfig__media img{transition:transform .5s cubic-bezier(.22,1,.36,1),filter .28s ease,opacity .28s ease}
.pfig:hover .pfig__media img{transform:scale(1.035)}
.pfig__more{
  position:absolute;right:.45rem;bottom:.45rem;z-index:3;
  font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;
  color:#fff;background:rgba(12,18,26,.72);border:1px solid rgba(255,255,255,.28);
  padding:.28em .55em;border-radius:3px;backdrop-filter:blur(4px);
  opacity:0;transform:translateY(3px);transition:opacity .2s,transform .2s;pointer-events:none;
}
.pfig:hover .pfig__more{opacity:1;transform:translateY(0)}
.pfig__ov{
  position:absolute;inset:0;z-index:2;
  display:flex;flex-direction:column;justify-content:flex-start;
  padding:.85rem .95rem;overflow-y:auto;
  background:linear-gradient(180deg,rgba(10,16,24,.93),rgba(10,16,24,.97));
  color:#e8edf3;font-size:.79rem;line-height:1.55;
  opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s;
}
.pfig__ov b,.pfig__ov strong{color:#fff;font-weight:650}
.pfig__ov em{color:#b9c6d4}
.pfig__ov a{color:#9fc6ee;text-decoration:underline}
.pfig__ovh{
  font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;font-weight:700;
  color:var(--pacc,#7fb3e3);margin-bottom:.4rem;
}
.pfig.is-open .pfig__ov{opacity:1;visibility:visible}
.pfig.is-open .pfig__media img{filter:brightness(.28) saturate(.6);transform:none}
.pfig.is-open .pfig__more{opacity:0}
.pfig__close{
  position:absolute;top:.4rem;right:.5rem;z-index:4;
  color:rgba(255,255,255,.75);font-size:1rem;line-height:1;padding:.2rem .3rem;
  opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s;
}
.pfig.is-open .pfig__close{opacity:1;visibility:visible}
.pfig__close:hover{color:#fff}
.pfig__open{
  display:inline-block;margin-top:.5rem;font-size:.68rem;letter-spacing:.08em;
  text-transform:uppercase;color:#9fc6ee;
}

/* ---------- Overview gallery ---------- */
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:.55rem;margin-bottom:1.6rem}
.gal .pfig figcaption{font-size:.7rem;padding:.42rem .6rem .5rem}
.gal .pfig img{aspect-ratio:3/2}
.gal .pfig__ov{font-size:.74rem;padding:.7rem .8rem}
@media(max-width:640px){ .gal{grid-template-columns:repeat(2,1fr);gap:.45rem} }

/* ==========================================================================
   Ask AI
   A reader over the same research this file renders. It gets the whole
   corpus on every question, so it is never asked to guess which page the
   answer is on. Styled as a document panel rather than a chat bubble UI —
   these are answers to look up, not a conversation to have.
   ========================================================================== */

.hlink--ask{
  border:1px solid var(--line);background:var(--paper);
  display:inline-flex;align-items:center;gap:.42em;
}
.hlink--ask:hover{background:var(--blue-bg);border-color:var(--blue-line);color:var(--navy)}
/* The sparkle is the one place on this page that is allowed to look like
   software rather than a document, because it is the one control people
   already recognize without a label. */
.hlink--ask .spark{
  width:14px;height:14px;flex:0 0 auto;
  fill:var(--gold);transition:fill .2s,transform .2s;
}
.hlink--ask:hover .spark{fill:var(--navy);transform:scale(1.08)}
.hlink--ask.is-off .spark{fill:var(--ink-4)}

/* ---------- panel ---------- */
.askw{
  position:fixed;inset:0;z-index:320;background:rgba(12,18,26,.55);
  display:none;align-items:flex-start;justify-content:center;padding:1.5rem;
}
.askw.on{display:flex}
.askc{
  position:relative;display:flex;flex-direction:column;
  background:var(--paper);border-radius:12px;
  max-width:740px;width:100%;margin:auto;max-height:calc(100vh - 3rem);
  box-shadow:0 30px 70px rgba(0,0,0,.32);overflow:hidden;
}
.askc__hd{
  display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap;
  padding:1.05rem 1.4rem .85rem;border-bottom:1px solid var(--line);
}
.askc__hd h2{font-family:var(--serif);font-size:1.16rem;font-weight:600;letter-spacing:-.01em}
.askc__sub{font-size:.76rem;color:var(--ink-4);flex:1 1 auto}
.askc__x{
  border:none;background:none;font-size:1.55rem;line-height:1;color:var(--ink-4);
  cursor:pointer;padding:0 .25rem;border-radius:4px;align-self:flex-start;
}
.askc__x:hover{color:var(--ink);background:var(--canvas)}

/* ---------- transcript ---------- */
.askc__body{
  flex:1 1 auto;overflow-y:auto;padding:1.15rem 1.4rem 1.3rem;
  -webkit-overflow-scrolling:touch;
}
.askq{
  font-family:var(--serif);font-size:1.02rem;font-weight:600;color:var(--ink);
  line-height:1.5;margin:1.5rem 0 .6rem;padding-left:.8rem;
  border-left:3px solid var(--navy);
}
.askc__body > .askq:first-child{margin-top:0}
.aska{font-size:.93rem;line-height:1.66;color:var(--ink-2)}
.aska p{margin:0 0 .68rem}
.aska p:last-child{margin-bottom:0}
.aska strong{color:var(--ink);font-weight:600}
.aska ul{margin:0 0 .68rem;padding-left:1.15rem}
.aska li{margin-bottom:.28rem}
.aska em{font-style:normal;color:var(--ink-3)}
.askmeta{
  font-size:.7rem;color:var(--ink-4);margin-top:.6rem;padding-top:.5rem;
  border-top:1px solid var(--line-2);
}
.askerr{
  font-size:.86rem;line-height:1.55;color:var(--red);
  background:#fdf1f0;border:1px solid #f2ccc9;border-radius:var(--radius);
  padding:.7rem .85rem;
}

/* Three dots. Deliberately calm — a full-corpus question takes a few
   seconds and a frantic spinner makes that feel broken. */
.askdots{display:inline-flex;gap:.28rem;padding:.25rem 0}
.askdots i{
  width:5px;height:5px;border-radius:50%;background:var(--ink-4);
  animation:askb 1.15s infinite ease-in-out both;
}
.askdots i:nth-child(2){animation-delay:.16s}
.askdots i:nth-child(3){animation-delay:.32s}
@keyframes askb{0%,72%,100%{opacity:.22;transform:translateY(0)}36%{opacity:.9;transform:translateY(-3px)}}

/* ---------- empty state ---------- */
.askintro{font-size:.9rem;line-height:1.62;color:var(--ink-2);margin-bottom:1rem}
.asklbl{
  font-size:.66rem;text-transform:uppercase;letter-spacing:.12em;
  color:var(--ink-4);font-weight:700;margin:1.1rem 0 .5rem;
}
.askegs{display:flex;flex-direction:column;gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.askeg{
  border:none;text-align:left;font:inherit;font-size:.85rem;color:var(--ink-2);
  background:var(--paper);padding:.6rem .85rem;cursor:pointer;transition:background .12s;
}
.askeg:hover{background:var(--blue-bg);color:var(--navy)}

/* ---------- composer ---------- */
.askc__ft{
  flex:0 0 auto;border-top:1px solid var(--line);
  background:var(--canvas);padding:.8rem 1.4rem 1rem;
}
.askform{display:flex;gap:.55rem;align-items:flex-end}
#askBox{
  font:inherit;font-size:.92rem;line-height:1.5;flex:1 1 auto;
  resize:none;min-height:2.6em;max-height:7em;
  padding:.55em .8em;border:1px solid var(--line);border-radius:6px;
  background:var(--paper);color:var(--ink);
}
#askBox:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(22,50,79,.09)}
#askBox:disabled{background:var(--canvas-2);color:var(--ink-4)}
.askgo{
  font:inherit;font-size:.85rem;font-weight:600;border:none;cursor:pointer;
  background:var(--navy);color:#fff;padding:.62em 1.15em;border-radius:6px;
  transition:background .15s;
}
.askgo:hover:not(:disabled){background:var(--navy-2)}
.askgo:disabled{background:var(--ink-4);cursor:default}
.askfoot{
  display:flex;justify-content:space-between;gap:1rem;
  font-size:.68rem;color:var(--ink-4);margin-top:.5rem;
}
.askfoot button{
  border:none;background:none;font:inherit;font-size:.68rem;color:var(--ink-4);
  cursor:pointer;text-decoration:underline;padding:0;
}
.askfoot button:hover{color:var(--ink-2)}

@media(max-width:820px){
  .hlink--ask{display:inline-flex}
}
@media(max-width:640px){
  .askw{padding:0}
  .askc{max-height:100vh;height:100%;border-radius:0;max-width:none}
  .askc__hd,.askc__body,.askc__ft{padding-left:1rem;padding-right:1rem}
  /* Icon only — the header has no room for the label at this width, and the
     sparkle carries the meaning on its own. Sized up so it stays a target. */
  .hlink--ask span.t{display:none}
  .hlink--ask{padding:.44em .58em}
  .hlink--ask .spark{width:16px;height:16px}
}

/* Blinking cursor while an answer streams in. The dots say "nothing is
   happening yet"; once words are arriving this says "still writing". */
.askcur{
  display:inline-block;width:2px;height:1em;margin-left:1px;
  background:var(--navy);vertical-align:-.14em;animation:askblink 1s steps(2) infinite;
}
@keyframes askblink{0%,50%{opacity:1}50.01%,100%{opacity:0}}
