/* ABOUTME: Fjord design system for ruizrica.io — blue-slate dark, Schibsted Grotesk + JetBrains Mono,
   ABOUTME: hairline grid, muted Nordic accent chips. Shared by the homepage, tool pages, and inner pages. */

:root{
  --bg:#171b22; --surface:#1c212a; --surface-lift:#212733;
  --line:#2a303c; --line-soft:#242a35;
  --ink:#f2f5f9; --ink-dim:#c3ccd8; --ink-faint:#8b95a4;
  --blue:#4e9be6; --cyan:#38c6e8; --sage:#8fbf9a; --ochre:#d8a752; --clay:#d08466; --lilac:#a293d6;
  --sans:'Schibsted Grotesk',-apple-system,BlinkMacSystemFont,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;line-height:1.6}
.wrap{max-width:1080px;margin:0 auto;padding:0 40px}
a{color:inherit;text-decoration:none}
img{max-width:100%}

/* ---------- Photo hero (homepage) ---------- */
.hero{position:relative;min-height:82vh;display:flex;flex-direction:column;background-size:cover;background-position:center 42%}
/* Two scrims: a vertical one that lands the photo in the page background, and a
   horizontal one that darkens the text column so copy stays legible over bright sky. */
.hero::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(100deg,rgba(16,20,26,.80) 0%,rgba(16,20,26,.62) 34%,rgba(16,20,26,.22) 62%,rgba(16,20,26,0) 88%),
    linear-gradient(180deg,rgba(16,20,26,.20) 0%,rgba(16,20,26,.22) 34%,rgba(16,20,26,.56) 62%,rgba(16,20,26,.86) 82%,var(--bg) 100%)}
.hero > *{position:relative;z-index:2}
.hero nav{display:flex;justify-content:space-between;align-items:center;height:76px;max-width:1080px;margin:0 auto;padding:0 40px;width:100%}
.hero .brand{color:rgba(255,255,255,.95)}
.hero .brand span{opacity:.7}
.hero .nav-links{color:rgba(255,255,255,.88);font-weight:500}
.hero .nav-links a:hover{color:#fff}
.hero .headline{margin-top:auto;padding-bottom:72px;width:100%}
.hero h1{color:#fff}
.hero p.sub{margin-top:28px;font-size:17.5px;line-height:1.68;color:rgba(255,255,255,.94);max-width:52ch}
.hero p.sub b{color:#fff;font-weight:600}
.hero .meta-row{margin-top:40px;display:flex;flex-wrap:wrap;gap:28px;font-family:var(--mono);font-size:12.5px;color:rgba(255,255,255,.78)}
.hero .meta-row i{font-style:normal;color:var(--sage)}
.scroll-hint{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:rgba(236,240,245,.45)}
@supports (animation-timeline: scroll()){
  .hero{animation:heroDim linear both;animation-timeline:scroll();animation-range:0 90vh}
  @keyframes heroDim{to{background-position:center 38%}}
}

/* ---------- Photo pages: coastal image behind the top (and bottom) of any inner page ---------- */
/* Per page:  <style>body{--photo:url("...")}</style>  +  <body class="photo-page">
   + <div class="page-photo"> right after <body> (and optionally <div class="page-photo-foot">).
   Content wrappers are position:relative so they paint above the photo layers. */
.photo-page{position:relative}
.page-photo{position:absolute;top:0;left:0;right:0;height:74vh;pointer-events:none;
  background-image:
    linear-gradient(100deg,rgba(16,20,26,.62) 0%,rgba(16,20,26,.44) 40%,rgba(16,20,26,.20) 72%,rgba(16,20,26,.08) 100%),
    linear-gradient(180deg,rgba(16,20,26,.34) 0%,rgba(16,20,26,.52) 40%,rgba(16,20,26,.86) 72%,var(--bg) 100%),
    var(--photo);
  background-size:cover;background-position:center 35%}
/* The closing photo lives ON the footer, not floating over the page — on short pages a
   free-floating bottom layer would overlap the top one and show the same image twice. */
.photo-page footer{padding-top:120px;border-top:none;margin-top:0;
  background-image:
    linear-gradient(0deg,rgba(16,20,26,.72) 0%,rgba(16,20,26,.88) 46%,var(--bg) 100%),
    var(--photo-foot,var(--photo));
  background-size:cover;background-position:center 72%}
.photo-page .page-top,.photo-page main,.photo-page footer,.photo-page .band{position:relative}
.photo-page .page-top{border-bottom-color:rgba(236,240,245,.12)}
.photo-page .page-top .nav-links{color:rgba(236,240,245,.78)}
.photo-page .page-top .nav-links a:hover{color:#fff}
.photo-page .page-hero .tagline,.photo-page .tool-hero .tagline{color:rgba(255,255,255,.93)}
.photo-page .page-hero h1,.photo-page .tool-hero h1{color:#fff}
.photo-page .tool-hero .facts,.photo-page .page-hero .kicker{color:rgba(255,255,255,.82)}
.photo-page .page-hero,.photo-page .tool-hero{border-bottom-color:rgba(236,240,245,.10)}

/* ---------- Chrome (nav on dark pages) ---------- */
.brand{font-family:var(--mono);font-size:13px;display:flex;align-items:center;gap:10px;font-weight:500}
.brand .mark{width:10px;height:10px;border-radius:3px;background:linear-gradient(135deg,var(--blue),var(--cyan))}
.brand span{opacity:.55}
.nav-links{display:flex;gap:36px;font-size:13.5px}
.page-top{border-bottom:1px solid var(--line-soft)}
.page-top nav{display:flex;justify-content:space-between;align-items:center;height:72px}
.page-top .nav-links{color:var(--ink-dim)}
.page-top .nav-links a:hover{color:var(--cyan)}

/* ---------- Type ---------- */
h1{font-size:clamp(38px,5.4vw,62px);font-weight:500;letter-spacing:-.02em;line-height:1.1;max-width:18ch}
.grad{background:linear-gradient(100deg,#6db4f2,var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent}
.kicker{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin-bottom:28px}

/* ---------- Section heads ---------- */
.section-head{display:flex;justify-content:space-between;align-items:baseline;padding:64px 0 28px}
.section-head h2{font-size:13px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim)}
.section-head .count{font-family:var(--mono);font-size:12px;color:var(--ink-faint)}

/* ---------- Tool grid ---------- */
.grid{display:grid;grid-template-columns:repeat(3,1fr);border-left:1px solid var(--line-soft);border-top:1px solid var(--line-soft)}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);border-left:1px solid var(--line-soft);border-top:1px solid var(--line-soft)}
.cell{border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);padding:34px 32px 36px;min-height:236px;display:flex;flex-direction:column;transition:background .18s ease}
.cell:hover{background:var(--surface)}
.grid-4 .cell{min-height:0;padding:26px 26px 28px}
.cell .meta{font-family:var(--mono);font-size:11px;color:var(--ink-faint);display:flex;justify-content:space-between;align-items:center;margin-bottom:40px}
.grid-4 .cell .meta{margin-bottom:24px}
.chip{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:10px;vertical-align:1px}
.cell h3{font-size:19px;font-weight:600;letter-spacing:-.01em;margin-bottom:10px}
.grid-4 .cell h3{font-size:16px}
.cell p{font-size:14.5px;line-height:1.68;color:var(--ink-dim);flex:1}
.grid-4 .cell p{font-size:13.5px;line-height:1.65}
.cell .get{margin-top:24px;font-family:var(--mono);font-size:12px;color:var(--ink-faint)}
.cell .tag{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);border:1px solid var(--line);border-radius:4px;padding:2px 8px}
.cell .stack-line{font-family:var(--mono);font-size:11px;color:var(--ink-faint);margin-top:14px}
.c-blue .chip{background:var(--blue)} .c-blue:hover .get{color:var(--blue)}
.c-cyan .chip{background:var(--cyan)} .c-cyan:hover .get{color:var(--cyan)}
.c-sage .chip{background:var(--sage)} .c-sage:hover .get{color:var(--sage)}
.c-ochre .chip{background:var(--ochre)} .c-ochre:hover .get{color:var(--ochre)}
.c-clay .chip{background:var(--clay)} .c-clay:hover .get{color:var(--clay)}
.c-lilac .chip{background:var(--lilac)} .c-lilac:hover .get{color:var(--lilac)}
.cell.soon .chip{background:var(--ink-faint)}
.cell.soon{opacity:.6}

/* ---------- List rows (Also on GitHub, work index) ---------- */
.rows{border-top:1px solid var(--line-soft)}
.rows a,.rows .row{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:20px 4px;border-bottom:1px solid var(--line-soft);transition:background .15s ease}
.rows a:hover{background:var(--surface)}
.rows .n{font-family:var(--mono);font-size:14px;font-weight:500;color:var(--ink)}
.rows .d{font-size:14px;line-height:1.65;color:var(--ink-dim);flex:1;margin-left:28px}
.rows .go{font-family:var(--mono);font-size:11.5px;color:var(--ink-faint);white-space:nowrap}
.rows a:hover .go{color:var(--cyan)}

/* ---------- Photo band (manifesto / statements) ---------- */
.band{position:relative;margin-top:120px;background-size:cover;background-position:center 55%}
.band::before{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,var(--bg) 0%,rgba(23,27,34,.86) 18%,rgba(23,27,34,.82) 55%,rgba(23,27,34,.88) 82%,var(--bg) 100%)}
.band .inner{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:80px;padding:150px 0}
/* Compact bands sit directly above the photo footer, so they carry no image of their
   own — two stacked photographs read as a clash. */
.band.compact{margin-top:72px;background-image:none}
.band.compact::before{background:none;border-top:1px solid var(--line-soft)}
.band.compact .inner{padding:78px 0;gap:56px;align-items:center}
.band.compact h2{font-size:24px}
.band.compact .cols .item{margin-bottom:18px}
.band.compact .cols .item:last-child{margin-bottom:0}
.band h2{font-size:27px;font-weight:500;letter-spacing:-.015em;line-height:1.3;color:#fff}
.band .cols .item{padding-left:20px;margin-bottom:26px}
.band .cols .item.b1{border-left:2px solid var(--blue)}
.band .cols .item.b2{border-left:2px solid var(--sage)}
.band .cols .item.b3{border-left:2px solid var(--ochre)}
.band .cols p{font-size:15.5px;line-height:1.7;color:rgba(255,255,255,.92)}
.band .cols b{color:#fff;font-weight:500;display:block;margin-bottom:4px}

/* ---------- Tool page ---------- */
.tool-hero{padding:100px 0 72px;border-bottom:1px solid var(--line-soft)}
.tool-hero .crumb{font-family:var(--mono);font-size:12px;color:var(--ink-faint);margin-bottom:44px;display:block}
.tool-hero .crumb a:hover{color:var(--cyan)}
.tool-hero h1{font-size:clamp(36px,4.8vw,54px)}
.tool-hero .tagline{margin-top:22px;font-size:18px;line-height:1.65;color:var(--ink-dim);max-width:56ch}
.tool-hero .facts{margin-top:40px;display:flex;flex-wrap:wrap;gap:26px;font-family:var(--mono);font-size:12px;color:var(--ink-faint)}
.tool-hero .facts i{font-style:normal}
.actions{margin-top:44px;display:flex;flex-wrap:wrap;gap:14px}
.btn{display:inline-block;font-size:13.5px;font-weight:500;padding:11px 22px;border:1px solid var(--line);font-family:var(--mono);transition:border-color .15s,color .15s}
.btn.primary{background:var(--ink);color:#171b22;border-color:var(--ink)}
.btn.primary:hover{background:#fff;border-color:#fff}
.btn:hover{border-color:var(--ink-dim);color:#fff}

.tool-body{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:72px;padding:72px 0 110px}
.prose h2{font-size:13px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim);margin:44px 0 18px}
.prose h2:first-child{margin-top:0}
.prose p{font-size:16.5px;line-height:1.75;color:var(--ink-dim);margin-bottom:18px;max-width:66ch}
.prose p b,.prose p strong{color:var(--ink);font-weight:500}
.prose ul{list-style:none;margin:0 0 16px}
.prose li{font-size:16px;line-height:1.7;color:var(--ink-dim);padding-left:22px;position:relative;margin-bottom:13px}
.prose li::before{content:"—";position:absolute;left:0;color:var(--ink-faint)}
.prose li b{color:var(--ink);font-weight:500}
.prose code,.side code{font-family:var(--mono);font-size:13px;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:2px 7px;color:var(--ink)}
.prose pre{background:var(--surface);border:1px solid var(--line-soft);padding:18px 20px;overflow-x:auto;margin-bottom:16px}
.prose pre code{background:none;border:none;padding:0;font-size:13px;color:var(--ink-dim)}

.side .box{border:1px solid var(--line-soft);padding:26px 26px 28px;margin-bottom:16px}
.side .portrait{display:block;width:100%;border:1px solid var(--line-soft);margin-bottom:16px}
.side h3{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-weight:500;margin-bottom:18px}
.side .kv{display:flex;justify-content:space-between;gap:14px;font-size:14px;line-height:1.55;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.side .kv:last-child{border-bottom:none}
.side .kv .k{color:var(--ink-faint);font-family:var(--mono);font-size:12.5px}
.side .kv .v{color:var(--ink);text-align:right}
.side .kv a.v:hover{color:var(--cyan)}
.side pre{background:var(--surface);border:1px solid var(--line-soft);padding:14px 16px;overflow-x:auto;font-family:var(--mono);font-size:12px;color:var(--ink-dim);margin-top:6px}

/* ---------- Inner content pages (about, work, connect) ---------- */
.page-hero{padding:100px 0 64px;border-bottom:1px solid var(--line-soft)}
.page-hero h1{font-size:clamp(34px,4.6vw,52px)}
.page-hero .tagline{margin-top:22px;font-size:17.5px;line-height:1.68;color:var(--ink-dim);max-width:56ch}
.content{padding:64px 0 110px}
.split{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:72px}

/* ---------- Callout (prominent statement + CTA) ---------- */
.callout{padding:96px 0 56px;border-top:1px solid var(--line-soft);margin-top:72px}
.callout .kicker{margin-bottom:22px}
.callout h2{font-size:clamp(28px,4vw,44px);font-weight:500;letter-spacing:-.02em;line-height:1.18;max-width:24ch}
.callout p{margin-top:24px;font-size:17px;line-height:1.72;color:var(--ink-dim);max-width:60ch}
.callout p b{color:var(--ink);font-weight:500}
.callout .actions{margin-top:38px;display:flex;flex-wrap:wrap;gap:14px}

/* ---------- Footer ---------- */
footer{border-top:1px solid var(--line-soft);padding:40px 0 64px;margin-top:40px}
footer .inner{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;font-family:var(--mono);font-size:12px;color:var(--ink-faint)}
footer a:hover{color:var(--cyan)}
footer .credit{margin-top:16px;font-family:var(--mono);font-size:11px;color:var(--ink-faint);opacity:.75}
footer .credit a{border-bottom:1px solid var(--line)}

@media(max-width:860px){
  .grid{grid-template-columns:1fr}
  .grid-4{grid-template-columns:1fr 1fr}
  .band .inner{grid-template-columns:1fr;gap:36px;padding:100px 0}
  .tool-body,.split{grid-template-columns:1fr;gap:40px}
  .wrap{padding:0 24px}
  .hero nav{padding:0 24px}
  .rows .d{display:none}
}
