button:focus-visible,
input:focus-visible,
select:focus-visible,
.file-visual:focus-visible,
.dropzone:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
}

button:disabled,
input:disabled{
  cursor:not-allowed!important;
  opacity:.52;
}

.login-form.has-error .password-field input{
  border-color:rgba(232,111,116,.72);
  box-shadow:0 0 0 3px rgba(232,111,116,.10);
  animation:loginNudge .24s ease;
}

@keyframes loginNudge{
  0%,100%{transform:translateX(0)}
  30%{transform:translateX(-4px)}
  70%{transform:translateX(4px)}
}

.upload-progress-right{
  display:flex;
  align-items:center;
  gap:8px;
  flex:0 0 auto;
}

.compact-action{
  min-height:30px;
  padding:5px 9px!important;
  border-radius:9px!important;
  font-size:10px!important;
}

.dropzone.uploading{
  cursor:progress;
  border-style:solid;
  opacity:.82;
}

.dropzone.uploading .drop-icon{
  animation:uploadPulse 1.35s ease-in-out infinite;
}

@keyframes uploadPulse{
  0%,100%{transform:translateY(0);opacity:.72}
  50%{transform:translateY(-3px);opacity:1}
}

.file-visual,
.admin-preview.transparent-preview{
  background-color:var(--panel2);
  background-image:
    linear-gradient(45deg,rgba(127,127,127,.08) 25%,transparent 25%),
    linear-gradient(-45deg,rgba(127,127,127,.08) 25%,transparent 25%),
    linear-gradient(45deg,transparent 75%,rgba(127,127,127,.08) 75%),
    linear-gradient(-45deg,transparent 75%,rgba(127,127,127,.08) 75%);
  background-size:18px 18px;
  background-position:0 0,0 9px,9px -9px,-9px 0;
}

.file-visual img{
  object-fit:contain!important;
}

.preview-dialog-card h2,
.dialog-card h2{
  white-space:normal!important;
  overflow-wrap:anywhere;
}

.preview-meta{
  min-height:18px;
  line-height:1.45;
}

.admin-preview img{
  object-fit:contain;
}

.file-title-line strong{
  min-width:0;
}

.file-actions button{
  white-space:nowrap;
}

.asset-badge{
  user-select:none;
}

.toast{
  max-width:min(420px,calc(100vw - 32px));
  line-height:1.4;
}

.storage-card[data-level="warning"],
.storage-card[data-level="important"],
.storage-card[data-level="critical"]{
  border-color:color-mix(in srgb,var(--accent) 20%,var(--line));
}

@media (hover:hover) and (pointer:fine){
  .file-actions button:hover,
  .theme-switch button:hover,
  .library-tabs button:hover,
  .ghost:hover{
    border-color:rgba(128,128,128,.34);
  }
}

@media(max-width:900px){
  .upload-progress-head{
    align-items:flex-start;
  }

  .upload-progress-right{
    flex-wrap:wrap;
    justify-content:flex-end;
  }
}

@media(max-width:560px){
  .upload-progress-head{
    gap:10px;
  }

  .upload-progress-head>strong{
    white-space:normal;
  }

  .upload-progress-right{
    width:100%;
    justify-content:space-between;
  }

  .compact-action{
    min-height:38px;
    padding:8px 11px!important;
  }

  .file-title-line{
    align-items:flex-start!important;
    flex-direction:column;
    gap:6px!important;
  }

  .asset-badge{
    align-self:flex-start;
  }
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    scroll-behavior:auto!important;
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }
}
