/* UI motion only. Map geometry and print/export furniture stay stationary. */
@media screen {
  :root { --motion-ease:cubic-bezier(.22,1,.36,1); }
  .auth-intro { background:radial-gradient(ellipse at 15% 0%,#216d55 0%,transparent 58%),#103e34; }
  .auth-map-art { position:relative;isolation:isolate;opacity:.85; }
  .auth-map-art::before { content:'';position:absolute;inset:20% 12%;border:1px solid #b3dfb7;border-radius:48% 32% 56% 29%;box-shadow:0 0 0 15px #acd7b512,0 0 0 31px #acd7b512,0 0 0 48px #acd7b512;transform:rotate(-15deg);animation:gis-contour 8s ease-in-out 3; }
  .auth-map-art::after { content:'';position:absolute;left:60%;top:41%;width:9px;height:9px;border:2px solid #efffe7;border-radius:50%;background:#b9e39b;box-shadow:0 0 0 10px #b9e39b18;animation:gis-beacon 2.8s ease-out 5; }
  .auth-content { animation:gis-enter 480ms var(--motion-ease) both; }
  .auth-intro h1 { animation:gis-enter 600ms var(--motion-ease) both; }
  .auth-intro p { animation:gis-enter 600ms 70ms var(--motion-ease) both; }
  .auth-intro .auth-map-art { animation:gis-fade 800ms 100ms ease both; }
  .auth-tabs button,.auth-primary,.auth-demo,.project-button,.project-dropdown-trigger,.project-tab,.layer-row,.layer-item,.format-tags span { transition:background-color 180ms ease,border-color 180ms ease,box-shadow 220ms ease,transform 220ms var(--motion-ease),color 180ms ease; }
  .auth-field input { transition:border-color 180ms ease,box-shadow 180ms ease; }
  .auth-field input:focus { border-color:#3c9d80;box-shadow:0 0 0 4px #087f680c; }
  .project-dropdown:not([hidden]) { transform-origin:top left;animation:gis-menu 220ms var(--motion-ease) both; }
  .project-dropdown-chevron { transition:transform 220ms var(--motion-ease); }
  .project-dropdown-trigger[aria-expanded=true] .project-dropdown-chevron { transform:rotate(180deg); }
  dialog[open] { animation:gis-enter 260ms var(--motion-ease) both; }
  dialog[open]::backdrop { animation:gis-fade 200ms ease both; }
  .toast-item { animation:gis-enter 320ms var(--motion-ease) both; }
  .button:active:not(:disabled),.auth-primary:active:not(:disabled),.auth-demo:active,.project-button:active { transform:translateY(1px) scale(.98); }
  .dropzone .upload-icon { transition:transform 260ms var(--motion-ease),box-shadow 260ms ease; }
  .dropzone.dragover,.dropzone.dragging { animation:gis-drop 1.4s ease-in-out infinite; }
  .dropzone.processing .upload-icon { position:relative;animation:none; }
  .dropzone.processing .upload-icon::after { content:'';position:absolute;inset:-5px;border:2px solid #087f6820;border-top-color:#087f68;border-radius:14px;animation:gis-spin 1.1s linear infinite; }
  .panel-heading { background:linear-gradient(160deg,#f5faf7 0%,#fff 75%); }
  .canvas-toolbar { background:linear-gradient(105deg,#fff,#f6faf7); }
  .button.primary { box-shadow:0 2px 5px #087f6814; }
  @media (hover:hover) and (pointer:fine) {
    .auth-primary:hover:not(:disabled),.button.primary:hover:not(:disabled) { transform:translateY(-2px);box-shadow:0 6px 16px #087f6826;background:#096f5d; }
    .auth-demo:hover,.project-button:hover { transform:translateY(-1px);box-shadow:0 3px 10px #16372b0b; }
    .layer-row:hover,.layer-item:hover { box-shadow:0 3px 12px #16372b0a; }
    .dropzone:hover .upload-icon { transform:translateY(-3px);box-shadow:0 5px 12px #087f6812; }
    .format-tags span:hover { background:#eaf5ee;border-color:#b7d6c3; }
  }
}
@keyframes gis-enter { from {opacity:0;transform:translateY(10px)} to {opacity:1;transform:translateY(0)} }
@keyframes gis-menu { from {opacity:0;transform:translateY(-5px) scale(.98)} to {opacity:1;transform:translateY(0) scale(1)} }
@keyframes gis-fade { from {opacity:0} to {opacity:1} }
@keyframes gis-contour { 0%,100% {transform:rotate(-15deg) scale(1)} 50% {transform:rotate(-9deg) scale(1.08)} }
@keyframes gis-beacon { 0% {box-shadow:0 0 0 0 #b9e39b55} 75%,100% {box-shadow:0 0 0 24px #b9e39b00} }
@keyframes gis-drop { 0%,100% {box-shadow:0 0 0 0 #087f6810} 50% {box-shadow:0 0 0 5px #087f6818} }
@keyframes gis-spin { to {transform:rotate(360deg)} }
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation:none!important;transition:none!important;scroll-behavior:auto!important; }
}
@media print {
  *,*::before,*::after { animation:none!important;transition:none!important; }
}
body.exporting *,body.exporting *::before,body.exporting *::after,
.technical-sheet.is-exporting * { animation:none!important;transition:none!important; }
