/* ===================================================
   Elevator Trade News - Shared Design System
   =================================================== */

/* --- Design Tokens --- */
:root {
  --bg:#f8f9fa;--surface:#ffffff;--glass:rgba(255,255,255,.92);
  --ink:#09090b;--ink2:#3f3f46;--ink3:#71717a;--ink4:#a1a1aa;--ink5:#d4d4d8;
  --line:#f4f4f5;--line2:#e4e4e7;--line3:#d4d4d8;
  --accent:#b91c1c;--accent-soft:rgba(185,28,28,.05);--accent-border:rgba(185,28,28,.14);
  --green:#059669;--amber:#d97706;--blue:#2563eb;
  --cat-oem:#1d4ed8;--cat-market:#09090b;--cat-safety:#b91c1c;--cat-code:#047857;
  --cat-labor:#92400e;--cat-smart:#6d28d9;--cat-reg:#4338ca;--cat-res:#0e7490;--cat-work:#78350f;--cat-ma:#09090b;
  --r-sm:6px;--r-md:10px;--r-pill:100px;
  --sh-sm:0 1px 2px rgba(0,0,0,.04);
  --sh:0 1px 3px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.04);
  --sh-lg:0 4px 12px rgba(0,0,0,.03),0 20px 40px rgba(0,0,0,.06);
}

/* --- Reset & Base --- */
*{margin:0;padding:0;box-sizing:border-box}
html{background:var(--bg);scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:'Inter',sans-serif;min-height:100vh;-webkit-font-smoothing:antialiased;overflow-x:hidden;opacity:0;animation:pageIn .6s ease .1s forwards}
@keyframes pageIn{to{opacity:1}}

/* --- Typography Helpers --- */
.serif{font-family:'Playfair Display',serif}
.mono{font-family:'JetBrains Mono',monospace}

/* --- Layout --- */
.wrap{max-width:1200px;margin:0 auto;padding:0 2.5rem}

/* --- Header --- */
header{position:sticky;top:0;z-index:100;background:var(--glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--line2);transition:box-shadow .3s}
header.scrolled{box-shadow:0 1px 8px rgba(0,0,0,.06)}
.hd-top{display:flex;justify-content:space-between;align-items:center;padding:1rem 0}
.brand{text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:.75rem;transition:opacity .2s}
.brand:hover{opacity:.8}
.brand-mark{width:28px;height:28px;background:var(--ink);color:var(--bg);display:grid;place-items:center;border-radius:4px;font-weight:800;font-size:1rem;font-family:'Playfair Display',serif;flex-shrink:0}
.brand-name{font-size:1.5rem;font-weight:800;letter-spacing:-.035em;line-height:1}
.brand-name span{font-weight:400;font-style:italic;color:var(--ink3)}
.hd-right{display:flex;align-items:center;gap:1.75rem}
.hd-date{font-size:.6rem;color:var(--ink4);letter-spacing:.04em}
.hd-edition{font-size:.52rem;color:var(--ink4);background:var(--line);padding:.2rem .5rem;border-radius:var(--r-sm);letter-spacing:.06em;text-transform:uppercase;font-weight:600}
.hd-sub{background:var(--ink);color:var(--bg);border:none;padding:.5rem 1.1rem;border-radius:var(--r-pill);font-size:.6rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:all .3s}
.hd-sub:hover{background:var(--accent);transform:translateY(-1px);box-shadow:0 4px 12px rgba(185,28,28,.2)}
.hd-nav{display:flex;gap:0;border-top:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.hd-nav::-webkit-scrollbar{display:none}
.hd-nav a{font-size:.58rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);padding:.65rem .85rem;white-space:nowrap;text-decoration:none;border-bottom:2px solid transparent;transition:all .2s;cursor:pointer}
.hd-nav a:hover{color:var(--ink2)}
.hd-nav a.on{color:var(--ink);border-bottom-color:var(--accent)}

/* --- Footer --- */
footer{border-top:1px solid var(--line2);padding:3rem 0;margin-top:1.5rem}
.ft-grid{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:2.5rem}
.ft-brand{font-size:1.05rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.35rem}
.ft-txt{font-size:.68rem;color:var(--ink4);max-width:300px;line-height:1.55}
.ft-powered{font-size:.5rem;color:var(--ink4);margin-top:.65rem;display:flex;align-items:center;gap:.3rem}
.ft-powered-dot{width:3px;height:3px;border-radius:50%;background:var(--green)}
.ft-links{display:flex;gap:3rem}
.ft-col{display:flex;flex-direction:column;gap:.5rem}
.ft-title{font-size:.5rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink)}
.ft-link{font-size:.66rem;color:var(--ink3);text-decoration:none;transition:color .2s}
.ft-link:hover{color:var(--accent)}
.ft-bottom{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}
.ft-copy{font-size:.5rem;color:var(--ink4)}
.ft-legal{display:flex;gap:1.5rem}
.ft-legal a{font-size:.5rem;color:var(--ink4);text-decoration:none;transition:color .2s}
.ft-legal a:hover{color:var(--ink3)}

/* --- Subscribe Card (reusable) --- */
.sub-card{background:var(--surface);border:1px solid var(--line2);border-radius:var(--r-md);padding:1.5rem;box-shadow:var(--sh);transition:all .3s}
.sub-card:hover{box-shadow:var(--sh-lg);transform:translateY(-2px)}
.sub-card h3{font-size:1.15rem;font-weight:700;margin-bottom:.35rem;letter-spacing:-.01em}
.sub-card p{font-size:.82rem;color:var(--ink3);line-height:1.5;margin-bottom:1.15rem;font-weight:300}
.sub-card .hint{font-size:.52rem;color:var(--accent);font-weight:600;letter-spacing:.04em;margin-bottom:.85rem;display:flex;align-items:center;gap:.35rem}
.sub-card .hint-dot{width:4px;height:4px;border-radius:50%;background:var(--accent);animation:pg 2s infinite}
.sub-form{display:flex;flex-direction:column;gap:.45rem}
.sub-input{border:1px solid var(--line2);padding:.65rem .8rem;font-size:.8rem;color:var(--ink);border-radius:var(--r-sm);outline:none;font-family:'Inter',sans-serif;transition:all .2s}
.sub-input::placeholder{color:var(--ink5)}
.sub-input:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(9,9,11,.06)}
.sub-btn{background:var(--ink);color:var(--bg);border:none;padding:.65rem;border-radius:var(--r-sm);font-size:.6rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:all .3s;position:relative;overflow:hidden}
.sub-btn:hover{background:var(--accent)}
.sub-btn.done{background:var(--green);pointer-events:none}
.sub-fine{font-size:.48rem;color:var(--ink4);margin-top:.5rem;text-align:center}

/* --- Animations --- */
@keyframes pg{0%,100%{opacity:1}50%{opacity:.3}}
@keyframes tb{0%,100%{opacity:1}50%{opacity:.25}}
.rv{opacity:0;transform:translateY(14px);transition:all .6s cubic-bezier(.16,1,.3,1)}
.rv.vis{opacity:1;transform:translateY(0)}

/* --- Back to Top --- */
.btt{position:fixed;bottom:4.5rem;right:2rem;width:36px;height:36px;background:var(--surface);border:1px solid var(--line2);border-radius:50%;display:grid;place-items:center;cursor:pointer;box-shadow:var(--sh-sm);z-index:999;opacity:0;visibility:hidden;transition:all .3s;color:var(--ink3)}
.btt.show{opacity:1;visibility:visible}
.btt:hover{background:var(--ink);color:var(--bg);border-color:var(--ink);transform:translateY(-2px);box-shadow:var(--sh)}
.btt svg{width:16px;height:16px}

/* ===================================================
   Story Page Styles
   =================================================== */

/* --- Breadcrumb --- */
.breadcrumb{padding:1rem 0;font-size:.6rem;color:var(--ink4);display:flex;align-items:center;gap:.4rem}
.breadcrumb a{color:var(--ink3);text-decoration:none;transition:color .2s}
.breadcrumb a:hover{color:var(--accent)}
.breadcrumb-sep{color:var(--ink5)}

/* --- Article Layout --- */
.article-layout{display:grid;grid-template-columns:1fr 320px;gap:4rem;padding:0 0 3rem}
.article-main{max-width:none}

/* --- Article Header --- */
.article-header{padding:2rem 0 2.5rem;border-bottom:1px solid var(--line2);margin-bottom:2.5rem}
.article-cat{font-size:.55rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:1rem;display:inline-flex;align-items:center;gap:.5rem}
.article-cat-dot{width:6px;height:2px;border-radius:1px}
.article-title{font-size:clamp(1.75rem,3vw,2.5rem);font-weight:800;line-height:1.12;letter-spacing:-.025em;margin-bottom:1rem}
.article-deck{font-size:1.05rem;font-weight:300;line-height:1.65;color:var(--ink2);margin-bottom:1.25rem}
.article-meta{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;font-size:.55rem;color:var(--ink4);text-transform:uppercase;letter-spacing:.06em}
.article-meta strong{color:var(--ink3)}
.article-meta-sep{color:var(--ink5)}

/* --- Article Body --- */
.article-body{font-size:1.05rem;line-height:1.8;color:var(--ink2)}
.article-body p{margin-bottom:1.5rem}
.article-body p:first-of-type::first-letter{float:left;font-size:3.2rem;font-weight:700;line-height:.82;margin:.1rem .4rem 0 0;color:var(--ink);font-family:'Playfair Display',serif}
.article-body h2{font-size:1.3rem;font-weight:700;color:var(--ink);margin:2.5rem 0 1rem;letter-spacing:-.01em}
.article-body blockquote{border-left:3px solid var(--accent);padding:.75rem 0 .75rem 1.25rem;margin:1.5rem 0;font-style:italic;color:var(--ink3);background:var(--accent-soft)}
.article-body ul,.article-body ol{margin:1rem 0 1.5rem 1.5rem;color:var(--ink2)}
.article-body li{margin-bottom:.5rem;line-height:1.6}
.article-body strong{color:var(--ink);font-weight:600}

/* --- Article Source Attribution --- */
.article-sources{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line2)}
.article-sources-title{font-size:.55rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);margin-bottom:.75rem}
.article-sources ul{list-style:none;margin:0;padding:0}
.article-sources li{font-size:.8rem;color:var(--ink3);padding:.35rem 0;border-bottom:1px solid var(--line);line-height:1.5}
.article-sources li:last-child{border-bottom:none}

/* --- Article Share / Tags --- */
.article-tags{margin-top:1.5rem;display:flex;flex-wrap:wrap;gap:.4rem}
.article-tag{font-size:.52rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);background:var(--line);padding:.3rem .65rem;border-radius:var(--r-pill);text-decoration:none;transition:all .2s}
.article-tag:hover{background:var(--line2);color:var(--ink)}

/* --- Related Stories (sidebar on story pages) --- */
.related-block{margin-bottom:2.5rem}
.related-hdr{font-size:.58rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin-bottom:1.15rem;padding-bottom:.55rem;border-bottom:1px solid var(--line2)}
.related-item{padding:.75rem 0;border-bottom:1px solid var(--line);transition:background .2s,padding-left .2s;border-radius:var(--r-sm)}
.related-item:hover{background:var(--line);padding-left:.5rem}
.related-item:last-child{border-bottom:none}
.related-item a{text-decoration:none;color:inherit;display:block}
.related-item-cat{font-size:.46rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;margin-bottom:.2rem;display:flex;align-items:center;gap:.3rem}
.related-item-cat-dot{width:6px;height:2px;border-radius:1px}
.related-item-title{font-size:.88rem;font-weight:600;line-height:1.3;color:var(--ink);transition:color .2s}
.related-item:hover .related-item-title{color:var(--accent)}
.related-item-meta{font-size:.46rem;color:var(--ink4);margin-top:.2rem;text-transform:uppercase;letter-spacing:.04em}

/* --- Story Page Subscribe CTA (inline) --- */
.story-cta{margin-top:3rem;padding:2rem;background:var(--surface);border:1px solid var(--line2);border-radius:var(--r-md);box-shadow:var(--sh)}
.story-cta h3{font-size:1.1rem;font-weight:700;margin-bottom:.3rem;letter-spacing:-.01em}
.story-cta p{font-size:.82rem;color:var(--ink3);line-height:1.5;margin-bottom:1rem;font-weight:300}
.story-cta .sub-form{flex-direction:row;gap:.45rem}
.story-cta .sub-input{flex:1}
.story-cta .sub-btn{white-space:nowrap;padding:.65rem 1.2rem}

/* ===================================================
   Responsive
   =================================================== */
@media(max-width:1024px){
  .article-layout{grid-template-columns:1fr}
}
@media(max-width:768px){
  .wrap{padding:0 1.5rem}
  .hd-right{gap:1rem}
  .hd-date,.hd-edition{display:none}
  .ft-grid{flex-direction:column;gap:1.5rem}
  .ft-links{gap:2rem;flex-wrap:wrap}
  .btt{display:none}
  .story-cta .sub-form{flex-direction:column}
}
@media(max-width:480px){
  .brand-name{font-size:1.2rem}
  .article-title{font-size:1.65rem}
}
@media print{
  header,.btt{display:none}
  body{padding:0;font-size:11pt}
  .wrap{max-width:100%;padding:0 1cm}
  .article-layout{display:block}
}
