/* iPhone Safari hardening layer.
   Loaded last so every applet inherits the same viewport, keyboard, safe-area,
   scrolling, form-control, and touch-target contract. */

:root {
  --arrange-visual-width: 100vw;
  --arrange-visual-height: 100vh;
  --arrange-visual-left: 0px;
  --arrange-visual-top: 0px;
  --arrange-keyboard-inset: 0px;
  --arrange-mobile-taskbar-height: 52px;
}

@supports (height: 100dvh) {
  :root {
    --arrange-visual-width: 100dvw;
    --arrange-visual-height: 100dvh;
  }
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

@media (max-width: 768px), (max-width: 1024px) and (pointer: coarse) {
  html,
  body {
    max-width: 100%;
    overscroll-behavior-x: none;
  }

  body.windowed-layout .layout {
    width: 100% !important;
    max-width: 100% !important;
    padding-bottom: calc(var(--arrange-mobile-taskbar-height) + 12px + env(safe-area-inset-bottom, 0px)) !important;
    scroll-padding-bottom: calc(var(--arrange-mobile-taskbar-height) + 12px + env(safe-area-inset-bottom, 0px));
    overscroll-behavior-y: contain;
  }

  .app-window .window-body {
    max-height: min(75dvh, calc(var(--arrange-visual-height) - 152px)) !important;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  .window-taskbar {
    bottom: 0;
    min-height: calc(var(--arrange-mobile-taskbar-height) + env(safe-area-inset-bottom, 0px));
    transition: transform 160ms ease, opacity 120ms ease;
  }

  .wm-start-menu {
    bottom: calc(var(--arrange-mobile-taskbar-height) + env(safe-area-inset-bottom, 0px));
    max-height: min(72dvh, calc(var(--arrange-visual-height) - var(--arrange-mobile-taskbar-height) - 16px));
    padding-right: max(6px, env(safe-area-inset-right, 0px));
    padding-bottom: max(8px, env(safe-area-inset-bottom, 0px));
    padding-left: max(6px, env(safe-area-inset-left, 0px));
    overscroll-behavior: contain;
  }

  .modal-overlay {
    box-sizing: border-box;
    top: var(--arrange-visual-top);
    left: var(--arrange-visual-left);
    width: var(--arrange-visual-width);
    height: var(--arrange-visual-height);
    max-height: var(--arrange-visual-height);
    z-index: 10020 !important;
    padding-top: max(8px, env(safe-area-inset-top, 0px));
    padding-right: max(8px, env(safe-area-inset-right, 0px));
    padding-bottom: max(8px, env(safe-area-inset-bottom, 0px));
    padding-left: max(8px, env(safe-area-inset-left, 0px));
    overflow: hidden;
  }

  .modal-overlay > .modal-content {
    box-sizing: border-box;
    width: 100% !important;
    max-width: 100% !important;
    max-height: calc(var(--arrange-visual-height) - max(16px, env(safe-area-inset-top, 0px)) - max(16px, env(safe-area-inset-bottom, 0px))) !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    scroll-padding-bottom: max(16px, env(safe-area-inset-bottom, 0px));
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
  select,
  .sim-input,
  textarea,
  [contenteditable="true"] {
    min-height: 44px !important;
    font-size: 16px !important;
  }

  button,
  [role="button"],
  summary,
  .close-btn {
    min-height: 44px !important;
    min-width: 44px !important;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }

  .close-btn {
    display: inline-flex;
    min-width: 44px;
    align-items: center;
    justify-content: center;
  }

  input[type="range"] {
    min-height: 44px !important;
    touch-action: pan-x;
  }

  label:has(> input[type="checkbox"]),
  label:has(> input[type="radio"]) {
    min-height: 44px;
  }

  .tree-item,
  .hub-disc-info,
  .notes-list-item,
  .help-topic-card,
  .help-topic-item,
  .navigator-search-result {
    box-sizing: border-box;
    min-height: 44px !important;
    touch-action: manipulation;
  }

  .cutsheet-manager-tabs button,
  .cutsheet-manager-actions button,
  .cutsheet-manager-more summary,
  .workbench-btn,
  .wb-view-btn,
  .wb-dock-btn,
  .adj-guide-button,
  .adj-alternatives-launch,
  .adj-graph-tool,
  .adj-howto-close,
  .rm-icon-btn,
  .rm-menu-btn,
  .rm-inspector-field {
    min-height: 44px !important;
  }

  .adj-graph-tool,
  .rm-icon-btn,
  .adj-howto-close {
    min-width: 44px !important;
  }

  .workbench-panel-dock,
  .adj-slimbar,
  .adj-graph-tools,
  .rm-toolbar,
  .rm-table-wrap {
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
  }

  .rm-table-wrap {
    touch-action: pan-x pan-y;
  }

  .rm-data-row {
    height: 44px !important;
  }

  [data-win-id="adjacency-planner-hub"] .window-body {
    height: clamp(280px, calc(var(--arrange-visual-height) - 138px), 720px) !important;
    max-height: none !important;
  }

  .app-window[data-win-id="adjacency-planner-hub"] {
    min-height: clamp(344px, calc(var(--arrange-visual-height) - 96px), 780px) !important;
    scroll-margin-top: max(6px, env(safe-area-inset-top, 0px));
  }

  [data-win-id="adjacency-planner-hub"] .dynamic-window-content,
  [data-win-id="adjacency-planner-hub"] #adjacency-planner-root,
  [data-win-id="adjacency-planner-hub"] .adj-root.adj-shell {
    height: 100% !important;
    min-height: 0 !important;
  }

  /* The desktop hand keeps most cards tucked below the work surface until a
     hover raises one. Touch has no hover, so that treatment left a perfectly
     valid empty Graph/Block Plan looking broken and gave users no visible way
     to place their first room. Keep one complete, reachable card above the
     taskbar on mobile instead. */
  [data-win-id="adjacency-planner-hub"] .adj-plan-preview,
  [data-win-id="adjacency-planner-hub"] .adj-graph-canvas-wrap {
    min-height: 300px;
  }

  [data-win-id="adjacency-planner-hub"] #adj-graph-hand .adj-room-hand,
  [data-win-id="adjacency-planner-hub"] .adj-room-hand--block {
    z-index: 32;
    right: 8px !important;
    bottom: calc(var(--arrange-mobile-taskbar-height) + 8px + env(safe-area-inset-bottom, 0px)) !important;
    left: 8px !important;
    width: auto !important;
    height: 58px !important;
  }

  [data-win-id="adjacency-planner-hub"] #adj-graph-hand .adj-room-hand-sort,
  [data-win-id="adjacency-planner-hub"] .adj-room-hand--block .adj-room-hand-sort {
    display: none;
  }

  [data-win-id="adjacency-planner-hub"] #adj-graph-hand .adj-room-hand-fan,
  [data-win-id="adjacency-planner-hub"] .adj-room-hand--block .adj-room-hand-fan {
    left: 0;
    height: 58px;
  }

  [data-win-id="adjacency-planner-hub"] #adj-graph-hand .adj-room-hand-card,
  [data-win-id="adjacency-planner-hub"] .adj-room-hand--block .adj-room-hand-card {
    bottom: 0;
    width: min(172px, calc(100% - 18px));
    height: 56px;
    border-radius: 8px;
    opacity: 0.96;
  }

  [data-win-id="adjacency-planner-hub"] .adj-plan-editor.is-empty-hand .adj-preview-label {
    z-index: 33;
    top: auto;
    bottom: calc(var(--arrange-mobile-taskbar-height) + 74px + env(safe-area-inset-bottom, 0px));
    max-width: calc(100% - 16px);
  }

  html.arrange-keyboard-open .window-taskbar {
    opacity: 0;
    pointer-events: none;
    transform: translate3d(0, 110%, 0);
  }

  html.arrange-keyboard-open body.windowed-layout .layout {
    padding-bottom: max(12px, env(safe-area-inset-bottom, 0px)) !important;
  }

  html.arrange-keyboard-open .modal-overlay {
    align-items: flex-start;
  }
}

@media (max-height: 520px) and (pointer: coarse) {
  body.windowed-layout header {
    min-height: 40px;
  }

  .app-window .window-body {
    max-height: calc(var(--arrange-visual-height) - 116px) !important;
  }

  [data-win-id="adjacency-planner-hub"] .window-body {
    height: max(260px, calc(var(--arrange-visual-height) - 112px)) !important;
  }
}
