/* RAREBLOG enhancement layer styles — pairs with enhance.js. Self-contained. */

/* ---- dark mode (accent stays; surfaces flip) ---- */
:root[data-theme="dark"]{
  --paper:#141216; --card:#1c1a20; --ink:#f2ede6; --line:#2c2932; --mut:#a49caf;
}
:root[data-theme="dark"] header.site{background:rgba(20,18,22,.9)}
:root[data-theme="dark"] .card,:root[data-theme="dark"] .snapshot{background:var(--card)}
:root[data-theme="dark"] body{color:var(--ink)}
html{transition:none}
body,.card,header.site,.snapshot,table.market td,table.market th{transition:background-color .25s ease,color .25s ease,border-color .25s ease}

/* ---- nav tools (theme + search buttons) ---- */
.nav-tools{display:flex;gap:.4rem;align-items:center;margin-left:.6rem}
.icon-btn{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);
  background:var(--card);color:var(--ink);border-radius:9px;cursor:pointer;transition:all .15s ease}
.icon-btn:hover{border-color:var(--accent);color:var(--accent)}

/* ---- header morph ---- */
header.site.scrolled .navwrap{padding-top:.45rem;padding-bottom:.45rem}
header.site.scrolled .brand .word{font-size:1.15rem}
header.site.scrolled{box-shadow:0 6px 20px -14px rgba(0,0,0,.4)}
header.site .navwrap,header.site .brand .word{transition:all .2s ease}

/* ---- reading progress + back to top ---- */
.readprog{position:fixed;top:0;left:0;height:3px;width:0;background:var(--accent);z-index:60}
.backtop{position:fixed;right:1.2rem;bottom:1.2rem;width:44px;height:44px;border-radius:50%;
  border:none;background:var(--accent);color:#fff;font-size:1.2rem;cursor:pointer;opacity:0;
  transform:translateY(10px);transition:all .2s ease;z-index:40}
.backtop.show{opacity:1;transform:none}

/* ---- command palette ---- */
.cmdk{position:fixed;inset:0;background:rgba(10,8,12,.55);backdrop-filter:blur(3px);z-index:100;
  display:flex;align-items:flex-start;justify-content:center;padding-top:12vh}
.cmdk-box{width:min(600px,92vw);background:var(--card);border:1px solid var(--line);border-radius:14px;
  overflow:hidden;box-shadow:0 30px 80px -20px rgba(0,0,0,.6)}
.cmdk-box input{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);
  font-size:1.05rem;padding:1rem 1.1rem;outline:none;font-family:var(--sans)}
.cmdk-list{list-style:none;margin:0;padding:.4rem;max-height:50vh;overflow:auto}
.cmdk-list li a{display:flex;gap:.7rem;align-items:baseline;padding:.6rem .7rem;border-radius:8px}
.cmdk-list li.on a,.cmdk-list li a:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.cmdk-list .k{font-size:.66rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-2);font-weight:700;flex:none;width:104px}
.cmdk-list .tt{font-family:var(--serif);font-size:1rem}
.cmdk-list .empty{padding:1rem;color:var(--mut)}
.cmdk-foot{padding:.5rem .8rem;border-top:1px solid var(--line);color:var(--mut);font-size:.72rem}

/* ---- toasts ---- */
.toast-wrap{position:fixed;bottom:1.2rem;left:50%;transform:translateX(-50%);z-index:120;display:flex;flex-direction:column;gap:.5rem}
.toast{background:var(--ink);color:var(--paper);padding:.6rem 1rem;border-radius:999px;font-size:.85rem;
  opacity:0;transform:translateY(10px);transition:all .25s ease;box-shadow:0 10px 30px -12px rgba(0,0,0,.5)}
.toast.in{opacity:1;transform:none}

/* ---- TOC ---- */
.toc{position:fixed;left:max(1rem,calc(50% - 620px));top:120px;width:200px;font-size:.85rem}
.toc-h{text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:700;color:var(--mut);margin-bottom:.5rem}
.toc ul{list-style:none;margin:0;padding:0;border-left:2px solid var(--line)}
.toc a{display:block;padding:.28rem .7rem;color:var(--mut);border-left:2px solid transparent;margin-left:-2px}
.toc a.on{color:var(--accent-2);border-color:var(--accent);font-weight:600}
@media (max-width:1240px){.toc{display:none}}

/* ---- article bar (save/share) + poll ---- */
.artbar{display:flex;gap:.6rem;margin:0 0 1.3rem}
.chip-btn{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;
  padding:.4rem .9rem;font-size:.82rem;cursor:pointer;font-weight:600;transition:all .15s ease}
.chip-btn:hover{border-color:var(--accent)}
.chip-btn.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.poll{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:1.1rem 1.2rem;margin:1.8rem 0}
.poll-q{font-family:var(--serif);font-size:1.2rem;margin-bottom:.7rem}
.poll-opts{display:flex;gap:.5rem;flex-wrap:wrap}
.poll-opts button{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:8px;
  padding:.5rem 1.1rem;cursor:pointer;font-weight:600;transition:all .15s ease}
.poll-opts button:hover{border-color:var(--accent);color:var(--accent)}
.poll-res{color:var(--mut)}

/* ---- lightbox ---- */
.lightbox{position:fixed;inset:0;background:rgba(8,6,10,.9);z-index:110;display:grid;place-items:center;
  padding:3vw;cursor:zoom-out;opacity:0;transition:opacity .25s ease}
.lightbox.in{opacity:1}
.lightbox img{max-width:94vw;max-height:92vh;border-radius:8px;box-shadow:0 20px 60px -10px #000}

/* ---- confetti ---- */
canvas.confetti{position:fixed;inset:0;pointer-events:none;z-index:130}

/* ---- reveal + kinetic ---- */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .5s ease var(--d,0ms),transform .5s ease var(--d,0ms)}
.reveal.shown{opacity:1;transform:none}
.hero-home h1 .kw{display:inline-block;opacity:0;transform:translateY(18px);
  animation:kw .5s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--i)*70ms)}
@keyframes kw{to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}.hero-home h1 .kw{opacity:1;transform:none;animation:none}}

/* ---- load more + filter chips ---- */
.loadmore{display:block;margin:1.6rem auto 0;border:1px solid var(--ink);background:transparent;color:var(--ink);
  padding:.6rem 1.6rem;border-radius:999px;font-weight:600;cursor:pointer}
.loadmore:hover{background:var(--ink);color:var(--paper)}
.filterbar{display:flex;gap:.5rem;flex-wrap:wrap;margin:0 0 1.2rem}
.fchip{border:1px solid var(--line);background:transparent;color:var(--mut);border-radius:999px;
  padding:.35rem .9rem;font-size:.8rem;cursor:pointer;font-weight:600}
.fchip.on{background:var(--accent);color:#fff;border-color:var(--accent)}

/* ---- sortable table affordance ---- */
table.market th.sortable{cursor:pointer;user-select:none}
table.market th.sortable:hover{color:var(--accent-2)}
table.market th[aria-sort="ascending"]::after{content:" ▲";font-size:.7em}
table.market th[aria-sort="descending"]::after{content:" ▼";font-size:.7em}

/* ---- announcement bar ---- */
.announce{background:var(--accent);color:#fff;text-align:center;font-size:.85rem;padding:.5rem 1rem;
  display:flex;align-items:center;justify-content:center;gap:1rem}
.announce button{background:transparent;border:0;color:#fff;font-size:1.1rem;cursor:pointer;line-height:1}

/* ---- newsletter ---- */
.nl{border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:1.4rem;margin-bottom:2rem;max-width:520px}
.nl h3{font-family:var(--serif);color:var(--paper);font-size:1.4rem;margin:0 0 .3rem}
.nl p{color:#a89f90;margin:0 0 .9rem;font-size:.92rem}
.nlform{display:flex;gap:.5rem;flex-wrap:wrap}
.nlform input{flex:1;min-width:200px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);
  color:#fff;border-radius:8px;padding:.6rem .8rem;font-family:var(--sans)}
.nlform button{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:.6rem 1.2rem;font-weight:700;cursor:pointer}

/* ---- glossary ---- */
abbr.gloss{text-decoration:underline dotted;text-underline-offset:3px;cursor:help;border:0}

/* ---- pull-quote ---- */
blockquote.pq{margin:1.8rem 0;padding:.4rem 0 .4rem 1.4rem;border-left:4px solid var(--accent);
  font-family:var(--serif);font-size:1.5rem;line-height:1.3;color:var(--ink)}

/* ---- related carousel ---- */
.related .rail-scroll{display:flex;gap:1rem;overflow-x:auto;padding-bottom:.6rem;scroll-snap-type:x mandatory}
.rcard{flex:0 0 240px;scroll-snap-align:start;border:1px solid var(--line);background:var(--card);
  border-radius:10px;padding:.9rem 1rem;display:flex;flex-direction:column;gap:.35rem}
.rcard .k{font-size:.66rem;text-transform:uppercase;letter-spacing:.07em;color:var(--accent-2);font-weight:700}
.rcard .tt{font-family:var(--serif);font-size:1.05rem;line-height:1.2}
.rcard:hover{border-color:var(--accent)}

/* ---- sparkline + signal badge ---- */
svg.spark{vertical-align:middle;margin-right:.5rem}
.sig{font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;font-weight:700;padding:.1rem .4rem;border-radius:4px;margin-left:.4rem}
.sig.hot{background:#1a7f4b1a;color:#1a7f4b}.sig.warm{background:#b8862f1a;color:#9a6f22}.sig.cool{background:#b8362e1a;color:#b8362e}

/* ---- methodology modal ---- */
.methlink{cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}
.modal{position:fixed;inset:0;background:rgba(10,8,12,.55);backdrop-filter:blur(3px);z-index:110;display:grid;place-items:center;padding:1rem}
.modal-box{background:var(--card);border:1px solid var(--line);border-radius:14px;max-width:460px;padding:1.6rem;box-shadow:0 30px 80px -20px rgba(0,0,0,.6)}
.modal-box h3{font-family:var(--serif);font-size:1.4rem;margin:0 0 .6rem}
.modal-box p{color:var(--mut);margin:0 0 1.1rem}

/* ---- author card ---- */
.byline.bycard{display:flex;align-items:center;gap:.7rem}
.byline .avatar{width:38px;height:38px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-family:var(--serif);font-weight:800;flex:none}
.byline .byinfo{display:flex;flex-direction:column;line-height:1.3}
.byline .byinfo b{color:var(--ink)}
.byline .line{font-size:.8rem}

/* ---- coverage strip ---- */
.coverage{max-width:var(--wide);margin:1rem auto 0;padding:0 clamp(1rem,4vw,2rem);color:var(--mut);
  font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}
.coverage i{opacity:.4;font-style:normal}
.coverage span{font-weight:600}

/* ---- animated hero backdrop ---- */
.hero-anim{position:relative}
.hero-anim::before{content:"";position:absolute;inset:-20% -10% auto -10%;height:130%;z-index:-1;
  background:radial-gradient(60% 60% at 20% 20%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),
    radial-gradient(50% 50% at 90% 10%,color-mix(in srgb,var(--accent-2) 12%,transparent),transparent 70%);
  animation:heropan 14s ease-in-out infinite alternate;filter:blur(10px)}
@keyframes heropan{to{transform:translate3d(0,-16px,0) scale(1.05)}}

/* ---- comparison slider ---- */
.compare{margin:0 0 1.7rem}
.compare .cwrap{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:16/9}
.compare img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.compare .ctop{position:absolute;inset:0;width:50%;overflow:hidden;border-right:2px solid #fff}
.compare .ctop img{width:auto;min-width:100%;filter:grayscale(.5) sepia(.3) hue-rotate(-15deg) contrast(1.1)}
.compare input[type=range]{position:absolute;bottom:10px;left:5%;width:90%;z-index:3}
.compare figcaption{display:flex;justify-content:space-between;color:var(--mut);font-size:.78rem;margin-top:.4rem}

/* ---- mega-menu ---- */
header.site nav a.has-mega{position:relative}
.megapanel{position:absolute;top:100%;left:0;min-width:230px;background:var(--card);border:1px solid var(--line);
  border-radius:10px;padding:.5rem;box-shadow:0 20px 50px -20px rgba(0,0,0,.4);display:none;flex-direction:column;gap:.1rem;z-index:40}
header.site nav a.has-mega:hover .megapanel{display:flex}
.megapanel a{font-family:var(--serif);font-size:.92rem;text-transform:none;letter-spacing:0;color:var(--ink);
  padding:.45rem .6rem;border-radius:7px;border:0}
.megapanel a:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-2)}
@media (max-width:640px){.megapanel{display:none!important}}

/* ---- skeleton loaders ---- */
.skel{position:relative;background:var(--line);overflow:hidden}
.skel::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--paper) 55%,transparent),transparent);
  transform:translateX(-100%);animation:shimmer 1.3s infinite}
@keyframes shimmer{100%{transform:translateX(100%)}}
.card .thumb img,.masonry img,.hero-art img{opacity:0;transition:opacity .35s ease}
.card .thumb img.imgloaded,.masonry img.imgloaded,.hero-art img.imgloaded{opacity:1}
@media (prefers-reduced-motion:reduce){.skel::after{animation:none}.card .thumb img,.masonry img,.hero-art img{opacity:1}}

/* ---- market data-grid filter ---- */
.gridfilter{display:flex;align-items:center;gap:.8rem;margin:0 0 .7rem}
.gridfilter input{flex:1;max-width:280px;border:1px solid var(--line);background:var(--card);color:var(--ink);
  border-radius:8px;padding:.45rem .7rem;font-family:var(--sans)}
.gridfilter .cnt{color:var(--mut);font-size:.8rem;font-variant-numeric:tabular-nums}

/* ---- MPA view transitions ---- */
@view-transition{navigation:auto}

/* ---- watchlist / gallery pages ---- */
.saved-empty{color:var(--mut);padding:2rem 0}
.masonry{columns:4 220px;column-gap:1rem}
.masonry a{display:block;margin:0 0 1rem;break-inside:avoid;border-radius:10px;overflow:hidden;border:1px solid var(--line)}
.masonry figcaption{padding:.5rem .7rem;font-size:.82rem;color:var(--mut)}
