/* Caroline portfolio: shared styles for every page.
   Light, off-white canvas; the palette shows up as accents so the project photos carry the color. */
:root{
  --sun:#D2BF81; --wine:#4A0F1E; --olive:#6B6F3A; --denim:#5F7993; --choc:#2A1712; --cream:#FBF4E2; --paper:#FAF6EC;
  --bg:var(--paper); --fg:#2A1712; --muted:#6B4A3E; --accent:#4A0F1E; --eyebrow:#6B6F3A;
  --tint:#F1E8D4; --line:#E4D8BF;
  --btn-bg:#4A0F1E; --btn-fg:#FBF4E2;
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"DM Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){--bg:#1C1310;--fg:#F6EBD6;--muted:#D3B9A4;--accent:#D2BF81;--eyebrow:#B9BC84;--tint:#2A1D18;--line:#4A3229;--btn-bg:#D2BF81;--btn-fg:#4A0F1E}
}
:root[data-theme="dark"]{--bg:#1C1310;--fg:#F6EBD6;--muted:#D3B9A4;--accent:#D2BF81;--eyebrow:#B9BC84;--tint:#2A1D18;--line:#4A3229;--btn-bg:#D2BF81;--btn-fg:#4A0F1E}
html{scroll-padding-top:env(safe-area-inset-top,0px);scroll-behavior:smooth}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:400 1.0625rem/1.65 var(--sans)}
a{color:inherit}
img{display:block;max-width:100%;height:auto}
:focus-visible{outline:3px solid var(--denim);outline-offset:3px}
h1,h2,h3{font-family:var(--serif);line-height:1.05;margin:0;letter-spacing:-.02em}
.wrap{max-width:1120px;margin:0 auto;padding:0 clamp(1.25rem,5vw,3rem)}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:1rem;top:-4rem;z-index:10;background:var(--wine);color:var(--cream);padding:.6rem 1rem;border-radius:999px;font-weight:700;text-decoration:none}
.skip:focus{top:1rem}

/* header and nav: a burgundy band with off-white wording and a gold edge, same in light and dark mode */
body > header{background:var(--wine);color:var(--paper);border-bottom:4px solid var(--sun)}
body > header :focus-visible{outline-color:var(--sun)}
.topbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem 2rem;padding-top:1.15rem;padding-bottom:1.15rem}
.brand{font-family:var(--serif);font-weight:900;font-size:1.6rem;letter-spacing:-.02em;text-decoration:none}
nav{display:flex;gap:.5rem 2rem;flex-wrap:wrap;font-size:.85rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
nav a{text-decoration:none;border-bottom:2px solid transparent;padding:.2rem 0}
nav a:hover{border-color:currentColor}
nav a[aria-current]{border-color:var(--sun)}

/* buttons and links */
.actions{display:flex;flex-wrap:wrap;gap:.75rem}
.btn{display:inline-block;background:var(--btn-bg);color:var(--btn-fg);border:2px solid var(--btn-bg);padding:.85rem 1.6rem;border-radius:999px;font-weight:700;text-decoration:none}
.btn.alt{background:transparent;color:var(--accent);border-color:currentColor}
.more{font-weight:700;color:var(--accent);text-decoration-color:var(--sun);text-decoration-thickness:2px;text-underline-offset:.35em}
.more::after{content:" \2192"}

/* signature mark: three small arches */
.arches{display:flex;gap:.35rem;align-items:flex-end;width:6.5rem;height:3.25rem;margin-bottom:2rem}
.arch{flex:1;border-radius:999px 999px 0 0}
.arch:nth-child(1){background:var(--sun);height:62%}
.arch:nth-child(2){background:var(--denim);height:100%;position:relative}
.arch:nth-child(2)::before{content:"";position:absolute;left:50%;top:18%;width:40%;aspect-ratio:1;border-radius:50%;background:var(--sun);transform:translateX(-50%)}
.arch:nth-child(3){background:var(--olive);height:80%}
.hero .arch{animation:rise .9s cubic-bezier(.2,.8,.2,1) both}
.hero .arch:nth-child(2){animation-delay:.12s}
.hero .arch:nth-child(3){animation-delay:.24s}
@keyframes rise{from{transform:translateY(40%);opacity:0}to{transform:none;opacity:1}}

/* home hero */
/* top padding and top alignment match .page-intro, so the arch mark and headline sit at the same height on every page */
.hero{padding:clamp(2.5rem,7vw,5rem) 0 clamp(4rem,9vw,7rem)}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,6vw,5rem);align-items:start}
.hero-copy{min-width:0}
.hero h1{font-weight:900;font-size:clamp(2.8rem,7.5vw,5.8rem);color:var(--accent);font-variation-settings:"SOFT" 100,"WONK" 1}
.hero-copy > p{max-width:34ch;font-size:1.2rem;margin:1.5rem 0 2.25rem;color:var(--muted)}
/* same shape as the tall sketchbook frames: 3:4 with softly rounded corners */
.shot.hero-shot{aspect-ratio:3/4;border-radius:6px}

/* inner page intro */
.page-intro{padding:clamp(2.5rem,7vw,5rem) 0 clamp(1rem,3vw,2rem)}
.page-intro h1{font-weight:900;font-size:clamp(2.6rem,7vw,4.8rem);color:var(--accent);max-width:18ch}
.page-intro .wrap > p{max-width:46ch;margin:1.25rem 0 0;color:var(--muted);font-size:1.2rem}
.page-intro .actions{margin-top:2rem}
.page-intro + section{padding-top:clamp(2.5rem,6vw,4.5rem)}
.eyebrow{display:block;margin-bottom:1rem;font:700 .78rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--eyebrow)}

section{padding:clamp(4rem,9vw,7.5rem) 0}
h2{font-weight:900;font-size:clamp(2rem,4.8vw,3.4rem)}
.lede{max-width:48ch;margin:1rem 0 3.5rem;color:var(--muted);font-size:1.15rem}
.section-end{margin-top:1rem}

/* home page: tighter vertical rhythm than the inner pages, but the hero keeps
   the standard spacing so the top of every page lines up */
.home section:not(.hero){padding:clamp(2.5rem,5vw,4rem) 0}
.home .lede{margin-bottom:2.25rem}

/* home intro */
.intro{border-top:1px solid var(--line)}
.intro-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,6vw,5rem);align-items:start}
.statement{margin:0;font:700 clamp(1.8rem,3.8vw,2.7rem)/1.15 var(--serif);letter-spacing:-.02em}
.intro-grid p:not(.statement){margin:0 0 1.25rem;color:var(--muted);max-width:44ch}

/* photo placeholders: quiet tint now, real photos bring the color later */
.shot,.ph,.frame{background:var(--tint);color:var(--muted);display:grid;place-items:center;text-align:center;overflow:hidden;font-family:var(--serif)}
.shot{aspect-ratio:4/5;border-radius:999px 999px 6px 6px;padding:2rem;font-size:1.1rem}
.ph{aspect-ratio:4/3;border-radius:6px;padding:1.25rem;font-size:1.05rem}
.frame{border-radius:6px;padding:1rem;min-height:180px}
/* block layout gives the frame a definite height, so the photo fills it exactly and object-position works */
.shot:has(img),.ph:has(img),.frame:has(img),.frame:has(video){padding:0;display:block}
.shot img,.ph img,.frame img,.frame video{width:100%;height:100%;object-fit:cover}
.frame video{display:block;background:var(--tint)}
.ph.line{background:transparent;border:1px dashed var(--muted)}
/* drawings: show the whole sheet on white instead of cropping to fill */
.ph.plan{background:#fff;border:1px solid var(--line)}
.ph.plan img{object-fit:contain}
.ph.plan a{display:block;height:100%;cursor:zoom-in}

/* lightbox: js/lightbox.js marks expandable photos .zoomable and opens them in a dialog */
.zoomable{cursor:zoom-in;transition:opacity .2s}
.zoomable:hover{opacity:.88}
.zoomable:focus-visible{outline-offset:-4px;outline-color:var(--sun)}
dialog.lightbox{width:100vw;height:100vh;max-width:none;max-height:none;margin:0;padding:1rem;border:0;background:transparent;color:#FAF6EC}
dialog.lightbox[open]{display:flex;align-items:center;justify-content:center}
dialog.lightbox::backdrop{background:rgba(28,19,16,.9)}
.lightbox figure{margin:0;text-align:center}
.lightbox img{display:block;width:auto;height:auto;max-width:min(88vw,1600px);max-height:82vh;margin:0 auto;border-radius:6px;background:#fff}
.lightbox figcaption{margin-top:.75rem;font-size:.95rem}
.lightbox-btn{position:fixed;display:grid;place-items:center;width:2.75rem;height:2.75rem;border:0;border-radius:999px;background:#FAF6EC;color:#4A0F1E;font:700 1.35rem/1 var(--sans);cursor:pointer}
.lightbox-btn:hover{background:var(--sun)}
.lightbox-btn:focus-visible{outline:3px solid var(--sun);outline-offset:3px}
.lightbox-close{top:1rem;right:1rem}
.lightbox-prev{left:1rem;top:50%;transform:translateY(-50%)}
.lightbox-next{right:1rem;top:50%;transform:translateY(-50%)}
.lightbox-btn[hidden]{display:none}
@media (max-width:760px){
  .lightbox img{max-width:100%;max-height:72vh}
  .lightbox-prev,.lightbox-next{top:auto;bottom:1rem;transform:none}
}

/* project cards */
.project{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(1.5rem,5vw,4.5rem);align-items:center;margin-bottom:clamp(4rem,9vw,7rem)}
.project:nth-of-type(even){grid-template-columns:.9fr 1.1fr}
.project:nth-of-type(even) .shot{order:2}
.project h2,.project h3{font-size:clamp(1.7rem,3.2vw,2.3rem);margin-bottom:.75rem}
.project p{color:var(--muted);max-width:42ch}
.project dl{margin:1.5rem 0 1.75rem;display:grid;grid-template-columns:5.5rem 1fr;gap:.6rem 1rem;padding-top:1.25rem;border-top:1px solid var(--line)}
.project dt{font-weight:700;font-size:.9rem}.project dd{margin:0;color:var(--muted);font-size:.95rem}

/* sketchbook */
.grid{display:grid;grid-template-columns:repeat(6,1fr);gap:2rem 1.25rem}
.piece{margin:0}
.piece.wide{grid-column:span 3}.piece.wide .frame{aspect-ratio:4/3}
.piece.tall{grid-column:span 2}.piece.tall .frame{aspect-ratio:3/4}
.card-link{display:block;text-decoration:none}
.card-link h3{margin-top:.85rem;font-size:1.3rem;color:var(--accent)}
.card-link:hover h3{text-decoration:underline;text-decoration-color:var(--sun);text-decoration-thickness:2px;text-underline-offset:.2em}
.piece > p{margin:.35rem 0 0;font-size:.95rem;color:var(--muted)}
.piece figcaption{margin-top:.75rem;font-size:.95rem;color:var(--muted)}
.piece figcaption strong{display:block;color:var(--fg);font-weight:500}
.piece figcaption a,.pair-caption a{color:var(--accent)}
.pair{display:grid;grid-template-columns:1fr auto 1fr;gap:1.5rem;align-items:center;margin-bottom:clamp(4rem,9vw,7rem)}
.pair .frame,.pair .shot{aspect-ratio:4/5}
.pair-arrow{font:900 2.25rem/1 var(--serif);color:var(--sun)}
.pair-caption{grid-column:1/-1;margin:0;color:var(--muted)}

/* about */
.about-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(2rem,6vw,5rem);align-items:center}
.about-grid .shot{max-width:420px;width:100%}
.portrait img{object-position:50% 20%}
.about-grid p{max-width:52ch;font-size:1.15rem}
.page-intro + .about-bio{padding-top:1.5rem}
.about-details{padding-top:0}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,6vw,5rem)}
.two-col h2{font-size:clamp(1.7rem,3.6vw,2.3rem)}
.timeline{list-style:none;margin:1.5rem 0 0;padding:0}
.timeline li{padding:1.1rem 0;border-top:1px solid var(--line)}
.timeline li strong{font-family:var(--serif);font-size:1.25rem;display:block}
.timeline li span{color:var(--muted)}
.tags{list-style:none;margin:1.5rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.tags li{border:1px solid var(--line);border-radius:999px;padding:.4rem 1rem;font-weight:500}

/* case study */
.cs-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(8rem,100%),1fr));gap:1rem 2rem;margin:2.5rem 0 0;padding-top:1.5rem;border-top:1px solid var(--line);max-width:48rem}
.cs-meta dt{font:700 .78rem/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--eyebrow)}
.cs-meta dd{margin:.35rem 0 0}
.cs-cover{aspect-ratio:16/9;border-radius:50% 50% 6px 6px / 28% 28% 6px 6px;font-size:1.25rem}
.cs-block{display:grid;grid-template-columns:13rem 1fr;gap:1rem clamp(2rem,6vw,5rem);padding:clamp(3rem,7vw,5rem) 0;border-top:1px solid var(--line)}
.cs-cover + .cs-block{border-top:0}
/* full width: heading on top so image rows can use the whole page */
.cs-block.wide{grid-template-columns:1fr;row-gap:1.5rem}
.cs-block h2{font-size:clamp(1.7rem,3.2vw,2.2rem)}
.cs-block p{max-width:60ch;margin:0 0 1rem}
.cs-block ul{margin:0 0 1rem;padding-left:1.2rem;max-width:60ch}
.cs-block li{margin-bottom:.4rem}
.cs-block li::marker{color:var(--sun)}
.process{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem;margin-top:1.75rem}
.process.four{grid-template-columns:repeat(4,1fr);gap:1rem}
.process figure,.gallery figure{margin:0}
.process figcaption,.gallery figcaption{margin-top:.6rem;font-size:.95rem;color:var(--muted)}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-top:1.75rem}
.gallery:first-child,.process:first-child{margin-top:0}
.process-heading{margin:2rem 0 0;font:700 .78rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--eyebrow)}
.process-heading:first-child{margin-top:0}
.process-heading + .process{margin-top:.9rem}
.gallery figure:first-child{grid-column:span 2}
.gallery figure:first-child .ph{aspect-ratio:16/9}
/* even: every photo the same size, two per row */
.gallery.even figure:first-child{grid-column:auto}
.gallery.even figure:first-child .ph{aspect-ratio:4/3}
.cs-next{display:block;padding:clamp(3rem,7vw,5rem) 0 0;border-top:1px solid var(--line);text-decoration:none}
.cs-next span{display:block;margin-bottom:.5rem;font:700 .78rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--eyebrow)}
.cs-next strong{font:900 clamp(2rem,5vw,3.2rem)/1.05 var(--serif);letter-spacing:-.02em;color:var(--accent)}
.cs-next:hover strong{text-decoration:underline;text-decoration-color:var(--sun);text-decoration-thickness:3px;text-underline-offset:.15em}

/* contact: one framed block instead of a full-color band */
.contact{width:min(1120px - 6rem, 100% - 2.5rem);margin:0 auto clamp(3rem,7vw,5rem);border-radius:28px;background:var(--tint)}
.contact h2{font-size:clamp(2.2rem,6vw,4.4rem);color:var(--accent)}
.contact p{margin:1.25rem 0 2rem;font-size:1.15rem;max-width:40ch;color:var(--muted)}
.details{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:2rem;margin:0}
.details div{border-top:1px solid var(--line);padding-top:1.1rem}
.details dt{font-family:var(--serif);font-weight:700;font-size:1.25rem}
.details dd{margin:.4rem 0 0;color:var(--muted)}

/* footer edge: three thin stacked lines in the arch-mark colors, with small gaps so denim and olive stay distinct */
footer{position:relative;padding:calc(2rem + 15px) 0 2rem;color:var(--muted);font-size:.9rem}
footer::before{content:"";position:absolute;top:0;left:0;right:0;height:15px;background:linear-gradient(var(--sun) 0 3px,transparent 3px 6px,var(--denim) 6px 9px,transparent 9px 12px,var(--olive) 12px 15px)}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem 2rem}

@media (max-width:760px){
  .topbar{padding-top:.75rem;padding-bottom:.75rem;gap:.25rem 1rem}
  nav{gap:.25rem 1.1rem;font-size:.72rem;letter-spacing:.08em}
  .hero-grid,.project,.project:nth-of-type(even),.intro-grid,.about-grid,.two-col,.cs-block{grid-template-columns:1fr}
  .project:nth-of-type(even) .shot{order:0}
  .project .shot{aspect-ratio:1}
  .piece.wide,.piece.tall{grid-column:span 6}
  .process,.gallery{grid-template-columns:1fr}
  .process.four{grid-template-columns:1fr 1fr}
  .gallery figure:first-child{grid-column:auto}
  .pair{grid-template-columns:1fr}
  .pair-arrow{justify-self:center;transform:rotate(90deg)}
}
@media (prefers-reduced-motion:reduce){.arch{animation:none !important}html{scroll-behavior:auto}}
