@font-face{font-family:Inter;src:url("assets/inter.woff2") format("woff2");font-display:swap}
:root{--paper:#f4eee5;--tint:#fff;--ink:#1b1917;--dark:#101011;--light:#f7f5f2;--muted:#c2c0be;--rule:#565653;--gutter:clamp(20px,4.5vw,84px);--serif:Georgia,"Times New Roman",serif;--sans:Inter,Arial,sans-serif}
:root[data-theme=sage]{--paper:#e3ebe0;--tint:#d0e4cd;--ink:#213b2c;--dark:#14231a;--rule:#59695e}
:root[data-theme=rose]{--paper:#f6e5e3;--tint:#f0c8c6;--ink:#502c34;--dark:#2c1b20;--rule:#786267}
:root[data-theme=lilac]{--paper:#eae4f1;--tint:#ded1ee;--ink:#3e304e;--dark:#231e2b;--rule:#716679}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--dark);color:var(--ink);font-family:var(--serif)}
[hidden]{display:none!important}
a{color:inherit;text-underline-offset:.26em;text-decoration-thickness:1px}
a:focus-visible,input:focus-visible{outline:3px solid currentColor;outline-offset:5px}
a:hover{text-decoration-thickness:2px}
.skip{position:absolute;left:1rem;top:-8rem;background:white;color:black;padding:1rem;z-index:10}
.skip:focus{top:1rem}
.wrap,.mast,.intro{width:min(calc(100% - 2 * var(--gutter)),1480px);margin-inline:auto}
.paper-stage{background-color:var(--tint);background-image:url("assets/paper-and-pen.jpg");background-size:cover;background-position:center 58%;background-blend-mode:multiply}
.mast{min-height:clamp(76px,7.4vw,112px);display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid transparent;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--ink) 50%,transparent) 12% 88%,transparent) bottom/100% 1px no-repeat}
.brand,.brand img{display:block}
.brand img{width:clamp(144px,17vw,246px);height:auto}
nav{display:flex;gap:clamp(16px,3.4vw,54px)}
nav a{font-size:clamp(1rem,1.6vw,1.5rem);text-decoration:none;padding-block:12px}
nav a:hover{text-decoration:underline}
.intro{padding-block:clamp(75px,8vw,146px) clamp(98px,11vw,178px)}
h1,h2,h3,p{margin:0}
h1{font-size:clamp(4.1rem,7.4vw,8.6rem);font-weight:normal;letter-spacing:-.072em;line-height:.98}
.intro p{max-width:29ch;font-size:clamp(1.2rem,1.9vw,1.8rem);font-style:italic;line-height:1.32;margin:clamp(20px,2.4vw,36px) 0}
.ink-link,.project-link{display:inline-flex;align-items:center;gap:.6em;min-height:44px;font-size:clamp(1rem,1.5vw,1.3rem)}
.ink-link span,.project-link span{font-family:Arial,sans-serif}
.work,footer{background:var(--dark);color:var(--light);font-family:var(--sans)}
.work{padding:clamp(44px,5.4vw,84px) 0 0}
.work h2,footer h2{font-size:clamp(2rem,4vw,4rem);letter-spacing:-.065em;line-height:1.1}
.feature{margin-top:clamp(18px,2.4vw,35px)}
.display{display:block;position:relative;max-width:1060px;margin:auto}
.monitor{width:100%;height:auto;display:block;mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent),linear-gradient(to bottom,transparent,#000 8%,#000 94%,transparent);mask-composite:intersect}
.screen{position:absolute;left:16.05%;top:12.35%;width:67.8%;height:59.15%;object-fit:cover;object-position:top;display:block;border-radius:.25%}
.project-art{display:block;height:clamp(170px,22vw,350px);overflow:hidden;background:#242425;border:1px solid #ffffff24;border-radius:3px}
.project-art img{display:block;width:100%;height:100%;object-fit:cover;object-position:top}
.studio-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:30px}
.studio h2{font-weight:400;font-size:clamp(2.5rem,5vw,5rem);letter-spacing:-.06em}
.studio p{max-width:32ch;font-size:clamp(1.45rem,2.4vw,2.5rem);line-height:1.25;letter-spacing:-.03em}
.footer-content{display:flex;justify-content:space-between;align-items:center;gap:18px;padding-block:clamp(38px,5vw,78px)}
footer h2{margin-bottom:.4em}
iframe{border:0;display:block;max-width:100%;background:transparent}
#palette{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#fff;color:#191919;padding:12px var(--gutter);font:14px/1.4 var(--sans);border-bottom:1px solid #ccc}
#palette fieldset{padding:0;border:0;display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;margin:0}
#palette legend{float:left;padding:8px 8px 8px 0;font-weight:bold}
#palette label{position:relative;min-height:44px;display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border:1px solid transparent;border-radius:99px;cursor:pointer}
#palette input{position:absolute;opacity:0}
#palette label:has(:checked){border-color:#292929}
#palette label:has(:focus-visible){outline:2px solid #333;outline-offset:2px}
.swatch{width:14px;height:14px;border-radius:50%;border:1px solid #0004}
.paper{background:#f4eee5}.sage{background:#a8c4a6}.rose{background:#ddb1b4}.lilac{background:#c8b8db}
@media(max-width:720px){
  .mast{min-height:72px;flex-wrap:wrap;gap:4px 14px;padding-block:9px}.brand img{width:clamp(110px,23vw,160px)}

  .intro{padding-block:40px 10px}
  h1{font-size:clamp(2.9rem,10.2vw,4.9rem);overflow-wrap:anywhere}
  .intro p{max-width:27ch;margin:17px 0 9px}
  .studio-grid{grid-template-columns:minmax(0,1fr);gap:14px}
  .footer-content{align-items:flex-start;flex-wrap:wrap}
  .project-link{display:inline-block;max-width:100%;overflow-wrap:anywhere;padding-block:10px}
  .footer-content>div{min-width:0;max-width:100%}
  .work h3,.studio p{overflow-wrap:anywhere}
}
@media(max-width:380px){nav{gap:11px}.mast{gap:10px}.brand img{width:98px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media(max-width:720px){nav{max-width:100%;flex-wrap:wrap;row-gap:0}}

/* Reserve the blends for the edges, clear of text and controls. */
.paper-stage {
  position: relative;
  isolation: isolate;
}
.paper-stage::before {
  content: "";
  position: absolute;
  z-index: 1;
  inset: auto 0 0;
  height: clamp(56px, 8vw, 116px);
  pointer-events: none;
  background: linear-gradient(to bottom, transparent, var(--dark));
}
/* A shallow change in forest tones joins the gallery, studio and footer. */
.studio {
  background: linear-gradient(to bottom, var(--dark), color-mix(in srgb, var(--dark) 86%, #a4be9c) 42%, color-mix(in srgb, var(--dark) 86%, #a4be9c) 62%, var(--dark));
  color: var(--light);
  padding-block: clamp(70px, 8vw, 135px);
}
.ccv-art {
  position: relative;
  border-radius: 4px;
  border-color: #ffffff1a;
}
.project-art .ccv-photo { object-position: 50% 47%; }
.ccv-credit {
  position: absolute;
  left: clamp(12px, 2vw, 26px);
  bottom: clamp(12px, 1.6vw, 22px);
  width: clamp(108px, 13vw, 165px);
  padding: 3px 6px;
  border-radius: 3px;
  background: #f2f4edf2;
  box-shadow: 0 3px 18px #10271a29;
  pointer-events: none;
}
.ccv-credit img { display: block; width: 100%; height: auto; }
.display:focus-visible, .project-art:focus-visible { outline-color: #d4eac9; }
nav a { position: relative; }
nav a::after {
  content: "";
  position: absolute;
  bottom: 6px;
  inset-inline: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
}
nav a:is(:hover,:focus-visible)::after { transform: scaleX(1); }
nav a:hover { text-decoration: none; }
@media (prefers-reduced-motion: no-preference) {
  .intro h1 { animation: ink-arrives 640ms cubic-bezier(.2,.7,.25,1) both; }
  .intro p, .intro .ink-link { animation: ink-arrives 580ms 90ms cubic-bezier(.2,.7,.25,1) both; }
  nav a::after, .ink-link span, .project-link span {
    transition: transform 220ms ease;
  }
  .ink-link:is(:hover,:focus-visible) span { transform: translateY(3px); }
  .project-link:is(:hover,:focus-visible) span { transform: translate(2px,-2px); }
  .project-art > img, .display { transition: scale 380ms cubic-bezier(.2,.65,.25,1); }
  @media (hover: hover) and (pointer: fine) {
    .project-card:hover .project-art > img { scale: 1.025; }
    .display:hover { scale: 1.008; }
  }
  .project-art:active { scale: .995; }
}
@keyframes ink-arrives {
  from { opacity: .35; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Compact captions keep attention on the work. */
.work .work-caption {
  margin: 0; padding: 0; font-size: clamp(1.06rem, 1.6vw, 1.35rem);
  line-height: 1.3; font-weight: normal; letter-spacing: -.025em;
}
.work-caption span { margin-inline-start: .3em; color: #c2d2bd; }
.work-caption a, .project-card { color: inherit; text-decoration: none; }
.work-caption a, .project-card .work-caption { display: inline-flex; align-items: center; min-height: 44px; }
.work-caption a:hover, .project-card:is(:hover,:focus-visible) .work-caption { text-decoration: underline; }
.project-card { display: block; }
.project-pair { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(14px,2.3vw,36px); margin-block: clamp(18px,2.8vw,44px); }
.project-art { height: auto; aspect-ratio: 2.16; }
.feature > .work-caption { width: min(100%,1060px); margin-inline: auto; }
/* A single product tour, with neighbouring screens behind the current one. */
.app-tour{position:relative;isolation:isolate;overflow:hidden;border-radius:6px;
  background:linear-gradient(90deg,#112319d9,#162d2366 62%,#192e2342),url("assets/glendalough-path.webp") center 58%/cover;
  display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:center;
  padding:clamp(24px,4vw,64px);gap:1.25rem}
.tour-copy{z-index:2}
.tour-kicker{font:.86rem/1.5 var(--sans);color:#e0ecd9}
.tour-copy .tour-title{margin:.4em 0;font:normal clamp(2.4rem,4vw,4.25rem)/1.04 var(--serif);letter-spacing:-.045em}
.tour-copy p:not(.tour-kicker){font:1rem/1.55 var(--sans);max-width:34ch}
.tour-stage{height:clamp(300px,32vw,452px);position:relative;touch-action:pan-y}
.tour-slide{display:block;position:absolute;top:50%;left:50%;height:96%;width:max-content;max-width:78%;transform:translate(-50%,-50%) scale(.78);
  opacity:0;pointer-events:none;visibility:hidden}
.tour-slide img{height:100%;width:auto;max-width:100%;object-fit:contain;display:block;border-radius:clamp(8px,1vw,17px);box-shadow:0 8px 24px #09160f66}
.tour-slide[data-place=current]{opacity:1;transform:translate(-50%,-50%);z-index:3;visibility:visible;pointer-events:auto}
.tour-slide[data-place=previous],.tour-slide[data-place=next]{visibility:visible;opacity:.7;z-index:1}
.tour-slide[data-place=previous]{transform:translate(-110%,-50%) scale(.8) rotate(-5deg)}
.tour-slide[data-place=next]{transform:translate(10%,-50%) scale(.8) rotate(5deg)}
.tour-controls{display:flex;margin-top:14px;flex-wrap:wrap}
.tour-controls button{display:grid;place-items:center;border:0;color:#fff;background:transparent;width:44px;height:44px;padding:0}
.tour-controls button::after{content:"";background:#ffffff84;width:8px;height:8px;border-radius:99px}
.tour-controls button[aria-pressed=true]::after{width:23px;background:#f3f8ee}
@media(prefers-reduced-motion:no-preference){.tour-slide{transition:transform .7s cubic-bezier(.22,.67,.24,1),opacity .55s}.tour-controls button::after{transition:width .35s}}
@media(max-width:720px){.project-pair{grid-template-columns:minmax(0,1fr);row-gap:12px}
  .app-tour{grid-template-columns:minmax(0,1fr);padding:20px 16px;gap:14px;background-image:linear-gradient(0deg,#112319f5,#162d2355 58%),url("assets/glendalough-path.webp")}
  .tour-stage{grid-row:1;height:clamp(260px,68vw,355px)}.tour-copy{text-align:center}.tour-copy p{margin-inline:auto}.tour-copy .tour-title{font-size:2.1rem}
  .tour-controls{justify-content:center;margin-top:2px}.tour-copy p:not(.tour-kicker){min-height:3.1em}
}

.legal-strip{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px 24px;padding-block:14px max(18px,env(safe-area-inset-bottom));color:#d1d9cf;font: .85rem/1.5 var(--sans)}
.footer-utility{display:flex;align-items:center;gap:14px;justify-content:flex-end}
.footer-details{display:grid;gap:3px;align-content:end}
@media(max-width:600px){.legal-strip{grid-template-columns:minmax(0,1fr);row-gap:0;padding-block:8px max(8px,env(safe-area-inset-bottom))}.footer-utility{justify-content:space-between}.legal-strip nav{column-gap:12px}}
.legal-strip nav{display:flex;align-items:center;flex-wrap:wrap;gap:4px 18px}
.legal-strip a,.legal-strip button{font:inherit;color:inherit;background:none;border:0;padding:8px 0;text-decoration:underline;text-underline-offset:3px}
button{cursor:pointer}
button:focus-visible{outline:2px solid currentColor;outline-offset:4px}
.cookie-notice {
  position:sticky; z-index:15; bottom:max(10px,env(safe-area-inset-bottom));
  display:flex; align-items:center; align-self:flex-start; width:fit-content;
  max-width:calc(100% - 2 * var(--gutter)); margin:8px 0 max(10px,env(safe-area-inset-bottom)) var(--gutter);
  padding-inline:14px 3px; border:1px solid #839982; border-radius:24px;
  color:#253f2f; background:#e3ebe0; box-shadow:0 2px 7px #1224191a;
  font:500 .8125rem/1.3 var(--sans);
}
.cookie-notice a { padding:7px 0; text-decoration-color:#849781; text-underline-offset:3px; }
.cookie-notice button {
  display:grid; place-items:center; min-width:32px; min-height:32px; margin-left:7px;
  padding:0; border:0; border-radius:50%; color:inherit; background:transparent; font:1.2rem/1 var(--sans);
}
.cookie-notice button:is(:hover,:focus-visible) { background:#cfddcc; }
.cookie-notice :focus-visible { outline:2px solid #284b36; outline-offset:1px; }
.policy-page{background:var(--paper);color:var(--ink)}
.policy-body{width:min(100% - 2 * var(--gutter),740px);margin:0 auto;padding-block:clamp(40px,7vw,90px);font:1rem/1.7 var(--sans);overflow-wrap:anywhere}
.policy-body h1{font:normal clamp(2.5rem,6vw,5rem)/1.08 var(--serif);letter-spacing:-.05em}
.policy-date{margin-block:.7rem 1.3rem;font-size:.9rem}
.policy-intro{font:1.45rem/1.45 var(--serif)}
.policy-body section{margin-top:2rem}
.policy-body h2{font-size:1.2rem;line-height:1.3;margin-bottom:.4rem}


.work-intro,.project-note,.contact-copy>p,.services-copy p{color:var(--muted);line-height:1.6}
.work-intro{max-width:58ch;margin:.65rem 0 1rem}
.project-note{max-width:52ch;font-size:.94rem}
.featured-note{width:min(100%,1060px);max-width:1060px;margin:auto}
.services-copy,.contact-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:clamp(24px,6vw,100px)}
.services-copy{margin-top:clamp(28px,4vw,56px);font-family:var(--sans)}
.services-copy h3{font-size:1.05rem;margin-bottom:.5rem}
.services-copy p{max-width:52ch;font-size:1rem;line-height:1.65;letter-spacing:normal}
.contact-layout{padding-block:32px 54px;align-items:start}
.contact-copy>p{max-width:36ch;margin:1rem 0}
.contact-copy iframe{margin-top:22px}
.enquiry{padding:clamp(18px,3vw,38px);border:1px solid #95ac944a;background:linear-gradient(135deg,#203629,#18291f);border-radius:12px}
.enquiry fieldset{border:0;padding:0;margin:0;min-width:0}
.form-step{font-size:.82rem;color:#c5d3bf;margin-bottom:.55rem}
.enquiry legend{font:normal clamp(1.6rem,3vw,2.35rem)/1.18 var(--serif);margin-bottom:18px}
.project-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.project-options label,.enquiry .field input,.enquiry textarea{border:1px solid #6a8170;background:#14241b;color:#f5f7ef;border-radius:6px}
.project-options label{display:flex;align-items:center;gap:8px;padding:10px;min-height:44px;cursor:pointer}
.project-options label:has(:checked){background:#354f3a;border-color:#c0d9b6}
.enquiry input{accent-color:#b8d9af}
.enquiry .field{display:grid;gap:6px;margin:12px 0;font-size:.93rem}
.enquiry .field input,.enquiry textarea{padding:11px;width:100%;font:inherit}
.enquiry textarea{resize:vertical}
.enquiry fieldset p,.enquiry-status{font-size:.87rem;line-height:1.5;color:#d9e4d5}
.enquiry-actions{display:flex;gap:12px;margin-top:15px;flex-wrap:wrap}
.enquiry button{min-height:44px;padding:10px 18px;font:inherit;border-radius:6px;background:#d3e5c9;color:#182b20;border:1px solid transparent}
.enquiry button.back{border-color:#78947d;color:#e2ecdf;background:transparent}
.enquiry button:disabled{opacity:.65;cursor:wait}
.enquiry :focus-visible{outline:2px solid #edf9e7;outline-offset:3px}
.trap{position:absolute;clip-path:inset(50%);overflow:hidden;width:1px;height:1px}
@media(max-width:720px){.contact-layout,.services-copy{grid-template-columns:minmax(0,1fr)}.contact-copy iframe{margin:0}.project-options{grid-template-columns:1fr}}
.app-landscape{display:grid;min-height:clamp(210px,32vw,400px);align-items:end;padding:clamp(18px,3vw,40px);text-decoration:none;background:linear-gradient(0deg,#102119cc,transparent 65%),url("assets/glendalough-path.webp") center/cover;border-radius:5px}
.app-landscape span{font:normal clamp(1.8rem,4vw,3rem)/1.15 var(--serif)}

/* The paper study and its finished counterpart share a single, movable edge. */
.inner-mast{background:var(--paper);color:var(--ink)}
.inner-mast [aria-current=page]{text-decoration:underline;text-underline-offset:6px}
.studio-exhibit{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(54px,7vw,108px);background:radial-gradient(ellipse at 73% 50%,#34503a6b,transparent 58%),linear-gradient(180deg,var(--dark),#1b3025 48%,var(--dark))}
.exhibit-inner{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:clamp(32px,7vw,112px);align-items:center}
.eyeline,.studio p.eyeline{display:flex;align-items:center;gap:10px;font:500 .74rem/1.5 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:#cadbc6;margin:0 0 18px;max-width:none}
.eyeline>span{width:30px;height:1px;background:linear-gradient(90deg,#94b99244,#b9cfaa)}
.exhibit-copy :is(h1,h2),.contact-copy h1,.work h1{font:normal clamp(3.2rem,6vw,6.8rem)/.97 var(--serif);letter-spacing:-.065em;margin:0}
.exhibit-copy em,.contact-copy em,.work h1 em{font-weight:400;color:#c1d6b8}
.studio p.exhibit-text{font:1.02rem/1.65 var(--sans);letter-spacing:0;color:#d5dfd2;max-width:39ch;margin:22px 0 12px}
.exhibit-link,.practice-row a{display:inline-flex;gap:12px;min-height:44px;align-items:center;font:500 .94rem/1.4 var(--sans);color:#e4efdf}
.study{margin:0;min-width:0;position:relative}
.study::before{content:"";position:absolute;inset:8% 2% 14%;background:#96c18421;filter:blur(27px);transform:rotate(-4deg);pointer-events:none}
.study-sheet{--lamp:28%;position:relative;padding:1px;border-radius:12px;background:radial-gradient(ellipse at var(--lamp) 5%,#f2dfad,#81977a 35%,#304c3c 72%);box-shadow:0 22px 38px -18px #07140de0}
.study-bar{display:flex;align-items:center;gap:5px;height:29px;padding:0 12px;border-radius:11px 11px 0 0;background:linear-gradient(95deg,#334b39,#1a2b20);color:#dce7d6;font:.66rem var(--sans)}
.study-bar i{width:5px;height:5px;background:#98ac92;border-radius:50%}.study-bar span{margin-left:auto}
.study-surface{--split:34%;position:relative;overflow:hidden;border-radius:0 0 11px 11px}
.study-surface img{display:block;width:100%;height:auto}
.study .sketch{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--split)) 0 0)}
.study-split{position:absolute;left:var(--split);top:0;bottom:0;width:2px;transform:translateX(-50%);background:#f7eed1;box-shadow:0 0 16px #dfe2b37a;pointer-events:none}
.study-split b{display:none;position:absolute;top:52%;left:50%;transform:translate(-50%,-50%);place-items:center;border-radius:50%;width:42px;height:42px;border:1px solid #c6cba9;background:#f0f1dd;color:#1b3223;font:bold 1.3rem/1 var(--sans);box-shadow:0 5px 16px #101e1466}
.study[data-enhanced] .study-split b{display:grid}
.study-range{opacity:0;position:absolute;inset:0;width:100%;height:100%;margin:0;cursor:ew-resize;touch-action:pan-y}
.study-sheet:has(:focus-visible){outline:3px solid #ebdfac;outline-offset:5px}
.study figcaption{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 16px;padding-top:13px;color:#d5decf;font:.8rem/1.5 var(--sans)}
.study figcaption i{margin:0 5px;color:#91a78a}.study figcaption b{margin-left:4px}
.practice{color:#ebf1e8;padding-block:12px 38px}
.practice-row{display:grid;grid-template-columns:55px 1fr;gap:16px;max-width:860px;padding:28px 0;border-top:1px solid #8cac833b;font-family:var(--sans)}
.practice-row>span{font:italic 1.35rem var(--serif);color:#adc4a3}
.practice-row h2{font:normal clamp(1.8rem,3vw,3rem)/1.1 var(--serif);margin-bottom:8px}.practice-row p{max-width:57ch;color:#ced9c9;line-height:1.65}
.foot-invite{display:flex;justify-content:space-between;gap:24px;align-items:center;padding-block:clamp(36px,6vw,85px);border-top:1px solid #bed4b536}
.foot-invite h2{font:normal clamp(2.3rem,4.5vw,5rem)/1.07 var(--serif);letter-spacing:-.055em}
.cta-ink{display:inline-flex;align-items:center;gap:28px;padding:12px 20px;border-radius:99px;border:1px solid #aebfa6;background:#e1e9d9;color:#172d20;font:500 .98rem/1.4 var(--sans);text-decoration:none}
.contact-page{color:var(--light);font-family:var(--sans);background:radial-gradient(ellipse at 78% 38%,#394c355c,transparent 60%),linear-gradient(157deg,#1a2e22,#14231a 68%)}
.contact-page .contact-layout{padding-block:clamp(44px,7vw,104px)}

.enquiry{box-shadow:0 18px 35px -24px #020b07;border-radius:16px;background:radial-gradient(ellipse at 0 0,#334b36,transparent 70%),linear-gradient(120deg,#203629,#17271c)}
.project-options label{position:relative;transition:background .2s,border-color .2s}
.project-options input[type=radio]{appearance:none;flex:none;width:15px;height:15px;border:1px solid #a2b39d;margin:0;border-radius:50%;background:transparent}
.project-options input:checked{background:#c4d9b9;box-shadow:inset 0 0 0 3px #294530}
.project-options label:hover,.project-options label:focus-within{border-color:#c4d9b9}
.inner-mast+main>.work{padding-bottom:40px}
@media(prefers-reduced-motion:no-preference){.cta-ink,.exhibit-link span{transition:transform .25s,box-shadow .25s}.cta-ink:hover{transform:translateY(-2px);box-shadow:0 6px 22px #b1d4a424}.exhibit-link:hover span{transform:translate(2px,-2px)}}
@media(max-width:760px){.exhibit-inner{grid-template-columns:minmax(0,1fr);gap:24px}.studio p.exhibit-text{margin-top:15px}.foot-invite{flex-wrap:wrap}.practice-row{grid-template-columns:28px 1fr}.study figcaption{font-size:.75rem}}
.paper-stage .intro p.hero-location{font:500 .72rem/1.5 var(--sans);display:flex;max-width:none;align-items:center;gap:10px;letter-spacing:.1em;text-transform:uppercase;margin:0 0 22px}
.hero-location span{width:28px;height:1px;background:currentColor}
.hero-actions{display:flex;align-items:center;gap:14px 24px;flex-wrap:wrap}
.hero-cta{display:inline-flex;align-items:center;gap:21px;min-height:46px;border-radius:99px;padding:11px 19px;background:var(--ink);color:var(--paper);font:.95rem/1.4 var(--sans);text-decoration:none;box-shadow:0 5px 16px #1b31251c}
.hero-cta span{font-family:var(--sans)}
.paper-stage::after{pointer-events:none}
@media(min-width:721px){.paper-stage::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at var(--light-x,32%) var(--light-y,32%),#fffae03d,transparent 48%)}}
@media(prefers-reduced-motion:no-preference){.hero-cta span{transition:transform .24s}.hero-cta:is(:hover,:focus-visible) span{transform:translate(2px,-2px)}}
.step-track{display:flex;gap:5px;max-width:90px;margin-bottom:12px}
.step-track i{height:2px;flex:1;background:#a9c5a1;border-radius:10px}
.step-track i+i{background:#ffffff29}
.enquiry:has(#details-step:not([hidden])) .step-track i+i,.enquiry:has(.advance[data-finished]) .step-track i+i{background:#a9c5a1}
@media(prefers-reduced-motion:no-preference){.step-track i{transition:background .3s}.enquiry fieldset:not([hidden]){animation:ink-arrives .27s ease-out both}}

/* Keep the ink stroke clear of the heading on a portrait tablet. */
@media(min-width:721px) and (max-width:1024px){
  .paper-stage{background-position:left 58%}
  .paper-stage::after{background:linear-gradient(90deg,var(--paper) 0%,color-mix(in srgb,var(--paper) 94%,transparent) 42%,transparent 68%)}
  .intro h1{font-size:clamp(3.5rem,7vw,4.5rem)}
}

/* A measured sheet is the construction example; its quantities stay readable as type. */
.measure-section { padding:clamp(44px,6vw,96px) 0; color:var(--light); background:radial-gradient(ellipse at 82% 45%,#32493670,transparent 55%),var(--dark); }
.measure-grid { display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(32px,7vw,110px);align-items:center; }
.measure-copy h1,.measure-copy h2 { font:normal clamp(2.7rem,5.8vw,5.6rem)/1.02 var(--serif);letter-spacing:-.055em; }
.measure-copy em { color:#ccdac3;font-weight:normal; }
.measure-copy>p:not(.eyeline),.about-note p,.offers p { font:1rem/1.65 var(--sans);max-width:52ch;color:#d7dfd4;margin:15px 0; }
.measure-sheet { margin:0;padding:clamp(20px,3.2vw,44px);color:#233d2d;background:linear-gradient(115deg,#f3f0dd,#dee6d6);border-radius:2px;box-shadow:0 14px 35px -18px #0008;font-family:var(--sans); }
.measure-sheet figcaption { display:grid;gap:5px;border-bottom:2px solid #526952;padding-bottom:14px; }
.measure-sheet figcaption span { font:normal clamp(1.6rem,2.8vw,2.6rem)/1.12 var(--serif);letter-spacing:-.04em; }
.measure-sheet figcaption small,.measure-sheet caption { font-size:.85rem; }
.measure-sheet table { width:100%;border-collapse:collapse;font-size:.94rem;font-variant-numeric:tabular-nums; }
.measure-sheet caption { padding:14px 0 10px;text-align:left; }
.measure-sheet th,.measure-sheet td { border-bottom:1px solid #74816a78;padding:.65em .25em;text-align:right; }
.measure-sheet th:first-child { text-align:left;font-weight:500; }
.measure-sheet thead { color:#4c604e;font-size:.82rem; }
.measure-note { display:grid;gap:.2rem;margin-top:14px;font-size:.83rem;line-height:1.5; }
.about-note h2,.offers h2 { font:normal clamp(1.8rem,3vw,3rem)/1.12 var(--serif);letter-spacing:-.04em; }
.offers,.about-note { color:var(--light); }
.offers { padding-block:12px 55px; }
.offers article { display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:24px;padding-block:clamp(25px,4vw,54px);border-top:1px solid #9bb29155; }
.service-feature { display:block;width:100%;height:auto;border:1px solid #9bb29155;border-radius:4px; }
.offers .measure-sheet { margin-top:1.75rem; }
.offers p:first-child { margin-top:0; }
.linework-filter { position:absolute;pointer-events:none; }
.study .sketch { filter:url(#paper-lines); }
#work .study { margin-bottom:8px; }
.mast [aria-current=page] { text-decoration:underline;text-underline-offset:5px; }
.intro h1 { max-width:13ch;font-size:clamp(3.2rem,6.5vw,7.5rem); }
.intro>p:not(.hero-location) { max-width:32ch; }
@media (max-width:720px) {
  .measure-grid,.offers article {grid-template-columns:minmax(0,1fr);gap:22px;}
  .mast {display:grid;grid-template-columns:1fr;gap:0;padding-block:13px 3px;}
  .mast nav {display:flex;flex-wrap:wrap;gap:0 clamp(12px,4vw,22px);max-width:100%;}
  .mast nav a {display:inline-flex;align-items:center;min-height:44px;padding:5px 0;font-size:1rem;}
  .paper-stage {
    background-color:var(--paper);
    background-image:linear-gradient(90deg,rgba(227,235,224,.95) 0%,rgba(227,235,224,.93) 40%,rgba(227,235,224,.82) 64%,rgba(227,235,224,.13) 97%),url("assets/paper-and-pen.jpg");
    background-position:center,76% center;background-size:cover,auto 100%;background-repeat:no-repeat;background-blend-mode:normal,multiply;
  }
  .paper-stage::after {content:none;}
  .intro {padding-block:36px 75px;}
  .intro h1 {font-size:clamp(2.55rem,9.5vw,4.5rem);max-width:12ch;}
  .intro>p:not(.hero-location) {max-width:24ch;font-size:1.14rem;}
  .hero-actions {gap:8px 15px;}
}

.project-mention { color:inherit; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.18em; }
.project-mention:hover { text-decoration-thickness:2px; }

/* The footer frame reserves space above and to the right for the writing pen. */
.legal-strip .footer-signature, .signature-demo .footer-signature {
  position:relative; display:block; width:208px; height:100px; overflow:hidden;
  justify-self:end; padding:0; align-self:end;
  background:transparent url("assets/signature-white.svg") center 64% / 140px auto no-repeat;
}
.footer-signature img { position:absolute; top:0; left:0; display:block; max-width:none; width:800%; height:800%; transform:translate(-87.5%,-87.5%); visibility:hidden; }
.legal-strip .footer-signature[data-state], .signature-demo .footer-signature[data-state] { background-image:none; }
.footer-signature[data-state] img { visibility:visible; }
.estimating-photo { display:block; width:100%; height:auto; border-radius:4px; }
.project-showcase {
  container-type:inline-size; min-width:0; overflow-x:auto;
  scrollbar-width:thin; scrollbar-color:#758a75 var(--dark);
}
.showcase-track,.showcase-group { display:flex; width:max-content; }
.showcase-group { gap:12px; padding-right:12px; }
.showcase-slide {
  display:block; width:clamp(90px,40cqw,245px); overflow:hidden; border:1px solid #93a58f55;
  border-radius:6px; background:#20362b; color:var(--light); text-decoration:none;
}
.showcase-slide:focus-visible { outline-offset:-3px; }
.showcase-art { display:block; position:relative; width:100%; aspect-ratio:1.6; overflow:hidden; }
.showcase-art > img { display:block; width:100%; height:100%; object-fit:cover; object-position:top; }
.showcase-art .ccv-photo { object-position:center 47%; }
.showcase-art .ccv-credit { left:5%; bottom:7%; width:31%; }
.showcase-app { background:linear-gradient(0deg,#16281f50,transparent 70%),url("assets/glendalough-path.webp") center 58% / cover; }
.showcase-app > img {
  position:absolute; top:50%; left:50%; height:88%; width:auto; border-radius:6px;
  box-shadow:0 4px 12px #07191099; transform:translate(-50%,-50%);
}
.showcase-app > img:first-child { left:27%; height:72%; transform:translate(-50%,-50%) rotate(-7deg); }
.showcase-app > img:nth-child(2) { z-index:1; }
.showcase-app > img:last-child { left:73%; height:72%; transform:translate(-50%,-50%) rotate(7deg); }
.showcase-caption { display:flex; justify-content:space-between; gap:3px; padding:4px 6px; font:500 .75rem/1.25 var(--sans); }
.showcase-group[aria-hidden] { display:none; }
@media(prefers-reduced-motion:no-preference) {
  .project-showcase[data-loop]:not(:has(:focus-visible)) { overflow:clip; }
  .project-showcase[data-loop]:not(:has(:focus-visible)) .showcase-group[aria-hidden] { display:flex; }
  .project-showcase[data-loop]:not(:has(:focus-visible)) .showcase-track { animation:project-strip-flow 20s linear infinite; }
}
@keyframes project-strip-flow { to { transform:translateX(-50%); } }
.contact-page .contact-layout { align-items:stretch; gap:clamp(16px,2.4vw,44px); padding-block:clamp(20px,4vw,68px); }
.contact-portrait { position:relative; isolation:isolate; display:flex; align-items:flex-end; overflow:hidden; min-height:430px; border-radius:16px; background:#263829 url('assets/contact-desk.webp') center top / cover no-repeat; }
.contact-portrait::before { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(to top,#102318 2%,#11251bf0 34%,#102318b8 55%,transparent 84%); }
.contact-letter { padding:clamp(22px,3.3vw,52px); }
.contact-letter > p:not(.eyeline) { margin:1rem 0 1.3rem; max-width:45ch; color:#edf1e8; font:1rem/1.55 var(--sans); }
@media (max-width:720px) { .contact-portrait { min-height:0; padding-top:clamp(92px,27vw,172px); } .contact-page .contact-layout { padding-top:18px; } }

/* Keep short pages signed at the bottom of the viewport. */
body.inside-page, body.policy-page { min-height:100vh; min-height:100svh; display:flex; flex-direction:column; }
body.inside-page > footer, body.policy-page > footer { margin-top:auto; }

.project-overview { display:grid; grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr); gap:clamp(32px,7vw,110px); align-items:center; }
.project-overview .work-intro { margin-bottom:0; }
.service-portfolio { padding-bottom:clamp(36px,6vw,88px); color:var(--light); }
.digital-pair,.estimate-pair { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(16px,2.5vw,36px); }
.digital-offer { overflow:hidden; display:flex; flex-direction:column; border-radius:8px; background:linear-gradient(145deg,#2a4131,#1a3023); border:1px solid #718b7055; }
.service-browser,.service-handsets { display:flex; position:relative; overflow:hidden; align-items:center; justify-content:center; height:clamp(152px,17vw,248px); }
.service-browser { background:linear-gradient(135deg,#e8e6d6,#b5c1ab); }
.browser-paper { width:76%; align-self:flex-start; margin-top:6%; padding-top:7px; border-radius:5px; background:#334338; box-shadow:0 8px 25px #1525194f; transform:rotate(-3deg); }
.browser-paper img { display:block; width:100%; height:auto; }
.service-handsets { gap:3%; background:linear-gradient(90deg,#142b2333,#18281c55),url('assets/glendalough-path.webp') center 58%/cover; }
.service-handsets img { width:auto; height:77%; border-radius:6px; box-shadow:0 6px 18px #13211688; }
.service-handsets img:first-child { transform:rotate(-6deg); } .service-handsets img:nth-child(2) { height:91%; } .service-handsets img:last-child { transform:rotate(6deg); }
.service-body,.estimate-pair article { display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
.service-body { padding:clamp(18px,2.6vw,36px); flex:1; }
.service-portfolio h2 { font:normal clamp(1.85rem,3vw,3.4rem)/1.05 var(--serif); letter-spacing:-.045em; }
.service-portfolio p { font:.98rem/1.6 var(--sans); max-width:57ch; }
.service-body p { color:#d9e3d6; }
.service-action { display:inline-flex; gap:10px; align-items:center; min-height:44px; margin-top:auto; font:500 .94rem/1.4 var(--sans); text-underline-offset:4px; }
.estimating-spread { overflow:hidden; margin-top:clamp(22px,3.5vw,50px); background:#e5e8db; color:#243b2b; border-radius:8px; }
.construction-plate { display:flex; align-items:flex-end; min-height:clamp(100px,13vw,195px); padding:clamp(18px,2.6vw,36px); background:linear-gradient(75deg,#102319db,transparent 80%),url('assets/estimating-drawings.webp') center 58%/cover; color:#fff9e9; }
.construction-plate p { font:italic clamp(1.35rem,2.5vw,2.45rem)/1.2 var(--serif); }
.estimate-pair { padding:clamp(18px,2.6vw,36px); }
.estimate-pair article + article { border-left:1px solid #9da992; padding-left:clamp(16px,2.5vw,36px); }
.estimate-pair .service-lead { font:italic 1.15rem/1.4 var(--serif); }
@media(max-width:720px) {
  .project-overview,.digital-pair,.estimate-pair { grid-template-columns:minmax(0,1fr); }
  .project-overview { gap:20px; }
  .estimate-pair article + article { border-left:0; border-top:1px solid #9da992; padding:22px 0 0; }
}


/* 134px of the original frame holds 90px of lettering. Keep room for the moving pen. */
.legal-strip .footer-signature {
  width:134px; height:52px; align-self:center;
  background-size:90px auto; background-position:center 68%;
}
.legal-strip .footer-signature img { width:1072px; height:515.4px; top:-6px; }
.contact-addresses { margin:1.25rem 0 0; display:grid; gap:.8rem; }
.contact-addresses dt { font:.8rem/1.4 var(--sans); color:#d4e0cf; }
.contact-addresses dd { margin:0; }
.contact-addresses a { display:inline-block; padding-block:4px; font:500 1rem/1.4 var(--sans); }

.about-page { color:var(--light); background:radial-gradient(ellipse at 80% 17%,#304532,transparent 53%),var(--dark); }
.about-intro { display:grid; grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr); align-items:center; gap:clamp(24px,6vw,88px); padding-block:clamp(32px,6vw,84px); }
.about-intro h1 { font:normal clamp(3rem,5.8vw,6.6rem)/1.02 var(--serif); letter-spacing:-.06em; }
.about-intro em { color:#c7d9bf; }
.about-intro-copy > p:not(.eyeline),.about-stories p { max-width:52ch; margin:16px 0; font:1rem/1.6 var(--sans); color:#dce5d7; }
.about-image { display:block; width:100%; aspect-ratio:1.53; object-fit:cover; border-radius:6px; }
.about-stories { display:grid; grid-template-columns:1.12fr 1fr; gap:clamp(28px,7vw,104px); padding-block:clamp(24px,4vw,52px) clamp(36px,6vw,84px); border-top:1px solid #a5ba9755; }
.about-stories h2 { font:normal clamp(1.9rem,3.2vw,3.6rem)/1.06 var(--serif); letter-spacing:-.045em; }
@media(max-width:720px) {
  .about-intro,.about-stories { grid-template-columns:minmax(0,1fr); }
  .about-intro { gap:20px; } .about-stories { gap:20px; }
}
@media (max-width:720px) {
  .legal-strip {
    width:calc(100% - 24px); grid-template-columns:minmax(0,1fr);
    gap:0; padding-block:7px max(5px,env(safe-area-inset-bottom));
  }
  .footer-details { gap:0; font-size:.78rem; }
  .legal-strip .footer-details nav {
    flex-wrap:nowrap; justify-content:flex-start; gap:clamp(3px,1.5vw,13px);
    font:500 clamp(.71rem,3vw,.81rem)/1.3 var(--sans);
  }
  .legal-strip .footer-details nav a { display:inline-flex; align-items:center; white-space:nowrap; padding:0; min-height:28px; }
  .legal-strip .footer-utility { justify-content:space-between; }
  .legal-strip .footer-utility button { padding:0; min-height:32px; font-size:.77rem; }
}

.motion-choice {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  min-height: 32px;
  white-space: nowrap;
  cursor: pointer;
}
.motion-choice input { accent-color: #a8c29d; margin: 0; }
@media (max-width: 600px) {
  .footer-utility { gap: 6px; flex-wrap: wrap; }
  .motion-choice { font-size: .77rem; }
  .footer-utility .footer-signature { margin-left: auto; }
}
html.motion-reduced { scroll-behavior: auto; }
.motion-reduced *, .motion-reduced *::before, .motion-reduced *::after {
  animation: none !important;
  transition: none !important;
}
.motion-reduced .project-showcase[data-loop]:not(:has(:focus-visible)) { overflow-x: auto; mask-image: none; }
.motion-reduced .project-showcase[data-loop]:not(:has(:focus-visible)) .showcase-group[aria-hidden] { display: none; }
