/* NEXUS404 control contract. This is the ONLY owner of action-control visuals.
 * Important declarations in this named layer beat legacy unlayered !important
 * rules, including mobile rules. Modules own placement, never button skins.
 * Structural card/cover buttons keep their content layout; see UI-STANDARD.md.
 */
@layer nexus-controls {
  :root {
    --ui-control-size:34px;
    --ui-control-font:13px;
    --ui-control-radius:7px;
    --ui-control-gap:6px;
    --ui-control-bg:rgba(255,255,255,.045);
    --ui-control-hover:rgba(255,255,255,.085);
    --ui-control-border:var(--line);
    --ui-control-icon:16px;
  }
  @media(max-width:800px) { :root { --ui-control-size:36px; } }
  :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary) {
    appearance:none !important;
    box-sizing:border-box !important;
    display:inline-flex;
    align-items:center !important;
    justify-content:center !important;
    gap:var(--ui-control-gap) !important;
    min-height:var(--ui-control-size) !important;
    height:var(--ui-control-size) !important;
    min-width:var(--ui-control-size) !important;
    max-width:100% !important;
    padding:0 10px !important;
    border:1px solid var(--ui-control-border) !important;
    border-radius:var(--ui-control-radius) !important;
    background:var(--ui-control-bg) !important;
    color:var(--text) !important;
    box-shadow:none !important;
    font:500 var(--ui-control-font)/18px var(--sans) !important;
    letter-spacing:0 !important;
    text-transform:none !important;
    text-decoration:none !important;
    text-align:center !important;
    white-space:nowrap !important;
    vertical-align:middle !important;
    cursor:pointer !important;
    touch-action:manipulation;
    transition:background-color .12s,border-color .12s,color .12s !important;
    transform:none !important;
  }
  :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary) > svg {
    width:var(--ui-control-icon) !important; height:var(--ui-control-icon) !important;
    flex:none !important; pointer-events:none;
  }
  :where([data-ui-icon],.ui-button--icon,.ui-action-icon,.kb-icon,.vpn-icon-button,.reader-card-edit,.chat-icon,.dialog-close,.nexus-screen-close,.home-open,.home-add,.wave-favorite,.wave-track-menu,.storage-menu > summary,.home-actions-menu > summary,.audio-play,.audio-download,.workspace-logout,.reveal,#waveCreate,#waveUploadButton,#waveEditRelease,#waveMix,#wavePlay,#cinemaAdd,#readerEdit,#readerPrev,#readerNext,#waveFavorite,#waveToggle,#waveNext,#wavePrev,#waveClose,#waveExpand,#waveShuffle,#waveRepeat,.storage-delete,#hubUpdateRefresh,#nodeUpdateRefresh,#waveMinimize) {
    width:var(--ui-control-size) !important; min-width:var(--ui-control-size) !important;
    max-width:var(--ui-control-size) !important; height:var(--ui-control-size) !important;
    min-height:var(--ui-control-size) !important; padding:0 !important;
    flex:0 0 var(--ui-control-size) !important;
  }
  :where(.dialog-close,.nexus-screen-close) { font-size:22px !important; font-weight:400 !important; }
  :where(.ui-button--primary,.settings-primary,.balance-primary,button[type=submit]) {
    background:var(--accent-soft) !important; color:var(--accent) !important;
    border-color:rgba(var(--accent-rgb),.55) !important;
  }
  :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary):is([aria-pressed=true],[aria-selected=true],[aria-current]:not([aria-current=false]),.is-active) {
    background:var(--button-active) !important; color:var(--accent) !important;
    border-color:var(--accent) !important;
  }
  :where(.ui-button--danger,.storage-danger,.chat-danger,.balance-danger,
    button[aria-label^="Удалить"],button[title^="Удалить"],button[data-rule-remove],
    #readerDelete,#readerDeleteConfirm,#cinemaDelete,#trophyDelete,#articleDelete,#galleryDelete) {
    background:var(--ui-control-bg) !important; color:var(--red) !important; border-color:color-mix(in srgb,var(--red) 45%,var(--line)) !important;
  }
  @media(hover:hover) {
    :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary):not(:disabled):not([aria-disabled=true]):hover {
      background:var(--ui-control-hover) !important; border-color:var(--line-strong) !important;
    }
    :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary):is([aria-pressed=true],[aria-selected=true],[aria-current]:not([aria-current=false])):hover {
      background:var(--button-active) !important; border-color:var(--accent) !important;
    }
  }
  :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary):not(:disabled):not([aria-disabled=true]):active { background:var(--button-active) !important; }
  :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary):focus-visible { outline:2px solid var(--accent) !important; outline-offset:2px !important; }
  :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary):is(:disabled,[aria-disabled=true]) { opacity:.45 !important; cursor:not-allowed !important; }
  :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary)[aria-busy=true] { cursor:progress !important; }
  :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary)[hidden] { display:none !important; }
  :where(.ui-button--wrap,.update-target) {
    height:auto !important; white-space:normal !important; overflow-wrap:anywhere !important;
    padding:6px 10px !important;
  }
  :where(.update-target) { display:grid !important; text-align:left !important; }
  #updateTargets .update-target { width:180px !important; min-width:180px !important; max-width:180px !important; flex:0 0 180px !important; padding:7px 10px !important; }

  :where(.ui-actions,.vpn-actions,.server-actions,.dialog-actions,.ui-dialog-actions,.nexus-question-actions,.balance-actions,.chat-actions,.security-actions,.trophy-sync-actions,.hub-update-actions,.node-update-actions) {
    gap:var(--ui-control-gap) !important; align-items:center;
  }
  :where(.ui-actions) { display:flex; flex-wrap:wrap; }
  :where(.trophy-tabs,.anime-tabs,.vpn-tabs) { gap:var(--ui-control-gap) !important; }
  #waveNav > a:not([hidden]) { display:flex !important; }
  :where(.ui-icon,.ui-control-icon,.wave-control-icon) { stroke-width:1.75 !important; stroke-linecap:round !important; stroke-linejoin:round !important; }
  .wave-track-play .ui-control-icon { width:16px; height:16px; }
  .wave-liked-art .ui-control-icon { width:45%; height:45%; }
  .ui-control-icon { fill:none !important; stroke:currentColor; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; }
  [data-ui-icon=heart][aria-pressed=true] .ui-control-icon { fill:currentColor !important; }
  :where(.content-toolbar,.reader-toolbar,.storage-toolbar,.projects-toolbar,.project-toolbar,.kb-tools,.wave-toolbar,.trophy-search-row,.anime-toolbar,.rt-toolbar,.activity-toolbar) > :where(input:not([type=checkbox]):not([type=radio]):not([type=file]),select:not([multiple])) {
    height:var(--ui-control-size) !important; min-height:var(--ui-control-size) !important;
    border-radius:var(--ui-control-radius) !important;
  }
  #wavePlayer:not(.expanded) .wave-player-row { column-gap:6px; }
  @media(max-width:650px) {
    html body.wave-shell #wavePlayer:not(.expanded) .wave-player-row { grid-template-columns:36px minmax(0,1fr) 36px 36px 36px !important; }
  }
  .kb-tools:has(> #kbBoard) { display:flex !important; flex-wrap:nowrap !important; gap:6px !important; }
  .kb-tools > #kbBoard { width:0 !important; min-width:0 !important; flex:1 1 0 !important; }
  @media(max-width:800px) {
    .vpn-header-controls .vpn-tabs { display:flex !important; flex-wrap:nowrap !important; overflow-x:auto; padding-bottom:2px !important; }
    .vpn-header-controls .vpn-tabs button { flex:0 0 auto !important; }
  }
  /* Menus are rows, not tiny icon controls. */
  :where(.storage-menu,.home-actions-menu) > :where(div) > button { justify-content:flex-start !important; }
  @media(prefers-reduced-motion:reduce) { :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary) { transition:none !important; } }
  html[data-orbit-reduced=true] :where(button:not(.reader-book-open,.article-card,.gallery-card,.project-card,.trophy-card,.wave-card,.wave-player-art,.wave-player-info,.wave-track-start,.wave-track-title,.kb-card-title,.kb-text-button,.storage-folder-open,.workspace-user,.trophy-day,.anime-day,[data-ui=surface]),.ui-button,.install-btn,.login-btn,.storage-upload,.projects-upload,.reader-upload,.content-upload,.audio-download,.reader-toolbar > a,.trophy-tabs > a,.anime-tabs > a,#waveNav > a,.storage-menu > summary,.home-actions-menu > summary) { transition:none !important; }
  /* Single-line fields share the action height. Multiline and embedded fields
     keep their own content layout; do not size checkboxes as text inputs. */
  :where(input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file],[type=hidden]),select:not([multiple]):is(:not([size]),[size='0'],[size='1'])):not(.workspace-search input,#hubQuery,[data-ui=inline-field]) {
    box-sizing:border-box !important;
    height:var(--ui-control-size) !important;
    min-height:var(--ui-control-size) !important;
    max-height:var(--ui-control-size) !important;
    padding-block:0 !important;
    border-radius:var(--ui-control-radius) !important;
    font-family:var(--sans) !important;
    font-size:var(--ui-control-font) !important;
    line-height:normal !important;
    margin-block:0 !important;
  }
  :where(input[type=checkbox],input[type=radio]) {
    box-sizing:border-box !important; width:16px !important; height:16px !important;
    min-width:16px !important; min-height:16px !important; max-height:16px !important;
    padding:0 !important; margin:0 !important; flex:0 0 16px !important; vertical-align:middle !important;
  }
  /* These are rows of fields, not grids of independent cards. The input edges
     stay aligned when one label wraps or a checkbox has no caption above it. */
  :where(.ui-form-grid,.vpn-fields,.balance-form-grid,.chat-settings-grid,.server-form,.maintenance-row) {
    align-items:end !important; row-gap:10px !important;
  }
  :where(.ui-form-grid,.vpn-fields,.balance-form-grid,.chat-settings-grid,.server-form,.maintenance-row) > label {
    margin-block:0 !important; min-width:0;
  }
  :where(.ui-form-grid,.vpn-fields,.balance-form-grid,.chat-settings-grid,.server-form,.maintenance-row) > label:has(> input:is([type=checkbox],[type=radio])) {
    display:flex; align-items:center !important; align-self:end !important;
    min-height:var(--ui-control-size) !important; gap:8px !important;
  }
  :where(.hub-search-field) { box-sizing:border-box; height:var(--ui-control-size) !important; }
  #hubQuery { height:calc(var(--ui-control-size) - 2px) !important; min-height:0 !important; padding-block:0 !important; }

  @media(max-width:800px) {
    :where(input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file],[type=hidden]),select:not([multiple]):is(:not([size]),[size='0'],[size='1'])):not(.workspace-search input,#hubQuery,[data-ui=inline-field]) { font-size:16px !important; }
  }

}
