/* Sources & Acknowledgements — scoped to .src pages */
.src main{padding-bottom:6rem;position:relative}
.src main::before{content:"";position:absolute;inset:0 0 auto 0;height:640px;pointer-events:none;
  background:radial-gradient(60% 70% at 50% 0%,rgba(201,164,92,.16),transparent 70%)}
.src-hero{position:relative;text-align:center;padding:clamp(3.6rem,6.5vw,5rem) 0 clamp(3.2rem,5.5vw,4.2rem)}
.src-eyebrow{display:flex;align-items:center;justify-content:center;gap:1rem;color:var(--gilt);text-transform:uppercase;letter-spacing:.22em;font-size:.78rem;margin:0 0 1.4rem}
.src-eyebrow::before,.src-eyebrow::after{content:"";height:1px;width:clamp(28px,8vw,90px);background:linear-gradient(90deg,transparent,var(--gilt))}
.src-eyebrow::after{transform:scaleX(-1)}
.src h1.src-title{max-width:none;font-size:clamp(2.2rem,5.2vw,3.9rem);line-height:1.04;letter-spacing:-.01em}
.src-title em{display:block;font-style:italic;background:var(--gold-grad);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:shimmer 9s ease-in-out infinite alternate}
@keyframes shimmer{to{background-position:100% 0}}
.src-lede{font-family:var(--serif);font-style:italic;font-size:clamp(1.05rem,2.1vw,1.3rem);line-height:1.6;color:#E3DACB;max-width:52ch;margin:1.2rem auto 0}
.src-lede cite{font-style:italic;color:var(--gilt-hi)}
.orn{display:flex;align-items:center;justify-content:center;gap:.9rem;margin:1.5rem auto 0;color:var(--gilt)}
.orn::before,.orn::after{content:"";height:1px;width:min(26vw,180px);background:linear-gradient(90deg,transparent,rgba(201,164,92,.7))}
.orn::after{transform:scaleX(-1)}
.orn i{width:9px;height:9px;transform:rotate(45deg);background:var(--gold-grad);display:block;box-shadow:0 0 14px rgba(241,220,156,.45)}

.finder{max-width:520px;margin:1.7rem auto 0;text-align:left}
.finder label{display:block;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gilt);margin-bottom:.55rem;text-align:center}
.finder .field{position:relative}
.finder input{width:100%;font:inherit;font-size:1.1rem;color:var(--bone);background:rgba(18,17,16,.85);border:1px solid rgba(201,164,92,.38);border-radius:999px;padding:.95rem 3rem .95rem 1.4rem;text-align:center;transition:border-color .25s,box-shadow .25s;-webkit-appearance:none;appearance:none}
.finder input::placeholder{color:rgba(191,181,167,.7)}
.finder input:focus{outline:none;border-color:var(--gilt-hi);box-shadow:0 0 0 4px rgba(201,164,92,.16),0 10px 40px rgba(0,0,0,.5)}
.finder .clear{position:absolute;right:.55rem;top:50%;transform:translateY(-50%);width:2.1rem;height:2.1rem;border-radius:50%;border:0;background:rgba(201,164,92,.16);color:var(--gilt-hi);font-size:1.1rem;line-height:1;cursor:pointer;display:none}
.finder.has-q .clear{display:block}
.finder .clear:hover{background:rgba(201,164,92,.32)}
.finder .status{min-height:1.6em;margin:.7rem 0 0;text-align:center;font-size:.95rem;color:var(--mauve)}
.finder .status b{color:var(--gilt-hi);font-weight:600}

.src-sec{margin-top:clamp(3rem,7vw,5rem)}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:0 0 1.6rem;padding-bottom:1rem;border-bottom:1px solid rgba(201,164,92,.25);position:relative}
.sec-head::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:120px;background:var(--gold-grad)}
.src h2.sec-title{margin:0;font-size:clamp(1.6rem,3.4vw,2.3rem)}
.sec-count{font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--mauve)}

.grid{list-style:none;margin:0;padding:0;display:grid;gap:1.1rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,310px),1fr))}
.tile{position:relative;overflow:hidden;background:linear-gradient(180deg,var(--wall-2),#0E0D0C);border:1px solid rgba(201,164,92,.2);border-radius:4px;padding:1.4rem 1.4rem 1.3rem;transition:transform .45s var(--ease),border-color .35s,box-shadow .45s,opacity .3s,filter .3s}
.tile::before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:var(--gold-grad);opacity:.55;transition:opacity .35s}
.tile::after{content:"";position:absolute;inset:-1px;background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(241,220,156,.10),transparent 55%);opacity:0;transition:opacity .35s;pointer-events:none}
.tile:hover{transform:translateY(-4px);border-color:rgba(241,220,156,.55);box-shadow:0 18px 50px rgba(0,0,0,.55),0 0 0 1px rgba(201,164,92,.12)}
.tile:hover::before{opacity:1}
.tile:hover::after{opacity:1}
.tile .no{font-family:var(--serif);font-style:italic;font-size:.95rem;color:var(--gilt-lo);display:block;margin-bottom:.15rem}
.tile .city{display:block;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gilt);margin-bottom:.35rem}
.tile h3{font-size:clamp(1.15rem,2vw,1.4rem);line-height:1.25;margin:0 0 .95rem;color:var(--bone)}
.pg{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}
.pg li{font-variant-numeric:tabular-nums;font-size:.85rem;line-height:1;padding:.42rem .62rem;border-radius:999px;color:#E3DACB;background:rgba(242,235,223,.05);border:1px solid rgba(242,235,223,.1);transition:background .25s,color .25s,border-color .25s,transform .25s}
.tile:hover .pg li{border-color:rgba(201,164,92,.3)}
.pg li.hit{background:var(--gold-grad);color:#2A1A0C;border-color:transparent;font-weight:700;transform:scale(1.12);box-shadow:0 0 18px rgba(241,220,156,.45)}
.tile.dim,.js .tile.rv.in.dim{opacity:.22;filter:grayscale(.6);transform:none}
.tile.match{border-color:var(--gilt-hi);box-shadow:0 0 0 1px rgba(241,220,156,.35),0 16px 50px rgba(0,0,0,.5)}
.pagetotal{display:block;margin:0 0 .85rem;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--mauve)}

.src-thanks{margin:clamp(3.5rem,8vw,6rem) auto 0;text-align:center;max-width:46ch}
.src-thanks p{font-family:var(--serif);font-style:italic;color:var(--gilt-hi);font-size:1.15rem;margin:1.2rem 0 0}

.js .rv{opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:var(--d,0s)}
.js .rv.in{opacity:1;transform:none}
.js .tile.rv.in:hover{transform:translateY(-4px)}
@media (prefers-reduced-motion:reduce){
  .js .rv{opacity:1;transform:none;transition:none}
  .src-title em{animation:none}
  .tile,.tile:hover{transition:none;transform:none}
}
@media (max-width:700px){.sec-head{align-items:flex-start}}
@media print{
  .src main::before,.finder,.orn{display:none}
  .tile{break-inside:avoid;background:#fff;border-color:#999;box-shadow:none}
  .tile h3,.pg li{color:#000}
  body.src{background:#fff;color:#000}
}
.finder input::-webkit-search-cancel-button,.finder input::-webkit-search-decoration{-webkit-appearance:none;display:none}

/* ---------- motion ---------- */
.frame-art{position:absolute;left:50%;top:0;width:min(1080px,118%);transform:translateX(-50%);height:100%;pointer-events:none;z-index:0;
  -webkit-mask-image:radial-gradient(70% 78% at 50% 48%,#000 55%,transparent 100%);mask-image:radial-gradient(70% 78% at 50% 48%,#000 55%,transparent 100%)}
.frame-art svg{position:absolute;inset:0;width:100%;height:100%;opacity:.5;overflow:visible}
.frame-art .dust{position:absolute;inset:0;width:100%;height:100%}
.src-hero>:not(.frame-art){position:relative;z-index:1}
.frame-art .ln{stroke-dasharray:1;stroke-dashoffset:1}
.frame-art .bead{opacity:0}
.frame-art .glint{stroke-dasharray:.07 .93;stroke-dashoffset:0;opacity:0;filter:drop-shadow(0 0 6px rgba(241,220,156,.9))}
.frame-art .corners{opacity:0}
.js .frame-art.go .l1{animation:draw 2.4s var(--ease) .1s forwards}
.js .frame-art.go .l2{animation:draw 2.4s var(--ease) .45s forwards}
.js .frame-art.go .l3{animation:draw 2.4s var(--ease) .8s forwards}
.js .frame-art.go .bead{animation:fadein 1.6s ease 1.5s forwards}
.js .frame-art.go .corners{animation:fadein 1.2s ease 2.2s forwards}
.js .frame-art.go .glint{animation:fadein .8s ease 3s forwards,orbit 9s linear 3s infinite}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes fadein{to{opacity:1}}
@keyframes orbit{to{stroke-dashoffset:-1}}
.frame-art:not(.go) .ln,.no-js .frame-art .ln{stroke-dashoffset:0}

/* hero entrance */
.js .src-hero>.src-eyebrow,.js .src-hero>.src-title,.js .src-hero>.src-lede,.js .src-hero>.orn,.js .src-hero>.finder{animation:rise 1s var(--ease) backwards}
.js .src-hero>.src-eyebrow{animation-delay:.1s}.js .src-hero>.src-title{animation-delay:.25s}.js .src-hero>.src-lede{animation-delay:.5s}
.js .src-hero>.orn{animation-delay:.7s}.js .src-hero>.finder{animation-delay:.85s}
@keyframes rise{from{opacity:0;transform:translateY(22px)}}
.src-eyebrow::before,.src-eyebrow::after{transform-origin:right}
.js .src-hero>.orn i{animation:spin 1.4s var(--ease) .8s backwards,pulse 3.6s ease-in-out 2.2s infinite}
@keyframes spin{from{transform:rotate(-225deg) scale(0)}}
@keyframes pulse{50%{box-shadow:0 0 24px rgba(241,220,156,.8)}}

/* section rule + chips */
.sec-head::after{width:0;transition:width 1.4s var(--ease) .25s}
.sec-head.in::after{width:140px}
html:not(.js) .sec-head::after{width:120px}
.js .tile .pg li{opacity:0;transform:scale(.7) translateY(6px)}
.js .tile.in .pg li{animation:chip .55s var(--ease) backwards;animation-delay:calc(.25s + var(--i,0)*35ms);opacity:1;transform:none}
@keyframes chip{from{opacity:0;transform:scale(.7) translateY(6px)}}
.js .tile.in .pg li.hit{transform:scale(1.12)}
.tile::before{transform-origin:left;transition:opacity .35s,transform .9s var(--ease)}
.js .tile.rv::before{transform:scaleX(0)}
.js .tile.rv.in::before{transform:scaleX(1);transition-delay:.15s}

@media (prefers-reduced-motion:reduce){
  .frame-art .ln{stroke-dashoffset:0;animation:none!important}
  .frame-art .bead,.frame-art .corners{opacity:1;animation:none!important}
  .frame-art .glint,.frame-art .dust{display:none}
  .js .src-hero>*{opacity:1!important;transform:none!important;animation:none!important}
  .js .tile .pg li{opacity:1;transform:none;animation:none!important}
  .js .tile.rv::before{transform:none}
  .sec-head::after{width:140px;transition:none}
  .orn i{animation:none!important}
}
@media (max-width:700px){.frame-art{width:100%}.frame-art svg{display:none}}
@media print{.frame-art{display:none}}
