/* CraftBridge website.
   Layout: the Lujo showroom grammar. Cream ground, edge to edge photo panels split by 8px gaps,
   one sticky bar with a black pill, 44px statements set tight, hairline accordions, stone panels and footer.
   Pages are made by tools/build_site.py. Edit that file and run it again rather than editing the HTML. */
:root{
  --cream:#fbf7ef;   /* page ground (Lujo #FBF7EF) */
  --stone:#f3f0ea;   /* panels, sticky bar, footer (Lujo #F3F0EA) */
  --line:#d7d4cf;    /* hairlines (Lujo #D7D4CF) */
  --ink:#000000;     /* all text and the black pill */
  --grey:#5c5951;    /* labels and quiet text, 6.5:1 on cream */
  --quiet:#8a877c;   /* resting tab titles and placeholders, 24px and up only */
  --paper:#ffffff;   /* text on photos and on the black pill */
  --studio:#f1f0ee;  /* behind cut out product shots */
  --error:#8f1d24;
  /* PP Neue Montreal is Lujo's paid font. Geist is the free stand in. Swap the first name once a licence is bought. */
  --font:"PP Neue Montreal","Geist","Helvetica Neue",Arial,sans-serif;
  --font-medium:"PP Neue Montreal Medium","Geist","Helvetica Neue",Arial,sans-serif;
  --gutter:16px;
  --ease:cubic-bezier(.25,.1,.25,1);
  color-scheme:light;
}
*{box-sizing:border-box}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.15;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:clip}
body:has(dialog[open]){overflow:hidden}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:40;background:var(--stone)}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
h1,h2,h3,h4,p,figure,ul,ol,dl,dd{margin:0}
h1,h2,h3,h4{font-weight:400}
ul,ol{padding:0;list-style:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
[hidden]{display:none!important}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:8px;top:-60px;z-index:60;background:var(--ink);color:var(--paper);padding:10px 16px;font-size:14px}
.skip:focus{top:8px}
.wrap{padding-left:max(var(--gutter),env(safe-area-inset-left,0px));padding-right:max(var(--gutter),env(safe-area-inset-right,0px))}
.label{font-size:11px;line-height:1.3;letter-spacing:.04em;text-transform:uppercase;color:var(--grey)}
.label-ink{color:var(--ink)}
.more{display:inline-block;font-size:11px;letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--ink);padding-bottom:3px}
.more:hover{opacity:.6}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:1000px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;transition:background .3s var(--ease),color .3s var(--ease)}
.pill-black{background:var(--ink);color:var(--paper);height:48px;padding:0 40px}
.pill-black:hover{background:#2b2a27}
.pill-black[disabled]{opacity:.6;cursor:progress}
.pill-outline{border:1px solid var(--ink);height:28px;padding:0 18px}
.pill-outline:hover{background:var(--ink);color:var(--paper)}
.chip{position:absolute;top:10px;left:10px;z-index:2;background:var(--line);font-size:10px;letter-spacing:.04em;text-transform:uppercase;padding:4px 7px}

/* announcement and header */
.announce{min-height:30px;padding-block:6px;display:flex;align-items:center;justify-content:center;background:var(--ink);color:var(--paper);font-size:12px;letter-spacing:.02em;text-align:center}
.hdr{height:60px;display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr) auto;align-items:center;gap:24px;background:var(--cream);border-bottom:1px solid var(--line);position:relative}
.logo{display:block;justify-self:start;line-height:0}
.logo img{height:36px;width:auto;max-width:100%} /* the logo team asks for 36 to 64px tall */
.nav{display:flex;gap:24px;font-family:var(--font-medium);font-weight:500;font-size:14px;letter-spacing:.02em}
.nav a{padding-block:4px;border-bottom:1px solid transparent}
.nav a:hover,.tools a:hover{opacity:.6}
.nav a[aria-current="page"]{border-bottom-color:var(--ink)}
.nav .nav-extra{display:none}
.tools{display:flex;align-items:center;gap:22px;font-family:var(--font-medium);font-weight:500;font-size:14px;letter-spacing:.02em}
.menu-btn{display:none;font-family:var(--font-medium);font-weight:500;font-size:14px;height:40px;padding:0 4px}

/* hero reel: whole photos in a row that slides slowly from right to left.
   Every panel takes its photo's own shape (aspect-ratio is set on each figure) so no photo is cropped.
   assets/site.js repeats the row and moves it. Hover, focus or the pause button stop it. */
.reel{position:relative;background:var(--line);--reel-h:min(52vw,760px)}
.reel-view{position:relative;height:var(--reel-h);overflow-x:auto;scrollbar-width:none}
.reel-view::-webkit-scrollbar{display:none}
.reel.is-live .reel-view{overflow:hidden;touch-action:pan-y;cursor:grab}
.reel-view.dragging{cursor:grabbing;user-select:none;-webkit-user-select:none}
.reel-view:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}
.reel-track{display:flex;gap:8px;height:100%;width:max-content;will-change:transform}
.slide{position:relative;flex:none;height:100%;overflow:hidden;background:var(--stone)}
.slide img{width:100%;height:100%;object-fit:cover;pointer-events:none;-webkit-user-drag:none;user-select:none}
.slide.studio{background:var(--studio)}
.slide.studio img{object-fit:contain;padding:7%}
.slide .tag-new{position:absolute;top:14px;left:14px;color:var(--paper);font-size:11px;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 1px 8px rgba(0,0,0,.35)}
.cap{position:absolute;left:14px;bottom:14px;z-index:2;display:inline-flex;align-items:center;gap:10px;height:28px;padding:0 12px 0 14px;border-radius:1000px;background:var(--cream);color:var(--ink);font-size:11px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;transition:background .3s var(--ease),color .3s var(--ease)}
.cap svg{width:10px;height:10px;stroke:currentColor;fill:none;stroke-width:1.5}
.cap:hover{background:var(--ink);color:var(--paper)}
.ticker-btn .i-play{display:none}
.is-paused .i-play{display:block!important}
.is-paused .i-pause{display:none}

/* news bar: one line of good news that runs from right to left under the hero */
.ticker{position:relative;display:flex;align-items:stretch;height:44px;background:var(--stone);border-bottom:1px solid var(--line);overflow:hidden}
.ticker-tag{flex:none;display:flex;align-items:center;padding:0 16px 0 max(16px,env(safe-area-inset-left,0px));background:var(--ink);color:var(--paper);font-size:11px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.ticker-tag .short{display:none}
.ticker-view{flex:1;min-width:0;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 28px,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,transparent,#000 28px,#000 calc(100% - 28px),transparent)}
.ticker-run{flex:none;display:flex;align-items:center;animation:ticker var(--ticker-time,80s) linear infinite}
.ticker:hover .ticker-run,.ticker:focus-within .ticker-run,.ticker.is-paused .ticker-run{animation-play-state:paused}
@keyframes ticker{to{transform:translateX(-100%)}}
.ticker li{display:flex;align-items:center;gap:28px;padding-right:28px;font-size:13px;letter-spacing:.01em;white-space:nowrap}
.ticker li::after{content:"";width:5px;height:5px;transform:rotate(45deg);background:var(--grey);flex:none}
.ticker a{display:inline-flex;align-items:center;gap:8px;border-bottom:1px solid var(--line);padding-bottom:1px}
.ticker a:hover{border-bottom-color:var(--ink)}
.ticker a svg{width:9px;height:9px;stroke:currentColor;fill:none;stroke-width:1.6}
.ticker b{font-weight:500;font-family:var(--font-medium);text-transform:uppercase;font-size:11px;letter-spacing:.06em;background:var(--ink);color:var(--paper);padding:3px 6px;margin-right:2px}
.ticker-btn{flex:none;width:44px;display:grid;place-items:center;border-left:1px solid var(--line);background:var(--stone)}
.ticker-btn:hover{background:#ece8e0}
.ticker-btn svg{width:12px;height:12px;stroke:var(--ink);fill:none;stroke-width:1.4}
@media (prefers-reduced-motion:reduce){
  .ticker-view{overflow-x:auto;-webkit-mask-image:none;mask-image:none;scrollbar-width:none}
  .ticker-run[aria-hidden]{display:none}
  .ticker-btn{display:none}
}

/* sticky bar */
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:30;background:var(--stone)}
.bar-in{height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.bar h1,.bar .bar-title{font-size:24px;line-height:1.2;font-weight:400;letter-spacing:.01em;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar .pill-black{width:min(370px,52vw)}
.bar-side{display:flex;align-items:center;gap:24px;min-width:0}
.pill .short{display:none}

/* intro: text column, product stage, side panel */
.intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) minmax(0,1fr);gap:32px;padding-block:56px 64px;align-items:start}
.intro-text{display:grid;gap:18px;padding-top:56px}
.intro-text p{font-size:14px;line-height:1.35}
.intro-text .label a{border-bottom:1px solid var(--line)}
.intro-text .label a:hover{border-bottom-color:var(--ink)}
.ticks{display:grid;gap:9px;font-size:13px;line-height:1.3;padding-left:2px}
.ticks li{display:flex;gap:10px}
.ticks li::before{content:"";width:4px;height:4px;border-radius:50%;background:var(--ink);margin-top:6px;flex:none}
.stage{position:relative;background:var(--studio);aspect-ratio:4/5;max-width:100%;overflow:hidden}
.stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .5s var(--ease)}
.stage img.on{opacity:1}
.stage img.fill{object-fit:cover}
.stage-tabs{position:absolute;top:10px;left:10px;z-index:2;display:flex;gap:4px}
.stage-tabs button{font-size:10px;line-height:1.15;letter-spacing:.04em;text-transform:uppercase;padding:4px 7px;color:var(--grey);background:rgba(251,247,239,.8)}
.stage-tabs button[aria-pressed="true"]{background:var(--line);color:var(--ink)}
.crafts{background:var(--stone);align-self:end}
.crafts h3{font-size:14px;font-weight:400;padding:16px 16px 12px}
.crafts a{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border-top:1px solid var(--line);font-size:14px}
.crafts a span{color:var(--grey);font-size:12px;margin-left:auto}
.crafts a:hover{background:#ece8e0}
.crafts a svg{width:12px;height:12px;stroke:var(--ink);fill:none;stroke-width:1.5;flex:none}

/* pairs well with */
.pair{display:grid;gap:12px;margin-top:22px}
.pair h3{font-size:14px;font-weight:400}
.pair-list{display:grid;gap:4px}
.pair-card{display:grid;grid-template-columns:72px minmax(0,1fr);gap:16px;align-items:center;background:var(--stone);padding:12px}
.pair-card img{width:72px;height:72px;object-fit:cover;background:var(--studio)}
.pair-card img.cut{object-fit:contain;padding:4px}
.pair-card span{display:grid;gap:4px;justify-items:start;font-size:12px;line-height:1.3}
.pair-card .sub{color:var(--grey)}
.pair-card .pill-outline{margin-top:6px}
.pair-card:hover .pill-outline{background:var(--ink);color:var(--paper)}

/* option panel: finish, buying for, order type, quantity, dimensions */
.opt{background:var(--stone);align-self:end;font-size:14px}
.opt-row{padding:16px}
.opt-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.swatch{position:relative;display:block;width:34px;height:34px;overflow:hidden}
.swatch img{width:100%;height:100%;object-fit:cover}
.swatch::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:var(--paper)}
.swatch-name{display:block;font-size:12px;margin-top:8px}
.opt-line{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:50px;padding:0 16px;border-top:1px solid var(--line)}
.opt-line a:hover{opacity:.6}
.select{appearance:none;-webkit-appearance:none;width:100%;height:48px;border:0;border-radius:0;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' fill='none' stroke='%23000' stroke-width='1.2'/%3E%3C/svg%3E") no-repeat right center/12px;font:inherit;font-size:14px;color:var(--ink);padding:0 24px 0 0;cursor:pointer}
.select:focus-visible{outline-offset:-2px}
.stepper{display:inline-flex;align-items:center;height:28px;border:1px solid var(--ink);border-radius:1000px}
.stepper button{width:28px;height:26px;display:grid;place-items:center;border-radius:50%}
.stepper button:disabled{opacity:.3;cursor:default}
.stepper svg{width:10px;height:10px;stroke:var(--ink);stroke-width:1.3;fill:none}
.stepper input{width:44px;height:26px;border:0;background:transparent;text-align:center;font:inherit;font-size:13px;color:var(--ink);-moz-appearance:textfield;appearance:textfield}
.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.stepper input:disabled{color:var(--grey)}
.opt-note{padding:0 16px 16px;font-size:12px;line-height:1.35;color:var(--grey)}

/* details: statement and accordion */
.details{padding-block:40px 120px}
.details .labels{display:flex;gap:96px;margin-bottom:22px}
.statement{font-size:44px;line-height:1;letter-spacing:0;max-width:24ch;text-wrap:balance}
.statement + .statement{margin-top:22px}
.details .more{margin-top:18px}
.acc{max-width:448px;margin-top:56px;border-top:1px solid var(--line)}
.acc details{border-bottom:1px solid var(--line)}
.acc summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:50px;font-size:14px;cursor:pointer}
.acc summary::-webkit-details-marker{display:none}
.acc summary svg{width:12px;height:12px;flex:none;stroke:var(--ink);stroke-width:1.3;transition:transform .3s var(--ease)}
.acc details[open] summary svg{transform:rotate(45deg)}
.acc details p{font-size:14px;line-height:1.35;color:var(--grey);padding-bottom:18px;max-width:40ch}
.spec{display:grid;grid-template-columns:minmax(0,110px) minmax(0,1fr);gap:9px 16px;font-size:14px;line-height:1.3;padding-bottom:18px}
.spec dt{color:var(--grey)}

/* banner */
/* the banner keeps its photo's own shape (set on the figure) and only crops when a tall screen asks it to; the script keeps the people in frame */
.banner{position:relative;width:100%;max-height:calc(100svh - 64px);overflow:hidden;background:var(--stone)}
.banner img{width:100%;height:100%;object-fit:cover}

/* feature tabs */
.tabs{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;padding-block:120px}
.tab-media{position:relative;aspect-ratio:var(--r,4/5);max-width:100%;overflow:hidden;background:var(--stone)}
.tab-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .5s var(--ease)}
.tab-media img.on{opacity:1}
.tab-media img.cut{object-fit:contain;padding:8%;background:var(--studio)}
.tab-copy{padding-top:8px}
.tab-list{display:grid;gap:2px}
.tab-list button{display:flex;align-items:center;gap:10px;font-size:24px;line-height:1.21;color:var(--quiet);text-align:left;transition:color .3s var(--ease)}
.tab-list button::before{content:"";width:0;height:1.5px;background:var(--ink);transition:width .5s var(--ease)}
.tab-list button[aria-selected="true"]{color:var(--ink)}
.tab-list button[aria-selected="true"]::before{width:18px}
.tab-list button:hover{color:var(--ink)}
.tab-text{margin-top:30px;font-size:14px;line-height:1.35;max-width:36ch;min-height:4em}

/* story, also used for the maker on product pages */
.story{display:grid;grid-template-columns:minmax(0,13fr) minmax(0,16fr) minmax(0,26fr);background:var(--stone);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.story-nav{border-right:1px solid var(--line);padding:72px 24px;display:grid;align-content:start;gap:14px}
.story-nav button{display:flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--grey);text-align:left}
.story-nav button::before{content:"";width:0;height:1px;background:var(--ink);transition:width .5s var(--ease)}
.story-nav button[aria-selected="true"]{color:var(--ink)}
.story-nav button[aria-selected="true"]::before{width:24px}
.story-copy{border-right:1px solid var(--line);padding:72px 24px;display:grid;align-content:start;gap:14px;min-width:0}
.story-copy h2{font-size:24px;line-height:1.2;font-weight:400}
.story-copy p{font-size:14px;line-height:1.35;max-width:34ch}
.story-copy .pill-outline{justify-self:start;margin-top:8px}
.story-media{position:relative;aspect-ratio:var(--r,1.3);overflow:hidden}
.story-media > *{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .5s var(--ease)}
.story-media > .on{opacity:1}
.story-media img{object-fit:cover;object-position:50% 45%}

/* dimensions */
.dims{padding-block:120px 0}
.dims-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px 16px;padding-bottom:22px}
.dims-head h2{font-size:32px;line-height:1.1;font-weight:400}
.dims-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.dim{position:relative;background:var(--stone);aspect-ratio:4/3;display:grid;place-items:center;padding:52px 32px 52px}
.dim figcaption{position:absolute;top:16px;left:16px}
.dim svg{width:100%;height:100%;max-width:460px;fill:none;stroke:var(--ink);stroke-width:1;overflow:visible}
.dim svg *{vector-effect:non-scaling-stroke}
.dim svg .dl{stroke:var(--grey)}
.dim svg .hid{stroke:var(--quiet);stroke-dasharray:4 4}
.dim svg text{fill:var(--grey);stroke:none;font-family:var(--font);font-size:14px;letter-spacing:.04em}
.dim-key{position:absolute;left:16px;right:16px;bottom:16px;display:flex;flex-wrap:wrap;gap:6px 20px}

/* product rows and the collection grid */
.row-head{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-block:72px 22px}
.row-head h1,.row-head h2{font-size:32px;line-height:1.1;font-weight:400}
.row-tabs{display:flex;flex-wrap:wrap;gap:8px 24px}
.row-tabs button,.row-tabs a{display:flex;align-items:center;gap:10px;color:var(--grey)}
.row-tabs button::before,.row-tabs a::before{content:"";width:0;height:1px;background:var(--ink);transition:width .4s var(--ease)}
.row-tabs [aria-pressed="true"],.row-tabs .on{color:var(--ink)}
.row-tabs [aria-pressed="true"]::before,.row-tabs .on::before{width:16px}
.row-tabs button:hover,.row-tabs a:hover{color:var(--ink)}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding-inline:4px}
.card{background:var(--stone);display:flex;flex-direction:column;min-width:0}
.card-img{position:relative;aspect-ratio:var(--r,1);max-width:100%;overflow:hidden}
.card-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .5s var(--ease)}
.card-img.studio{background:var(--studio)}
.card-img .cut{object-fit:contain;padding:6%}
.card-img .hover{opacity:0}
.card:hover .card-img .hover,.card:focus-visible .card-img .hover{opacity:1}
.card-img .tag-new{position:absolute;top:12px;left:12px;z-index:2;background:var(--cream);font-size:10px;letter-spacing:.04em;text-transform:uppercase;padding:4px 7px}
.card-meta{padding:20px 16px 18px;display:grid;gap:6px}
.card-meta h3{font-size:16px;font-weight:400;line-height:1.2}
.card-meta .sub{display:flex;justify-content:space-between;gap:12px;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--grey)}
.card-soon{justify-content:center;align-items:center;text-align:center;gap:16px;padding:40px 24px;aspect-ratio:auto;min-height:280px}
.card-soon p{font-size:24px;line-height:1.2;color:var(--quiet);max-width:16ch}
.cards [data-span="2"]{grid-column:span 2}
.cards [data-span="3"]{grid-column:1/-1}
.count{padding-top:14px}

/* who we work with: three panels */
.who-head{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap;padding-block:96px 22px}
.who-head h2{font-size:32px;line-height:1.1;font-weight:400}
.who-head p{font-size:14px;line-height:1.35;color:var(--grey);max-width:44ch}
.who{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding-inline:4px}
.who-card{background:var(--stone);display:flex;flex-direction:column;min-width:0;scroll-margin-top:80px}
.who-card figure{aspect-ratio:var(--r,4/3);overflow:hidden;background:var(--line)}
.who-card figure img{width:100%;height:100%;object-fit:cover}
.who-body{display:grid;gap:12px;padding:22px 16px 24px;align-content:start;flex:1}
.who-body h3{font-size:24px;line-height:1.2;font-weight:400}
.who-body p{font-size:14px;line-height:1.35;color:var(--grey);max-width:40ch}
.who-body .ticks{margin-top:4px}
.who-body .pill{justify-self:start;margin-top:8px}

/* journal teaser and journal list */
.post-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--stone);margin-inline:4px}
.post-card figure{aspect-ratio:var(--r,4/3);overflow:hidden;background:var(--line)}
.post-card figure img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.post-card:hover figure img{transform:scale(1.02)}
.post-body{display:grid;gap:16px;align-content:center;padding:40px 32px}
.post-body h3,.post-body h2{font-size:32px;line-height:1.1;font-weight:400;max-width:22ch;text-wrap:balance}
.post-body p{font-size:14px;line-height:1.4;color:var(--grey);max-width:46ch}
.post-body .pill{justify-self:start}

/* page heads for About, Connect, Journal and legal pages */
.page-head{padding-block:72px 56px;display:grid;gap:22px}
.page-head .statement{max-width:26ch}
.page-head .lead{font-size:16px;line-height:1.4;max-width:52ch}
/* each gallery panel starts at its photo's own width for the row height (--r). When the row reaches its cap the panels that can be cropped grow to keep the row full width; a panel marked data-fixed holds a photo that must be shown whole and keeps its shape */
.gallery{--gcap:max(760px,40vw);display:flex;gap:8px;width:100%;aspect-ratio:var(--sum);max-height:var(--gcap);background:var(--line)}
.gallery figure{flex:1 1 calc(var(--r) * min(100% / var(--sum), var(--gcap)));min-width:0;overflow:hidden;background:var(--stone)}
.gallery figure[data-fixed]{flex-grow:0;flex-shrink:0}
.gallery img{width:100%;height:100%;object-fit:cover}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;padding-block:120px}
.split .labels{display:flex;gap:96px;margin-bottom:22px}
.prose{display:grid;gap:16px;font-size:16px;line-height:1.45;max-width:54ch}
.prose p{color:var(--ink)}
.quote{font-size:24px;line-height:1.25;max-width:30ch}
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding-inline:4px}
.step{background:var(--stone);padding:24px 16px 28px;display:grid;gap:14px;align-content:start;min-height:260px}
.step h3{font-size:24px;line-height:1.2;font-weight:400}
.step p{font-size:14px;line-height:1.35;color:var(--grey)}
.serve{border-top:1px solid var(--line)}
.serve li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:16px;padding-block:16px;border-bottom:1px solid var(--line);font-size:14px;line-height:1.35}
.serve li span:last-child{color:var(--grey)}
.tech{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding-inline:4px}
.tech li{background:var(--stone);padding:18px 16px 22px;display:grid;gap:10px;align-content:start}
.tech li .top{display:flex;justify-content:space-between;gap:12px}
.tech h3{font-size:16px;font-weight:400;line-height:1.2}
.tech p{font-size:13px;line-height:1.35;color:var(--grey)}
.credit{padding-block:96px;display:grid;gap:18px;justify-items:start}
.credit p{font-size:14px;line-height:1.4;color:var(--grey);max-width:56ch}
.credit-links{display:flex;flex-wrap:wrap;gap:8px}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap;padding-block:96px 22px}
.section-head h2{font-size:32px;line-height:1.1;font-weight:400}
.section-head p{font-size:14px;line-height:1.35;color:var(--grey);max-width:44ch}
[id]{scroll-margin-top:80px}

/* connect page form */
.connect{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:32px;padding-block:96px 120px;align-items:start}
.connect h2{font-size:32px;line-height:1.1;font-weight:400;margin-bottom:12px}
.connect .intro-line{font-size:14px;line-height:1.35;color:var(--grey);margin-bottom:28px;max-width:50ch}
.roles{border:0;margin:0 0 8px;padding:0;display:grid;gap:12px}
.roles legend{padding:0;margin-bottom:12px}
.role-pills{display:flex;flex-wrap:wrap;gap:8px}
.role-pills label{position:relative;cursor:pointer}
.role-pills input{position:absolute;opacity:0;width:1px;height:1px}
.role-pills span{display:inline-flex;align-items:center;height:36px;padding:0 18px;border:1px solid var(--line);border-radius:1000px;font-size:13px;transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease)}
.role-pills label:hover span{border-color:var(--ink)}
.role-pills input:checked + span{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.role-pills input:focus-visible + span{outline:2px solid var(--ink);outline-offset:3px}
.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 24px}
.form-grid .full{grid-column:1/-1}
.contact-panel{background:var(--stone)}
.contact-panel figure{aspect-ratio:var(--r,4/3);overflow:hidden;background:var(--line)}
.contact-panel figure img{width:100%;height:100%;object-fit:cover}
.contact-panel dl{display:grid}
.contact-panel dl div{display:grid;gap:6px;padding:16px;border-top:1px solid var(--line)}
.contact-panel dl div:first-child{border-top:0}
.contact-panel dd{font-size:14px;line-height:1.35}
.contact-panel dd a{border-bottom:1px solid var(--line)}
.contact-panel dd a:hover{border-bottom-color:var(--ink)}
.contact-panel .pill{margin:0 16px 20px}

/* articles: journal post and legal text */
.article{max-width:760px;margin:0 auto;padding-block:56px 120px}
.crumb{display:flex;flex-wrap:wrap;gap:6px 10px;margin-bottom:28px}
.crumb a{color:var(--ink);border-bottom:1px solid var(--line)}
.crumb a:hover{border-bottom-color:var(--ink)}
.article h1{font-size:44px;line-height:1;font-weight:400;text-wrap:balance;margin:14px 0 18px}
.article .meta{margin-bottom:32px}
.article .cover{aspect-ratio:var(--r,3/2);overflow:hidden;background:var(--stone);margin-bottom:48px}
.article .cover img{width:100%;height:100%;object-fit:cover}
.body{font-size:17px;line-height:1.55}
.body p{margin-bottom:20px}
.body .lede{font-size:22px;line-height:1.4;margin-bottom:32px}
.body h2{font-size:24px;line-height:1.2;font-weight:400;margin:48px 0 16px}
.body ul{display:grid;gap:12px;margin:0 0 20px;padding-left:20px;list-style:disc}
.body a,.body .inline{border-bottom:1px solid var(--ink)}
.body a:hover{opacity:.6}
.body code{font-size:.9em;background:var(--stone);padding:1px 5px}
.body .close{border-top:1px solid var(--line);padding-top:24px;margin-top:40px}
.article-end{display:flex;flex-wrap:wrap;gap:12px;margin-top:40px}

/* form fields shared by the quote panel, the connect form and the newsletter */
.qform{display:grid;gap:2px}
.qrow{display:grid;gap:4px;padding-block:10px;min-width:0}
.qrow input,.qrow textarea,.qrow select{width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;font:inherit;font-size:16px;line-height:1.3;color:var(--ink);padding:6px 0 8px}
.qrow select{appearance:none;-webkit-appearance:none;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' fill='none' stroke='%23000' stroke-width='1.2'/%3E%3C/svg%3E") no-repeat right 2px center/12px;padding-right:24px;cursor:pointer}
.qrow textarea{resize:vertical;min-height:72px}
.qrow input::placeholder,.qrow textarea::placeholder{color:var(--grey)}
.qrow input:focus-visible,.qrow textarea:focus-visible,.qrow select:focus-visible{outline:none;border-bottom-color:var(--ink);box-shadow:0 1px 0 var(--ink)}
.qrow [aria-invalid="true"]{border-bottom-color:var(--error)}
.qform .pill-black{margin-top:16px;width:100%}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0}
.fine{font-size:12px;line-height:1.35;color:var(--grey);margin-top:8px}
.fine a{color:var(--ink);border-bottom:1px solid var(--ink)}
.fine.err{color:var(--error)}
.sent{display:grid;gap:10px;padding:20px 0}
.sent h3{font-size:24px;line-height:1.2;font-weight:400}
.sent p{font-size:14px;line-height:1.35;color:var(--grey)}

/* newsletter */
.news{background:var(--stone);margin-top:64px;border-bottom:1px solid var(--line)}
.news form{max-width:1100px;margin:0 auto;padding-block:72px 40px;display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.news .field{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding-bottom:12px}
.news input[type="email"]{flex:1;min-width:0;width:100%;border:0;background:transparent;font-family:var(--font);font-size:44px;line-height:1;color:var(--ink);padding:0}
.news input::placeholder{color:var(--grey)}
.news input:focus{outline:none}
.news .field:focus-within{border-bottom-color:var(--ink)}
.news .note{font-size:12px;line-height:1.35;color:var(--grey);min-height:1.2em}
.news .note a{color:var(--ink);border-bottom:1px solid var(--ink)}

/* footer */
.ftr{background:var(--stone);padding-block:64px 24px}
.ftr-grid{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.5fr) minmax(0,.5fr) minmax(0,.5fr);gap:32px}
.svc{display:grid;gap:0;align-content:start}
.svc div{padding-block:16px;border-bottom:1px solid var(--line)}
.svc div:last-child{border-bottom:0}
.svc h4{font-size:16px;font-weight:400;margin-bottom:6px}
.svc p{font-size:13px;line-height:1.5;color:var(--grey)}
.svc a:hover{color:var(--ink)}
.ftr-col h4{font-size:11px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--grey);margin:16px 0 14px}
.ftr-col ul{display:grid;gap:8px;font-size:13px;color:var(--grey)}
.ftr-col a:hover{color:var(--ink)}
.ftr-brand{max-width:1100px;margin:56px auto 0;display:flex;justify-content:space-between;align-items:center;gap:16px 24px;flex-wrap:wrap;padding-top:24px;border-top:1px solid var(--line)}
.ftr-brand img{height:26px;width:auto}
.ftr-brand p{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--grey)}
.socials{display:flex;gap:6px}
.socials a{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;color:var(--ink);transition:background .3s var(--ease)}
.socials a:hover{background:var(--line)}
.socials svg{width:18px;height:18px}
.ftr-company{max-width:1100px;margin:24px auto 0;padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-end;gap:12px 24px;flex-wrap:wrap}
.ftr-company .pill{margin-bottom:16px} /* level with the middle of the Artimora logo */
.art-badge{display:inline-flex;flex-direction:column;align-items:flex-start;gap:12px;border-radius:4px}
.art-logo{position:relative;display:block;height:60px;aspect-ratio:1253/360}
.art-logo img,.art-logo svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.art-logo img{transition:opacity .3s var(--ease)}
.art-logo svg{visibility:hidden}
.art-logo.is-film svg{visibility:visible}
.art-logo.is-film img{opacity:0}
.art-badge:hover .label{color:var(--ink)}
.art-badge:focus-visible{outline:1px solid var(--ink);outline-offset:8px}
.ftr-company .pill svg{width:10px;height:10px;stroke:currentColor;fill:none;stroke-width:1.5}
.legal{max-width:1100px;margin:28px auto 0;display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:12px;line-height:1.4;color:var(--grey)}
.legal nav{display:flex;gap:18px}
.legal a:hover,.legal button:hover{color:var(--ink)}
.legal button{font-size:12px;color:var(--grey);text-decoration:underline;text-underline-offset:2px}

/* quote panel: slides in from the right */
dialog.drawer{position:fixed;inset:0 0 0 auto;margin:0;width:min(480px,100%);max-width:100%;height:100%;max-height:none;border:0;padding:0;background:var(--cream);color:var(--ink);overflow-y:auto}
dialog.drawer::backdrop{background:rgba(0,0,0,.35)}
dialog.drawer[open]{animation:sheet-in .45s var(--ease)}
@keyframes sheet-in{from{transform:translateX(100%)}to{transform:none}}
.sheet{min-height:100%;display:grid;align-content:start;gap:20px;padding:20px max(24px,env(safe-area-inset-right,0px)) max(32px,env(safe-area-inset-bottom,0px)) 24px}
.sheet-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:16px}
.sheet-head h2{font-size:24px;line-height:1.2;font-weight:400}
.x{width:32px;height:32px;display:grid;place-items:center;border-radius:50%}
.x:hover{background:var(--stone)}
.x svg{width:12px;height:12px;stroke:var(--ink);stroke-width:1.4}
.sheet-item{display:grid;grid-template-columns:72px minmax(0,1fr);gap:16px;align-items:center;background:var(--stone);padding:12px}
.sheet-item img{width:72px;height:72px;object-fit:cover;background:var(--studio)}
.sheet-item img.cut{object-fit:contain;padding:4px}
.sheet-item div{display:grid;gap:4px;font-size:14px}

/* cookie consent */
.cookie{position:fixed;left:16px;bottom:max(16px,env(safe-area-inset-bottom,0px));z-index:50;width:min(400px,calc(100vw - 32px));background:var(--cream);border:1px solid var(--line);padding:20px 20px 18px;display:grid;gap:10px;opacity:0;transform:translateY(12px);visibility:hidden;transition:opacity .4s var(--ease),transform .4s var(--ease),visibility .4s}
.cookie.show{opacity:1;transform:none;visibility:visible}
.cookie p{font-size:13px;line-height:1.4;color:var(--grey)}
.cookie p a{color:var(--ink);border-bottom:1px solid var(--ink)}
.cookie-actions{display:flex;gap:8px;margin-top:6px}
.cookie-actions .pill{height:36px;padding:0 22px}
.cookie-actions .pill-black{height:36px}

@media (max-width:1100px){
  .hdr{grid-template-columns:minmax(0,230px) minmax(0,1fr) auto;gap:16px}
  .nav{gap:18px}
  .intro{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .intro-text{grid-column:1/-1;padding-top:0}
  .opt{align-self:start}
  .story{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}
  .story-media{grid-column:1/-1;justify-self:center;width:min(100%,calc(80svh * var(--r,1.3)))}
  .ftr-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .connect{grid-template-columns:minmax(0,1fr)}
  .contact-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .contact-panel .pill{justify-self:start}
}
@media (max-width:900px){
  .hdr{grid-template-columns:minmax(0,1fr) auto}
  .nav{display:none}
  .tools .trade{display:none}
  .menu-btn{display:block}
  .nav.open{display:grid;gap:0;position:absolute;left:0;right:0;top:100%;z-index:35;background:var(--cream);border-bottom:1px solid var(--line);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
  .nav.open a{padding-block:15px;border-top:1px solid var(--line);border-bottom:0}
  .nav.open a[aria-current="page"]{text-decoration:underline;text-underline-offset:4px}
  .nav .nav-extra{display:block}
  .who,.tech{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .post-card{grid-template-columns:minmax(0,1fr)}
  .split{grid-template-columns:minmax(0,1fr);padding-block:72px;gap:28px}
}
@media (max-width:760px){
  .reel{--reel-h:min(88vw,560px);background:var(--cream)}
  .reel-track{gap:6px}
  .cap{left:12px;bottom:12px}
  .bar-in{height:60px}
  .bar h1,.bar .bar-title{font-size:16px}
  .bar .pill-black{padding:0 18px;width:auto;height:44px}
  .bar-side .label{display:none}
  .pill .long{display:none}
  .pill .short{display:inline}
  .intro{grid-template-columns:minmax(0,1fr);gap:24px;padding-block:40px}
  .crafts,.opt{align-self:auto}
  .details{padding-block:24px 72px}
  .details .labels,.split .labels{gap:40px}
  .statement{font-size:28px;line-height:1.05}
  .tabs{grid-template-columns:minmax(0,1fr);padding-block:72px;gap:28px}
  .tab-list button{font-size:22px}
  .story{grid-template-columns:minmax(0,1fr)}
  .story-nav{display:flex;flex-wrap:wrap;gap:12px 20px;border-right:0;border-bottom:1px solid var(--line);padding:24px 16px}
  .story-copy{border-right:0;padding:32px 16px}
  .dims{padding-block:72px 0}
  .dims-head h2{font-size:26px}
  .dims-grid{grid-template-columns:minmax(0,1fr)}
  .dim{padding:48px 16px 56px}
  .row-head{flex-direction:column;align-items:flex-start;padding-block:56px 18px}
  .row-head h1,.row-head h2,.who-head h2,.section-head h2,.connect h2{font-size:26px}
  .cards,.who,.tech,.steps{grid-template-columns:minmax(0,1fr)}
  .cards [data-span]{grid-column:auto}
  .step{min-height:0}
  .who-head,.section-head{padding-block:72px 18px}
  .post-body{padding:28px 16px 32px}
  .post-body h3,.post-body h2{font-size:24px}
  .page-head{padding-block:48px 40px}
  .page-head .lead{font-size:15px}
  .gallery{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);aspect-ratio:auto;max-height:none}
  .gallery figure{aspect-ratio:4/5}
  .gallery figure:first-child{grid-column:1/-1;aspect-ratio:var(--r)}
  .gallery figure[data-fixed]{grid-column:1/-1;aspect-ratio:var(--r)}
  .gallery.duo{grid-template-columns:minmax(0,1fr);gap:6px}
  .gallery.duo figure{aspect-ratio:var(--r)}
  .ticker{height:40px}
  .ticker-tag{padding-right:12px;font-size:10px}
  .ticker-tag .long{display:none}
  .ticker-tag .short{display:inline}
  .ticker li{font-size:12px;gap:22px;padding-right:22px}
  .ftr-company{row-gap:24px}
  .art-logo{height:52px}
  .ftr-company .pill{margin-bottom:12px}
  .serve li{grid-template-columns:minmax(0,1fr);gap:6px}
  .credit{padding-block:72px}
  .connect{padding-block:64px 80px}
  .form-grid{grid-template-columns:minmax(0,1fr)}
  .contact-panel{grid-template-columns:minmax(0,1fr)}
  .article{padding-block:40px 80px}
  .article h1{font-size:30px;line-height:1.05}
  .body{font-size:16px}
  .body .lede{font-size:19px}
  .news input[type="email"]{font-size:30px}
  .ftr-grid{grid-template-columns:minmax(0,1fr)}
  .ftr-brand{margin-top:40px}
  .legal{margin-top:24px}
}
