/* Action roles: field (primary), outline (secondary), line (text), photograph (image). */
html{scrollbar-gutter:stable}
.button{position:relative;overflow:hidden;transition:background var(--motion-fast) var(--motion-ease),box-shadow var(--motion-fast) var(--motion-ease),transform var(--motion-fast) var(--motion-ease)}
.button::after{content:'';position:absolute;left:22px;right:22px;bottom:8px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--motion-fast) var(--motion-ease);opacity:.45}
.button:is(:hover,:focus-visible)::after{transform:scaleX(1)}
.button.secondary{background:transparent;color:inherit;border:1px solid currentColor}.button.secondary:is(:hover,:focus-visible){background:#739eba20}
.text-link{background:transparent;border-width:0 0 1px;cursor:pointer;border-radius:0;transition:color var(--motion-fast) var(--motion-ease)}
.text-link::after{transform-origin:right}.text-link:is(:hover,:focus-visible)::after{transform-origin:left;transform:scaleX(1)}
[data-arrow]{display:inline-block;transition:translate var(--motion-fast) var(--motion-ease)}
:is(a,button):is(:hover,:focus-visible) [data-arrow=diagonal]:not(.cta-arrow){translate:2px -2px}
:is(a,button):is(:hover,:focus-visible) [data-arrow=right]{translate:3px 0}
:is(a,button):is(:hover,:focus-visible) [data-arrow=left]{translate:-3px 0}
:is(a,button):is(:hover,:focus-visible) [data-arrow=down]{translate:0 3px}
:is(a,button):is(:hover,:focus-visible) [data-arrow=up]{translate:0 -3px}
.button:is(:hover,:focus-visible)>span[data-arrow]{transform:none}
:is(.service-back,.story-back,.process-explore,.hero-secondary,.service-index-caption a,.service-preview-caption a,.services-all){position:relative}
:is(.service-back,.story-back,.hero-secondary,.service-index-caption a,.service-preview-caption a)::after{content:'';position:absolute;left:0;bottom:-5px;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform var(--motion-fast) var(--motion-ease)}
:is(.service-back,.story-back,.hero-secondary,.service-index-caption a,.service-preview-caption a):is(:hover,:focus-visible)::after{transform:scaleX(1);transform-origin:left}
.footer-links a{transition:color var(--motion-fast) var(--motion-ease),border-color var(--motion-fast) var(--motion-ease)}.footer-links a:is(:hover,:focus-visible){color:var(--accent);border-color:var(--accent)}
.footer-bottom a{border-bottom:1px solid #ffffff38;transition:border-color var(--motion-fast)}.footer-bottom a:is(:hover,:focus-visible){border-color:var(--accent)}
.mobile-contact-links a:is(:hover,:focus-visible){color:var(--accent)}.mobile-contact-links [aria-disabled=true]{color:#9ca6ad;cursor:default}
:is(.journey-tabs button,.index-filters button,.process-step-controls button){min-height:44px}.journey-tabs button:focus-visible{outline-color:var(--accent)}
.chapter-rail a:focus-visible{outline-offset:2px}.chapter-rail a:hover{color:#22618b}
/* A quiet neutral plate with a drafting line, instead of a skeleton shimmer. */
.visual:before{inset:50% 25% auto;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);background-size:100% 100%;animation:media-datum var(--motion-slow) var(--motion-ease) 1 forwards;z-index:1;transform-origin:left}
@keyframes media-datum{0%{transform:scaleX(.15);opacity:.35}70%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
.visual.is-failed{background:#dde4e9}.image-fallback{border:1px solid #bdcad2;margin:16px;color:#46555f;display:grid;align-content:center;gap:10px;font-family:var(--micro);font-size:10px;letter-spacing:.05em}.image-fallback[hidden]{display:none}.image-fallback small{font-family:var(--font);font-size:12px;letter-spacing:0;max-width:360px;margin:auto}
.empty-slot{position:relative;border-top:1px solid #9db4c3}.empty-slot:before{content:'';position:absolute;top:-1px;left:0;width:60px;height:2px;background:var(--accent)}.index-empty{border-top:1px solid var(--line)}
/* Form state stays next to its field; the native controls keep their semantics. */
.contact-form form>label,.contact-form .form-row>label{font-size:11px;font-weight:650;letter-spacing:.025em}.contact-form label small{font-weight:400;color:var(--muted)}
.contact-form :is(input,textarea,select){border:1px solid #b2bfc7;border-radius:0;background:#ffffff40;min-height:48px;padding:13px 12px;font-size:14px;font-weight:400;letter-spacing:0;transition:border-color var(--motion-fast),background var(--motion-fast),box-shadow var(--motion-fast)}
.contact-form :is(input,textarea,select):hover{border-color:#7c909d}.contact-form :is(input,textarea,select):focus{border-color:#2c6a93;background:#edf4f9;box-shadow:inset 3px 0 0 var(--accent);outline:1px solid #2c6a93;outline-offset:2px}
.contact-form select{appearance:none;padding-right:35px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%23313a2a'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.contact-form textarea{resize:vertical;min-height:115px}
.contact-form [aria-invalid=true]{border-color:#985143;background:#f3faff}.field-error{display:block;color:#8d3d30;font-size:11px;letter-spacing:0;font-weight:400;margin-top:7px;line-height:1.5}.field-error[hidden],.form-validation-summary[hidden]{display:none}
.form-validation-summary{padding:13px 15px;border-left:2px solid #985143;background:#dfeaf2;font-size:12px;margin-bottom:20px}
#form-result:not(:empty){padding:19px 20px;background:#e3ecf2;border-left:2px solid #4380a8;margin-top:22px}#form-result p{font-size:13px;margin-bottom:10px}
/* Photograph controls remain available on keyboard and touch. */
:is(.gallery-item,.story-gallery-image){cursor:zoom-in}:is(.gallery-item,.story-gallery-image):focus-visible{outline:2px solid #206a9b;outline-offset:5px}
.gallery-enlarge,.story-gallery-image>span{transition:background var(--motion-fast),color var(--motion-fast)}:is(.gallery-item,.story-gallery-image):is(:hover,:focus-visible) :is(.gallery-enlarge,span){background:var(--accent);color:#11161a}
#lightbox{background:#1e2225;color:#edf2f5;padding:22px}.lightbox-image .visual{background:#252b2f}.lightbox-bottom small{color:#a2b0ba}.lightbox-close,.lightbox-bottom>button{min-width:44px;min-height:44px;border:1px solid #ffffff40;background:#1e2225;color:white;transition:background var(--motion-fast),color var(--motion-fast)}:is(.lightbox-close,.lightbox-bottom>button):is(:hover,:focus-visible){background:var(--accent);color:#11161a;outline-color:var(--accent)}
#lightbox[open]{animation:viewer-open var(--motion-standard) var(--motion-ease)}@keyframes viewer-open{from{opacity:0}to{opacity:1}}body.photograph-open{overflow:hidden}.lightbox-bottom p{max-height:90px;overflow:auto}.lightbox-bottom p:focus{outline-color:var(--accent)}
.comparison .compare-line>span{border-radius:0;background:var(--accent);color:var(--ink);transition:background var(--motion-fast)}.comparison:focus-within{outline-color:#2c6a93}.comparison:focus-within .compare-line>span{background:#b1d7f0}
/* A missing route is an interrupted architectural line. */
.mns-not-found{padding-top:55px;padding-bottom:80px;display:grid;grid-template-columns:1.15fr 1fr;gap:35px 70px}.missing-register{grid-column:1/-1;display:flex;justify-content:space-between;gap:20px}.missing-register>span{font:8px var(--micro);color:var(--muted)}.missing-drawing{position:relative;grid-column:1/-1;border-bottom:1px solid var(--line);padding-bottom:15px}.missing-number{font-family:var(--heading);font-size:clamp(130px,20vw,280px);letter-spacing:-.08em;line-height:1;color:#ced6dc}.missing-drawing svg{position:absolute;width:55%;height:80%;right:0;top:5%;overflow:visible}.missing-drawing path{fill:none;stroke:var(--accent);stroke-width:3;vector-effect:non-scaling-stroke}.missing-coordinate{position:absolute;right:0;bottom:25px;font:8px var(--micro);color:var(--muted)}.missing-copy h1{font-size:clamp(40px,4vw,60px)}.missing-copy p{max-width:400px;margin:24px 0 30px;font-size:14px;color:var(--muted)}.missing-copy>div{display:flex;gap:30px;align-items:center;flex-wrap:wrap}.missing-photo .visual{aspect-ratio:1.9}.missing-photo small{font:8px var(--micro);display:block;margin-top:12px;color:var(--muted)}
@media(max-width:700px){.mns-not-found{grid-template-columns:1fr;padding-top:35px;gap:30px}.missing-register>span{display:none}.missing-drawing svg{width:70%}.missing-photo{margin-top:12px}.missing-copy>div{gap:25px}.missing-copy h1{font-size:40px}.contact-form :is(input,textarea,select){font-size:16px}#lightbox{padding:12px}.lightbox-close{top:18px;right:18px}.lightbox-bottom p{font-size:10px}.lightbox-image{height:calc(100% - 120px)}}
@media(prefers-reduced-motion:reduce){[data-arrow]{transition:none!important;translate:none!important}.visual:before{animation:none;transform:scaleX(1)}#lightbox[open]{animation:none}.button::after,.text-link::after{transition:none}}

:is(#service-preview-link,#preview-destination)>span[aria-hidden]{transition:translate var(--motion-fast) var(--motion-ease)}
:is(#service-preview-link,#preview-destination):is(:hover,:focus-visible)>span[aria-hidden]{translate:2px -2px}
.process-step-controls button:is(:hover,:focus-visible){color:var(--paper)}
.button:active{box-shadow:inset 0 0 0 1px currentColor}
@media(prefers-reduced-motion:reduce){:is(#service-preview-link,#preview-destination)>span[aria-hidden]{transition:none;translate:none!important}.signature-cta:is(:hover,:focus-visible) .cta-arrow{transform:none}}
