/* ============================================================
   THE CLOCKWORK WORLD — house stylesheet
   Brass and paper. One template, five zones.
   ============================================================ */

:root{
  /* paper */
  --paper:        #f6f1e5;
  --paper-2:      #efe8d8;
  --paper-3:      #e6ddc9;
  --paper-edge:   #d8cdb4;

  /* ink */
  --ink:          #241d16;
  --ink-2:        #574b3c;
  --ink-3:        #8a7c69;

  /* brass */
  --brass:        #8a6420;
  --brass-lit:    #b8862f;
  --brass-pale:   #e3d3ae;

  /* the world, for plates and chrome accents */
  --night:        #0d1620;
  --night-2:      #16232f;

  /* type colours */
  --t-law:        #26384c;
  --t-place:      #3f6b5c;
  --t-thing:      #8a6420;
  --t-people:     #7b3230;
  --t-event:      #a8552a;
  --t-concept:    #5b3f63;
  --t-plate:      #46525e;

  --rail:         272px;
  --inst:         252px;

  --serif: "Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --mono: ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--serif);
  font-size:16.5px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--brass);text-decoration:none;border-bottom:1px solid var(--brass-pale)}
a:hover{color:var(--ink);border-bottom-color:var(--brass)}

/* ---------- small caps label type ---------- */
.lbl{
  font-family:var(--mono);
  font-size:10.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--ink-3);
}

/* ============================================================
   TOP BAR
   ============================================================ */
.topbar{
  position:sticky;top:0;z-index:40;
  background:var(--night);
  border-bottom:2px solid var(--brass);
  display:flex;align-items:center;gap:22px;
  padding:0 20px;height:58px;
}
.wordmark{
  font-family:var(--serif);
  font-size:15px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--brass-pale);border:0;white-space:nowrap;
}
.wordmark:hover{color:#fff}
.wordmark b{font-weight:400;color:var(--brass-lit)}

.crumb{flex:1;min-width:0;font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:#7f8b96;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.crumb a{color:#9fb0be;border:0}
.crumb a:hover{color:#fff}
.crumb i{font-style:normal;opacity:.5;padding:0 7px}

/* search */
.searchwrap{position:relative}
#q{
  width:230px;background:#0a1219;border:1px solid #2b3d4d;color:#e9dcc2;
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;
  padding:7px 10px;border-radius:2px;outline:none;
}
#q:focus{border-color:var(--brass);width:300px}
#q::placeholder{color:#5d6c79}
#results{
  position:absolute;right:0;top:40px;width:430px;max-height:66vh;overflow:auto;
  background:var(--paper);border:1px solid var(--paper-edge);
  box-shadow:0 18px 40px rgba(0,0,0,.35);display:none;
}
#results.on{display:block}
#results .hit{display:block;border:0;padding:11px 14px;border-bottom:1px solid var(--paper-edge)}
#results .hit:last-child{border-bottom:0}
#results .hit:hover{background:var(--paper-2)}
#results .hit h4{margin:0 0 2px;font-size:15px;font-weight:600;color:var(--ink)}
#results .hit p{margin:0;font-size:13px;color:var(--ink-2);line-height:1.45}
#results .none{padding:16px;color:var(--ink-3);font-size:14px}

/* ============================================================
   SHELL
   ============================================================ */
.shell{display:grid;grid-template-columns:var(--rail) minmax(0,1fr) var(--inst);align-items:start}
.shell.wide{grid-template-columns:var(--rail) minmax(0,1fr)}
.shell.bare{display:block}

/* ---------- left rail: the catalogue ---------- */
.rail{
  position:sticky;top:58px;height:calc(100vh - 58px);overflow:auto;
  background:var(--paper-2);border-right:1px solid var(--paper-edge);
  padding:18px 0 40px;
}
.railhead{display:flex;gap:6px;padding:0 16px 12px}
.railhead button{
  flex:1;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  background:transparent;border:1px solid var(--paper-edge);color:var(--ink-3);
  padding:6px 4px;cursor:pointer;border-radius:2px;
}
.railhead button.on{background:var(--brass);border-color:var(--brass);color:#fff}
.railsec{display:none}
.railsec.on{display:block}

.rail details{border-top:1px solid var(--paper-edge)}
.rail summary{
  list-style:none;cursor:pointer;padding:9px 16px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-2);display:flex;align-items:center;gap:8px;
}
.rail summary::-webkit-details-marker{display:none}
.rail summary:hover{background:var(--paper-3)}
.rail summary .dot{width:8px;height:8px;border-radius:50%;flex:none}
.rail summary .n{margin-left:auto;color:var(--ink-3);opacity:.7}
.rail ul{list-style:none;margin:0;padding:0 0 8px}
.rail li a{
  display:block;border:0;padding:5px 16px 5px 34px;font-size:14.5px;color:var(--ink-2);
}
.rail li a:hover{background:var(--paper-3);color:var(--ink)}
.rail li a.here{background:var(--brass-pale);color:var(--ink);box-shadow:inset 3px 0 0 var(--brass)}
.rail .stub{color:var(--ink-3);opacity:.65;font-style:italic}

/* ---------- main ---------- */
main{padding:34px 46px 90px;min-width:0}
.entry{max-width:760px}

/* ---------- right rail: the instrument panel ---------- */
.inst{
  position:sticky;top:58px;max-height:calc(100vh - 58px);overflow:auto;
  padding:34px 22px 60px;border-left:1px solid var(--paper-edge);
}
.inst h4{margin:22px 0 8px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink-3);font-weight:400}
.inst h4:first-child{margin-top:0}
.inst ul{list-style:none;margin:0;padding:0}
.inst li{margin:0 0 5px;font-size:14px;line-height:1.4}
.inst li a{border:0;color:var(--ink-2)}
.inst li a:hover{color:var(--brass)}
.inst .src{font-size:13px;color:var(--ink-3);font-style:italic}

/* ============================================================
   COMPONENTS
   ============================================================ */

/* type chip */
.chip{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;
  padding:4px 9px;border-radius:2px;color:#fff;
}
.chip.law{background:var(--t-law)} .chip.place{background:var(--t-place)}
.chip.thing{background:var(--t-thing)} .chip.people{background:var(--t-people)}
.chip.event{background:var(--t-event)} .chip.concept{background:var(--t-concept)}
.chip.plate{background:var(--t-plate)}

/* status chip */
.status{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;
  padding:4px 9px;border-radius:2px;border:1px solid;
}
.status.canon{color:#2f6a3f;border-color:#9dc0a6;background:#e9f2ea}
.status.proposed{color:#8a6420;border-color:var(--brass-pale);background:#f6efdd}
.status.open{color:#8f3a34;border-color:#dcb3ae;background:#f8eae7}

/* labels */
.labels{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.labels a{
  border:0;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  background:var(--paper-3);color:var(--ink-2);padding:3px 8px;border-radius:2px;
}
.labels a:hover{background:var(--brass);color:#fff}

/* page head */
.head{border-bottom:2px solid var(--brass);padding-bottom:16px;margin-bottom:26px}
.head .row{display:flex;align-items:center;gap:9px;margin-bottom:12px;flex-wrap:wrap}
h1{font-size:39px;line-height:1.1;margin:0 0 10px;font-weight:600;letter-spacing:-.01em}
h1 .sub{display:block;font-size:16px;font-weight:400;color:var(--ink-3);font-style:italic;letter-spacing:0;margin-top:7px}

/* the Line — one sentence, always */
.line{
  font-size:20.5px;line-height:1.5;color:var(--ink);font-style:italic;
  border-left:3px solid var(--brass);padding:2px 0 2px 18px;margin:0;
}

h2{font-size:23px;margin:40px 0 12px;font-weight:600;border-bottom:1px solid var(--paper-edge);padding-bottom:6px}
h3{font-size:17px;margin:26px 0 8px;font-weight:600}
p{margin:0 0 15px}
blockquote{margin:22px 0;padding:14px 20px;background:var(--paper-2);border-left:3px solid var(--brass);font-style:italic}
blockquote p:last-child{margin:0}

/* facts — the pane grid that keeps cards scannable */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(212px,1fr));gap:1px;background:var(--paper-edge);
  border:1px solid var(--paper-edge);margin:24px 0}
.fact{background:var(--paper);padding:14px 16px}
.fact .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);display:block;margin-bottom:5px}
.fact .v{font-size:15px;line-height:1.42}

/* plate frame — a lit window in a paper page */
figure.plate{margin:26px 0;background:var(--night);border:1px solid var(--night-2);
  box-shadow:0 3px 0 var(--paper-edge)}
figure.plate img,figure.plate svg{display:block;width:100%;height:auto}
figure.plate figcaption{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;
  color:#8fa0ae;padding:9px 14px;border-top:1px solid var(--night-2)}
figure.plate figcaption b{color:var(--brass-lit);font-weight:400}

/* drill-down */
details.deep{border:1px solid var(--paper-edge);background:var(--paper-2);margin:14px 0}
details.deep>summary{cursor:pointer;list-style:none;padding:12px 16px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--brass)}
details.deep>summary::-webkit-details-marker{display:none}
details.deep>summary:before{content:"▸ ";}
details.deep[open]>summary:before{content:"▾ ";}
details.deep .body{padding:2px 20px 16px;background:var(--paper)}

/* pathway footer */
.pathway{margin-top:56px;border-top:2px solid var(--brass);padding-top:16px;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.pathway .of{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.pathway .go{margin-left:auto;display:flex;gap:10px}
.pathway .go a{border:1px solid var(--paper-edge);padding:8px 14px;font-size:14px;color:var(--ink-2)}
.pathway .go a:hover{border-color:var(--brass);color:var(--brass)}

/* ============================================================
   HOME
   ============================================================ */
.hero{position:relative;background:var(--night);border-bottom:2px solid var(--brass);overflow:hidden}
.hero img{width:100%;height:min(64vh,620px);object-fit:cover;object-position:center 42%;display:block;opacity:.82}
.hero .over{position:absolute;inset:0;display:flex;align-items:center;
  background:linear-gradient(90deg,rgba(6,11,16,.93) 0%,rgba(6,11,16,.72) 46%,rgba(6,11,16,.15) 100%)}
.hero .inner{max-width:1240px;margin:0 auto;padding:0 46px;width:100%}
.hero h1{color:#f2e6cd;font-size:clamp(38px,5.4vw,68px);letter-spacing:-.015em;margin:0 0 6px;text-shadow:0 2px 24px rgba(0,0,0,.7)}
.hero .kicker{font-family:var(--mono);font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:var(--brass-lit);margin-bottom:16px}
.hero .premise{max-width:660px;font-size:19px;line-height:1.62;color:#d8cbb4;margin:18px 0 0}
.hero .premise b{color:#f2e6cd;font-weight:400}

.band{max-width:1240px;margin:0 auto;padding:52px 46px}
.band.tint{background:var(--paper-2);max-width:none}
.band.tint>*{max-width:1240px;margin-left:auto;margin-right:auto}
.bandhead{display:flex;align-items:baseline;gap:16px;border-bottom:2px solid var(--brass);padding-bottom:10px;margin-bottom:26px}
.bandhead h2{border:0;margin:0;padding:0;font-size:25px}
.bandhead .lbl{margin-left:auto}

/* seven tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:16px}
.tile{display:block;border:1px solid var(--paper-edge);background:var(--paper);padding:20px 20px 22px;
  border-top:3px solid var(--brass);color:var(--ink)}
.tile:hover{background:var(--paper-2);border-top-color:var(--ink);color:var(--ink)}
.tile .n{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--ink-3)}
.tile h3{margin:8px 0 7px;font-size:20px}
.tile p{margin:0;font-size:15px;color:var(--ink-2);line-height:1.5}

/* pathways */
.paths{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:16px}
.path{display:block;border:1px solid var(--paper-edge);background:var(--paper);color:var(--ink);
  padding:22px;position:relative}
.path:hover{border-color:var(--brass);color:var(--ink)}
.path .lbl{display:block;margin-bottom:9px}
.path h3{margin:0 0 8px;font-size:21px}
.path p{margin:0 0 12px;font-size:14.5px;color:var(--ink-2)}
.path .steps{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--brass)}

/* status strip */
.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;background:var(--paper-edge);border:1px solid var(--paper-edge)}
.strip div{background:var(--paper);padding:16px 18px}
.strip .num{font-size:31px;line-height:1;color:var(--brass);font-weight:600}
.strip .lbl{display:block;margin-top:7px}

footer.site{background:var(--night);color:#8fa0ae;padding:30px 46px;margin-top:0;
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;border-top:2px solid var(--brass)}
footer.site a{color:var(--brass-lit);border:0}

/* ============================================================
   PLATE CARDS
   A drawing needs room, so plate cards drop the right-hand
   instrument panel and lay the same information out along the
   bottom instead. Everything else about the template is unchanged.
   ============================================================ */
.entry.wide{max-width:1180px}
.instrow{margin-top:46px;border-top:2px solid var(--brass);padding-top:24px;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:28px}
.instrow h4{margin:0 0 9px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink-3);font-weight:400}
.instrow ul{list-style:none;margin:0;padding:0}
.instrow li{margin:0 0 5px;font-size:14px;line-height:1.4}
.instrow li a{border:0;color:var(--ink-2)}
.instrow li a:hover{color:var(--brass)}
.instrow p{margin:0}
.instrow .src{font-size:13px;color:var(--ink-3);font-style:italic}

/* a drawing too detailed to shrink: scroll it rather than crush it */
.scrollplate{overflow-x:auto}
.scrollplate>svg{min-width:940px}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1180px){
  .shell{grid-template-columns:var(--rail) minmax(0,1fr)}
  .inst{position:static;max-height:none;border-left:0;border-top:1px solid var(--paper-edge);
    grid-column:1/-1;padding:22px 46px 50px}
  .inst ul{columns:2;column-gap:26px}
}

/* injected phone furniture: absent from the page until a phone asks for it.
   MUST stay above the 820px block — same specificity, so source order decides. */
.navbtn,.searchbtn,.searchclose,.railscrim,.platezoom{display:none}

@media (max-width:820px){

  /* ---------- top bar ---------- */
  .topbar{gap:10px;padding:0 12px}
  .crumb{display:none}
  .wordmark{font-size:13px;letter-spacing:.17em}

  .navbtn,.searchbtn{
    display:flex;align-items:center;justify-content:center;
    width:38px;height:38px;flex:none;padding:0;cursor:pointer;
    background:transparent;border:1px solid #2b3d4d;border-radius:3px;
    color:var(--brass-pale);
  }
  .navbtn{margin-left:-2px}
  .searchbtn{margin-left:auto}
  .navbtn:active,.searchbtn:active{background:#0a1219}
  .navbtn svg,.searchbtn svg{width:18px;height:18px;display:block}

  /* ---------- search: a full-width overlay, not a slot ---------- */
  .searchwrap{display:none}
  body.search-open .searchwrap{display:block;flex:1;min-width:0}
  body.search-open .wordmark,
  body.search-open .navbtn,
  body.search-open .searchbtn{display:none}
  body.search-open .searchclose{
    display:flex;align-items:center;flex:none;cursor:pointer;
    background:transparent;border:0;color:var(--brass-pale);
    font-family:var(--mono);font-size:11px;letter-spacing:.12em;
    text-transform:uppercase;padding:10px 2px 10px 12px;
  }
  /* 16px is the threshold below which iOS zooms the page on focus */
  #q,#q:focus{width:100%;font-size:16px;padding:10px 12px;letter-spacing:.02em}
  #results{
    position:fixed;left:0;right:0;top:58px;width:auto;
    max-height:calc(100vh - 58px);border-left:0;border-right:0;
    box-shadow:0 20px 40px rgba(0,0,0,.42);
  }
  #results .hit{padding:14px}
  #results .hit h4{font-size:16px}
  #results .hit p{font-size:14px}

  /* ---------- the catalogue becomes a drawer ---------- */
  .shell{display:block}
  .rail{
    position:fixed;top:58px;left:0;bottom:0;z-index:60;
    width:min(80vw,330px);height:auto;
    border-right:1px solid var(--paper-edge);border-bottom:0;
    transform:translateX(-102%);transition:transform .22s ease;
    overscroll-behavior:contain;box-shadow:0 0 40px rgba(0,0,0,.3);
  }
  body.nav-open .rail{transform:none}
  body.nav-open{overflow:hidden}
  .railscrim{
    display:block;position:fixed;inset:58px 0 0;z-index:55;
    background:rgba(6,11,16,.5);opacity:0;pointer-events:none;
    transition:opacity .22s ease;
  }
  body.nav-open .railscrim{opacity:1;pointer-events:auto}

  /* thumb-sized targets inside the drawer */
  .rail li a{padding:10px 16px 10px 32px;font-size:16px}
  .rail summary{padding:13px 16px}
  .railhead{padding:0 12px 12px}
  .railhead button{padding:11px 6px}

  /* ---------- reading ---------- */
  main{padding:22px 18px 64px}
  body{font-size:17px;line-height:1.6}
  .entry,.entry.wide{max-width:none}
  h1{font-size:30px}
  h1 .sub{font-size:15px}
  .line{font-size:18.5px;padding-left:14px}
  h2{font-size:21px;margin:32px 0 10px}
  h3{font-size:16.5px}
  .hero .inner,.band,footer.site{padding-left:18px;padding-right:18px}
  .hero img{height:min(52vh,430px)}
  .band{padding-top:38px;padding-bottom:38px}
  blockquote{padding:12px 16px}

  /* ---------- one column wherever it matters ---------- */
  .inst{padding:20px 18px 44px}
  .inst ul{columns:1}
  .inst li{margin-bottom:9px;font-size:15px}
  .contents{grid-template-columns:1fr}
  .contents li{margin-bottom:9px;font-size:15px}
  .facts{grid-template-columns:1fr}
  .instrow{grid-template-columns:1fr;gap:22px}
  .instrow li{margin-bottom:9px;font-size:15px}
  .tiles,.paths{grid-template-columns:1fr}
  .strip{grid-template-columns:1fr 1fr}

  /* ---------- tap targets ---------- */
  .labels a{padding:7px 11px;font-size:11px}
  details.deep>summary{padding:14px 16px}
  .pathway{margin-top:40px}
  .pathway .go{margin-left:0;width:100%;gap:8px}
  .pathway .go a{flex:1;text-align:center;padding:13px 10px}

  /* ---------- drawings: fit to the page, enlarge on demand ---------- */
  .scrollplate{overflow-x:hidden}
  .scrollplate>svg{min-width:0;width:100%;height:auto}
  .platezoom{
    display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
    background:var(--paper-2);border:1px solid var(--paper-edge);
    color:var(--ink-2);font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
    text-transform:uppercase;padding:12px;cursor:pointer;margin:-1px 0 22px;
  }
  .platezoom:active{background:var(--paper-3)}
}

/* ============================================================
   THE DRAWING VIEWER
   A schematic drawn for a desk does not shrink to a phone, so on
   a phone it is shown fitted and opened full-screen on demand,
   where it can be zoomed and panned. Hidden until asked for.
   ============================================================ */

.viewer{position:fixed;inset:0;z-index:90;background:var(--night);display:none}
.viewer.on{display:block}
.viewer .stage{position:absolute;inset:0 0 58px;overflow:auto;-webkit-overflow-scrolling:touch;background:var(--night)}
.viewer .pad{padding:12px;display:inline-block;transform-origin:0 0}
.viewer .pad svg,.viewer .pad img{display:block;width:940px;max-width:none;height:auto}
.viewer .bar{
  position:absolute;left:0;right:0;bottom:0;height:58px;background:#0a1219;
  border-top:1px solid var(--brass);display:flex;align-items:center;gap:8px;padding:0 12px;
}
.viewer .bar .t{
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:#8fa0ae;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.viewer .bar button{
  flex:none;min-width:44px;height:38px;cursor:pointer;
  background:transparent;border:1px solid #2b3d4d;border-radius:3px;color:var(--brass-pale);
  font-family:var(--mono);font-size:15px;line-height:1;
}
.viewer .bar button:active{background:#16232f}
.viewer .bar button.close{font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:0 12px}

@media print{ .topbar,.rail,.inst,.pathway{display:none} .shell{display:block} }

/* ---- contents: what belongs to a card ---- */
.contents{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;
  background:var(--paper-edge);border:1px solid var(--paper-edge);margin:22px 0}
.contents .cgroup{background:var(--paper);padding:14px 16px}
.contents h5{margin:0 0 8px;font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-3);font-weight:400}
.contents h5 .dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px}
.contents ul{list-style:none;margin:0;padding:0}
.contents li{margin:0 0 5px;font-size:14px;line-height:1.4}
.contents li:last-child{margin-bottom:0}
.contents .sub{font-family:var(--mono);font-size:10px;color:var(--ink-3);margin-left:5px}
.contents a.stub{color:var(--ink-3);cursor:default}

footer.site .build{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--ink-3);opacity:.75}

.chip.map{background:#2f6470;color:#f2ece0}

.standpoint{max-width:760px;margin:0 auto;padding:4px 0 8px}
.standpoint p{font-size:15.5px;line-height:1.65;color:var(--ink-2);margin:0 0 14px}
.standpoint p:last-child{margin-bottom:0}
