/* Charles & Roe: one house, eleven rooms.
   Bone paper for the parent company, a dark room for the brands, and one oxblood line
   (the rule under the CxR mark) that travels through every page. Copy is never styled
   into new words: labels keep the same casing they had before the redesign. */

:root{
  --bone:#efeae0; --bone-2:#e6dfd2; --ink:#16130f; --ink-2:#4b443b; --ink-3:#7a7166; --rule:#d3c9b8;
  --ox:#8f1d1d; --ox-2:#a8322a; --brass:#9d7f55;
  --room:#14110e; --room-2:#1c1814; --room-3:#26211b; --room-fg:#ece6da; --room-fg-2:#b7ad9e; --room-rule:#322c25;
  --display:"Libre Caslon Display","Libre Caslon Text",Georgia,serif;
  --serif:"Libre Caslon Text",Georgia,serif;
  --text:"Hanken Grotesk","Helvetica Neue",Arial,sans-serif;
  --max:1240px; --gut:clamp(20px,4vw,48px);
  --ease:cubic-bezier(.2,.7,.2,1);
  color-scheme:light;
}
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.45s;animation-timing-function:cubic-bezier(.4,0,.2,1)}
::view-transition-group(cr-mark),::view-transition-group(cr-rule){animation-duration:.55s;animation-timing-function:cubic-bezier(.4,0,.2,1)}

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body{background:var(--bone);color:var(--ink);font-family:var(--text);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:clip}
img,video{max-width:100%}
a{color:inherit;text-decoration:none}
::selection{background:var(--ox);color:var(--bone)}
:focus-visible{outline:2px solid var(--ox);outline-offset:3px;border-radius:2px}
.wrap{max-width:var(--max);margin:0 auto;padding-inline:var(--gut);position:relative;z-index:2}
.mono{font-family:var(--text);font-weight:600;letter-spacing:.16em;text-transform:uppercase;font-size:11.5px}

/* ---------- header ---------- */
header#hd{position:fixed;top:0;left:0;right:0;z-index:40;padding:22px var(--gut) 0;transition:background .5s var(--ease),padding .5s var(--ease),color .4s}
header#hd .bar{max-width:var(--max);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px;padding-bottom:14px;border-bottom:1px solid transparent;transition:border-color .5s}
header#hd.stuck{background:color-mix(in srgb,var(--bone) 86%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding-top:12px}
header#hd.stuck .bar{border-color:var(--rule)}
header#hd.in-room{background:color-mix(in srgb,var(--room) 82%,transparent);color:var(--room-fg)}
header#hd.in-room .bar{border-color:var(--room-rule)}
header#hd.in-room .brandmark img{filter:invert(1) brightness(.95)}
.brandmark{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.brandmark img{height:30px;width:auto;display:block;view-transition-name:cr-mark;transition:height .5s var(--ease),filter .4s}
.brandmark::after{content:"";display:block;width:100%;height:2px;background:var(--ox);transform-origin:left;view-transition-name:cr-rule}
header#hd.stuck .brandmark img{height:24px}
nav.links{display:flex;gap:clamp(18px,2.6vw,34px)}
nav.links a,nav.sitenav a{font-family:var(--text);font-weight:600;font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;position:relative;padding:6px 0;opacity:.72;transition:opacity .2s}
nav.links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--ox);transform:scaleX(0);transform-origin:left;transition:transform .18s var(--ease)}
header#hd.in-room nav.links a::after{background:var(--room-fg)}
nav.links a:hover,nav.links a.active{opacity:1}
nav.links a:hover::after,nav.links a.active::after{transform:scaleX(1)}
@media(max-width:760px){nav.links{display:none}}

/* ---------- arrival ---------- */
.intro{position:fixed;inset:0;z-index:60;background:var(--bone);display:grid;place-items:center;pointer-events:none;visibility:hidden}
.js-motion .intro.play{visibility:visible}
.intro-stage{width:min(300px,58vw);display:grid}
.intro-stage img{width:100%;height:auto;display:block}
.intro-rule{display:block;height:5px;background:var(--ox);margin-top:-2px;transform-origin:left}

/* ---------- the thread (travelling line) ---------- */
.thread{position:fixed;top:0;bottom:0;left:max(10px,calc((100vw - var(--max)) / 2 + var(--gut) / 2 - 18px));width:2px;z-index:30;pointer-events:none;opacity:0;transition:opacity .4s}
.thread i{position:absolute;left:0;top:0;width:2px;height:100%;background:var(--thread,var(--ox));transform:scaleY(var(--p,0));transform-origin:top;transition:background .45s}
.js-motion .thread.on{opacity:1}
@media(max-width:1100px){.thread{display:none}}

/* ---------- cursor ---------- */
.cursor{position:fixed;left:0;top:0;width:26px;height:26px;margin:-13px 0 0 -13px;border:1.5px solid var(--ox);border-radius:50%;pointer-events:none;z-index:70;opacity:0;transition:width .2s var(--ease),height .2s var(--ease),margin .2s var(--ease),opacity .3s,border-color .3s,background .2s}
.cursor.on{opacity:.9}
.cursor.hot{width:46px;height:46px;margin:-23px 0 0 -23px;background:color-mix(in srgb,var(--ox) 10%,transparent)}
.cursor.room{border-color:var(--room-fg)}

/* ---------- hero ---------- */
section{position:relative}
.hero{min-height:100svh;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);grid-template-rows:1fr auto auto;column-gap:clamp(24px,5vw,80px);align-content:end;padding:150px 0 64px}
.ghost-amp{position:absolute;right:-6%;top:6%;font-family:var(--serif);font-style:italic;color:var(--ox);font-size:min(62vw,820px);line-height:.8;opacity:.07;pointer-events:none;z-index:0;user-select:none}
.eyebrow{grid-column:1/-1;display:flex;align-items:center;gap:14px;color:var(--ink-3);align-self:start;margin-bottom:auto}
.eyebrow .rule{height:2px;width:56px;background:var(--ox)}
h1.display{grid-column:1/2;font-family:var(--display);font-weight:400;font-size:clamp(64px,12.5vw,196px);line-height:.86;letter-spacing:-.025em;position:relative;z-index:1;margin-top:clamp(40px,10vh,120px)}
h1.display .amp{font-family:var(--serif);font-style:italic;color:var(--ox);font-size:.86em}
.lede{grid-column:2/3;align-self:end;font-size:clamp(18px,1.6vw,22px);line-height:1.5;color:var(--ink-2);padding-bottom:clamp(8px,1.6vw,26px);position:relative;z-index:1}
.lede em{font-family:var(--serif);font-style:italic;color:var(--ink)}
.hero-meta{grid-column:1/-1;margin-top:clamp(40px,7vh,72px);display:flex;flex-wrap:wrap;gap:22px 64px;border-top:1px solid var(--rule);padding-top:22px;position:relative;z-index:1}
.hero-meta .item{display:flex;flex-direction:column;gap:6px}
.hero-meta .k{color:var(--ink-3)}
.hero-meta .v{font-family:var(--display);font-size:19px;letter-spacing:.08em;text-transform:uppercase;font-weight:400;color:var(--ink)}
.scrollcue{grid-column:1/-1;margin-top:28px;display:flex;align-items:center;gap:12px;color:var(--ink-3)}
.scrollcue .dot{width:7px;height:7px;border-radius:50%;background:var(--ox);animation:pulse 2.4s infinite}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}
@media(max-width:860px){
  .hero{grid-template-columns:1fr;padding-top:120px}
  h1.display,.lede{grid-column:1}
  .lede{margin-top:28px}
}

/* ---------- section heads ---------- */
#about,#people{padding:clamp(96px,14vh,160px) 0}
.sec-head{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,360px);align-items:end;gap:10px 28px;margin-bottom:clamp(48px,8vh,88px);padding-bottom:26px;position:relative}
.sec-head::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--rule);transform-origin:left;transform:scaleX(var(--draw,1))}
.sec-head .num{font-family:var(--text);font-weight:600;font-size:12px;letter-spacing:.14em;color:var(--ox);align-self:start;padding-top:12px}
.sec-head h2{font-family:var(--display);font-weight:400;font-size:clamp(44px,7vw,104px);line-height:.9;letter-spacing:-.02em}
.sec-head .tail{color:var(--ink-3);font-size:15px;line-height:1.5;text-align:right}
@media(max-width:860px){.sec-head{grid-template-columns:auto 1fr}.sec-head .tail{grid-column:1/-1;text-align:left}}

/* ---------- 01 the company ---------- */
.thesis{font-family:var(--display);font-weight:400;font-size:clamp(30px,4.2vw,58px);line-height:1.14;letter-spacing:-.012em;max-width:1080px}
.thesis em{font-family:var(--serif);font-style:italic;color:var(--ox)}
.thesis-foot{margin-top:clamp(48px,8vh,88px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 64px;max-width:980px;margin-left:auto;color:var(--ink-2);font-size:17px;line-height:1.65}
@media(max-width:760px){.thesis-foot{grid-template-columns:1fr;margin-left:0}}
.line-mask{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}

/* ---------- 02 brands: the dark room ---------- */
#brands{padding:clamp(110px,16vh,180px) 0 clamp(80px,12vh,140px);color:var(--room-fg)}
.room-bg{position:absolute;top:0;bottom:0;left:50%;width:100vw;transform:translateX(-50%);background:var(--room);z-index:-1;clip-path:inset(0 0 0 0)}
.door{position:absolute;left:0;right:0;height:2px;background:var(--ox-2);top:50%;opacity:0}
#brands .sec-head::after{background:var(--room-rule)}
#brands .sec-head .num{color:#d0675c}
#brands .sec-head .tail{color:var(--room-fg-2)}

.flagship{position:relative;padding:clamp(56px,9vh,110px) 0;border-top:1px solid var(--room-rule)}
.flagship:first-of-type{border-top:0}
.fl-intro{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(28px,5vw,80px);align-items:center;min-height:min(78vh,720px)}
.fl-media{position:relative}
.fl-logo{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;border-radius:6px;box-shadow:0 40px 80px -30px rgba(0,0,0,.7),0 0 0 1px var(--room-rule)}
.fl-top{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.fl-flag{font-family:var(--text);font-weight:600;font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.sector{font-family:var(--text);font-weight:600;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;padding:5px 10px;border:1px solid var(--room-rule);border-radius:999px;color:var(--room-fg-2);white-space:nowrap}
.fl-name{font-family:var(--display);font-weight:400;font-size:clamp(46px,6.4vw,92px);line-height:.92;letter-spacing:-.02em;margin-top:22px}
.fl-vision{font-family:var(--serif);font-style:italic;font-size:clamp(20px,2.1vw,28px);line-height:1.32;color:var(--room-fg);margin-top:22px;max-width:30ch}
.fl-desc{margin-top:20px;color:var(--room-fg-2);font-size:16.5px;max-width:52ch}
.fl-desc strong{color:var(--room-fg)}
@media(max-width:860px){.fl-intro{grid-template-columns:1fr;min-height:0}}

.fl-channels{margin-top:clamp(48px,7vh,80px);padding-top:30px;border-top:1px solid var(--room-rule)}
.fl-channels .lbl{color:var(--accent);margin-bottom:26px}
.hp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.hp{display:flex;gap:18px;align-items:flex-start;padding:20px 22px;background:var(--room-2);border:1px solid var(--room-rule);border-radius:10px;transition:transform .3s var(--ease),border-color .3s,background .3s;position:relative}
.hp:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 55%,var(--room-rule));background:var(--room-3)}
.hp-logo{width:54px;height:54px;border-radius:12px;flex:none;object-fit:cover;box-shadow:0 10px 24px rgba(0,0,0,.45)}
.hp-name{font-family:var(--display);font-size:21px;line-height:1.15}
.hp-by{display:inline-block;margin-left:8px;font-size:10.5px;color:var(--accent)}
.hp-desc{margin-top:6px;font-size:14.5px;line-height:1.5;color:var(--room-fg-2)}
@media(max-width:760px){.hp-grid{grid-template-columns:1fr}}

.film-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.film-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:980px){.film-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.film-grid,.film-grid.two{grid-template-columns:1fr}}
.film{margin:0}
.film video{display:block;width:100%;aspect-ratio:16/9;border-radius:8px;background:#0b0a08;box-shadow:0 0 0 1px var(--room-rule),0 30px 60px -30px rgba(0,0,0,.8)}
.film figcaption{margin-top:12px}
.film .f-name{font-family:var(--display);font-size:20px;line-height:1.2}
.film .f-name a{background-image:linear-gradient(var(--accent),var(--accent));background-size:100% 1px;background-repeat:no-repeat;background-position:0 100%;padding-bottom:2px;transition:background-size .2s}
.film .f-desc{margin-top:5px;font-size:14px;line-height:1.5;color:var(--room-fg-2)}

.ch-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.prop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
@media(max-width:760px){.ch-grid,.prop-grid{grid-template-columns:1fr;gap:26px}}
.ch,.prop{display:flex;flex-direction:column}
.ch-logo{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:8px;margin-bottom:16px;box-shadow:0 0 0 1px var(--room-rule)}
.prop-logo{width:100%;max-width:360px;aspect-ratio:3/2;object-fit:contain;background:#fff;border-radius:8px;padding:16px;margin-bottom:16px}
.ch-name{font-family:var(--display);font-size:21px;line-height:1.15}
.ch-desc{color:var(--room-fg-2);font-size:14px;line-height:1.55;margin-top:8px}
.ch-desc a{color:var(--accent)!important}

/* ventures 02-09: a stack of rooms */
.ventures{margin-top:clamp(64px,10vh,120px);display:grid;gap:clamp(56px,8vh,96px);position:relative}
article.v{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-template-areas:"logo ." "logo top" "logo name" "logo vis" "logo desc" "logo film" "logo .";grid-template-rows:1fr auto auto auto auto auto 1fr;column-gap:clamp(28px,5vw,80px);border-top:1px solid var(--room-rule);padding-top:clamp(32px,5vh,56px)}
.v-logo{grid-area:logo;width:100%;aspect-ratio:16/9;object-fit:cover;display:block;border-radius:6px;align-self:center;box-shadow:0 40px 80px -30px rgba(0,0,0,.7),0 0 0 1px var(--room-rule)}
article.v>a:first-child{grid-area:logo;align-self:center}
article.v>a:first-child .v-logo{grid-area:auto}
.v-top{grid-area:top;display:flex;align-items:center;justify-content:space-between;gap:14px}
.v-idx{font-family:var(--display);font-size:44px;line-height:1;color:var(--accent);letter-spacing:-.02em}
.v-name{grid-area:name;font-family:var(--display);font-size:clamp(36px,4.4vw,64px);line-height:.95;letter-spacing:-.02em;margin-top:18px}
.v-vision{grid-area:vis;font-family:var(--serif);font-style:italic;font-size:clamp(18px,1.8vw,24px);line-height:1.32;margin-top:16px;max-width:28ch}
.v-desc{grid-area:desc;color:var(--room-fg-2);font-size:16px;line-height:1.6;margin-top:14px;max-width:46ch}
.v-desc a{color:var(--accent)!important}
article.v .film{grid-area:film;margin-top:22px;max-width:520px}
@media(max-width:860px){article.v{grid-template-columns:1fr;grid-template-areas:"logo" "top" "name" "vis" "desc" "film";grid-template-rows:none}.v-logo,article.v>a:first-child{margin-bottom:24px}}
/* pinned stack (desktop, motion on): every room fills the stage and slides over the last */
.js-motion .ventures.stack{display:block;height:100vh;margin-top:clamp(40px,6vh,80px)}
.js-motion .ventures.stack .v{position:absolute;inset:0;background:var(--room);padding:clamp(90px,12vh,120px) 0 clamp(40px,6vh,64px);border-top:1px solid var(--room-rule)}
.js-motion .ventures.stack .v::before{content:"";position:absolute;left:0;top:-1px;height:2px;width:120px;background:var(--accent)}

/* ---------- 03 leadership (back on paper) ---------- */
.people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(40px,6vw,96px)}
@media(max-width:760px){.people{grid-template-columns:1fr}}
.person{border-top:2px solid var(--ink);padding-top:26px}
.person .nm{font-family:var(--display);font-size:clamp(36px,4vw,56px);line-height:1;letter-spacing:-.015em}
.person .rl{font-family:var(--text);font-weight:600;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ox);margin-top:14px}
.person .bio{margin-top:18px;color:var(--ink-2);font-size:16.5px;line-height:1.65;max-width:54ch}

/* ---------- closing ---------- */
footer{border-top:1px solid var(--rule);padding:clamp(64px,10vh,110px) 0 56px;position:relative;z-index:2}
.foot{display:flex;justify-content:space-between;align-items:flex-end;gap:36px;flex-wrap:wrap}
.foot-logo{height:84px;width:auto;display:block;margin-bottom:10px}
.foot .lf p{color:var(--ink-2);font-size:15px;margin-top:12px;max-width:42ch}
.foot .foot-contact a{font-family:var(--display);font-size:24px;border-bottom:1.5px solid var(--ox)!important;padding-bottom:3px!important;transition:color .2s}
.foot .foot-contact a:hover{color:var(--ox)}
.foot .rt{text-align:right;color:var(--ink-3);line-height:2}
.foot .rt .lob{font-size:22px;letter-spacing:0}
.foot .lf .ser{font-family:var(--display);font-size:30px}
.foot .lf .amp{color:var(--ox);font-style:italic;font-family:var(--serif)}

/* ---------- motion states (only when JS motion is on) ---------- */
.js-motion [data-rise]{will-change:transform,opacity}
@media (prefers-reduced-motion: reduce){
  .scrollcue .dot{animation:none}
  .cursor,.thread,.intro{display:none!important}
  *{scroll-behavior:auto!important}
}

/* ---------- Perspective: a letter ---------- */
.phero{padding:clamp(150px,22vh,220px) 0 clamp(28px,5vh,48px)}
.phero .eyebrow{display:flex;align-items:center;gap:14px;color:var(--ink-3);margin-bottom:30px}
.phero .eyebrow .rule{height:2px;width:56px;background:var(--ox)}
.phero h1{font-family:var(--display);font-weight:400;font-size:clamp(48px,8vw,112px);line-height:.92;letter-spacing:-.025em;max-width:12ch}
.phero h1 em{font-family:var(--serif);font-style:italic;color:var(--ox)}
.phero .dateline{margin-top:30px;color:var(--ink-3);display:flex;gap:10px;align-items:center}
.letter{max-width:680px;margin:clamp(24px,4vh,48px) 0 clamp(48px,8vh,96px) clamp(0px,8vw,140px);border-top:2px solid var(--ox);padding-top:clamp(32px,5vh,52px)}
.salutation{font-family:var(--serif);font-style:italic;font-size:23px;color:var(--ink);margin-bottom:32px}
.letter p{font-family:var(--serif);font-size:19px;line-height:1.74;margin-bottom:26px;color:var(--ink-2)}
.letter p.salutation{color:var(--ink)}
.letter p:first-of-type::first-letter{font-family:var(--display);font-style:normal;float:left;font-size:84px;line-height:.78;padding:8px 14px 0 0;color:var(--ox)}
.letter .tk{color:var(--ink);font-weight:700;font-style:normal}
.pull{font-family:var(--display);font-size:clamp(28px,3.6vw,42px);line-height:1.18;letter-spacing:-.01em;color:var(--ink);margin:clamp(40px,7vh,72px) 0 clamp(40px,7vh,72px) clamp(-60px,-5vw,0px);padding-left:28px;border-left:2px solid var(--ox);transform-origin:left center}
.signoff{margin-top:48px;padding-top:28px;border-top:1px solid var(--rule)}
.signoff .nm{font-family:var(--display);font-size:30px}
.signoff .rl{font-family:var(--text);font-weight:600;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ox);margin-top:8px}
@media(max-width:760px){.letter{margin-left:0}.pull{margin-left:0}}

/* ---------- mobile menu ---------- */
.menu-btn{display:none;position:relative;width:44px;height:44px;margin-right:-10px;background:none;border:0;color:inherit;cursor:pointer;z-index:2}
.menu-btn i{position:absolute;left:11px;right:11px;height:1.5px;background:currentColor;transition:transform .25s var(--ease),top .25s var(--ease)}
.menu-btn i:first-child{top:17px}.menu-btn i:last-child{top:26px}
.menu-open .menu-btn i:first-child{top:21.5px;transform:rotate(45deg)}
.menu-open .menu-btn i:last-child{top:21.5px;transform:rotate(-45deg)}
@media(max-width:760px){
  .menu-btn{display:block}
  nav.links{display:flex;position:fixed;inset:0;z-index:1;flex-direction:column;justify-content:center;gap:6px;padding:0 var(--gut);background:var(--bone);color:var(--ink);opacity:0;visibility:hidden;transition:opacity .25s,visibility 0s .25s}
  .menu-open nav.links{opacity:1;visibility:visible;transition:opacity .25s}
  nav.links a{font-family:var(--display);font-weight:400;font-size:clamp(34px,10vw,52px);letter-spacing:-.01em;text-transform:none;opacity:1;padding:8px 0;border-bottom:1px solid var(--rule)}
  nav.links a::after{display:none}
  /* backdrop-filter makes the header the containing block for fixed children; drop it so the menu covers the screen */
  header#hd.menu-open{background:var(--bone);color:var(--ink);backdrop-filter:none;-webkit-backdrop-filter:none}
  header#hd.menu-open .brandmark img{filter:none}
  header#hd.menu-open .brandmark{position:relative;z-index:2}
}
