.ks-practice-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:var(--k-practice-gap); margin-bottom:var(--k-practice-head-gap); }
.ks-proposal .ks-practice-heading h2 { font:500 var(--k-practice-title)/var(--k-practice-leading) var(--k-face-body); letter-spacing:var(--k-practice-tracking); }
.ks-line { display:block; overflow:hidden; padding-bottom:.08em; margin-bottom:-.08em; }
.ks-line>span { display:block; }
.ks-practice-heading>p { padding-bottom:var(--k-preview-gap); }
.ks-practice-layout { display:grid; grid-template-columns:var(--k-practice-columns); align-items:start; gap:var(--k-practice-gap); }
.ks-folio { min-width:0; }
.ks-folio-panel { margin-bottom:var(--k-gap); }
.ks-folio-image { display:block; position:relative; overflow:hidden; aspect-ratio:var(--k-practice-ratio); background:var(--k-paper-sunk); color:var(--k-ink); }
.ks-folio-image img { display:block; width:100%; height:100%; object-fit:cover; }
.ks-folio-open { position:absolute; right:var(--k-practice-caption); bottom:var(--k-practice-caption); width:var(--k-practice-arrow); aspect-ratio:1; display:grid; place-items:center; background:var(--k-paper); color:var(--k-ink); border-radius:50%; font-size:var(--k-t-lead); }
.ks-folio-caption { display:flex; justify-content:space-between; gap:var(--k-gap-sm); padding-top:var(--k-practice-caption); min-height:var(--k-practice-caption-height); }
.ks-folio-caption>div { display:flex; flex-direction:column; align-items:flex-start; gap:var(--k-preview-gap); }
.ks-folio-meta { font:var(--k-t-label)/var(--k-lh-body) var(--k-face-display); color:var(--k-ink-mid); }
.ks-folio-caption a { color:var(--k-ink); text-decoration:none; font:500 var(--k-t-small)/var(--k-lh-body) var(--k-face-body); }
.ks-folio-caption .ks-folio-secondary,.ks-folio-caption .ks-folio-consult { font-size:var(--k-t-label); color:var(--k-ink-mid); }
.ks-folio-consult { align-self:center; white-space:nowrap; padding:var(--k-preview-gap) 0; }
.ks-proposal .ks-practice-note { display:flex; justify-content:space-between; gap:var(--k-gap-sm); padding-bottom:var(--k-practice-caption); color:var(--k-ink-mid); font-size:var(--k-t-label); }
.ks-practice-note span { color:var(--k-ink-faint); }
.ks-practice-choice { border-top:var(--k-hairline) solid var(--k-line); padding:var(--k-practice-choice-pad) 0; }
.ks-practice-choice button { appearance:none; display:flex; align-items:center; justify-content:space-between; gap:var(--k-gap-sm); width:100%; background:none; border:0; padding:0; color:var(--k-ink); text-align:left; cursor:pointer; font:500 var(--k-practice-choice)/var(--k-lh-body) var(--k-face-body); letter-spacing:var(--k-ls-title); }
.ks-proposal .ks-practice-choice p { margin-top:var(--k-preview-gap); font-size:var(--k-t-label); }
.ks-choice-title,.ks-choice-arrow { transition:transform var(--k-dur-hover) var(--k-practice-ease),color var(--k-dur-hover) var(--k-practice-ease); }
.ks-practice-choice button[aria-pressed=true] { color:var(--k-flare); }
.ks-practice-choice button[aria-pressed=true] .ks-choice-title { transform:translateX(var(--k-practice-offset)); }
.ks-choice-arrow { font-size:var(--k-t-lead); opacity:0; }
.ks-practice-choice button[aria-pressed=true] .ks-choice-arrow { opacity:1; }
.ks-practice-choice button:focus-visible { outline:var(--k-focus-w) solid var(--k-flare); outline-offset:var(--k-focus-gap); }
.ks-practice-all { display:flex; justify-content:space-between; border-top:var(--k-hairline) solid var(--k-line); padding:var(--k-practice-caption) 0; color:var(--k-ink-mid); font-size:var(--k-t-label); text-decoration:none; }
/* Enhance only after successful JS initialization; all cases exist without JS. */
.ks-practice.is-enhanced .ks-folio { display:grid; }
.ks-practice.is-enhanced .ks-folio-panel { grid-area:1 / 1; visibility:hidden; pointer-events:none; margin:0; }
.ks-practice.is-enhanced .ks-folio-panel.is-current { visibility:visible; pointer-events:auto; z-index:2; }
.ks-practice.is-enhanced .ks-folio-panel.is-outgoing { visibility:visible; z-index:1; }
.ks-practice.is-enhanced .ks-folio-image img { transform:translate(var(--folio-x,0px),var(--folio-y,0px)) scale(var(--k-practice-image-scale)); transition:transform var(--k-practice-reveal) var(--k-practice-ease); }
.ks-practice.is-enhanced .ks-folio-panel.is-arriving .ks-folio-image { animation:ks-folio-wipe var(--k-practice-reveal) var(--k-practice-ease) both; }
.ks-practice.is-enhanced .ks-folio-panel.is-arriving .ks-folio-caption { animation:ks-folio-caption var(--k-practice-caption-time) var(--k-practice-ease) var(--k-practice-delay) both; }
.ks-practice.is-revealed .ks-line>span { animation:ks-line-reveal var(--k-practice-reveal) var(--k-practice-ease) both; }
.ks-practice.is-revealed .ks-line:nth-child(2)>span { animation-delay:var(--k-practice-delay); }
@keyframes ks-folio-wipe { from { clip-path:inset(100% 0 0); } to { clip-path:inset(0); } }
@keyframes ks-folio-caption { from { opacity:0; transform:translateY(var(--k-practice-rise)); } to { opacity:1; transform:translateY(0); } }
@keyframes ks-line-reveal { from { transform:translateY(110%); } to { transform:translateY(0); } }
@media(max-width:800px) {
 .ks-practice-heading { display:block; }
 .ks-practice-heading>p { margin-top:var(--k-gap); }
 .ks-practice-layout { grid-template-columns:1fr; gap:var(--k-gap); }
 .ks-folio-image { aspect-ratio:var(--k-practice-mobile-ratio); }
 .ks-practice-choice { padding:var(--k-practice-mobile-pad) 0; }
 .ks-practice-choice button { font-size:var(--k-practice-mobile-choice); }
 .ks-practice-index { min-width:0; }
 .ks-practice-note span { visibility:hidden; }
}
@media(prefers-reduced-motion:reduce) {
 .ks-practice *, .ks-practice *::before { animation:none!important; transition:none!important; }
 .ks-practice.is-enhanced .ks-folio-image img { transform:none; }
}
.ks-practice { padding-top:var(--k-gap); }
.ks-practice.is-enhanced .ks-folio { position:sticky; top:var(--k-preview-anchor); }
.ks-practice.is-enhanced .ks-folio-panel.is-outgoing .ks-folio-caption { visibility:hidden; }
@media(min-width:801px) {
 .ks-practice.is-enhanced .ks-folio-image { height:min(46vw,calc(100svh - var(--k-practice-viewport-reserve))); aspect-ratio:auto; min-height:var(--k-practice-image-min); }
}
@media(max-width:800px) {
 .ks-practice.is-enhanced .ks-folio { position:relative; top:auto; z-index:1; background:var(--k-paper); scroll-margin-top:var(--k-preview-anchor); }
 .ks-practice.is-enhanced .ks-folio-image { aspect-ratio:auto; height:min(52vw,var(--k-practice-mobile-image-max)); }
 .ks-practice.is-enhanced .ks-folio-caption { min-height:var(--k-practice-mobile-caption); padding:var(--k-preview-gap) 0 var(--k-gap-sm); }
 .ks-practice-index { position:relative; z-index:1; }
}
/* The scene already introduces the partners; detailed copy is optional. */
.ks-proposal .ks-module-details { padding:0; border-bottom:var(--k-hairline) solid var(--k-line); }
.ks-proposal .ks-module-details summary { padding:var(--k-gap-sm) 0; min-height:var(--k-preview-touch); font-size:var(--k-t-small); }
.ks-module-details .ks-module { padding:var(--k-gap-sm) 0; gap:var(--k-gap-sm); }
.ks-module-details .ks-module h3 { font:500 var(--k-t-small)/var(--k-lh-body) var(--k-face-body); }
.ks-proposal .ks-module-details p { padding:0; font-size:var(--k-t-label); }
.ks-module-details .ks-next { padding:var(--k-gap-sm) 0; border-bottom:0; }
.ks-module-details .ks-next strong { font-size:var(--k-t-small); }
.ks-module-details .ks-next a { font-size:var(--k-t-small); }

/* Keep the construction board and its grid fully visible. */
.ks-practice #practice-panel-0 .ks-folio-image { background:var(--k-construction-paper); }
.ks-practice.is-enhanced #practice-panel-0 .ks-folio-image img { object-fit:contain; transform:none; }

/* The original 4 / 8 week motion closes the service story. */
.ks-timing { scroll-margin-top:var(--k-preview-anchor); border-top:var(--k-hairline) solid var(--k-line); padding-top:var(--k-practice-head-gap); }
.ks-timing .sched { align-items:center; padding:0; }
.ks-timing .sched-l { min-width:0; }
.ks-timing .spn.big { margin:0; }
.ks-timing .spn.big .l1 { margin-top:var(--k-gap-sm); font:500 var(--k-practice-title)/var(--k-practice-leading) var(--k-face-body); letter-spacing:var(--k-practice-tracking); }
.ks-timing .spn.big .l1 b { font-weight:500; }
.ks-timing .spn.big .l2 { font-size:var(--k-t-small); }
.ks-timing .rise-wrap { min-width:0; margin:0; }
.ks-timing .rise { transform:rotateX(20deg); max-height:none; }
.ks-timing .ks-timing-note { font-size:var(--k-t-label); margin:var(--k-gap-sm) 0; color:var(--k-ink-faint); }
.ks-timing-contact { display:inline-flex; align-items:center; gap:var(--k-gap); color:var(--k-ink); text-decoration:none; font:500 var(--k-t-small)/var(--k-lh-body) var(--k-face-body); margin-top:var(--k-gap-sm); padding:var(--k-gap-sm) 0; }
.ks-timing .sched-text { max-width:100%; }
.ks-proposal .ks-timing .sched-text { padding:0; border:0; margin:0; }
.ks-proposal .ks-timing .sched-text summary { width:auto; min-height:var(--k-preview-touch); padding:var(--k-preview-gap) 0; font:400 var(--k-t-label)/var(--k-lh-body) var(--k-face-body); letter-spacing:normal; }
.ks-proposal .ks-timing .sched-text summary::before { content:none; }
.ks-timing .sched-tbl { width:100%; table-layout:fixed; }
@media(max-width:900px) {
 .ks-timing .sched { grid-template-columns:1fr; gap:var(--k-gap); }
 .ks-timing .rise-wrap { grid-row:2; margin:0; perspective:none; }
 .ks-timing .rise { transform:none!important; }
}
@media(max-width:760px) {
 .ks-timing .sched { gap:0; }
 .ks-timing .sched-l { display:contents; }
 .ks-timing .sched .spn.big .l1 br { display:block; }
 .ks-timing .rise-wrap { margin:var(--k-gap-sm) 0; }
 .ks-timing .cmp { margin:var(--k-gap-sm) 0; }
 .ks-timing .replay { justify-self:start; }
}
@media(prefers-reduced-motion:reduce) {
 .ks-timing *, .ks-timing *::before { animation:none!important; transition:none!important; }
 .ks-timing .stamp.on { opacity:1; }
}

/* Service controls precede the result at every viewport size. */
.ks-practice .ks-practice-heading { display:flex; align-items:center; margin-bottom:var(--k-service-gap); gap:var(--k-gap-sm); }
.ks-proposal .ks-practice-heading h2 { font-size:var(--k-service-title); }
.ks-practice-build { position:relative; width:var(--k-service-build); height:var(--k-circuit-height); flex-shrink:0; }
/* Match the hero's solid material, depth and camera angle. */
.ks-practice-build { perspective:var(--k-solid-perspective); }
.ks-practice-build canvas { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.ks-solid-fallback { position:absolute; top:50%; left:50%; width:0; height:0; transform-style:preserve-3d; transform:scale(var(--solid-fit,1)) rotateX(var(--k-solid-tilt-x)) rotateY(var(--k-solid-tilt-y)); }
.ks-solid-cube { position:absolute; width:var(--k-solid-unit); height:var(--k-solid-unit); margin-left:calc(var(--k-solid-unit) / -2); margin-top:calc(var(--k-solid-unit) / -2); transform-style:preserve-3d; }
.ks-solid-face { position:absolute; inset:0; display:block; background:var(--k-flare); border:var(--k-hairline) solid var(--k-solid-edge); backface-visibility:hidden; }
.ks-solid-face:nth-child(1) { transform:translateZ(calc(var(--k-solid-unit) / 2)); }
.ks-solid-face:nth-child(2) { background:var(--k-solid-side); transform:rotateY(90deg) translateZ(calc(var(--k-solid-unit) / 2)); }
.ks-solid-face:nth-child(3) { background:var(--k-solid-side); transform:rotateY(180deg) translateZ(calc(var(--k-solid-unit) / 2)); }
.ks-solid-face:nth-child(4) { background:var(--k-solid-side); transform:rotateY(-90deg) translateZ(calc(var(--k-solid-unit) / 2)); }
.ks-solid-face:nth-child(5) { background:var(--k-ember-lit); transform:rotateX(90deg) translateZ(calc(var(--k-solid-unit) / 2)); }
.ks-solid-face:nth-child(6) { background:var(--k-solid-side); transform:rotateX(-90deg) translateZ(calc(var(--k-solid-unit) / 2)); }
.ks-practice-build[data-renderer="webgl"] .ks-solid-fallback { visibility:hidden; }
.ks-practice-build[data-renderer="css3d"] canvas { visibility:hidden; }
.ks-practice .ks-practice-layout { display:grid; grid-template-columns:1fr; gap:0; }
.ks-practice .ks-practice-index { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:0 var(--k-gap-sm); border-bottom:var(--k-hairline) solid var(--k-line); }
.ks-practice .ks-practice-choice { padding:0; border-top:0; }
.ks-practice .ks-practice-choice button { min-height:var(--k-preview-touch); padding:var(--k-preview-gap) 0; font-size:var(--k-service-choice); white-space:nowrap; }
.ks-practice .ks-choice-arrow { display:none; }
.ks-practice .ks-practice-choice button[aria-pressed=true] .ks-choice-title { transform:none; text-decoration:underline; text-underline-offset:var(--k-preview-gap); }
.ks-practice.is-enhanced .ks-practice-choice p { display:none; }
.ks-proposal .ks-practice-scope { margin:var(--k-gap-sm) 0; font-size:var(--k-t-label); }
.ks-practice.is-enhanced .ks-folio { position:relative; top:auto; }
.ks-practice.is-enhanced .ks-folio-image { height:var(--k-service-image); min-height:0; aspect-ratio:auto; }
.ks-practice.is-enhanced .ks-folio-image img { transform:none; transition:none; }
.ks-practice.is-enhanced .ks-folio-caption { min-height:var(--k-practice-mobile-caption); }
.ks-practice .ks-practice-all { padding:var(--k-gap-sm) 0; }
@media(max-width:800px) {
 .ks-practice .ks-practice-index { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(max-width:440px) {
 .ks-practice .ks-practice-index { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* The service model is the main visual; work is a compact supporting reference. */
.ks-practice .ks-practice-build { width:100%; height:var(--k-service-stage); }
.ks-practice .ks-folio { margin-top:var(--k-gap-sm); border-top:var(--k-hairline) solid var(--k-line); padding-top:var(--k-gap-sm); }
.ks-practice .ks-folio-panel { display:grid; grid-template-columns:var(--k-service-thumb) minmax(0,1fr); gap:var(--k-gap-sm); align-items:center; }
.ks-practice.is-enhanced .ks-folio-image,.ks-practice .ks-folio-image { width:var(--k-service-thumb); height:var(--k-service-thumb-height); min-height:0; }
.ks-practice .ks-folio-open { display:none; }
.ks-practice.is-enhanced .ks-folio-caption,.ks-practice .ks-folio-caption { min-height:0; padding:0; gap:var(--k-gap-sm); }
.ks-practice .ks-practice-all { margin-top:var(--k-gap-sm); border-top:0; }
@media(min-width:501px) {
 .ks-practice-heading .ks-line { display:inline-block; }
 .ks-practice-heading .ks-line:first-child { margin-right:.2em; }
}
@media(max-width:440px) {
 .ks-practice .ks-folio-caption { flex-wrap:wrap; }
 .ks-practice .ks-folio-caption a { font-size:var(--k-t-label); }
}

/* One cabinet and one open project, composed as a single exhibit. */
.ks-practice .ks-practice-heading { margin-bottom:0; }
.ks-practice .ks-practice-layout { grid-template-columns:var(--k-cabinet-columns); align-items:center; gap:0; }
.ks-practice .ks-practice-build { width:100%; height:var(--k-cabinet-height); min-width:0; perspective:none; }
.ks-practice-build canvas { pointer-events:none; }
.ks-practice .ks-practice-result { width:100%; max-width:var(--k-cabinet-case-width); min-width:0; transform:translateX(var(--k-cabinet-case-shift)); }
.ks-practice .ks-practice-scope { color:var(--k-ink-faint); margin:0 0 var(--k-gap-sm); }
.ks-practice .ks-folio { margin:0; padding:0; border:0; }
.ks-practice .ks-folio-panel { display:block; }
.ks-practice.is-enhanced .ks-folio-image,.ks-practice .ks-folio-image { width:100%; height:auto; aspect-ratio:var(--k-cabinet-case-ratio); overflow:hidden; border-radius:var(--k-cabinet-image-radius); }
.ks-practice .ks-folio-image img { width:100%; height:100%; object-fit:cover; }
.ks-practice #practice-panel-0 .ks-folio-image img { object-fit:contain; background:var(--k-construction-paper); }
.ks-practice .ks-folio-caption,.ks-practice.is-enhanced .ks-folio-caption { display:flex; justify-content:space-between; align-items:flex-end; padding:var(--k-gap-sm) 0 0; min-height:0; gap:var(--k-gap-sm); }
.ks-practice .ks-folio-caption>div { min-width:0; }
.ks-practice .ks-folio-caption a { font-size:var(--k-t-small); }
.ks-practice .ks-folio-meta { margin-bottom:var(--k-preview-gap); }
.ks-practice .ks-folio-consult { flex-shrink:0; }
.ks-practice .ks-practice-all { margin:0; }
.ks-practice .ks-practice-build[data-renderer="webgl"] .ks-practice-index { position:absolute; inset:0; display:block; border:0; pointer-events:none; }
.ks-practice-build[data-renderer="webgl"] .ks-practice-choice,.ks-practice-build[data-renderer="webgl"] .ks-practice-choice h3 { display:contents; }
.ks-practice .ks-practice-build[data-renderer="webgl"] .ks-practice-choice button { position:absolute; display:block; min-height:0; margin:0; padding:0; border:0; background:transparent; pointer-events:auto; touch-action:manipulation; }
.ks-practice-build[data-renderer="webgl"] .ks-practice-choice button span { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.ks-practice .ks-practice-build[data-renderer="webgl"] button:focus-visible { background:color-mix(in srgb,var(--k-ink) 16%,transparent); outline:none; }
.ks-practice .ks-practice-build:not([data-renderer="webgl"]) { display:flex; align-items:center; padding:var(--k-gap); }
.ks-practice .ks-practice-build:not([data-renderer="webgl"]) canvas { visibility:hidden; }
.ks-practice .ks-practice-build:not([data-renderer="webgl"]) .ks-practice-index { display:grid; grid-template-columns:1fr; width:100%; border:0; gap:var(--k-hairline); background:var(--k-flare); }
.ks-practice .ks-practice-build:not([data-renderer="webgl"]) button { position:static!important; width:100%!important; height:auto!important; clip-path:none!important; padding:var(--k-gap-sm); color:var(--k-deep); border-bottom:var(--k-hairline) solid var(--k-deep); text-align:left; }
@media(max-width:800px) {
 .ks-practice .ks-practice-layout { grid-template-columns:1fr; }
 .ks-practice .ks-practice-build { max-width:var(--k-cabinet-case-width); justify-self:center; }
 .ks-practice .ks-practice-result { justify-self:center; transform:none; margin-bottom:var(--k-gap); }
 .ks-practice .ks-practice-all { text-align:center; display:block; }
}
@media(prefers-reduced-motion:reduce) {
 .ks-practice .ks-folio-panel { transition:none!important; }
}

.ks-practice .ks-practice-result { transition:opacity var(--k-dur-hover) ease; }
.ks-practice.is-drawer-closed .ks-practice-result { opacity:0; pointer-events:none; }
@media(min-width:801px) and (max-height:700px) {
 .ks-practice .ks-practice-heading>div { display:flex; align-items:center; gap:var(--k-gap); }
 .ks-practice .ks-practice-heading h2 { margin:0; }
 .ks-practice .ks-folio-caption { padding-top:var(--k-preview-gap); }
 .ks-practice .ks-practice-scope { margin-bottom:var(--k-preview-gap); }
}

/* Live DOM labels stay sharp and readable by people and crawlers. */
.ks-practice .ks-practice-build[data-renderer="webgl"] .ks-choice-title {
 position:absolute; top:0; left:0; width:var(--k-drawer-label-width); height:var(--k-drawer-label-height);
 display:flex; align-items:center; padding:0 var(--k-drawer-label-inset); box-sizing:border-box;
 clip-path:none; overflow:visible; transform-origin:0 0; text-decoration:none!important;
 font:500 var(--k-drawer-label-size)/1 var(--k-face-body); color:var(--k-drawer-label-ink); letter-spacing:var(--k-ls-body);
}
@media(min-width:801px) {
 .ks-practice .ks-practice-layout { grid-template-columns:1fr 1.2fr; }
 .ks-practice .ks-practice-build { grid-column:2; grid-row:1; }
 .ks-practice .ks-practice-result { grid-column:1; grid-row:1; transform:none; justify-self:center; }
}

/* The moving image is the same visual that settles into the case preview. */
.ks-case-flight {
 position:fixed; top:0; left:0; margin:0; display:block; max-width:none; max-height:none;
 object-fit:cover; pointer-events:none; z-index:var(--k-case-flight-z); transform-origin:0 0;
 background:var(--k-construction-paper); border-radius:var(--k-cabinet-image-radius); will-change:transform;
}
.ks-case-flight.is-construction { object-fit:contain; }
.ks-practice.is-case-in-transit .ks-folio-panel.is-current { opacity:0; pointer-events:none; }
@media(prefers-reduced-motion:reduce) { .ks-case-flight { display:none; } }

/* SERVICES page: no per-pixel layout for the fixed progress indicator. */
.k-fuse i { width:100%; transform:scaleX(var(--kp)); transform-origin:left; transition:none; }
.k-fuse b { left:0; translate:calc(var(--kp) * 100vw) 0; transform:none; transition:none; }
.k-fuse b::before,.k-fuse b::after { animation-play-state:running; }

.ks-timing[data-motion-paused] *, .ks-timing[data-motion-paused] *::before, .ks-timing[data-motion-paused] *::after { animation-play-state:paused!important; }
/* The original neon layers keep their glow; their filter surfaces follow each line. */
.ks-timing .rise .run { filter:var(--k-local-neon,url(#neon)); }

.ks-timing .rise .ln.live .head,.ks-timing .rise .toss .baton { filter:url(#glow-dot); }
.ks-timing .rise.after .ring4 { filter:url(#neon-ring); }

/* Project the native button as one compositor transform, without frame-by-frame layout. */
.ks-practice .ks-practice-build[data-renderer="webgl"] .ks-practice-choice button {
 left:0; top:0; width:var(--k-drawer-label-width); height:var(--k-drawer-label-height); transform-origin:0 0; clip-path:none;
}
.ks-practice .ks-practice-build[data-renderer="webgl"] .ks-choice-title { transform:none!important; }
.ks-practice .ks-practice-build:not([data-renderer="webgl"]) button { transform:none!important; }
