
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/0e47c4b6.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/087778c2.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122;}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:700;font-display:swap;src:url("/assets/fonts/0e47c4b6.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:700;font-display:swap;src:url("/assets/fonts/087778c2.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122;}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/8f9657f9.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/dc732831.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122;}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/8f9657f9.woff2") format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/dc732831.woff2") format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122;}
:root{--bg:#0A1F1A;--bg-2:#0E2A24;--bg-3:#10302A;--gold:#D4AF6A;--gold-soft:#C8A24B;--text:#F3F1EC;--text-2:#A8A49C;--text-3:#6F7570;--line:rgba(212,175,106,.20);--line-soft:rgba(243,241,236,.08);}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--text);font-family:'Inter',system-ui,sans-serif;font-size:17px;line-height:1.7;-webkit-font-smoothing:antialiased;}
a{color:var(--gold);text-decoration:none;}a:hover{text-decoration:underline;}
.bwrap{max-width:760px;margin:0 auto;padding:0 22px;}
.bhead{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line-soft);max-width:1100px;margin:0 auto;}
.bbrand{display:flex;align-items:center;gap:11px;color:var(--text);}
.bbrand:hover{text-decoration:none;}
.bbrand img{height:40px;width:auto;}
.bbrand b{font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;font-weight:600;}
.bbrand b span{color:var(--gold);}
.btg{font-size:13.5px;font-weight:600;color:var(--text);border:1px solid var(--line);border-radius:2px;padding:9px 15px;}
.btg:hover{color:var(--gold);border-color:var(--gold);text-decoration:none;}
.bcrumbs{font-size:12.5px;color:var(--text-3);margin:28px 0 6px;}
.bcrumbs a{color:var(--text-3);}
.bcrumbs a:hover{color:var(--gold);}
article h1{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(30px,5.4vw,46px);font-weight:700;line-height:1.12;letter-spacing:-.01em;margin:10px 0 14px;}
.bmeta{font-size:13px;color:var(--text-3);margin-bottom:30px;padding-bottom:22px;border-bottom:1px solid var(--line-soft);}
.bmeta.has-byline{margin-bottom:14px;padding-bottom:0;border-bottom:0;}
.article-byline{font-size:13.5px;color:var(--text-2);margin:0 0 30px;padding-bottom:22px;border-bottom:1px solid var(--line-soft);}
.article-byline a{color:var(--gold);}
.article-byline .abrev{display:block;font-size:13px;color:var(--text-3);margin-top:4px;}
.bhero{margin:0 0 30px;border-radius:4px;overflow:hidden;border:1px solid var(--line-soft);background:var(--bg-3);}
.bhero img{display:block;width:100%;height:auto;aspect-ratio:1200/630;object-fit:cover;}
article h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(24px,3.6vw,32px);font-weight:600;line-height:1.18;margin:44px 0 14px;}
article h3{font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;font-weight:600;margin:32px 0 10px;}
article p,article li{color:#DCD9D2;}
article li{margin-bottom:8px;}
article strong{color:var(--text);}
article .lead{font-size:19px;color:var(--text);line-height:1.6;}
.gold-num{color:var(--gold);font-weight:600;}
table{width:100%;border-collapse:collapse;font-size:15px;margin:18px 0;}
th,td{padding:11px 12px;border:1px solid var(--line-soft);text-align:left;vertical-align:top;}
th{background:var(--bg-3);color:var(--gold);font-weight:600;font-size:13px;letter-spacing:.04em;}
td{color:#DCD9D2;}
.cta{margin:40px 0;padding:30px 28px;border:1px solid var(--line);border-radius:3px;background:radial-gradient(120% 140% at 50% 0%,rgba(212,175,106,.10),rgba(212,175,106,0) 70%),var(--bg-3);}
.cta p{margin:0 0 18px;color:var(--text);font-size:16.5px;}
.cta-btn{display:inline-block;background:linear-gradient(180deg,var(--gold),var(--gold-soft));color:#1B130A;font-weight:600;font-size:15px;padding:14px 26px;border-radius:2px;}
.cta-btn:hover{text-decoration:none;filter:brightness(1.05);}
.cta .alt-link{margin-left:18px;font-size:14.5px;}
.note{border-left:2px solid var(--gold);padding:4px 0 4px 16px;font-size:14.5px;color:var(--text-2);margin:24px 0;}
.bfoot{margin-top:64px;border-top:1px solid var(--line-soft);padding:36px 0 44px;}
.bfoot .disc{font-size:11.5px;line-height:1.65;color:var(--text-3);}
.bfoot .row{display:flex;flex-wrap:wrap;gap:10px 26px;font-size:13.5px;margin-bottom:18px;}
.related{margin:48px 0 0;}
.related h2{margin-top:0;}
.related a{display:block;padding:16px 18px;border:1px solid var(--line-soft);border-radius:2px;margin-bottom:10px;color:var(--text);font-weight:600;font-size:15.5px;}
.related a:hover{border-color:var(--gold);color:var(--gold);text-decoration:none;}
/* index list */
.bgrid{display:grid;gap:14px;margin:34px 0 60px;}
.bcard{display:block;border:1px solid var(--line-soft);border-radius:3px;padding:26px 26px 24px;color:var(--text);transition:border-color .3s;}
.bcard:hover{border-color:var(--gold);text-decoration:none;}
.bcard h2{margin:0 0 10px;font-size:24px;}
.bcard p{margin:0;color:var(--text-2);font-size:15px;line-height:1.6;}
.bcard .tag{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:12px;}
.bpager{display:flex;align-items:center;justify-content:center;gap:22px;margin:18px 0 60px;font-size:14.5px;}
.bpager a{color:var(--gold);font-weight:600;}
.bpager span{color:var(--text-3);}
/* topic filter chips */
.bchips{display:flex;flex-wrap:wrap;gap:9px;margin:30px 0 4px;}
.bchip{appearance:none;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:500;color:var(--text-2);background:var(--bg-2);border:1px solid var(--line-soft);border-radius:999px;padding:8px 16px;white-space:nowrap;transition:border-color .2s,color .2s,background .2s;}
.bchip:hover{color:var(--gold);border-color:var(--line);}
.bchip.is-on{color:#1B130A;background:linear-gradient(180deg,var(--gold),var(--gold-soft));border-color:var(--gold-soft);font-weight:600;}
@media(max-width:560px){
  .bchips{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-left:-22px;margin-right:-22px;padding:0 22px 4px;}
  .bchips::-webkit-scrollbar{display:none;}
  .bchip{flex:0 0 auto;}
}

/* topic rubric links (real hub URLs, replaces JS chips) */
.brubs{display:flex;flex-wrap:wrap;gap:9px;margin:30px 0 4px;}
.brubs a,.brubs span{font-size:13.5px;font-weight:500;color:var(--text-2);background:var(--bg-2);border:1px solid var(--line-soft);border-radius:999px;padding:8px 16px;white-space:nowrap;transition:border-color .2s,color .2s,background .2s;}
.brubs a:hover{color:var(--gold);border-color:var(--line);text-decoration:none;}
.brubs span.is-on{color:#1B130A;background:linear-gradient(180deg,var(--gold),var(--gold-soft));border-color:var(--gold-soft);font-weight:600;}
@media(max-width:560px){
  .brubs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-left:-22px;margin-right:-22px;padding:0 22px 4px;}
  .brubs::-webkit-scrollbar{display:none;}
  .brubs a,.brubs span{flex:0 0 auto;}
}

/* ============ NAVIGATION ============ */
.bhead{position:relative;gap:18px;}
.bnav{display:flex;align-items:center;gap:4px;margin-left:auto;}
.bnav .navlink{font-size:14px;font-weight:500;color:var(--text);padding:9px 13px;border-radius:2px;white-space:nowrap;}
.bnav .navlink:hover{color:var(--gold);text-decoration:none;}
.bnav .navitem{position:relative;}
.bnav .navitem>.navlink::after{content:"";display:inline-block;width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px);margin-left:7px;opacity:.6;}
.bnav .dropdown{position:absolute;top:100%;left:0;min-width:230px;background:var(--bg-2);border:1px solid var(--line);border-radius:4px;padding:7px;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .2s,transform .2s,visibility .2s;z-index:60;box-shadow:0 18px 40px rgba(0,0,0,.45);}
.bnav .navitem:hover .dropdown,.bnav .navitem:focus-within .dropdown{opacity:1;visibility:visible;transform:translateY(0);}
.bnav .dropdown a{display:block;padding:10px 13px;border-radius:2px;color:var(--text);font-size:14px;font-weight:500;}
.bnav .dropdown a:hover{background:var(--bg-3);color:var(--gold);text-decoration:none;}
.bnav .dropdown a .d-sub{display:block;font-size:12px;color:var(--text-3);font-weight:400;margin-top:2px;}
.bnav .dropdown a:hover .d-sub{color:var(--text-2);}
.bnav-tg{font-size:13.5px;font-weight:600;color:var(--text);border:1px solid var(--line);border-radius:2px;padding:9px 15px;white-space:nowrap;}
.bnav-tg:hover{color:var(--gold);border-color:var(--gold);text-decoration:none;}
.burger{display:none;background:none;border:0;cursor:pointer;width:34px;height:34px;padding:6px;margin-left:auto;}
.burger span{display:block;height:2px;background:var(--text);margin:5px 0;border-radius:2px;transition:.25s;}
.burger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.burger.open span:nth-child(2){opacity:0;}
.burger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
@media(max-width:860px){
  .bnav{position:fixed;inset:0 0 0 auto;width:min(82vw,340px);flex-direction:column;align-items:stretch;gap:2px;background:var(--bg-2);border-left:1px solid var(--line);padding:78px 18px 30px;transform:translateX(100%);transition:transform .3s ease;overflow-y:auto;z-index:50;margin-left:0;}
  .bnav.open{transform:translateX(0);}
  .burger{display:block;z-index:55;}
  .bnav .navlink{padding:13px 12px;font-size:16px;border-bottom:1px solid var(--line-soft);border-radius:0;}
  .bnav .navitem{width:100%;}
  .bnav .navitem>.navlink::after{float:right;margin-top:6px;}
  .bnav .dropdown{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;background:transparent;padding:0 0 8px 14px;min-width:0;display:none;}
  .bnav .navitem.exp .dropdown{display:block;}
  .bnav .dropdown a{padding:11px 12px;font-size:15px;}
  .bnav-tg{margin-top:16px;text-align:center;}
  .nav-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);opacity:0;visibility:hidden;transition:.3s;z-index:40;}
  .nav-backdrop.open{opacity:1;visibility:visible;}
}
/* footer 4-col */
.bfoot .fcols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:30px;margin-bottom:30px;}
.bfoot .fcols h4{font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:0 0 14px;font-weight:600;}
.bfoot .fcols a{display:block;color:var(--text-2);font-size:14px;margin-bottom:9px;}
.bfoot .fcols a:hover{color:var(--gold);text-decoration:none;}
.bfoot .fbrand{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.bfoot .fbrand img{height:34px;}
.bfoot .fbrand b{font-family:'Cormorant Garamond',Georgia,serif;font-size:19px;font-weight:600;color:var(--text);}
.bfoot .fbrand b span{color:var(--gold);}
.bfoot .fabout{font-size:13.5px;color:var(--text-2);line-height:1.6;margin:0;}
.bfoot .fwrap{max-width:1100px;margin:0 auto;padding:0 22px;}
@media(max-width:860px){.bfoot .fcols{grid-template-columns:1fr 1fr;gap:24px 20px;}}
@media(max-width:480px){.bfoot .fcols{grid-template-columns:1fr;}}
/* office address block */
.office-addr{font-style:normal;line-height:1.7;color:var(--text);background:var(--bg-2);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:8px;padding:16px 18px;margin:14px 0 18px;font-size:15px;}
.office-addr strong{color:var(--text);}

/* ============ FAVOURITES + RECENTLY VIEWED ============ */
.fav-btn{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--text-2);background:var(--bg-2);border:1px solid var(--line-soft);border-radius:999px;padding:8px 15px;transition:color .2s,border-color .2s,background .2s;}
.fav-btn:hover{color:var(--gold);border-color:var(--line);}
.fav-btn .fav-ic{font-size:14px;line-height:1;}
.fav-btn.is-saved{color:#1B130A;background:linear-gradient(180deg,var(--gold),var(--gold-soft));border-color:var(--gold-soft);}
/* card-corner variant: absolute pill over a project card */
.pcard{position:relative;}
.fav-btn.fav-corner{position:absolute;top:12px;right:12px;z-index:3;background:rgba(10,31,26,.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-color:rgba(243,241,236,.18);}
.fav-btn.fav-corner:hover{background:rgba(10,31,26,.85);}
.fav-btn.fav-corner.is-saved{background:linear-gradient(180deg,var(--gold),var(--gold-soft));}

/* floating launcher */
.fav-launcher{position:fixed;right:18px;bottom:18px;z-index:60;display:none;align-items:center;gap:8px;cursor:pointer;font-family:inherit;font-size:14px;font-weight:600;color:var(--text);background:var(--bg-2);border:1px solid var(--line);border-radius:999px;padding:11px 17px;box-shadow:0 10px 30px rgba(0,0,0,.4);}
.fav-launcher.has-items{display:inline-flex;}
.fav-launcher:hover{border-color:var(--gold);color:var(--gold);}
.fav-launcher .fav-star{color:var(--gold);font-size:13px;}
.fav-launcher .fav-count{min-width:20px;height:20px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;background:var(--gold);color:#1B130A;border-radius:999px;}

/* drawer + backdrop */
.fav-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);opacity:0;visibility:hidden;transition:.25s;z-index:65;}
body.fav-open .fav-backdrop{opacity:1;visibility:visible;}
.fav-drawer{position:fixed;top:0;right:0;bottom:0;width:min(90vw,380px);background:var(--bg-2);border-left:1px solid var(--line);z-index:70;transform:translateX(100%);transition:transform .28s ease;overflow-y:auto;padding:18px 18px 30px;}
body.fav-open .fav-drawer{transform:translateX(0);}
.fav-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;font-weight:600;color:var(--text);}
.fav-close,.fav-rm{cursor:pointer;background:none;border:0;color:var(--text-3);font-size:22px;line-height:1;padding:2px 6px;border-radius:4px;}
.fav-close:hover,.fav-rm:hover{color:var(--gold);}
.fav-sub{margin:24px 0 10px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);font-weight:600;}
.fav-empty{color:var(--text-2);font-size:14.5px;line-height:1.6;}
.fav-list{display:flex;flex-direction:column;gap:8px;}
.fav-row{display:flex;align-items:stretch;gap:6px;}
.fav-link{flex:1;display:flex;align-items:center;gap:12px;padding:9px 10px;border:1px solid var(--line-soft);border-radius:8px;color:var(--text);}
.fav-link:hover{border-color:var(--gold);text-decoration:none;}
.fav-link img{width:52px;height:52px;object-fit:cover;border-radius:6px;flex:0 0 auto;}
.fav-txt{display:flex;flex-direction:column;gap:3px;min-width:0;}
.fav-txt b{font-size:14.5px;font-weight:600;line-height:1.3;}
.fav-txt i{font-style:normal;font-size:12.5px;color:var(--text-3);}
.fav-rm{align-self:center;}
.fav-cta{display:block;margin-top:14px;text-align:center;background:linear-gradient(180deg,var(--gold),var(--gold-soft));color:#1B130A;font-weight:600;font-size:14.5px;padding:13px 16px;border-radius:2px;}
.fav-cta:hover{filter:brightness(1.05);text-decoration:none;}
@media(max-width:560px){
  .fav-launcher{right:12px;bottom:12px;padding:10px 15px;font-size:13.5px;}
}

/* ============ STICKY MOBILE CTA (subpages) ============ */
/* Mirrors the landing .sticky-tg, but scoped to subpages that load
   blog.css. Mobile-only bar fixed to the bottom; injected by
   /assets/js/sticky-cta.js, which also adds body.has-sticky-cta. */
.scta{position:fixed;left:0;right:0;bottom:0;z-index:55;display:none;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:rgba(8,24,19,.92);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);}
.scta a{display:block;width:100%;text-align:center;background:linear-gradient(180deg,var(--gold),var(--gold-soft));color:#1B130A;font-weight:600;font-size:15.5px;padding:15px 16px;border-radius:2px;}
.scta a:hover{filter:brightness(1.05);text-decoration:none;}
@media(max-width:760px){
  body.has-sticky-cta .scta{display:block;}
  /* lift the favourites launcher above the bar so they never overlap */
  body.has-sticky-cta .fav-launcher{bottom:calc(64px + env(safe-area-inset-bottom));}
}

/* ============ PROJECT FACT TAGS ============ */
/* Factual, non-evaluative chips sourced from FACTS.md. Never use
   promotional/absolute labels ("Best investment", "Zero risk").
   Developer-conditional facts (GRR, buyback) are marked as such. */
.ptags{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 6px;}
.ptag-chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;line-height:1;letter-spacing:.01em;color:var(--text-2);background:rgba(243,241,236,.04);border:1px solid var(--line-soft);border-radius:999px;padding:6px 11px;white-space:nowrap;}
.ptag-chip.is-gold{color:var(--gold);border-color:var(--line);background:rgba(212,175,106,.06);}
.ptag-chip .ptag-dot{font-size:9px;opacity:.7;}
/* updated-on line under the tag row */
.ptags-date{font-size:11.5px;color:var(--text-3);margin:8px 0 0;}
/* on listing cards the tag row sits tighter */
.pcard .ptags{margin-top:2px;}

/* ============ ASK-FOR-CURRENT-PRICE ============ */
/* Inline link next to a price. Prices on site are developer
   promo figures that change, so we invite a fresh quote rather
   than presenting the number as fixed. */
.price-ask{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--gold);border:1px solid var(--line);border-radius:999px;padding:6px 13px;margin-left:4px;transition:background .2s,border-color .2s;vertical-align:middle;}
.price-ask:hover{background:rgba(212,175,106,.08);border-color:var(--gold);text-decoration:none;}
.price-ask .pa-ic{font-size:12px;}
/* a block-level variant that sits under a price table or hero price */
.price-ask-row{margin:14px 0 4px;font-size:14px;color:var(--text-3);display:flex;flex-wrap:wrap;align-items:center;gap:10px;}

/* ============ WIDE COMPARISON TABLE ============ */
/* Comparison tables with many project columns must scroll
   horizontally on narrow screens instead of squeezing cells into
   unreadable slivers. The wrapper keeps overflow-x:auto; the table
   gets a min-width so columns stay legible and the scroll engages. */
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:18px 0;}
.tbl-scroll>table{margin:0;min-width:880px;}
.tbl-scroll>table th,.tbl-scroll>table td{white-space:normal;}
.tbl-hint{font-size:12px;color:var(--text-3);margin:6px 0 0;display:none;}
@media(max-width:760px){.tbl-hint{display:block;}}

