/* Home v13: built to Carrie's 29 September home page picture. Combined palette of 19 Oct:
   warm cream, paper, blush and brown ink from her picture; moss for buttons and the footer; wine for italic words. */
:root{
  --ground:#FAF5EE; --paper:#F1EAE0; --blush:#EEDFD5;
  --ink:#33261D; --body:#54463B; --rule:#D8C8B6;
  --moss:#3F4733; --wine:#7A2E3B; --cream:#F6EFE4;
  --serif:"Cormorant Garamond",Georgia,serif; --book:Newsreader,Georgia,serif; --ui:Karla,Arial,sans-serif;
  --wide:1480px; --gut:60px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ground);color:var(--body);font-family:var(--book);font-size:17px;line-height:1.6;font-weight:400}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2{font-family:var(--serif);font-weight:400;color:var(--ink);margin:0;letter-spacing:0}
em{font-style:italic;color:var(--wine)}
.wrap{max-width:var(--wide);margin:0 auto;padding-left:var(--gut);padding-right:var(--gut)}
.kick{font-family:var(--ui);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);margin:0 0 18px;display:flex;align-items:center;gap:14px}
.kick::after{content:"";width:30px;height:1px;background:var(--ink);opacity:.45}
.btn{display:inline-flex;align-items:center;gap:10px;background:var(--moss);color:var(--cream);font-family:var(--book);font-size:16px;padding:14px 28px;border-radius:2px;transition:background .25s}
.btn:hover{background:#2f3626}
.btn--line{background:transparent;color:var(--cream);border:1px solid rgba(246,239,228,.85)}
.btn--line:hover{background:rgba(246,239,228,.12)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:16px;top:8px;background:var(--ink);color:var(--ground);padding:8px 12px;z-index:20}

/* header: as in the picture, wordmark left, plain links, an outlined pill on the right */
.menu{background:var(--ground);border-bottom:1px solid var(--rule)}
.menu__row{display:flex;align-items:center;gap:40px;height:92px}
.menu__mark img{height:36px;width:auto}
.menu__nav{display:flex;gap:38px;margin-left:auto;font-family:var(--book);font-size:16px;color:var(--ink)}
.menu__nav a{padding:4px 0;border-bottom:1px solid transparent}
.menu__nav a:hover,.menu__nav a.is-on{border-bottom-color:var(--ink)}
.menu__btn{white-space:nowrap;font-family:var(--book);font-size:16px;color:var(--ink);border:1px solid var(--ink);border-radius:999px;padding:10px 24px}
.menu__btn:hover{background:var(--ink);color:var(--ground)}

/* hero: the big warm photograph, words on its left over a warm wash, as in the picture */
.hero{position:relative;height:clamp(560px,78vh,760px);overflow:hidden;background:#3a2a1e}
.hero__pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:60% 50%}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(72,46,26,.84) 0%,rgba(84,55,32,.66) 28%,rgba(96,64,38,.22) 52%,rgba(96,64,38,0) 70%)}
.hero__in{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:22px}
.hero__in > *{max-width:540px}
.hero h1{font-size:clamp(48px,4.6vw,76px);line-height:1.05;color:var(--cream)}
.hero h1 em{color:#F0D3C6}
.hero p{margin:0;font-size:19px;line-height:1.6;color:#EFE5D8}
.hero__rule{display:block;width:64px;height:1px;background:rgba(246,239,228,.6);margin:6px 0 4px}
@media (prefers-reduced-motion: no-preference){.hero__pic img{animation:drift 40s ease-in-out infinite alternate;transform-origin:62% 50%}}
@keyframes drift{from{transform:scale(1)}to{transform:scale(1.045)}}

/* the services row: four columns, small picture, spaced capital label, one line, fine rules between */
.svcs{background:var(--ground);padding:56px 0 60px}
.svcs__row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.svc{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 28px;border-left:1px solid var(--rule)}
.svc:first-child{border-left:0}
.svc__img{display:block;width:100%;max-width:330px;aspect-ratio:4/3;overflow:hidden;margin-bottom:22px}
.svc__img img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.svc:hover .svc__img img{transform:scale(1.05)}
.svc__label{font-family:var(--ui);font-size:13px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);margin-bottom:10px}
.svc__line{font-size:16.5px;line-height:1.5;max-width:24ch}

/* the story band: words left on cream, photograph right */
.story{display:grid;grid-template-columns:1fr 1fr;min-height:640px;background:var(--ground);border-top:1px solid var(--rule)}
.story__words{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:80px max(var(--gut),calc((100vw - var(--wide)) / 2 + var(--gut))) 80px max(var(--gut),calc((100vw - var(--wide)) / 2 + var(--gut)))}
.story__words{padding-right:72px}
.story h2{font-size:clamp(44px,3.6vw,58px);line-height:1.05}
.story__italic{font-family:var(--serif);font-style:italic;font-size:clamp(30px,2.4vw,38px);color:var(--ink);margin:6px 0 20px}
.story__words > p:not(.kick):not(.story__italic){max-width:44ch;margin:0 0 28px;font-size:18px}
.story__pic{position:relative;overflow:hidden}
.story__pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 4%}

/* the work row on the paper ground */
.work{background:var(--paper);padding:64px 0 76px}
.work__row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-top:6px}
.card{display:block}
.card__img{display:block;aspect-ratio:16/10;overflow:hidden;margin-bottom:16px}
.card__img img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.card:hover .card__img img{transform:scale(1.04)}
.card__label{display:block;font-family:var(--ui);font-size:13px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);margin-bottom:8px}
.card__line{display:block;font-size:16.5px;line-height:1.5;max-width:30ch}

/* the close: a soft picture fading in from the left, the invitation on the right */
.close{position:relative;display:grid;grid-template-columns:42% 1fr;align-items:center;min-height:420px;background:var(--ground);overflow:hidden}
.close__pic{position:relative;align-self:stretch;min-height:420px}
.close__pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:30% 50%;opacity:.88}
.close__pic::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(250,245,238,0) 35%,rgba(250,245,238,.75) 75%,var(--ground) 100%)}
.close__words{padding:72px var(--gut) 80px 56px;max-width:720px}
.close h2{font-size:clamp(38px,3.2vw,52px);line-height:1.08;margin-bottom:16px}
.close__words > p:not(.kick){margin:0 0 28px;max-width:52ch;font-size:18px}

/* footer, lifted from v11, on moss */
.foot{background:var(--moss);color:#DDD8CC;padding:76px 0 64px;font-size:15px}
.foot a{color:#EDE6DA;border-bottom:1px solid transparent}
.foot a:hover{border-bottom-color:rgba(237,230,218,.5)}
.foot__top{display:grid;grid-template-columns:1.4fr 1fr 1.2fr;gap:clamp(28px,4vw,64px);margin-bottom:clamp(32px,5vh,52px)}
.foot__brand img{display:block;width:210px;height:auto}
.foot__tag{font-style:italic;color:#CFC6B8;margin:14px 0 0}
.foot h5{font-family:var(--ui);font-weight:600;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#CFC6B8;margin:0 0 .9em}
.foot ul{list-style:none;margin:0;padding:0}
.foot li{margin:0 0 .45em}
.foot__mail{margin:1.1em 0 0}
.foot__base{border-top:1px solid rgba(237,230,218,.16);padding-top:22px;display:flex;justify-content:space-between;font-family:var(--ui);font-size:12px;letter-spacing:.06em;color:#C9C2B4}

/* gentle entrances */
@media (prefers-reduced-motion: no-preference){
  .rv{opacity:0;transform:translateY(16px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
  .rv.is-in{opacity:1;transform:none}
  .svcs .rv:nth-child(2),.work .card:nth-child(2){transition-delay:.08s}
  .svcs .rv:nth-child(3),.work .card:nth-child(3){transition-delay:.16s}
  .svcs .rv:nth-child(4),.work .card:nth-child(4){transition-delay:.24s}
}

/* phone: its own layout */
@media (max-width:900px){
  :root{--gut:20px}
  .menu__row{height:auto;padding-top:10px;padding-bottom:8px;flex-wrap:wrap;gap:6px 16px}
  .menu__mark img{height:22px}
  .menu__btn{margin-left:auto;padding:6px 12px;font-size:13px}
  .menu__nav{order:3;width:100%;margin-left:0;gap:18px;font-size:14.5px;overflow-x:auto;white-space:nowrap}
  .menu__nav a{padding:2px 0}
  .hero{height:auto;background:var(--ground)}
  .hero::after{display:none}
  .hero__pic img{position:relative;height:56vh;min-height:320px;object-position:82% 50%}
  .hero__pic--b img{position:absolute;top:0;left:0;right:0}   /* 20 Oct, Carrie: "on mobile the home page has a huge gap between image and text": the second, fading picture sits on the first, not under it */
  .hero__in{height:auto;padding-top:28px;padding-bottom:40px;gap:16px}
  .hero h1{font-size:44px;color:var(--ink)}
  .hero h1 em{color:var(--wine)}
  .hero p{color:var(--body);font-size:18px}
  .hero__rule{background:var(--rule)}
  .btn--line{color:var(--ink);border-color:var(--ink)}
  .svcs{padding:36px 0 40px}
  .svcs__row{grid-template-columns:1fr 1fr;row-gap:36px}
  .svc{padding:0 12px}
  .svc:nth-child(3){border-left:0}
  .svc__img{max-width:none}
  .story{grid-template-columns:1fr}
  .story__words{padding:52px 20px}
  .story__pic{height:380px}
  .work{padding:44px 0 52px}
  .work__row{grid-template-columns:1fr 1fr;gap:28px 16px}
  .close{grid-template-columns:1fr}
  .close__pic{min-height:220px}
  .close__pic::after{background:linear-gradient(180deg,rgba(250,245,238,0) 40%,var(--ground) 100%)}
  .close__words{padding:8px 20px 60px}
  .foot__top{grid-template-columns:1fr}
  .foot__base{flex-direction:column;gap:6px}
}
@media (max-width:520px){
  .work__row{grid-template-columns:1fr}
}

/* soft movement, 19 Oct: "need more variety in images and more movement of some kind" */
.hero__pic--b img{opacity:0}
.svc__img{position:relative}
.svc__alt{position:absolute;inset:0;opacity:0}
.svc__alt img{width:100%;height:100%;object-fit:cover}
.card__img--screen{background:var(--ground)}
.screen{display:block;width:100%;height:100%;overflow:hidden;border-radius:6px;border:1px solid rgba(51,38,29,.16);background:var(--ground)}
.screen img{width:100%;height:auto;will-change:transform}
@media (prefers-reduced-motion: no-preference){
  .hero__pic--b img{animation:heroFade 26s ease-in-out infinite}
  .svc__alt{animation:svcFade 12s ease-in-out infinite}
  .screen img.is-scrolling{animation:crawl 70s linear infinite alternate}
  .close__pic img{animation:drift 36s ease-in-out infinite alternate}
}
@keyframes heroFade{0%,40%{opacity:0}50%,88%{opacity:1}97%,100%{opacity:0}}
@keyframes svcFade{0%,38%{opacity:0}50%,88%{opacity:1}100%{opacity:0}}
@keyframes crawl{from{transform:translateY(0)}to{transform:translateY(var(--dy,0px))}}

/* 19 Oct, "there is not enough on the home page": project, live sites, how we work, a client's words */
.story__who{font-family:var(--serif);font-style:italic;font-size:22px;line-height:1.35;color:var(--ink);max-width:34ch;margin:-8px 0 28px;padding-left:16px;border-left:1px solid var(--rule)}

.work__row{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.card__img--flip{background:var(--blush);display:flex;align-items:center;justify-content:center;aspect-ratio:16/10}
.flip{position:relative;display:block;width:92%;aspect-ratio:1200/776;box-shadow:0 18px 34px -20px rgba(51,38,29,.55)}
.spread{position:absolute;inset:0;display:flex}
.spread img{width:50%;height:100%;object-fit:cover}
.spread + .spread{opacity:0}
.flip.running .spread{opacity:0;transition:opacity 1.2s ease}
.flip.running .spread.is-on{opacity:1}

.project{background:var(--ground);padding:96px 0 100px;border-top:1px solid var(--rule)}
.project__head{max-width:760px;margin-bottom:44px}
.project__head h2{font-size:clamp(40px,3.4vw,56px);line-height:1.06}
.project__main{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:64px;align-items:center}
.project__news img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:50% 10%}
.project__news .card__label{margin-top:16px}
.project__intro{font-family:var(--serif);font-size:clamp(24px,2vw,30px);line-height:1.3;color:var(--ink);margin:0 0 30px;max-width:30ch}
.project__words .kick{margin:26px 0 8px}
.project__words > p:not(.kick):not(.project__intro){margin:0;max-width:52ch;font-size:17.5px}
.project__row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:56px}
.project__row img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.project__row .card__label{margin-top:14px}
.project .card__label{display:block;font-family:var(--ui);font-size:13px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);margin-bottom:8px}
.project .card__line{margin:0;font-size:16.5px;line-height:1.5;max-width:34ch}

.sites{background:var(--blush);padding:90px 0;overflow:hidden}
.sites__in{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:56px;align-items:center}
.sites h2{font-size:clamp(40px,3.4vw,56px);line-height:1.06;margin-bottom:16px}
.sites__words > p:not(.kick){margin:0;max-width:38ch;font-size:18px}
.sites__devices{display:flex;align-items:flex-end;gap:20px;justify-content:flex-end}
.dev{display:block;background:#FCF8F2;padding:7px;border:1px solid rgba(51,38,29,.12);box-shadow:0 22px 44px -24px rgba(51,38,29,.5)}
.dev .screen{border:0;border-radius:4px}
.dev--laptop{flex:1 1 0;max-width:600px;aspect-ratio:16/10;border-radius:12px}
.dev--tablet{flex:0 0 200px;aspect-ratio:3/4;border-radius:18px}
.dev--phone{flex:0 0 112px;aspect-ratio:9/19;border-radius:22px}
.dev--tablet .screen{border-radius:10px}.dev--phone .screen{border-radius:16px}

.how{background:var(--ground);padding:96px 0 84px}
.how__head{max-width:640px;margin-bottom:44px}
.how__head h2{font-size:clamp(36px,3vw,50px);line-height:1.08}
.how__steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px}
.how__steps img{width:150px;height:150px;object-fit:contain;margin-bottom:14px}
.how__steps .card__label{display:block;font-family:var(--ui);font-size:13px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);margin:0 0 8px}
.how__steps li > p:not(.card__label){margin:0;font-size:16.5px;max-width:36ch}
.how__price{margin:44px 0 0;font-size:18px;color:var(--ink)}
.how__price a{border-bottom:1px solid var(--ink);margin-left:8px}

.quote{background:var(--paper);padding:72px 0}
.quote__in{max-width:900px;text-align:center}
.quote .kick{justify-content:center}
.quote__pending{margin:0 auto;max-width:56ch;border:1px dashed var(--wine);color:var(--wine);padding:22px 26px;font-size:16px;font-family:var(--ui);letter-spacing:.02em}

@media (max-width:900px){
  .story__who{font-size:20px}
  .work__row{grid-template-columns:1fr}
  .project{padding:56px 0 60px}
  .project__main{grid-template-columns:1fr;gap:32px}
  .project__row{grid-template-columns:1fr 1fr;gap:20px 14px;margin-top:36px}
  .sites{padding:56px 0}
  .sites__in{grid-template-columns:1fr;gap:32px}
  .sites__devices{justify-content:center;gap:12px}
  .dev--tablet{flex:0 0 110px}
  .dev--phone{display:none}
  .how{padding:56px 0}
  .how__steps{grid-template-columns:1fr;gap:32px}
  .quote{padding:48px 0}
}
@media (max-width:520px){
  .project__row{grid-template-columns:1fr}
}

.quote__text{margin:0 auto;max-width:30ch;font-family:var(--serif);font-style:italic;font-size:clamp(30px,2.6vw,42px);line-height:1.25;color:var(--ink)}
.quote__by{margin:22px 0 0;font-family:var(--ui);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--ink)}
.quote__standin{margin:18px auto 0;display:inline-block;font-family:var(--ui);font-size:11.5px;letter-spacing:.06em;color:var(--wine);border:1px dashed var(--wine);padding:5px 12px}

/* 19 Oct, Carrie: "fix spacing so no lingering text on a line alone": balanced headings, no single word left on a last line */
h1,h2,h3,.kick,.svc__label,.card__label,.story__italic,.project__intro,.quote__text{text-wrap:balance}
p,.svc__line,.card__line{text-wrap:pretty}
