/* Interaction styling is intentionally separate from the page composition. */
.fx-interactive {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  transition: transform .32s cubic-bezier(.16,1,.3,1), box-shadow .24s ease, background-color .24s ease, color .24s ease, border-color .24s ease;
}
.fx-interactive.is-pressed {
  transform: translateY(3px) scale(.975) !important;
  box-shadow: inset 0 3px 8px rgb(4 16 31 / 28%) !important;
  transition-duration: .065s;
}
.fx-interactive:focus-visible {
  outline: 3px solid #8fa8c7;
  outline-offset: 5px;
}
.check-option:has(input:focus-visible) {
  outline: 3px solid #8fa8c7;
  outline-offset: 5px;
}
.tap-water-ripple {
  position: fixed;
  z-index: 10020;
  width: 22px;
  height: 22px;
  margin: -11px 0 0 -11px;
  border: 1px solid rgb(201 222 243 / 95%);
  border-radius: 50%;
  box-shadow: 0 0 0 3px rgb(255 255 255 / 17%), 0 0 12px rgb(121 142 171 / 50%);
  pointer-events: none;
  animation: water-ring .65s cubic-bezier(.1,.5,.2,1) both;
}
@keyframes water-ring {
  0% { transform: scale(.2); opacity: 1; }
  60% { opacity: .45; }
  100% { transform: scale(4.6); opacity: 0; }
}
.reveal[data-reveal-ready] {
  transition: opacity .8s ease, transform 1s cubic-bezier(.16,1,.3,1), filter .8s ease;
  transition-delay: var(--reveal-delay, 0s);
}
.reveal[data-reveal-ready]:not(.is-visible) {
  opacity: 0;
  transform: translateY(30px);
  filter: blur(3px);
}
.reveal.is-visible { opacity: 1; filter: blur(0); }
.photo-interactive { isolation: isolate; }
.photo-sheen {
  position: absolute;
  inset: -20%;
  z-index: 1;
  pointer-events: none;
  opacity: 0;
  background: linear-gradient(115deg, transparent 32%, rgb(189 218 244 / 12%) 43%, rgb(255 255 255 / 48%) 49%, rgb(255 255 255 / 18%) 52%, transparent 64%);
  transform: translateX(-100%);
}
.photo-is-entering > .photo-sheen { animation: photo-focus-sweep 1.35s .12s cubic-bezier(.16,1,.3,1) both; }
.photo-interactive.is-pressed > .photo-sheen { animation: photo-press-glint .65s ease-out both; }
.photo-returning > .photo-sheen { animation: photo-press-glint .75s ease-out both; }
.photo-interactive .zoom-mark { transition: transform .3s ease, background .3s ease; }
.photo-interactive:focus-visible .zoom-mark,
.photo-interactive:hover .zoom-mark { transform: rotate(90deg); background: #334d6ce8; }
@keyframes photo-focus-sweep {
  0% { opacity: 0; transform: translateX(-85%); }
  20% { opacity: .8; }
  100% { opacity: 0; transform: translateX(85%); }
}
@keyframes photo-press-glint {
  0% { opacity: 0; transform: translateX(-40%); }
  18% { opacity: .9; }
  100% { opacity: 0; transform: translateX(55%); }
}
#mobile-menu[hidden] { display: none !important; }
#mobile-menu.is-open { animation: menu-enter .28s cubic-bezier(.16,1,.3,1) both; }
@keyframes menu-enter {
  from { opacity: 0; transform: translateY(-12px); }
  to { opacity: 1; transform: translateY(0); }
}
#check-progress { transition: width .6s cubic-bezier(.16,1,.3,1); }
#check-result {
  transition: border-color .45s ease, box-shadow .45s ease;
}
#check-result.is-complete {
  border-color: #b8cce0;
  box-shadow: 0 0 0 1px rgb(209 227 247 / 45%), 0 16px 60px rgb(121 142 171 / 20%);
}
#check-recommendations {
  display: grid;
  gap: 8px;
  margin-top: 18px;
}
.check-recommendation {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  min-height: 66px;
  padding: 12px 14px;
  color: #18314e;
  background: linear-gradient(118deg, rgb(255 255 255 / 85%), rgb(232 240 249 / 82%));
  border: 1px solid rgb(94 125 160 / 24%);
  border-radius: 3px;
  box-shadow: 0 3px 0 rgb(41 69 104 / 12%), inset 0 1px 0 #fff;
  line-height: 1.55;
}
.check-recommendation > span:first-child { min-width: 0; }
.check-recommendation strong { display: block; font-size: 13px; overflow-wrap: anywhere; }
.check-recommendation small { display: block; margin-top: 4px; font-size: 10px; color: #506985; }
.recommendation-arrow { font-size: 21px; color: #315779; flex-shrink: 0; }
.check-recommendation:hover { border-color: #7596b8; background: linear-gradient(118deg, #fff, #dce9f6); }
.check-celebration {
  position: fixed;
  inset: 0;
  z-index: 10010;
  overflow: hidden;
  pointer-events: none;
}
.celebration-flash {
  position: absolute;
  left: var(--burst-x);
  top: var(--burst-y);
  width: 200px;
  height: 200px;
  margin: -100px 0 0 -100px;
  border: 1px solid rgb(212 231 252 / 65%);
  border-radius: 50%;
  background: radial-gradient(circle, rgb(255 255 255 / 35%), rgb(168 196 225 / 12%) 45%, transparent 70%);
  animation: celebration-halo 1.4s ease-out both;
}
.celebration-droplet {
  position: absolute;
  left: var(--burst-x);
  top: var(--burst-y);
  width: var(--burst-size);
  height: calc(var(--burst-size) * 1.5);
  border-radius: 70% 30% 70% 30%;
  background: var(--burst-color);
  box-shadow: 0 0 10px rgb(255 255 255 / 60%);
  animation: celebration-burst 1.9s cubic-bezier(.12,.57,.35,1) var(--burst-delay) both;
}
.celebration-droplet.is-spark {
  border-radius: 0;
  clip-path: polygon(50% 0, 62% 38%, 100% 50%, 62% 62%, 50% 100%, 38% 62%, 0 50%, 38% 38%);
  width: calc(var(--burst-size) * 2);
  height: calc(var(--burst-size) * 2);
}
@keyframes celebration-halo {
  0% { transform: scale(.1); opacity: 0; }
  15% { opacity: .95; }
  100% { transform: scale(3); opacity: 0; }
}
@keyframes celebration-burst {
  0% { transform: translate(0,0) scale(.2) rotate(0); opacity: 0; }
  10% { opacity: 1; }
  58% { transform: translate(var(--burst-dx),var(--burst-dy)) scale(1) rotate(100deg); opacity: .9; }
  100% { transform: translate(var(--burst-dx),calc(var(--burst-dy) + var(--burst-fall))) scale(.45) rotate(220deg); opacity: 0; }
}
[data-polish] { position: relative; isolation: isolate; }
.polish-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  overflow: hidden;
  border-radius: inherit;
}
.polish-overlay::before,
.polish-overlay::after {
  content: '';
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
}
.polish-overlay::before {
  width: 65%;
  left: -90%;
  background: linear-gradient(105deg, transparent 8%, rgb(180 210 237 / 12%) 30%, rgb(255 255 255 / 45%) 48%, rgb(255 255 255 / 85%) 50%, rgb(209 229 246 / 22%) 54%, transparent 80%);
  transform: skewX(-17deg);
}
.polish-overlay::after {
  background-image: radial-gradient(ellipse at 22% 36%, rgb(255 255 255 / 90%) 0 1px, transparent 4px), radial-gradient(ellipse at 72% 24%, rgb(227 242 255 / 85%) 0 2px, transparent 6px), radial-gradient(ellipse at 40% 71%, rgb(255 255 255 / 80%) 0 1px, transparent 4px), radial-gradient(ellipse at 85% 65%, rgb(255 255 255 / 80%) 0 1px, transparent 5px);
}
.polish-drop {
  position: absolute;
  left: var(--drop-x);
  top: var(--drop-y);
  width: var(--drop-size);
  height: calc(var(--drop-size) * 1.35);
  border: 1px solid rgb(235 247 255 / 80%);
  border-radius: 55% 45% 60% 40%;
  background: linear-gradient(135deg, rgb(255 255 255 / 70%), rgb(136 182 220 / 12%) 60%);
  box-shadow: 1px 2px 5px rgb(6 20 39 / 38%), inset 0 1px 1px #fff;
  opacity: 0;
}
.is-polishing > .polish-overlay::before { animation: polish-sweep 1.4s .35s cubic-bezier(.16,.45,.25,1) both; }
.is-polishing > .polish-overlay::after { animation: polish-water 1.3s .85s ease-out both; }
.is-polishing .polish-drop { animation: polish-drop-fall 1.25s var(--drop-delay) cubic-bezier(.32,.04,.62,1) both; }
.inspection-light {
  position: absolute;
  inset: 0;
  z-index: 2;
  overflow: hidden;
  pointer-events: none;
  border-radius: inherit;
  opacity: 0;
  transition: opacity .24s ease-out;
}
.inspection-light::before {
  content: '';
  position: absolute;
  top: -20%;
  bottom: -20%;
  left: var(--inspection-position, 50%);
  width: clamp(18px, 10%, 52px);
  background: linear-gradient(90deg, transparent, rgb(210 233 255 / 12%) 21%, rgb(255 255 255 / 60%) 49%, rgb(255 255 255 / 82%) 51%, rgb(226 240 255 / 14%) 72%, transparent);
  transform: translateX(-50%) skewX(-12deg);
}
.is-inspecting > .inspection-light { opacity: 1; }
.shine-controls.is-inspecting label > span { animation: inspection-glint .65s ease-out both; }
.shine-controls input[type="range"].is-pressed { transform: none !important; box-shadow: none !important; }
@keyframes inspection-glint {
  0% { opacity: .7; transform: scale(1); }
  40% { opacity: 1; transform: scale(1.18); text-shadow: 0 0 12px rgb(108 153 203 / 55%); }
  100% { opacity: 1; transform: scale(1); }
}
#consult-dialog[open] { animation: consult-enter .32s cubic-bezier(.16,1,.3,1) both; }
#consult-dialog::backdrop { animation: lightbox-backdrop-enter .25s ease-out both; }
#consult-dialog.is-closing { animation: consult-leave .16s ease-in both; }
#consult-dialog.is-closing::backdrop { animation: lightbox-backdrop-leave .16s ease-in both; }
.tap-water-ripple.is-dialog-ripple { position: absolute; }
@keyframes consult-enter {
  from { opacity: 0; transform: translateY(14px) scale(.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes consult-leave {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to { opacity: 0; transform: translateY(8px) scale(.985); }
}
@keyframes polish-sweep {
  0% { left: -90%; opacity: 0; }
  12% { opacity: 1; }
  72% { opacity: .8; }
  100% { left: 140%; opacity: 0; }
}
@keyframes polish-water {
  0% { opacity: 0; transform: scale(.94); }
  25% { opacity: .9; }
  100% { opacity: 0; transform: scale(1.07); }
}
@keyframes polish-drop-fall {
  0% { opacity: 0; transform: translate(0,-22px) scale(.3); }
  18% { opacity: .9; transform: translate(0,0) scale(1); }
  100% { opacity: 0; transform: translate(18px,100px) scale(.65); }
}
html.has-lightbox { overflow: hidden; }
#lightbox {
  width: min(1100px, calc(100% - 28px));
  max-width: none;
  max-height: calc(100dvh - 32px);
  min-height: 160px;
  padding: 60px 18px 18px;
  color: #fff;
  background: radial-gradient(ellipse at 50% 0, #253f5e, transparent 70%), #101d2e;
  border: 1px solid rgb(165 190 216 / 50%);
  border-radius: 8px;
  box-shadow: 0 30px 90px rgb(0 0 0 / 50%);
  overflow: auto;
  transform-origin: var(--lightbox-origin, 50% 50%);
}
#lightbox::backdrop {
  background: rgb(2 8 16 / 88%);
  backdrop-filter: blur(7px);
  animation: lightbox-backdrop-enter .3s ease-out both;
}
#lightbox[open] { animation: lightbox-enter .42s cubic-bezier(.16,1,.3,1) both; }
#lightbox.is-closing { animation: lightbox-leave .18s ease-in both; }
#lightbox.is-closing::backdrop { animation: lightbox-backdrop-leave .18s ease-in both; }
#lightbox.is-loading #lightbox-image { opacity: 0; }
#lightbox.is-loaded #lightbox-image { animation: photo-detail-enter .45s cubic-bezier(.16,1,.3,1) both; }
#lightbox.is-zoomed #lightbox-image { animation: none; transform: none; filter: none; }
@media (hover: hover) and (pointer: fine) {
  #lightbox.is-zoomed .lightbox-stage { cursor: grab; }
  #lightbox.is-zoomed .lightbox-stage.is-panning { cursor: grabbing; user-select: none; }
}
#lightbox-image {
  display: block;
  max-width: 100%;
  max-height: calc(100dvh - 150px);
  width: auto;
  height: auto;
  object-fit: contain;
  margin: 0 auto;
}
#lightbox-caption {
  margin: 14px 0 0;
  text-align: center;
  font-size: .875rem;
  line-height: 1.7;
  color: #dae4ef;
}
#lightbox [data-close-dialog] { min-width: 44px; min-height: 44px; }
@keyframes lightbox-enter {
  from { opacity: 0; transform: translateY(20px) scale(.92); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes lightbox-leave {
  from { opacity: 1; transform: translateY(0) scale(1); }
  to { opacity: 0; transform: translateY(10px) scale(.96); }
}
@keyframes lightbox-backdrop-enter {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes lightbox-backdrop-leave {
  from { opacity: 1; }
  to { opacity: 0; }
}
@keyframes photo-detail-enter {
  from { opacity: .4; transform: scale(.985); filter: blur(1px); }
  to { opacity: 1; transform: scale(1); filter: blur(0); }
}
@media (max-width: 600px) {
  #lightbox { padding: 55px 10px 15px; }
  #lightbox-image { max-height: calc(100dvh - 165px); margin-top: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .fx-interactive,
  .reveal[data-reveal-ready],
  #check-progress,
  #check-result { transition-duration: .01ms !important; transition-delay: 0s !important; }
  .reveal[data-reveal-ready]:not(.is-visible) { opacity: 1; transform: none; filter: none; }
  .tap-water-ripple,
  .check-celebration,
  .polish-overlay,
  .photo-sheen { display: none !important; }
  #mobile-menu.is-open,
  #lightbox[open],
  #lightbox.is-closing,
  #lightbox.is-loaded #lightbox-image,
  #lightbox::backdrop,
  #consult-dialog[open],
  #consult-dialog.is-closing,
  #consult-dialog::backdrop,
  .shine-controls.is-inspecting label > span { animation: none !important; }
  .inspection-light { transition: none; }
  .photo-interactive .zoom-mark { transition: none; transform: none; }
  .fx-interactive.is-pressed { transform: none !important; }
}
