/* A restrained layer of light over the existing interface. No layout dependencies. */
:root{--fx-lilac:#c6b4ff;--fx-blue:#7d9cff;--fx-edge:#bfa5f0}
:where(button,.site-button,.planner-direct-contact,.scroll-cue,.back-to-top,.section-endnote a){position:relative;isolation:isolate}
:where(button,.site-button,.planner-direct-contact){overflow:hidden}
:where(button,.site-button,.planner-direct-contact,.scroll-cue,.back-to-top,.section-endnote a):focus-visible{outline-color:#cfbeff;outline-offset:5px}
/* The sweep is an overlay, never a hit target; labels and native inputs keep their behavior. */
:where(button:not(.contact-send),.site-button,.planner-direct-contact)::after{content:'';position:absolute;inset:-55% auto -55% -58%;width:42%;border-radius:50%;background:linear-gradient(105deg,transparent 10%,#b8d5ff12 27%,#fff9 49%,#c7aeff2b 68%,transparent 89%);opacity:0;transform:translate3d(-80%,0,0) skewX(-18deg);pointer-events:none;z-index:3;transition:opacity 140ms ease,transform 290ms cubic-bezier(.2,.7,.25,1)}
/* A focused ring remains distinct from the soft decorative light. */
:is(.enter-button,.site-button,.planner-app .planner-start,.planner-app .planner-next,.planner-app .planner-back,.planner-app .planner-copy,.planner-app .planner-edit,.planner-app .planner-start-project,.contact-copy-actions button):focus-visible{box-shadow:0 0 0 4px #a58aff15,0 5px 24px #8275d922;outline:2px solid #d3c4ff;outline-offset:4px}
.planner-app .planner-choice:has(input:focus-visible){outline-color:#dfd1ff;outline-offset:4px;box-shadow:0 0 0 5px #a88add0c,0 12px 30px #03020840}
:is(.planner-app .planner-field input,.planner-app .planner-field textarea,.contact-field input,.contact-field textarea):focus{border-color:#bfa4f2;box-shadow:0 0 0 3px #a980d91a,0 0 23px #8b72ce10}
/* Selected directions have a quieter, persistent inner rim. */
.planner-app .planner-choice.is-selected,.planner-app .planner-choice:has(input:checked){border-color:#ba9fe9;box-shadow:0 0 0 1px #c6adf32b,inset 0 1px 0 #dfc9ff13,0 9px 29px #0c061d30}
.planner-app .planner-step.is-current .planner-step-number{box-shadow:0 0 0 3px #bca4f015,0 0 22px #a18afb20}
.planner-app .planner-progress-track>span{background:linear-gradient(100deg,#7768da,#c3a8f0 57%,#9aaeff);box-shadow:0 0 11px #b594e94a}
.planner-app .planner-result-tags span,.contact-project-tags>span{box-shadow:inset 0 1px 0 #d3bfff08;transition:border-color 180ms ease,background 180ms ease,color 180ms ease}
/* Two broad, translucent fields produce an aurora without animated blur or filters. */
.welcome-hero::before{content:'';position:absolute;inset:-9%;pointer-events:none;z-index:0;opacity:.72;background:radial-gradient(ellipse 42% 47% at 89% 47%,#6b54bc13,transparent 76%),radial-gradient(ellipse 31% 38% at 55% 96%,#405e9c0a,transparent 77%);transform:translate3d(0,0,0)}
body[data-mode='inside'] .welcome-hero::before{animation:fx-aurora 16s ease-in-out infinite alternate}
@keyframes fx-aurora{from{transform:translate3d(1.1%,-1%,0) rotate(-1deg) scale(1)}to{transform:translate3d(-1.5%,1.6%,0) rotate(1.2deg) scale(1.025)}}
/* Fine-pointer hover is deliberately separate from touch and keyboard interaction. */
@media(hover:hover) and (pointer:fine){
  :where(button:not(.contact-send),.site-button,.planner-direct-contact):hover:not(:disabled)::after{opacity:.34;transform:translate3d(420%,0,0) skewX(-18deg)}
  :where(button:not(.contact-send),.site-button,.planner-direct-contact):not(:hover)::after{transition:opacity 110ms ease;opacity:0}
  :is(.enter-button,.site-button,.planner-app .planner-start,.planner-app .planner-next,.planner-app .planner-start-project,.planner-app .planner-back,.planner-app .planner-copy,.planner-app .planner-edit,.contact-copy-actions button):hover:not(:disabled){border-color:#c5b1ed;box-shadow:0 0 0 1px #c6b4ff14,0 7px 29px #8971e02b,inset 0 1px 0 #eee4ff16}
  .enter-button:hover:not(:disabled){background:#e0dcff;box-shadow:0 0 0 1px #fff4,0 9px 36px #9b86ff36;transform:translateY(-3px)}
  .site-button-primary:hover{background:linear-gradient(115deg,#8777ec,#7568df 50%,#677cdb);border-color:#bfa8ed;box-shadow:0 7px 31px #8873e433}
  .site-button-secondary:hover{background:linear-gradient(120deg,#2a233a,#1c1d33);border-color:#8e82af;box-shadow:0 7px 28px #6566bb1f}
  .planner-app :is(.planner-next,.planner-start,.planner-start-project):hover:not(:disabled){background:linear-gradient(115deg,#e2d3ff,#cabcf3 55%,#c0ccff);color:#21192f;border-color:#e4d4ff;box-shadow:0 7px 30px #b397ef2b}
  .planner-app :is(.planner-back,.planner-copy,.planner-edit):hover:not(:disabled),.contact-copy-actions button:hover:not(:disabled){background:linear-gradient(125deg,#362a45,#25233b);border-color:#ab91cb;color:#ece0fa}
  .contact-send:hover:not(:disabled){background:linear-gradient(112deg,#cbb4ff,#b8a0f6 52%,#abbaff);border-color:#d9c6ff;box-shadow:0 9px 35px #9973e833}
  .contact-send:hover:not(:disabled) .contact-send-spark{transition-duration:360ms}
  .contact-send:hover:not(:disabled) .contact-send-icon{translate:3px -3px;rotate:4deg}
  :is(.replay-button,.planner-app .planner-close,.planner-app .planner-skip,.planner-app .planner-text-button,.contact-edit-brief,.contact-attachment-toggle):hover:not(:disabled){color:#e3d1ff;text-shadow:0 0 17px #aa8ce637}
  .replay-button:hover>span:first-child{rotate:-75deg}
  .planner-app .planner-step:hover:not(:disabled){background:linear-gradient(125deg,#9c79c311,#7777bc0a);color:#e8dbfa}
  .planner-app .planner-step:hover:not(:disabled) .planner-step-number{border-color:#b9a0dd;box-shadow:0 0 19px #a383dd20}
  /* Small card-local lights follow --spot-x / --spot-y when motion.js supplies them. */
  :is(.planner-app .planner-shell,.planner-app .planner-choice,.planner-app .planner-result-block,.contact-project,.contact-form-panel){position:relative;isolation:isolate;transition:border-color 200ms ease,box-shadow 220ms ease,transform 220ms cubic-bezier(.2,.75,.25,1)}
  :is(.planner-app .planner-shell,.planner-app .planner-choice,.planner-app .planner-result-block,.contact-project,.contact-form-panel)::after{content:'';position:absolute;inset:0;border-radius:inherit;z-index:1;pointer-events:none;opacity:0;background:radial-gradient(215px circle at var(--spot-x,50%) var(--spot-y,35%),#d9c3ff13,#899dff06 46%,transparent 77%);box-shadow:inset 0 1px 0 #e9ddff16;transition:opacity 200ms ease}
  :is(.planner-app .planner-shell,.planner-app .planner-choice,.planner-app .planner-result-block,.contact-project,.contact-form-panel):hover::after{opacity:1}
  .planner-app .planner-choice:hover{border-color:#b29ad4;background:#282033;transform:translateY(-3px);box-shadow:0 8px 27px #02010655,0 0 0 1px #bd9be714}
  .planner-app .planner-choice.is-selected:hover,.planner-app .planner-choice:has(input:checked):hover{border-color:#dbc4ff;background:#4132528c;box-shadow:0 0 0 1px #cbb3f538,0 12px 29px #0c061d45}
  .planner-app .planner-choice input{z-index:4}
  .planner-app .planner-choice .planner-choice-copy{position:relative;z-index:2}
  .planner-app .planner-choice .planner-mini{transition:box-shadow 220ms ease}
  .planner-app .planner-choice:hover .planner-mini{box-shadow:inset 0 0 0 1px #ede4ff13}
  .planner-app .planner-choice .mini-art{transition:translate 260ms cubic-bezier(.2,.75,.25,1)}
  .planner-app .planner-choice:hover .mini-art{translate:2px -2px}
  .planner-app .planner-result-block:hover{border-color:#776088;box-shadow:0 9px 30px #0301071c}
  .contact-project:hover{border-color:#ac8bc9;box-shadow:0 0 0 1px #a582d50c,0 13px 34px #1c0f391b}
  .contact-form-panel:hover{border-color:#6f5c85;box-shadow:0 20px 55px #07030d30}
  .planner-app .planner-shell:hover::before{background:linear-gradient(90deg,transparent,#a29fff91,#d7baf7a8,transparent)}
  .contact-project:hover::before,.contact-form-panel:hover::before{background:linear-gradient(90deg,transparent,#b7b6ff7a,#dcc1f7a6,transparent)}
  :is(.planner-app .planner-field input,.planner-app .planner-field textarea,.contact-field input,.contact-field textarea):hover:not(:disabled){border-color:#9580b2;box-shadow:inset 0 1px 0 #d5bfff06,0 0 21px #8d74bb08}
  :is(.planner-app .planner-field input,.planner-app .planner-field textarea,.contact-field input,.contact-field textarea):focus:hover{border-color:#c6abef;box-shadow:0 0 0 3px #a980d91b,0 0 24px #8b72ce13}
  .contact-field [aria-invalid='true']:hover{border-color:#cc8bad}
  :is(.planner-app .planner-details-toggle>summary,.planner-app .planner-summary-answers>summary,.contact-copy-tools>summary):hover{color:#e6d0fd;text-shadow:0 0 18px #b17bde28}
  :is(.scroll-cue,.back-to-top,.section-endnote a,.planner-app .planner-direct-contact):hover{color:#e7d8ff;text-shadow:0 0 17px #b39bd741}
  .scroll-cue:hover>span{translate:0 2px}
  .section-endnote a:hover>span{translate:2px 2px}
  .back-to-top:hover>span{translate:0 -2px}
  :is(.scroll-cue,.back-to-top,.section-endnote a)>span{transition:translate 180ms ease}
  .wordmark[href]:hover .brand-logo{filter:drop-shadow(0 0 8px #aa91ff70) brightness(1.14)}
  .wordmark[href] .brand-logo{transition:filter 220ms ease}
  :is(.welcome-copy,.details-title,.contact-title,.planner-intro):hover em{background-position:100% 50%}
  :is(.welcome-title,.details-title,.contact-title,.planner-intro h3) em{background-size:185% 100%;background-position:0 50%;transition:background-position 320ms ease}
  .planner-app .planner-result-tags span:hover,.contact-project-tags>span:hover{border-color:#9677bc66;background:#9a7cba20;color:#e1ceef}
}
/* A short press has weight on every input mode, without keeping a hover state on touch. */
:is(.enter-button,.site-button,.planner-app .planner-next,.planner-app .planner-back,.planner-app .planner-start,.planner-app .planner-start-project,.planner-app .planner-copy,.planner-app .planner-edit,.contact-send,.contact-copy-actions button):active:not(:disabled){scale:.975;transition-duration:90ms}
.planner-app .planner-choice:active{scale:.994;transition-duration:90ms}
@media(hover:none){
  .enter-button:hover{transform:none}
  .site-button:hover{translate:0 0}
  .planner-app .planner-choice:hover,.planner-app :is(.planner-back,.planner-copy,.planner-edit,.planner-next,.planner-start,.planner-start-project):hover{transform:none}
  .contact-send:hover:not(:disabled){translate:0 0}
  .contact-send:hover:not(:disabled) .contact-send-icon{translate:0 0;rotate:0deg}
  :where(button,.site-button,.planner-direct-contact)::after{display:none}
}
@media(prefers-reduced-motion:reduce){
  .welcome-hero::before{animation:none!important}
  :where(button,.site-button,.planner-direct-contact)::after{display:none!important}
  :is(.enter-button,.site-button,.planner-app .planner-choice,.planner-app .planner-next,.planner-app .planner-back,.planner-app .planner-start,.planner-app .planner-start-project,.planner-app .planner-copy,.planner-app .planner-edit,.contact-send,.contact-copy-actions button):active{scale:1}
  .planner-app .planner-choice:hover{transform:none}
  .planner-app .planner-choice:hover .mini-art{translate:0 0}
  :is(.scroll-cue,.back-to-top,.section-endnote a):hover>span{translate:0 0}
}
/* Quick arrival motion, shared with the contact panel's border and light. */
.fx-reveal{opacity:0;translate:0 12px;transition:opacity 300ms ease,translate 300ms cubic-bezier(.2,.7,.25,1)}.fx-reveal.fx-visible{opacity:1;translate:0 0}
.contact-enhanced .contact-reveal{translate:0 12px;transition:opacity 320ms ease,translate 320ms cubic-bezier(.2,.7,.25,1)}.contact-enhanced.is-visible .contact-reveal{translate:0 0}.contact-enhanced .contact-story{transition-delay:35ms}.contact-enhanced .contact-form-panel{transition:opacity 320ms ease,translate 320ms cubic-bezier(.2,.7,.25,1),border-color 200ms ease,box-shadow 220ms ease,transform 220ms ease;transition-delay:60ms,60ms,0ms,0ms,0ms}
.art-halo{inset:5%;background:radial-gradient(ellipse,#6861e021,transparent 67%);filter:none}
body:not([data-mode='inside']) .contact-orbit img,.motion-paused .contact-orbit img,.motion-paused .welcome-hero::before{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.fx-reveal{opacity:1;translate:0 0;transition:none}.contact-enhanced .contact-reveal{opacity:1;translate:0 0}}


@media(hover:hover) and (pointer:fine){.planner-app .planner-shell::after{background:radial-gradient(300px circle at var(--spot-x,50%) var(--spot-y,35%),#d9c3ff13,#899dff06 46%,transparent 77%)}}
