/*
Theme Name: RJ Datum
Theme URI: https://rickjarvis.net
Author: Rick Jarvis
Author URI: https://rickjarvis.net
Description: Minimal, data-driven personal site theme for Rick Jarvis (RVA + RE). Datum design — One South teal accent, tabular figures, animated data bars. Built for a clean WordPress install.
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: rj-datum
*/

:root{
  --ink:#0f0f0f;--soft:#5f5f5f;--faint:#9d9d9d;--paper:#ffffff;--wash:#f6f5f2;
  --line:#e9e8e4;--line2:#111;--teal:#12857a;--teal-soft:#8ecac1;--teal-wash:#eef7f5;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:'Inter',system-ui,sans-serif;background:var(--paper);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
a{color:inherit;text-decoration:none}
.mono{font-family:'IBM Plex Mono',monospace}
.wrap{max-width:1140px;margin:0 auto;padding:0 40px}

/* HEADER */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line2)}
.nav{display:flex;justify-content:space-between;align-items:center;height:66px}
.brand{font-weight:600;font-size:16px;letter-spacing:-.01em}
.brand .a{color:var(--teal)}
.brand .s{font-family:'IBM Plex Mono';font-weight:400;font-size:11px;color:var(--faint);margin-left:8px}
.menu{display:flex;gap:2px;align-items:center;list-style:none}
.menu a{font-family:'IBM Plex Mono';font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--soft);padding:8px 14px;transition:.14s;display:inline-block}
.menu a:hover{color:var(--teal)}
.menu .cta a,.menu a.cta{background:var(--ink);color:#fff;margin-left:10px;padding:10px 18px}
.menu .cta a:hover,.menu a.cta:hover{background:var(--teal)}
.mb{display:none;background:none;border:1px solid var(--line2);font-family:'IBM Plex Mono';font-size:12px;text-transform:uppercase;letter-spacing:.05em;padding:7px 12px;cursor:pointer}
@media(max-width:700px){.menu{display:none}.menu.open{display:flex;position:absolute;top:66px;left:0;right:0;flex-direction:column;background:var(--paper);border-bottom:1px solid var(--line2);padding:8px 0}.menu.open a{padding:14px 40px;font-size:14px}.menu.open .cta a{margin:8px 40px}.mb{display:block}}

/* HERO */
.hero{padding:78px 0 46px}
.hero .tag{font-family:'IBM Plex Mono';font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--teal);margin-bottom:26px}
.hero h1{font-weight:600;font-size:clamp(36px,5.4vw,64px);line-height:1.03;letter-spacing:-.03em;max-width:19ch}
.hero p{margin-top:24px;max-width:52ch;color:var(--soft);font-size:18px}
.hero .acts{margin-top:32px;display:flex;gap:14px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:600;padding:13px 24px;transition:.16s;border-radius:2px}
.btn-p{background:var(--ink);color:#fff}.btn-p:hover{background:var(--teal)}
.btn-g{border:1px solid var(--line2);color:var(--ink)}.btn-g:hover{border-color:var(--teal);color:var(--teal)}
.bars{margin-top:56px;display:flex;align-items:flex-end;gap:6px;height:120px;border-bottom:1px solid var(--line2)}
.bars i{flex:1;background:var(--teal-soft);height:0;transition:height 1s cubic-bezier(.2,.7,.2,1)}
.bars i:nth-child(3n){background:var(--teal)}

/* FIGURES */
.figures{display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid var(--line2)}
.fig{padding:30px 0;border-right:1px solid var(--line)}
.fig:last-child{border-right:0}
.fig .n{font-weight:600;font-size:clamp(34px,5vw,52px);letter-spacing:-.03em;line-height:.9}
.fig .l{font-family:'IBM Plex Mono';font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--soft);margin-top:12px}
@media(max-width:700px){.figures{grid-template-columns:repeat(2,1fr)}.fig{padding:22px 0}.fig:nth-child(2){border-right:0}}

/* SECTIONS */
.section{padding:64px 0}
.cap{font-family:'IBM Plex Mono';font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);display:flex;justify-content:space-between;align-items:baseline;padding-bottom:16px;border-bottom:1px solid var(--line2);margin-bottom:36px}
.cap b{color:var(--teal);font-weight:500}
.about{display:grid;grid-template-columns:1.35fr .9fr;gap:56px}
.about-col{display:flex;flex-direction:column}
.headshot{width:150px;height:150px;border-radius:50%;object-fit:cover;margin-bottom:28px;border:1px solid var(--line);filter:grayscale(.08)}
.about .lead{font-size:clamp(21px,2.6vw,27px);font-weight:500;line-height:1.32;letter-spacing:-.01em}
.pullquote{margin:0;position:relative;padding-top:34px}
.pullquote::before{content:"\201C";position:absolute;top:-8px;left:-6px;font-family:Georgia,'Times New Roman',serif;font-size:92px;line-height:1;color:var(--teal-soft)}
.pullquote p{font-size:clamp(23px,3vw,32px);font-weight:500;line-height:1.3;letter-spacing:-.015em}
.pullquote cite{display:block;margin-top:22px;font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);font-style:normal}
.about .body p{color:var(--soft);font-size:16px;margin-bottom:14px;max-width:54ch}
.about .body p:last-child{margin-bottom:0}
@media(max-width:760px){.about{grid-template-columns:1fr;gap:28px}}
.pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:44px}
.pillar{background:var(--paper);padding:26px 22px}
.pillar h4{font-family:'IBM Plex Mono';font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);margin-bottom:12px}
.pillar p{font-size:14px;color:var(--soft)}
@media(max-width:760px){.pillars{grid-template-columns:1fr}}
.subhead{font-family:'IBM Plex Mono';font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin:44px 0 18px;padding-bottom:10px;border-bottom:1px solid var(--line)}

/* COMPANIES */
.companies{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.companies a{border:1px solid var(--line);border-radius:6px;padding:26px;transition:.16s;overflow:hidden}
.companies a:hover{border-color:var(--teal);transform:translateY(-3px)}
.companies a .logo{background:var(--ink);margin:-26px -26px 22px;height:104px;display:flex;align-items:center;justify-content:center;padding:20px}
.companies a .logo img{max-height:52px;max-width:74%;width:auto;object-fit:contain;display:block}

/* OFFICE PAGE */
.office-hero{margin:0 0 8px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.office-hero img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.office-hero figcaption{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--faint);padding:12px 16px;letter-spacing:.02em}
.office-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.office-grid figure{margin:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--wash)}
.office-grid figure.g-wide{grid-column:1 / -1}
.office-grid img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
.office-grid figure.g-wide img{aspect-ratio:16/7}
.office-grid figcaption{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--faint);padding:10px 14px;letter-spacing:.02em;text-transform:uppercase}
@media(max-width:640px){.office-grid{grid-template-columns:1fr}.office-grid figure.g-wide{grid-column:auto}}

/* SINGLE POST (Voices essay) */
.post-single{padding-top:56px}
.post-wrap{max-width:720px}
.post-back{font-family:'IBM Plex Mono';font-size:12px;letter-spacing:.04em;text-transform:uppercase;margin-bottom:24px}
.post-back a{color:var(--teal)}
.post-back--foot{margin-top:48px;padding-top:24px;border-top:1px solid var(--line)}
.post-title{font-weight:600;font-size:clamp(30px,5vw,48px);line-height:1.08;letter-spacing:-.025em}
.post-meta{font-family:'IBM Plex Mono';font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin:16px 0 34px;padding-bottom:22px;border-bottom:1px solid var(--line2)}
.post-body{font-size:17.5px;line-height:1.72;color:var(--ink)}
.post-body p{margin:0 0 20px}
.post-body h2,.post-body h3,.post-body h4,.post-body h5,.post-body h6{font-weight:600;letter-spacing:-.01em;margin:34px 0 14px;line-height:1.28}
.post-body h2{font-size:26px}.post-body h3{font-size:22px}.post-body h4,.post-body h5,.post-body h6{font-size:19px}
.post-body a{color:var(--teal);text-decoration:underline;text-underline-offset:3px}
.post-body img{max-width:100%;height:auto;border-radius:6px;margin:10px 0}
.post-body blockquote{margin:24px 0;padding-left:22px;border-left:3px solid var(--teal-soft);color:var(--soft);font-style:italic}
.post-body ul,.post-body ol{margin:0 0 20px 22px}
.post-body li{margin-bottom:8px}
.post-body iframe{max-width:100%;margin:16px 0}
.post-body .wp-caption{max-width:100%!important}
.post-body .wp-caption-text{font-family:'IBM Plex Mono';font-size:12px;color:var(--faint);margin-top:6px}
.companies h3{font-weight:600;font-size:20px;margin-bottom:8px}
.companies p{font-size:14px;color:var(--soft)}
.companies .u{font-family:'IBM Plex Mono';font-size:11px;color:var(--faint);margin-top:14px;display:inline-block}
.companies a:hover .u{color:var(--teal)}
@media(max-width:760px){.companies{grid-template-columns:1fr}}

/* WORK */
.work .proj{border-bottom:1px solid var(--line)}
.work .proj:first-child{border-top:1px solid var(--line)}
.work .proj-row{display:block;padding:15px 0;transition:padding .16s;cursor:pointer;position:relative}
.work .proj-row:hover,.work .proj.open .proj-row{padding-left:12px}
.work .proj-row:focus-visible{outline:2px solid var(--teal);outline-offset:3px}
.work .top{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.work .nm{font-weight:600;font-size:19px;letter-spacing:-.01em;display:inline-flex;align-items:baseline;gap:12px}
.work .nm::before{content:"+";font-family:'IBM Plex Mono';font-size:15px;color:var(--faint);transition:transform .22s,color .22s;display:inline-block}
.work .proj.open .nm::before{transform:rotate(45deg);color:var(--teal)}
.work .proj-row:hover .nm,.work .proj.open .nm{color:var(--teal)}
.work .meta{font-family:'IBM Plex Mono';font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--faint);white-space:nowrap}
.work .bar{height:2px;background:var(--line);margin-top:10px;position:relative;overflow:hidden}
.work .bar i{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--teal-soft);transition:width .6s ease}
.work .proj-row:hover .bar i,.work .proj.open .bar i{background:var(--teal)}
.work .proj-panel{max-height:0;overflow:hidden;transition:max-height .4s ease}
.work .proj.open .proj-panel{max-height:360px}
.work .proj-panel-in{padding:6px 0 22px 12px}
.work .proj-narr{font-size:15.5px;color:var(--soft);max-width:72ch;margin-bottom:12px;line-height:1.6}
.work .proj-credits{font-family:'IBM Plex Mono';font-size:11.5px;letter-spacing:.02em;color:var(--faint);line-height:1.7}
@media(max-width:560px){.work .meta{font-size:10px}}

/* WRITING */
.writing{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.writing a{border:1px solid var(--line);border-radius:4px;padding:24px;transition:.16s}
.writing a:hover{border-color:var(--teal);transform:translateY(-3px)}
.writing .k{font-family:'IBM Plex Mono';font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.writing h3{font-weight:600;font-size:19px;margin:10px 0 6px;letter-spacing:-.01em}
.writing p{font-size:14px;color:var(--soft)}
@media(max-width:760px){.writing{grid-template-columns:1fr}}

/* CONNECT */
.connect{background:var(--ink);color:#fff;border-radius:14px;padding:64px 48px}
.connect .cap{color:#8a8a8a;border-color:#333}
.connect .cap b{color:var(--teal-soft)}
.connect h2{font-weight:600;font-size:clamp(28px,4vw,44px);letter-spacing:-.02em;max-width:20ch;margin-bottom:34px}
.cgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 40px;max-width:720px}
.crow{display:flex;gap:14px;align-items:baseline;padding:12px 0;border-bottom:1px solid #2a2a2a}
.crow .lab{font-family:'IBM Plex Mono';font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--teal-soft);width:52px;flex:none}
.crow a,.crow span{color:#ededed;font-size:15px}
.crow a:hover{color:var(--teal-soft)}
@media(max-width:640px){.cgrid{grid-template-columns:1fr}.connect{padding:44px 26px}}

/* FOOTER */
.site-footer{padding:40px 0}
.foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-family:'IBM Plex Mono';font-size:12px;color:var(--faint);letter-spacing:.02em}
.foot a:hover{color:var(--teal)}
