/* Quiet Obsidian: approved text-first portfolio system. */
:root {
  color-scheme: dark;
  --ground: #08090b;
  --paper: #101216;
  --dark: #060709;
  --ink: #eceef2;
  --accent: #d5d9e1;
  --muted: #a2a6af;
  --light-muted: #adb2bd;
  --ease: cubic-bezier(.16,1,.3,1);
  --gutter: clamp(22px,3.8vw,72px);
  --section-space: clamp(84px,10vw,160px);
  scrollbar-color: #555963 #08090b;
}
body { background:var(--ground); color:var(--ink); isolation:isolate; }
body::before,body::after { content:""; position:fixed; pointer-events:none; z-index:-1; }
body::before {
  inset:-25%; opacity:.09;
  background:radial-gradient(ellipse at 68% 38%,#b5bccb 0,transparent 44%),radial-gradient(ellipse at 18% 80%,#626b7c 0,transparent 40%);
  animation:ambient-drift 28s ease-in-out infinite alternate;
  will-change:transform;
}
body::after { inset:0; opacity:.035; background:radial-gradient(ellipse 600px 440px at 65% 35%,#c4cbd8,transparent 75%); transform:translate(var(--ambient-x,0px),var(--ambient-y,0px)); transition:transform 900ms var(--ease); }
body.page-hidden::before { animation-play-state:paused; }
::selection { background:#c8ccd3; color:#08090b; }
h1,h2,h3,h4 { font-weight:400; letter-spacing:-.04em; }
button,a { -webkit-tap-highlight-color:transparent; }
button { background:transparent; border:0; border-radius:0; color:inherit; }
button:active,.submit-button:active { scale:1; }
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible { outline:2px solid #e5e8ed; outline-offset:6px; }
.site-header { padding-block:28px; color:#b6bbc5; max-width:1900px; margin:auto; }
.wordmark { color:var(--ink); font-size:21px; font-weight:600; }
.brand-dot { background:#c8ccd3; }
.header-role { font-size:14px; margin-right:5vw; }
.site-header nav { gap:34px; font-size:15px; }
.site-header nav a:after { height:1px; }
.site-header nav [aria-current=page] { text-decoration:none; }
.menu-trigger,.floating-menu { width:auto; height:44px; gap:10px; align-items:center; justify-content:center; padding:0 4px; background:none; color:var(--ink); border:0; border-radius:0; font-size:14px; }
.menu-trigger .icon,.floating-menu .icon { width:20px; height:20px; }
.floating-menu { display:flex; top:22px; right:var(--gutter); }
.obsidian-hero { min-height:calc(100svh - 95px); padding:70px var(--gutter) 90px; display:grid; align-items:center; overflow:clip; }
.hero-main { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr); gap:5vw; align-items:center; width:100%; max-width:1750px; margin:auto; }
.obsidian-hero .hero-copy { display:flex; flex-direction:column; align-items:flex-start; position:relative; z-index:2; }
.obsidian-hero .hero-title-wrap { width:100%; padding:4px 0 16px; overflow:clip; }
.obsidian-hero h1 { font-size:clamp(58px,6.25vw,112px); line-height:1.06; letter-spacing:-.05em; white-space:nowrap; animation:quiet-title 950ms var(--ease) both; }
.obsidian-hero .intro { font-size:clamp(22px,1.9vw,31px); line-height:1.4; letter-spacing:-.03em; color:#bdc2cd; max-width:25ch; animation:quiet-enter 900ms 100ms var(--ease) both; }
.obsidian-hero .role { font-size:14px; margin:24px 0 0; color:#9fa5b1; }
.hero-actions { display:flex; align-items:center; flex-wrap:wrap; gap:28px; margin-top:38px; }
.primary-action,.submit-button,.round-link,.contact-disc { display:inline-flex; align-items:center; justify-content:flex-start; gap:12px; width:auto; height:auto; min-width:0; min-height:44px; border:0; border-radius:0; background:transparent; color:var(--ink); padding:8px 0; font-size:16px; }
.primary-action { margin-top:0; }
.primary-action .icon,.submit-button .icon,.round-link .icon,.contact-disc .icon { width:18px; height:18px; transition:transform 220ms var(--ease); }
.primary-action:hover,.submit-button:hover,.text-link:hover,.round-link:hover,.contact-disc:hover { background:none; color:#fff; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:7px; }
.primary-action:hover .icon,.submit-button:hover .icon { transform:translate(3px,-3px); }
.hero-actions>.cv-link { color:var(--muted); font-size:14px; }
.hero-meta { margin-top:42px; font-size:13px; gap:24px; color:var(--muted); }
.hero-meta .text-link { font-size:13px; }
.hero-meta>span { color:var(--muted); }
.obsidian-hero .role,.hero-actions,.hero-meta { animation:quiet-enter 900ms 180ms var(--ease) both; }
.hero-visual { min-width:0; animation:quiet-product 1100ms 100ms var(--ease) both; position:relative; }
.hero-visual::before { content:""; position:absolute; inset:0 -8% -5%; background:radial-gradient(ellipse,#c7cddd0b,transparent 65%); pointer-events:none; }
.hero-product { animation:none; position:relative; min-width:0; }
.product-top { font-size:14px; margin-bottom:22px; gap:20px; }
.product-top>a { color:#bfc5d0; font-size:14px; }
.product-top>a .icon { width:14px; height:14px; }
.view-switch { display:flex; gap:22px; padding:0; border:0; border-radius:0; background:none; }
.view-switch button { padding:8px 0; min-height:44px; background:none; border-radius:0; color:#9ba2af; font-size:13px; text-underline-offset:7px; }
.view-switch button[aria-pressed=true] { background:none; color:var(--ink); text-decoration:underline; text-decoration-thickness:1px; }
.product-scene { height:clamp(340px,29vw,540px); background:none; overflow:visible; isolation:auto; }
.hero-web { width:94%; height:auto; top:20px; left:0; border-radius:8px; transform:perspective(1300px) rotateY(-6deg) rotateZ(-2deg); box-shadow:0 35px 55px #0007; }
.hero-phone { width:auto; height:91%; top:11%; right:-2%; border-radius:22px; transform:rotate(3deg); box-shadow:0 30px 45px #0009; }
.hero-product[data-view=mobile] .hero-phone { right:31%; transform:rotate(0deg) translateY(-12px); }
.hero-product[data-view=mobile] .hero-web { transform:translateX(-12%) rotate(-4deg); opacity:1; }
.media-caption { color:#959daa; font-size:12px; line-height:1.5; }
.hero-product>.media-caption { margin-top:28px; text-align:right; }
.return-visit .obsidian-hero h1,.return-visit .hero-visual,.return-visit .obsidian-hero .intro,.return-visit .hero-actions,.return-visit .obsidian-hero .role,.return-visit .hero-meta { animation-duration:400ms; animation-delay:0ms; }
.work { background:#060709a6; color:var(--ink); }
.work-header h2 { font-size:clamp(36px,4.1vw,64px); }
.work-header p { color:var(--muted); }
/* Transparent point stream: only behind the cards, never behind the copy. */
.ribbon-stage { isolation:isolate; overflow:clip; }
.gallery-flow { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; z-index:0; }
#ribbon { z-index:1; }
.project-fallback { position:relative; z-index:1; }
.ribbon-open,.drag-hint { z-index:2; }
.ribbon-open { width:auto; height:auto; min-height:44px; padding:10px; border-radius:0; background:none; color:#fff; box-shadow:none; }
.ribbon-open .icon { width:20px; height:20px; display:inline-block; margin:0 6px 0 0; }
.ribbon-open span { display:inline; font-size:14px; }
.ribbon-open:hover { text-decoration:underline; text-underline-offset:5px; }
.gallery-controls button { width:44px; height:44px; border:0; border-radius:0; background:none; color:#c8ccd3; }
.gallery-controls button:hover { background:none; color:#fff; transform:translateY(-2px); }
.gallery-controls .icon { width:22px; height:22px; }
.project-fallback>a { min-width:0; }
.project-fallback>a img { width:100%; height:auto; border:8px solid #252b34; border-radius:12px; box-shadow:0 20px 36px #0004; }
.project-index button { min-height:44px; background:none; padding:7px 0; color:#969eab; }
.project-index button[aria-pressed=true] { color:#fff; text-decoration:underline; text-underline-offset:7px; }
.project-index>span { color:#8f98a7; font-size:12px; }
.active-project h3 { font-size:clamp(30px,3vw,44px); }
.active-project>p { color:var(--muted); font-size:15px; }
.drag-hint { font-size:12px; }
.approach { background:#1012169c; }
.approach-title h2 { font-size:clamp(46px,5.4vw,80px); }
.round-link { margin-top:32px; }
.approach-copy>p+p,.expertise-list p { color:var(--muted); }
.project-directory { background:transparent; }
.section-heading h2 { font-size:clamp(34px,4vw,58px); }
.project-row { margin:0; padding:36px 0; border-top:1px solid #292d34; }
.project-row:nth-child(even) { background:none; }
.project-row:hover { padding-inline:14px; background:#111419; }
.project-row h3 { font-size:clamp(26px,2.7vw,43px); }
.project-row p,.project-row>span { color:var(--muted); }
.row-preview { width:min(350px,calc(100vw - 40px),calc(154svh - 62px)); }
.row-preview img { width:100%; border:7px solid #252b34; border-radius:10px; box-shadow:0 18px 36px #0008; }
.site-footer { background:#060709b3; color:var(--ink); padding-top:100px; }
.contact-top { align-items:flex-end; gap:28px; }
.contact-top h2 { font-size:clamp(46px,6vw,94px); line-height:1.04; }
.contact-disc { flex-shrink:0; }
.contact-disc:hover { transform:none; }
.contact-disc:hover .icon { transform:translate(3px,-3px); }
.contact-line .email { font-size:clamp(20px,2.6vw,36px); letter-spacing:-.025em; }
.copy-button { min-height:44px; font-size:13px; color:#aeb6c3; }
.footer-bottom { color:#949eac; font-size:13px; }
.portal-dialog,.contact-portal { background:#16191e; color:var(--ink); box-shadow:0 35px 100px #0009; }
.portal-dialog::backdrop,.quick-dialog::backdrop { background:#020305b8; backdrop-filter:blur(8px); }
.portal-inner h2 { font-size:clamp(50px,6.2vw,86px); }
.portal-inner>p:not(.portal-greeting) { color:#b5bdca; }
.portal-dialog :focus-visible { outline-color:#e0e5ee; }
.dialog-close { display:inline-flex; align-items:center; justify-content:center; gap:8px; width:auto; min-width:68px; height:44px; padding:0; border-radius:0; background:none; font-size:13px; }
.dialog-close .icon { width:16px; height:16px; }
.dialog-close:hover { background:none; transform:none; color:#fff; }
.portal-dialog .dialog-close { right:calc(50% - 38px); }
.menu-dialog { padding:28px var(--gutter) 30px; background:#08090bf5; color:var(--ink); display:none; }
.menu-dialog[open] { display:flex; flex-direction:column; }
.menu-head { font-size:20px; }
.menu-head .dialog-close { right:var(--gutter); }
.menu-body { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:10vw; flex:1; width:100%; max-width:1460px; margin:5svh auto; }
.menu-body>nav { display:grid; gap:14px; min-width:0; }
.menu-body>nav>a { display:flex; align-items:center; justify-content:space-between; gap:22px; padding:9px 0; font-size:clamp(36px,4.1vw,70px); line-height:1.18; letter-spacing:-.035em; color:#b7bdc7; }
.menu-body>nav>a:hover { color:#fff; }
.menu-body>nav>a[aria-current=page] { color:#eceef2; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:11px; }
.menu-body>nav>a[aria-current=page]::before { content:none; }
.menu-body>nav>a>.icon { width:24px; height:24px; }
.menu-preview { margin:0; min-width:0; }
.menu-preview>img { width:100%; max-height:42svh; object-fit:contain; object-position:left; opacity:1; }
.menu-preview-caption { margin-top:22px; display:flex; justify-content:space-between; align-items:center; gap:16px; font-size:14px; }
.menu-preview-caption a { display:inline-flex; gap:9px; align-items:center; color:var(--muted); }
.menu-preview-caption .icon { width:15px; height:15px; }
.menu-foot { color:#9fa7b5; font-size:14px; }
.quick-dialog { background:#111419; color:var(--ink); }
.quick-shell .dialog-close { color:var(--ink); background:none; top:12px; right:20px; }
.quick-image { margin-top:26px; background:none; }
#quick-dialog .quick-copy .submit-button { color:var(--ink); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:7px; }
.toast { background:#20252d; color:#e2e7ef; border-radius:0; }
.page-intro { padding-block:80px 100px; }
.page-intro h1 { font-size:clamp(60px,9vw,140px); font-weight:400; }
.page-intro-bottom { color:var(--muted); }
.page-intro-bottom .statement { color:#d2d7df; }
.archive-filters { gap:28px; }
.archive-filters button { min-height:44px; padding:6px 0; border-radius:0; background:none; color:#a1a9b6; font-size:15px; }
.archive-filters button[aria-pressed=true] { background:none; color:#eceef2; text-decoration:underline; text-underline-offset:8px; }
.archive-grid { gap:76px 38px; }
.archive-media { border-radius:6px; background:none; }
.archive-item:first-child .archive-media { max-height:none; }
.archive-item:first-child img { margin:0; }
.archive-media>.icon { width:26px; height:26px; padding:0; border-radius:0; background:none; color:#fff; right:20px; bottom:20px; }
.archive-caption p,.tech-list { color:var(--muted); }
.case-cover { background:transparent!important; padding:20px var(--gutter) 30px; }
.zoom-media img { border-radius:6px; }
.zoom-media>span { background:none; color:var(--ink); border-radius:0; bottom:12px; right:12px; padding:12px; }
.case-header h1 { font-weight:400; font-size:clamp(54px,8vw,124px); }
.case-subtitle { color:#bbc3cf; }
.case-overview>div>p+p,.decisions-list p,.about-manifesto>div>p+p { color:var(--muted); }
.case-decisions,.about-manifesto,.education-section { background:#111419a3; }
.case-takeaway { background:#15191f99; }
.next-project { background:#0d1014a3; }
.about-intro { background:transparent; }
.about-opening { display:grid; grid-template-columns:1fr 1.2fr; gap:7vw; padding:90px var(--gutter) 60px; align-items:center; }
.about-opening-copy h1 { font-size:clamp(46px,5vw,82px); line-height:1.12; max-width:13ch; margin-bottom:34px; }
.about-opening-copy .statement { font-size:25px; margin-bottom:14px; }
.about-opening-copy>p:not(.statement) { color:var(--muted); max-width:36ch; font-size:18px; }
.about-opening-copy>.text-link { margin-top:28px; }
.engineering-scene { margin:0; display:grid; grid-template-columns:minmax(0,1fr) .48fr; align-items:center; gap:18px; min-width:0; }
.code-surface { background:#101318; border-radius:6px; padding:30px 24px; min-width:0; }
.code-surface pre { font:clamp(11px,1vw,15px)/1.9 ui-monospace,monospace; margin:0; overflow-x:auto; color:#b2bccc; tab-size:2; }
.code-comment { color:#8b97a9; }.code-keyword { color:#d6dce6; }.code-number { color:#bbc9d9; }
.engineering-phone img { width:100%; border-radius:18px; box-shadow:0 20px 40px #0005; }
.engineering-scene>.media-caption { grid-column:1/-1; text-align:right; }
.craft-roles { display:grid; grid-template-columns:repeat(3,1fr); gap:40px; padding:20px var(--gutter) 90px; }
.craft-roles h2 { font-size:18px; letter-spacing:-.02em; margin-bottom:10px; }
.craft-roles p { color:var(--muted); font-size:15px; max-width:30ch; }
.experience-list p,.education-section p { color:var(--muted); }
.experience-list article { border-top:1px solid #292d34; }
.contact-opening { background:transparent; grid-template-columns:.95fr 1fr; gap:12vw; padding-top:100px; padding-bottom:100px; align-items:start; }
.contact-copy { padding-top:60px; }
.contact-copy h1 { font-size:clamp(48px,5.1vw,82px); line-height:1.08; max-width:12ch; }
.contact-compose>.contact-copy>.statement { margin-top:28px; font-size:19px; max-width:32ch; color:#aeb7c4; line-height:1.6; }
.contact-direct { margin-top:28px; }
.contact-direct .email { font-size:clamp(17px,1.65vw,26px); display:block; color:#c7cfdc; letter-spacing:-.02em; }
.contact-direct .copy-button { font-size:12px; }
.contact-social { margin-top:30px; color:#b7c0ce; }
.contact-social a { font-size:14px; }
#contact-form { max-width:680px; width:100%; }
#contact-form legend { font-size:14px; color:#aeb7c5; }
.intent-options { gap:28px; }
.intent-options span { padding:10px 0; border-radius:0; background:none; color:#9fa8b8; font-size:14px; min-height:44px; }
.intent-options input:checked+span { background:none; color:#f0f2f6; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:8px; }
.intent-options input:focus-visible+span { outline:2px solid #e5e8ed; outline-offset:4px; }
#contact-form>label { margin-top:30px; font-size:14px; color:#d3d9e3; }
#contact-form>label>input,#contact-form textarea { background:transparent; border:0; border-bottom:1px solid #4a515e; padding:12px 0; margin-top:4px; color:#e8edf5; font-size:16px; border-radius:0; caret-color:#e5e8ef; transition:border-color 180ms; }
#contact-form input::placeholder,#contact-form textarea::placeholder { color:#929cab; }
#contact-form input:focus,#contact-form textarea:focus { border-bottom-color:#e6eaf0; }
#contact-form textarea { min-height:108px; }
#contact-form .submit-button { margin-top:24px; font-size:16px; }
.form-note { font-size:13px; color:#98a3b3; line-height:1.6; max-width:49ch; }
.form-status { color:#c9d4e3; }
.finance-demo { background:#141a22; color:#e1e5ed; }
.demo-top button,.annotation-bottom button { background:none!important; color:#bac5d6!important; border-radius:0; padding:8px 0; min-height:44px; }
.demo-top>div { gap:24px; }
.demo-top button[aria-pressed=true] { color:#fff!important; text-decoration:underline; text-underline-offset:7px; }
.finance-chart { color:#c8d1de; }.annotation-demo { background:#141a22; }.annotation-bottom button { font-size:13px; }
.terminal-demo { background:#10151b; }.terminal-output .command-line { color:#d3dfef; }
#terminal-command { background:#1b232e; }.terminal-demo .demo-top>span { color:#9aa8bb; }
#terminal-form button { background:none; color:#d5deeb; padding:10px 0; }
.not-found { min-height:80svh; }.noscript-note { background:#15191e; color:#d0d9e7; }
@keyframes ambient-drift { from{transform:translate(-3%,-2%) scale(1)} to{transform:translate(4%,5%) scale(1.08)} }
@keyframes quiet-title { from{transform:translateY(105%)} to{transform:none} }
@keyframes quiet-enter { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:none} }
@keyframes quiet-product { from{opacity:0;transform:translateY(22px)} to{opacity:1;transform:none} }
@media(min-width:1700px) { .hero-main{gap:7vw}.product-scene{height:550px} }
@media(max-width:1100px) { .hero-main{gap:4vw;grid-template-columns:1fr 1.2fr}.obsidian-hero h1{font-size:6.8vw}.obsidian-hero .intro{font-size:23px}.product-scene{height:330px}.about-opening{gap:4vw;grid-template-columns:1fr 1fr}.code-surface{padding:24px 14px}.contact-opening{gap:8vw}.contact-copy{padding-top:30px}.header-role{display:none} }
@media(max-width:700px) {
  :root{--gutter:22px;--section-space:76px}
  body::before{opacity:.065}body::after{display:none}
  .site-header{padding-block:18px}.menu-trigger{display:flex}.floating-menu{top:16px}
  .obsidian-hero{min-height:auto;padding-top:42px;padding-bottom:68px}
  .hero-main{grid-template-columns:1fr;gap:48px}.obsidian-hero .hero-copy{display:flex}
  .obsidian-hero h1{font-size:17vw;letter-spacing:-.05em}.obsidian-hero .intro{font-size:24px;max-width:24ch}
  .obsidian-hero .role{font-size:13px;margin-top:20px}.hero-actions{margin-top:26px;gap:24px}.primary-action{font-size:14px}
  .hero-meta{margin-top:28px;width:100%;justify-content:space-between;gap:16px}.hero-meta .text-link{font-size:12px}
  .hero-visual{width:100%}.product-top{margin-bottom:16px}.product-top>a{font-size:13px}.view-switch{gap:18px}
  .product-scene{height:clamp(240px,69vw,400px)}.hero-web{top:10px;width:94%;transform:rotate(-2deg)}.hero-phone{height:92%;top:10%;right:0}
  .hero-product>.media-caption{font-size:11px;margin-top:28px;max-width:100%}
  .work-header h2{font-size:36px}.work-header>div{min-width:0}.work-header .text-link{font-size:12px}.work-header p{font-size:13px}
  .gallery-controls{gap:3px}.gallery-controls button{width:40px;height:44px}.project-index{gap:20px}.project-index button{font-size:13px}
  .active-project h3{font-size:29px}.active-project>p{font-size:14px}.active-project>a{font-size:13px}
  .approach-title h2{font-size:44px}.round-link{margin-top:0;min-width:0;flex-shrink:0;font-size:13px}.round-link .icon{width:16px;height:16px}
  .section-heading h2{font-size:34px}.project-row{padding:28px 0}.project-row:hover{padding-inline:8px}.project-row h3{font-size:27px}.project-row p{font-size:13px}
  .row-preview{display:none}.site-footer{padding-top:70px}.contact-top{display:block}.contact-top h2{font-size:13vw}.contact-disc{margin-top:22px;font-size:14px}
  .contact-line{margin-top:22px}.contact-line .email{font-size:21px}.footer-bottom{margin-top:50px;font-size:12px}
  .portal-dialog,.contact-portal{border-radius:24px;max-height:92svh}.portal-inner h2{font-size:60px}.portal-inner>p:not(.portal-greeting){font-size:16px}
  .portal-dialog .dialog-close{right:20px;top:15px}.portal-inner{padding-top:78px}
  .menu-dialog{padding-block:18px 26px}.menu-body{display:block;margin:6svh auto;flex:1}.menu-body>nav{gap:16px}
  .menu-body>nav>a{font-size:clamp(30px,8vw,46px);padding-block:9px;line-height:1.2}.menu-body>nav>a>.icon{width:20px;height:20px}
  .menu-preview{display:none}.menu-foot{font-size:13px}.menu-foot a{margin-top:14px}.menu-head{font-size:19px}
  .quick-shell{padding:20px}.quick-copy h2{font-size:30px}.quick-copy .submit-button{width:auto}.quick-copy p{font-size:14px}
  .page-intro{padding-top:55px;padding-bottom:65px}.page-intro h1{font-size:16vw}.archive-filters{gap:22px}.archive-filters button{padding:6px 0;font-size:14px}.archive-grid{gap:50px}.archive-media>.icon{width:22px;height:22px;padding:0;right:14px;bottom:14px}
  .case-header h1{font-size:12.4vw}.case-cover{padding:16px var(--gutter) 22px}.zoom-media>span{font-size:12px}
  .about-opening{grid-template-columns:1fr;padding-top:50px;padding-bottom:40px;gap:42px}.about-opening-copy h1{font-size:clamp(40px,10.3vw,64px);max-width:13ch;margin-bottom:28px}.about-opening-copy .statement{font-size:23px}.about-opening-copy>p:not(.statement){font-size:16px;max-width:40ch}.about-opening-copy>.text-link{margin-top:22px;font-size:14px}
  .engineering-scene{gap:14px;grid-template-columns:minmax(0,1fr) .45fr}.code-surface{padding:22px 12px}.code-surface pre{font-size:10px;line-height:1.9}.engineering-phone img{border-radius:12px}.engineering-scene>.media-caption{font-size:10px;text-align:left}
  .craft-roles{grid-template-columns:1fr;gap:25px;padding-bottom:65px}.craft-roles>div{display:grid;grid-template-columns:90px 1fr;gap:20px}.craft-roles h2{font-size:16px}.craft-roles p{font-size:14px;max-width:35ch}
  .contact-opening{grid-template-columns:1fr;gap:48px;padding-top:48px;padding-bottom:76px}.contact-copy{padding-top:0}.contact-copy h1{font-size:clamp(44px,12vw,65px)}.contact-compose>.contact-copy>.statement{font-size:17px;margin-top:24px;max-width:32ch}.contact-direct{margin-top:24px}.contact-direct .email{font-size:20px}.contact-social{margin-top:18px}
  #contact-form>label{margin-top:28px}.intent-options{gap:24px}.intent-options span{padding:10px 0;font-size:14px}#contact-form .submit-button{width:auto;font-size:15px}.form-note{font-size:12px}
  .not-found h1{font-size:14vw}
}
@media(pointer:coarse){body::after{display:none}}
@media(prefers-reduced-motion:reduce){body::before,body::after{display:none}.obsidian-hero h1,.hero-visual,.obsidian-hero .intro,.hero-actions,.obsidian-hero .role,.hero-meta{animation:none!important;transform:none;opacity:1}.hero-web,.hero-phone{transition:none}html{scroll-behavior:auto}}

/* Reflow circular panels in short viewports so all controls remain reachable. */
@media(max-height:760px) {
  .portal-dialog,.contact-portal { width:min(760px,94vw); max-height:92svh; aspect-ratio:auto; border-radius:24px; overflow:auto; }
  .portal-inner,.contact-portal .portal-inner { height:auto; min-height:0; padding:72px 10% 38px; }
  .portal-inner h2 { font-size:clamp(44px,6vw,62px); }
  .portal-dialog .dialog-close { right:24px; top:16px; }
}

/* User media keeps its original palette in every presentation. */
.project-fallback img,.archive-media img,.case-cover img,.next-project img,.row-preview img,.quick-image,.menu-preview>img,.engineering-phone img {
  filter:none; opacity:1; mix-blend-mode:normal;
}
.project-fallback>a img,.row-preview img { background:#252b34; box-shadow:0 1px 0 #727d8c inset,0 22px 38px #0007; }
