/* TACC refresh (13 Sep 2026): interlude + principles graphics. Loaded last. Owner: sections agent.
   Interlude = "the passage": New York and Seoul as two live clocks at either end of one line (sections.js passage()).
   Principles = "the cut stone": a step-cut stone whose three rings and table are the four principles (sections.js tenets()).
   Colours come from the shared tokens only, so the identity palette flows through. */

/* ================================= interlude: the passage ================================= */
.passage{--dial:clamp(54px,14vw,84px);--chan:calc(var(--dial) + 18px);overflow:clip;
  background:radial-gradient(62% 40% at 50% 44%,rgba(36,82,122,.26),rgba(36,82,122,0) 72%),linear-gradient(180deg,var(--ink-bg) 0%,var(--deep) 52%,var(--ink-bg) 100%)}
@media (min-width:900px){.passage{--dial:clamp(100px,9.2vw,136px);--chan:clamp(84px,7.4vw,112px)}}
.passage__in{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;gap:clamp(44px,7vh,84px);padding-block:clamp(84px,12vh,120px)}
@media (min-width:900px){.passage__in{min-height:clamp(560px,90svh,960px);padding-block:clamp(96px,13vh,150px)}}
.passage__stage{position:relative}
.passage__phrase{position:relative;z-index:2;text-align:center;font-family:var(--serif);font-weight:320;font-size:clamp(1.7rem,8.2vw,3.2rem);line-height:1;letter-spacing:-.026em;color:#F4F7FB}
@media (min-width:900px){.passage__phrase{font-size:clamp(3.2rem,5.3vw,5.5rem)}}
.passage__l{display:block;white-space:nowrap}
.passage__l--b{margin-top:var(--chan);font-style:italic;color:var(--em,var(--sand-lt))}
.passage__li{display:inline-block}
.passage:not(.is-built) .passage__l--b{margin-top:.08em}
.passage__wire{position:absolute;left:0;right:0;top:50%;z-index:1;height:var(--dial);margin-top:calc(var(--dial) / -2);pointer-events:none}
.passage:not(.is-built) .passage__wire{display:none}
.passage__cv{position:absolute;left:0;top:50%;width:100%;height:var(--chan);transform:translateY(-50%)}

/* the dials: an engraved face (a guilloche rosette), sixty ticks, two hands, a gold seconds bead */
.dial{position:absolute;top:0;width:var(--dial);height:var(--dial);overflow:visible}
.dial--ny{left:0}
.dial--seoul{right:0}
.dial__halo{fill:none;stroke:var(--sand-lt);stroke-opacity:0;stroke-width:7;vector-effect:non-scaling-stroke;transition:stroke-opacity 1.2s var(--ease)}
.dial__face{fill:#0A1422;stroke:rgba(215,225,236,.3);stroke-width:1.1;vector-effect:non-scaling-stroke;transition:stroke .9s var(--ease),fill .9s}
.dial--ny .dial__face{stroke:rgba(169,196,226,.72)}
.passage.is-reached .dial--seoul .dial__face{stroke:var(--sand-lt)}
.passage.is-reached .dial--seoul .dial__halo{stroke-opacity:.13}
.dial.is-night .dial__face{fill:#070D17}
.dial__rose path{fill:none;stroke:var(--sand-lt);stroke-opacity:.28;stroke-width:.45}
.dial__ticks{fill:none;stroke:rgba(215,225,236,.42);stroke-width:.7;stroke-linecap:round}
.dial__ticks--major{stroke:rgba(244,247,251,.92);stroke-width:1.6}
.dial__code{font-family:var(--mono);font-size:6.6px;letter-spacing:.22em;fill:var(--on-dark-3);text-anchor:middle}
.dial__hand,.dial__sec{transform-box:view-box;transform-origin:0 0}
.dial__hand{fill:none;stroke:#F4F7FB;stroke-linecap:round}
.dial__hand--h{stroke-width:3.4}
.dial__hand--m{stroke-width:1.9}
.dial__sec{fill:var(--sand-lt);transition:transform .5s cubic-bezier(.34,1.56,.64,1)}
.dial__pin{fill:var(--sand-lt);stroke:#0A1422;stroke-width:1.2}
.passage:not(.is-live) .dial__hand,.passage:not(.is-live) .dial__sec{visibility:hidden}
html.rm .dial__sec{display:none}

/* the two cities, under their dials */
.passage__cities{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start;gap:22px clamp(20px,4vw,48px)}
.city{min-width:0;grid-row:1}
.city--ny{grid-column:1}
.city--seoul{grid-column:3;text-align:right}
.city__name{font-family:var(--serif);font-weight:340;font-size:clamp(1.35rem,2.1vw,2rem);line-height:1.1;letter-spacing:-.012em;color:#F4F7FB}
.city__time{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-top:10px;font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--on-dark-2);font-variant-numeric:tabular-nums}
.city--seoul .city__time{justify-content:flex-end}
.city__hm{font-size:1.3em;letter-spacing:.05em;color:#F4F7FB}
.city__zone{color:var(--sand-lt)}
.city__role{max-width:36ch;margin-top:12px;font-family:var(--mono);font-size:.64rem;line-height:1.6;letter-spacing:.16em;text-transform:uppercase;color:var(--on-dark-3)}
.city--seoul .city__role{margin-left:auto}
.passage__gap{align-self:center;font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--on-dark-3);text-align:center;white-space:nowrap}
@media (max-width:899px){
  .passage__cities{grid-template-columns:minmax(0,1fr) minmax(0,1fr);row-gap:26px}
  .passage__gap{grid-column:1 / -1;grid-row:2;white-space:normal}
  .city--seoul{grid-column:2}
  .city__role{letter-spacing:.1em}
}

/* reveal: the phrase rises once the band is in view (only once sections.js has built the band) */
.js:not(.rm) .passage.is-built:not(.is-in) .passage__li{opacity:0;transform:translateY(42%)}
.js:not(.rm) .passage.is-built:not(.is-in) .passage__cities{opacity:0;transform:translateY(18px)}
.passage.is-in .passage__li{transition:opacity 1.1s var(--ease),transform 1.4s var(--ease)}
.passage.is-in .passage__l--b .passage__li{transition-delay:.12s}
.passage.is-in .passage__cities{transition:opacity 1.2s var(--ease) .35s,transform 1.4s var(--ease) .35s}
.reveal-all .passage__li,.reveal-all .passage__cities{opacity:1!important;transform:none!important}

/* ================================= principles: the cut stone ================================= */
.tenets{display:grid;grid-template-columns:minmax(0,1fr)}
.tenets__head{max-width:none}
/* narrow phones: keep "The standard applied / to every opportunity" to two lines (no lone last word) */
@media (max-width:380px){.tenets__head h2{font-size:clamp(1.5rem,8.1vw,1.9rem)}}
.tenets__list{position:relative;margin-top:clamp(28px,4vw,56px)}
.tenets:not(.is-built) .tenets__stage{display:none}
@media (min-width:900px){
  .tenets.is-built{grid-template-columns:minmax(0,1.04fr) minmax(0,.96fr);grid-template-areas:"head head" "list stage";column-gap:clamp(40px,6vw,110px)}
  .tenets.is-built .tenets__head{grid-area:head}
  .tenets.is-built .tenets__list{grid-area:list}
  .tenets.is-built .tenets__stage{grid-area:stage;align-self:start;top:calc(var(--hdr-h) + 9vh);margin-top:clamp(28px,4vw,56px)}
}
@media (max-width:899px){
  .tenets__stage{margin-top:clamp(22px,5vw,34px)}
  .tenets.is-built .tenets__list{margin-top:4px}
}

/* the list: the four principles on one engraved line, each numbered in a small step-cut plate */
.tenets__list::before{content:"";position:absolute;left:17px;top:0;bottom:0;width:1px;background:linear-gradient(180deg,rgba(168,132,63,0),var(--rule-l) 12%,var(--rule-l) 88%,rgba(168,132,63,0))}
.tenet{position:relative;display:grid;grid-template-columns:34px minmax(0,1fr);column-gap:clamp(18px,2.4vw,30px);align-items:start;padding-block:30px}
.js .tenets.is-built .tenet{min-height:42vh;align-content:center;opacity:.36;transition:opacity .6s var(--ease)}
.js .tenets.is-built .tenet.is-active{opacity:1}
.tenet::before{content:"";position:absolute;left:17px;top:16%;bottom:16%;width:1px;background:var(--sand);transform:scaleY(0);transition:transform .8s var(--ease)}
.tenet.is-active::before{transform:scaleY(1)}
.tenet__n{position:relative;z-index:1;display:grid;place-items:center;width:34px;height:44px;margin-top:1px;font-family:var(--mono);font-size:.68rem;letter-spacing:.04em;color:var(--gold-deep,var(--sand));isolation:isolate;transition:color .5s}
.tenet__n::before,.tenet__n::after{content:"";position:absolute;z-index:-1;transition:background-color .5s}
.tenet__n::before{inset:0;background:var(--rule-l);clip-path:polygon(9px 0,calc(100% - 9px) 0,100% 9px,100% calc(100% - 9px),calc(100% - 9px) 100%,9px 100%,0 calc(100% - 9px),0 9px)}
.tenet__n::after{inset:1px;background:var(--paper);clip-path:polygon(8.6px 0,calc(100% - 8.6px) 0,100% 8.6px,100% calc(100% - 8.6px),calc(100% - 8.6px) 100%,8.6px 100%,0 calc(100% - 8.6px),0 8.6px)}
.tenet.is-past .tenet__n::before{background:var(--sand)}
.tenet.is-active .tenet__n{color:#fff}
.tenet.is-active .tenet__n::before,.tenet.is-active .tenet__n::after{background:var(--gold-deep,var(--sand))}
.tenet h3{font-family:var(--serif);font-weight:380;font-size:clamp(1.45rem,2.3vw,2.15rem);line-height:1.12;letter-spacing:-.014em;text-wrap:balance}
.tenet p{margin-top:12px;max-width:48ch;color:var(--on-light-2);text-wrap:pretty}
.reveal-all .tenet{opacity:1!important}
@media (max-width:899px){.js .tenets.is-built .tenet{min-height:34vh}}

/* the stone */
.gem{position:relative;width:min(100%,560px);margin-inline:auto;--g-ink:var(--on-light);--g-lit:var(--sand-lt);--g-brass:var(--sand);--g-deep:var(--gold-deep,var(--sand))}
.gem__svg{display:block;width:100%;height:auto;overflow:visible}
.gem__frame{fill:none;stroke:var(--g-brass);stroke-opacity:.42;stroke-width:1;vector-effect:non-scaling-stroke}
.gem__girdle{fill:none;stroke:var(--g-ink);stroke-opacity:.74;stroke-width:1.3;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none}
.gem__f,.gem__r{fill:var(--g-ink);fill-opacity:calc(var(--t) * .13);stroke:var(--g-ink);stroke-opacity:.26;stroke-width:.75;stroke-linejoin:round;vector-effect:non-scaling-stroke;
  transition:fill .8s var(--ease),fill-opacity .8s var(--ease),stroke .8s var(--ease),stroke-opacity .8s var(--ease)}
.gt-0{--t:0}.gt-1{--t:.1}.gt-2{--t:.2}.gt-3{--t:.3}.gt-4{--t:.4}.gt-5{--t:.5}.gt-6{--t:.6}.gt-7{--t:.7}.gt-8{--t:.8}.gt-9{--t:.9}.gt-10{--t:1}
.gem__band.is-lit .gem__f,.gem__band.is-lit .gem__r{fill:var(--g-lit);fill-opacity:calc(.06 + var(--t) * .34);stroke:var(--g-brass);stroke-opacity:.36}
.gem__band.is-active .gem__f,.gem__band.is-active .gem__r{fill:var(--g-lit);fill-opacity:calc(.18 + var(--t) * .82);stroke:var(--g-deep);stroke-opacity:.62}
.gem__band.is-hover:not(.is-active) .gem__f,.gem__band.is-hover:not(.is-active) .gem__r{stroke:var(--g-deep);stroke-opacity:.72}
@media (hover:hover) and (pointer:fine){.gem.is-live .gem__band{cursor:pointer}}
.gem__spark{fill:#fff;opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(.3)}
.gem.is-near .gem__band.is-active .gem__spark{animation:gem-spark 3.4s var(--ease-io) infinite}
@keyframes gem-spark{0%,100%{opacity:0;transform:scale(.3) rotate(0deg)}42%{opacity:1;transform:scale(1) rotate(45deg)}72%{opacity:0;transform:scale(.45) rotate(90deg)}}
html.rm .gem__band.is-active .gem__spark{animation:none;opacity:.95;transform:scale(.8)}
.gem__sheen{pointer-events:none;opacity:.7}
html.rm .gem__sheen{display:none}
.gem__leads{opacity:0;transition:opacity .6s}
.gem.is-live .gem__leads{opacity:1}
.gem__lead path{fill:none;stroke:var(--g-ink);stroke-opacity:.3;stroke-width:1;vector-effect:non-scaling-stroke;transition:stroke .5s,stroke-opacity .5s}
.gem__lead circle{fill:var(--paper);stroke:var(--g-ink);stroke-opacity:.55;stroke-width:1;vector-effect:non-scaling-stroke;transition:fill .5s,stroke .5s,stroke-opacity .5s}
.gem__lead.is-active path{stroke:var(--g-deep);stroke-opacity:.9}
.gem__lead.is-active circle{fill:var(--g-lit);stroke:var(--g-deep);stroke-opacity:1}

/* the callouts: the keyboard jump buttons, set at the ends of the leader lines (wide viewBox -172 -218 588 436) */
.gem__keys{position:absolute;inset:0;pointer-events:none}
.gem__keys li{position:absolute;left:67%;transform:translateY(-50%)}
.gem__keys li:nth-child(1){top:27.98%}
.gem__keys li:nth-child(2){top:42.66%}
.gem__keys li:nth-child(3){top:57.34%}
.gem__keys li:nth-child(4){top:72.02%}
.gem__key{pointer-events:auto;display:flex;align-items:center;gap:10px;min-height:40px;padding:4px 8px 4px 2px;text-align:left;color:var(--on-light-2);transition:color .4s}
.gem__kn{flex:none;min-width:2.2em;font-family:var(--mono);font-size:.64rem;letter-spacing:.08em;color:var(--g-deep)}
.gem__kt{font-family:var(--serif);font-weight:360;font-size:clamp(1rem,1.25vw,1.18rem);line-height:1.1;white-space:nowrap;
  background:linear-gradient(var(--g-deep),var(--g-deep)) 0 100%/0 1px no-repeat;padding-bottom:3px;transition:background-size .6s var(--ease)}
.gem__key:hover,.gem__key:focus-visible,.gem__key[aria-current="true"]{color:var(--on-light)}
.gem__key[aria-current="true"] .gem__kt{background-size:100% 1px}
@media (max-width:899px){
  .gem{display:flex;align-items:center;gap:clamp(12px,4vw,22px);width:100%}
  .gem__svg{flex:none;width:clamp(60px,19vw,92px)}
  .gem__keys{position:static;flex:1;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;pointer-events:auto}
  .gem__keys li{position:static;transform:none}
  .gem__key{width:100%;min-height:42px;padding:0 10px;gap:8px;border:1px solid var(--rule-l);background:var(--paper)}
  .gem__kt{font-size:.95rem;padding-bottom:0;background:none}
  .gem__key[aria-current="true"]{background:var(--on-light);border-color:var(--on-light);color:var(--paper)}
  .gem__key[aria-current="true"] .gem__kn{color:var(--sand-lt)}
  .gem__leads{display:none}
  .gem__r{stroke-opacity:.12}
}
@media (max-width:359px){.gem__kt{font-size:.84rem}.gem__key{padding:0 7px;gap:5px}.gem__kn{min-width:1.8em}}
