/* ==========================================================================
   Additions after the move off WordPress: work samples, Working with me,
   job highlights and small readability fixes. Builds on main.css tokens.
   ========================================================================== */

/* Readability: small labels up from 11px, larger tap targets on phones ---- */
.label{font-size:12px}
@media (max-width:760px){
  nav .btn{min-height:44px}
  .logo{min-height:44px}
  .arch-live{min-height:44px}
}

/* Work samples -------------------------------------------------------------- */
.samples-note{display:inline-flex;align-items:center;gap:10px;margin-top:6px;font:500 12px/1.5 var(--mono);letter-spacing:.04em;color:var(--muteD)}
.samples-note::before{content:"";width:8px;height:8px;border-radius:50%;border:1px solid var(--muteD);flex:none}
.samples{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px}
.sample{grid-column:span 2;border:1px solid var(--lineD);background:var(--ink2);display:flex;flex-direction:column;min-width:0}
.sample:nth-child(-n+2){grid-column:span 3}
.sample-copy{padding:20px 22px 24px}
.sample-copy .label{margin-bottom:10px}
.sample-copy h3{font-size:20px;line-height:1.12;font-weight:700;margin-bottom:8px}
.sample-copy p{margin:0;color:var(--muteD);font-size:15px}

.sample-visual{padding:18px 18px 0;flex:1}
.sv-paper{background:var(--white);color:var(--text);border-radius:6px 6px 0 0;padding:16px;font-size:12px;line-height:1.35;height:100%;box-shadow:0 -12px 40px rgba(0,0,0,.25)}
.sv-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-bottom:1px solid var(--rule);padding-bottom:10px;margin-bottom:12px}
.sv-head b{font:700 13px/1.2 var(--display);font-stretch:112%}
.sv-head span{font:500 10px var(--mono);color:var(--mute);white-space:nowrap}
.sv-cap{margin:0 0 6px;font:500 10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}

/* dashboard */
.sv-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.sv-kpis div{background:var(--paper);padding:10px}
.sv-kpis strong{display:block;font:800 22px/1 var(--display);font-stretch:118%}
.sv-kpis span{display:block;margin-top:4px;color:var(--mute);font-size:11px}
.sv-split{display:grid;grid-template-columns:1.2fr 1fr;gap:14px}
.sv-bar{display:grid;grid-template-columns:58px 1fr 16px;align-items:center;gap:8px;margin-bottom:6px}
.sv-bar span{color:var(--body)}
.sv-bar i{display:block;height:8px;background:var(--ink);width:var(--w);border-radius:0 2px 2px 0}
.sv-bar em{font-style:normal;font:500 11px var(--mono);text-align:right}
.sv-list ol{margin:0;padding-left:18px}
.sv-list li{margin-bottom:5px}

/* calendar */
.sv-cal{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.sv-col{position:relative;height:150px;background:repeating-linear-gradient(to bottom,var(--paper) 0 29px,#E6E8E7 29px 30px)}
.sv-ev{position:absolute;left:2px;right:2px;top:calc(var(--r) * 30px + 2px);height:calc(var(--h) * 30px - 4px);padding:4px 5px;font-size:10px;line-height:1.2;overflow:hidden;border-radius:3px}
.sv-focus{background:var(--ink);color:var(--white)}
.sv-meet{background:#D9DBDA;color:var(--text)}
.sv-prep{background:var(--white);color:var(--text);border:1px dashed #9B9E9E}
.sv-travel{background:repeating-linear-gradient(135deg,#ECEDEC 0 6px,#DADCDB 6px 12px);color:var(--text)}
.sv-legend{display:flex;gap:12px;margin-top:10px;flex-wrap:wrap}
.sv-legend span{display:inline-flex;align-items:center;gap:6px;background:none;border:0;color:var(--mute);font-size:10px;padding:0}
.sv-legend span::before{content:"";width:10px;height:10px;border-radius:2px}
.sv-legend .sv-focus::before{background:var(--ink)}
.sv-legend .sv-meet::before{background:#D9DBDA}
.sv-legend .sv-prep::before{border:1px dashed #9B9E9E}
.sv-legend .sv-travel::before{background:repeating-linear-gradient(135deg,#ECEDEC 0 3px,#DADCDB 3px 6px)}

/* notes */
.sv-checks{list-style:none;margin:0 0 12px;padding:0}
.sv-checks li{padding-left:18px;position:relative;margin-bottom:4px}
.sv-checks li::before{content:"✓";position:absolute;left:0;font-weight:700}
.sv-table{width:100%;border-collapse:collapse}
.sv-table th{text-align:left;font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--white);background:var(--ink);padding:5px 6px}
.sv-table td{padding:6px;border-bottom:1px solid var(--rule)}

/* inbox */
.sv-rows{display:grid;gap:6px}
.sv-row{display:flex;justify-content:space-between;align-items:center;background:var(--paper);padding:10px 12px}
.sv-row b{font-weight:600}
.sv-row strong{font:800 18px/1 var(--display)}
.sv-hot{background:var(--ink);color:var(--white)}

/* guide */
.sv-steps{list-style:none;margin:0;padding:0;counter-reset:s}
.sv-steps li{counter-increment:s;display:grid;grid-template-columns:24px 1fr;column-gap:10px;padding:6px 0;border-bottom:1px solid var(--rule)}
.sv-steps li::before{content:counter(s);grid-row:1/3;width:22px;height:22px;border-radius:50%;background:var(--ink);color:var(--white);display:grid;place-items:center;font:500 11px var(--mono)}
.sv-steps b{font-weight:600}
.sv-steps span{color:var(--mute);font-size:11px}

/* Working with me -------------------------------------------------------------- */
/* One framed panel: three ways to work on top, the shared terms in a strip below,
   both on the same three columns so nothing floats. */
.working-panel{border:1px solid var(--rule);background:var(--white)}
.working-grid{display:grid;grid-template-columns:repeat(3,1fr)}
.engage{padding:clamp(24px,2.6vw,32px);border-right:1px solid var(--rule);min-width:0}
.engage:last-child{border-right:0}
.engage h3{font-size:22px;line-height:1.1;font-weight:700;margin-bottom:10px}
.engage p{margin:0;color:var(--body);max-width:34ch}
.working-details{display:grid;grid-template-columns:repeat(3,1fr);margin:0;border-top:1px solid var(--rule);background:var(--paper)}
.working-details>div{padding:18px clamp(24px,2.6vw,32px) 22px;border-right:1px solid var(--rule);min-width:0}
.working-details>div:last-child{border-right:0}
.working-details dt{margin-bottom:6px}
.working-details dd{margin:0;color:var(--text);font-size:15px}

/* How we start: a tinted block with numbered steps joined by a line, and the button inside it */
.working-start{margin-top:16px;background:var(--paper);border:1px solid var(--rule);padding:clamp(24px,2.6vw,32px)}
.working-steps{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin:20px 0 28px;padding:0;list-style:none;counter-reset:w}
.working-steps li:not(:last-child)::after{content:"";position:absolute;top:15px;left:44px;right:-20px;border-top:1px dashed #BDBFBE}
.working-steps li{position:relative;counter-increment:w;min-width:0}
.working-steps li::before{content:counter(w);position:relative;z-index:1;display:grid;place-items:center;width:32px;height:32px;margin-bottom:14px;border-radius:50%;background:var(--ink);color:var(--white);font:500 13px var(--mono);box-shadow:0 0 0 6px var(--paper)}
.working-steps b{display:block;font:700 18px/1.15 var(--display);font-stretch:112%;margin-bottom:6px}
.working-steps span{color:var(--body);font-size:15px}
.working-start .cta{margin:0}

/* Job highlights ---------------------------------------------------------------- */
.job-points{grid-column:1/-1;margin:8px 0 0;padding:0;list-style:none}
.job-points li{position:relative;padding-left:18px;color:var(--body);font-size:14px;line-height:1.55;margin-top:4px}
.job-points li::before{content:"";position:absolute;left:0;top:0;width:12px;height:1lh;background-color:var(--mute);-webkit-mask:var(--ico-right-thin) center/12px no-repeat;mask:var(--ico-right-thin) center/12px no-repeat}

/* Responsive -------------------------------------------------------------------- */
@media (max-width:1100px){
  .samples{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sample,.sample:nth-child(-n+2){grid-column:span 1}
  .sample:last-child{grid-column:1/-1}
  .working-steps{grid-template-columns:repeat(2,1fr);row-gap:28px}
  .working-steps li::after{display:none}
}
@media (max-width:760px){
  .samples,.working-grid,.working-details{grid-template-columns:1fr}
  .engage,.working-details>div{border-right:0;border-bottom:1px solid var(--rule)}
  .engage:last-child,.working-details>div:last-child{border-bottom:0}
  .sample:last-child{grid-column:auto}
}
@media (max-width:480px){
  .working-steps{grid-template-columns:1fr}
  .sv-split{grid-template-columns:1fr}
  .sv-head{flex-direction:column;gap:2px}
}

/* Interface polish (from make-interfaces-feel-better and transitions.dev) ----------
   Reduced motion is already handled globally in main.css. */

/* Body text avoids a single word on the last line */
p,li,.lead{text-wrap:pretty}

/* Press feedback: buttons scale to 0.96 while pressed (uses `scale`, so it never
   fights the hover lift or the magnetic `translate` set by main.js) */
.btn{transition:transform .35s var(--ease),scale .15s ease-out,background .2s,color .2s,border-color .2s}
.btn:active{scale:.96}

/* Toolkit chips: name the properties instead of animating everything */
.chips span{transition:background-color .2s ease-out,color .2s ease-out}

/* Photos and screenshots get a faint 1px edge so they don't bleed into the page */
.photo-mask img,.shot img,.build-feature-image img{outline:1px solid rgba(255,255,255,.1);outline-offset:-1px}

/* Design preview modal: the window already scales in (main.css "pop"); fade the backdrop with it */
@keyframes gd-fade-in{from{opacity:0}}
.modal:not([hidden]){animation:gd-fade-in .2s ease-out}

/* Phone menu opens from its top-right corner, next to the Menu button */
@keyframes gd-menu-in{from{opacity:0;transform:translateY(-4px) scale(.97)}}
.mobile-menu[open] .mobile-menu-panel{transform-origin:top right;animation:gd-menu-in .18s ease-out}

/* Toolkit: a tool chip that links somewhere (Arch), styled like the other chips */
.chips .chip-link{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--white);border-radius:999px;padding:6px 14px;font-size:14px;color:var(--white);text-decoration:none;transition:background-color .2s ease-out,color .2s ease-out}
.chips .chip-link:hover,.chips .chip-link:focus-visible{background:var(--white);color:var(--ink)}

/* Scroll hint: a quiet cue at the bottom of the first screen on the homepage.
   Fades out once scrolling starts; the dot only moves when motion is allowed. */
.scroll-cue{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));z-index:30;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:7px;min-width:44px;min-height:44px;padding:9px 14px 8px;border-radius:999px;background:rgba(11,12,12,.55);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--white);text-decoration:none;opacity:.9;transition:opacity .3s ease-out,translate .3s ease-out}
.scroll-cue:hover,.scroll-cue:focus-visible{opacity:1}
.scroll-cue.is-hidden{opacity:0;translate:0 8px;pointer-events:none}
.scroll-cue-label{font:500 11px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--light);text-shadow:0 1px 8px rgba(0,0,0,.6)}
.scroll-cue-track{position:relative;width:1px;height:30px;background:rgba(255,255,255,.28);overflow:hidden}
.scroll-cue-track i{position:absolute;left:-1px;top:0;width:3px;height:10px;border-radius:2px;background:var(--white)}
@keyframes gd-scroll-dot{0%{transform:translateY(-10px);opacity:0}30%{opacity:1}100%{transform:translateY(30px);opacity:0}}
.scroll-cue-track i{animation:gd-scroll-dot 1.8s cubic-bezier(.4,0,.2,1) infinite}
/* Wait for the intro to finish before showing it */
.motion:not(.ready) .scroll-cue{opacity:0}
@media (prefers-reduced-motion:reduce){.scroll-cue-track i{animation:none;top:10px}}

/* Arrow icons ---------------------------------------------------------------
   Every arrow is one drawn icon (CSS mask, coloured with currentColor) instead of a
   text character, so it centres on its line whatever font or screen size it sits in.
   Bold (2px) beside buttons and links, thin (1.5px) beside regular list text. */
:root{
  --ico-right:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h16M14 6l6 6-6 6'/%3E%3C/svg%3E");
  --ico-right-thin:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h16M14 6l6 6-6 6'/%3E%3C/svg%3E");
  --ico-up-right:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M9 7h8v8'/%3E%3C/svg%3E");
  --ico-down:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4v16M6 14l6 6 6-6'/%3E%3C/svg%3E");
}
.ico{display:inline-block;flex:none;width:.9em;height:.9em;vertical-align:middle;margin-top:-.12em;background-color:currentColor;-webkit-mask:var(--ico-right) center/contain no-repeat;mask:var(--ico-right) center/contain no-repeat}
.ico-up-right{-webkit-mask-image:var(--ico-up-right);mask-image:var(--ico-up-right)}
.ico-down{-webkit-mask-image:var(--ico-down);mask-image:var(--ico-down)}
/* Inside flex rows (buttons, build links, chips, contact rows) the row does the centring */
.btn .ico,.build-action .ico,.chip-link .ico,.lines .go{vertical-align:0;margin-top:0}
.btn .ico{width:15px;height:15px}
.build-action .ico{width:13px;height:13px;margin-left:6px}
.chips .chip-link{gap:5px}
.chips .chip-link .ico{padding:0;border:0;border-radius:0}
.chip-link .ico{width:11px;height:11px}
.lines .go{width:18px;height:18px}
.stat .stat-arrow{display:inline-block;width:10px;height:10px;margin:-.1em 0 0 5px}
.nowrap{white-space:nowrap}
.stat .nowrap{display:inline;margin:0}
/* Service card tool lists */
.card li{display:flex;gap:8px}
.card li::before{content:"";flex:none;width:12px;height:1lh;background-color:currentColor;-webkit-mask:var(--ico-right-thin) center/12px no-repeat;mask:var(--ico-right-thin) center/12px no-repeat}
