/* ===== Mobile Responsive (< 768px) ===== */ /* ── Global ── */ @media (max-width: 768px) { html { font-size: 18px; } /* Header */ .page-header { padding: 8px 12px; min-height: 44px; gap: 6px; } .page-header h2 { font-size: 0.95rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex-shrink: 1; } .header-right { gap: 6px; flex-shrink: 0; } .anlas-display { font-size: 0.72rem; padding: 3px 6px; } .header-logout-btn { font-size: 0.85rem; padding: 2px 4px; } .queue-status { display: none; } /* Sidebar */ .sidebar { width: 260px; } .sidebar-overlay.active { display: block; } /* ── Generate Page ── */ .gen-layout { flex-direction: column; } .gen-params { width: 100% !important; max-width: none !important; min-width: 0 !important; max-height: none; border-right: none; flex: 0 0 auto; max-height: 55%; overflow: hidden; } /* Make params scrollable with limited initial height, expandable via a toggle */ .gen-params-scroll { padding: 12px; overflow-y: auto; } .gen-resizer { display: none !important; } .gen-result { min-height: 200px; flex: 1 1 0%; } .gen-result-image { padding: 8px; } .gen-result-info { padding: 8px 12px; max-height: 120px; } /* Seed row */ .seed-row { flex-wrap: nowrap; } .seed-row .form-input { min-width: 0; } /* Collapsible sections */ .collapsible-content.open { max-height: 8000px; } /* Generate button */ .btn-generate { padding: 14px; font-size: 1.05rem; position: sticky; bottom: 0; z-index: 5; } /* ── Director Tools Page ── */ .dt-layout { flex-direction: column; } .dt-left { border-right: none !important; flex: 0 0 auto; max-height: 55%; overflow: hidden; } .dt-left .dt-panel-body { overflow-y: auto; } .dt-right { flex: 1 1 0%; min-height: 200px; } .dt-controls { max-height: none; overflow-y: visible; } .dt-req-type-row { flex-wrap: wrap; } .dt-btn-row { flex-wrap: wrap; } .dt-btn-row .btn-mask { min-width: 0; font-size: 0.72rem; padding: 5px 4px; } .dt-send-row { padding: 6px 10px; } .dt-send-row .btn-mask { font-size: 0.72rem; padding: 5px 4px; } .dt-generate-bar { padding: 8px 12px; } .dt-output-img-large { max-height: 35vh; } /* ── PNG Info Page ── */ .pi-layout { flex-direction: column; } .pi-left { max-width: none !important; border-right: none !important; flex: 0 0 auto; max-height: 55%; overflow: hidden; } .pi-right { flex: 1 1 0%; min-height: 200px; } .pi-preview-img { max-height: 30vh; } .pi-raw-text { max-height: 120px; } /* ── Tagger Page ── */ .tagger-layout { flex-direction: column; } .tagger-left { max-width: none !important; border-right: none !important; flex: 0 0 auto; max-height: 55%; overflow: hidden; } .tagger-left .tagger-panel-body { overflow-y: auto; } .tagger-right { flex: 1 1 0%; min-height: 200px; } .tagger-preview-img { max-height: 25vh; } .tagger-param-row { flex-wrap: wrap; gap: 4px; } /* ── History Page ── */ .history-layout { flex-direction: column; } .history-left { flex: 1; min-height: 0; } .history-right { width: 100% !important; max-width: none !important; min-width: 0 !important; border-left: none !important; border-top: 1px solid var(--border); flex-shrink: 0; } #history-grid { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 3px; padding: 4px; } .history-detail-img-wrap { max-height: 25vh; } .history-detail-img-wrap img { max-height: 25vh; } .history-action-bar { padding: 6px 8px; } .history-btn-row { gap: 3px; } .history-btn-row .btn-mask { font-size: 0.68rem; padding: 4px 3px; } .history-search-bar { padding: 6px 8px; } /* ── Cloud Page ── */ .cloud-layout { flex-direction: column; } .cloud-sidebar { width: 100% !important; min-width: 0 !important; max-height: 70px; border-right: none !important; border-bottom: 1px solid var(--border); flex-shrink: 0; } .cloud-sidebar-body { display: flex; overflow-x: auto; overflow-y: hidden; gap: 0; } .cloud-date-item { white-space: nowrap; border-left: none; border-bottom: 3px solid transparent; padding: 6px 10px; font-size: 0.75rem; } .cloud-date-item.active { border-left-color: transparent; border-bottom-color: var(--accent); } .cloud-main { flex: 1; min-height: 0; } #cloud-grid { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 3px; padding: 4px; } .cloud-detail-panel { width: 100% !important; max-width: none !important; min-width: 0 !important; border-left: none !important; border-top: 1px solid var(--border); flex-shrink: 0; } /* ── Settings Page ── */ .settings-scroll { padding: 12px; } .settings-section { padding: 12px 14px; } .settings-row { flex-wrap: wrap; gap: 6px; } .settings-row label { flex: 1; min-width: 120px; } /* ── Tag Autocomplete ── */ .tac-popup { max-width: calc(100vw - 16px); min-width: 220px; left: 8px !important; max-height: 200px; } .tac-item { padding: 6px 8px; font-size: 0.78rem; } .tac-item-name { max-width: 140px; } .tac-item-zh { font-size: 0.68rem; } /* ── Upload Dropzone ── */ .upload-dropzone { padding: 12px; } .upload-dropzone-text { font-size: 0.8rem; } .upload-icon { font-size: 1.2rem; } /* ── Vibe Items ── */ .vibe-ref-item, .vibe-file-item { flex-direction: column; align-items: stretch; } .vibe-ref-thumb-wrap, .vibe-file-thumb-wrap { width: 100%; height: auto; max-height: 80px; } .vibe-ref-thumb, .vibe-file-thumb { width: 100%; height: auto; max-height: 80px; object-fit: contain; } /* ── Character Grid ── */ .char-grid { max-width: 130px; } /* ── Extra Input ── */ .extra-preview-img { max-height: 250px; } .extra-btn-row { flex-wrap: wrap; } .extra-btn-row .btn-mask { font-size: 0.75rem; min-width: 0; } /* ── Mode Switch ── */ .mode-label { padding: 7px 8px; font-size: 0.8rem; } /* ── Slider ── */ .slider-value { min-width: 36px; font-size: 0.78rem; padding: 3px 4px; } /* ── Misc ── */ [data-tooltip]::after { display: none; } .form-divider { margin: 12px 0; } } /* ===== Extra small screens (< 400px) ===== */ @media (max-width: 400px) { html { font-size: 12px; } .page-header h2 { font-size: 0.85rem; } .anlas-display { display: none; } .gen-params-scroll { padding: 10px 8px; max-height: 50vh; } #history-grid, #cloud-grid { grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); } .settings-section { padding: 10px; } .tac-popup { max-height: 160px; } } /* ===== Touch improvements ===== */ @media (hover: none) and (pointer: coarse) { /* Larger touch targets */ .nav-item { padding: 12px 14px; } .btn-icon { width: 40px; height: 40px; } .tac-item { padding: 8px 10px; min-height: 36px; } /* Show remove buttons always on touch */ .vibe-ref-remove, .vibe-file-download { opacity: 1; } .history-card { -webkit-tap-highlight-color: transparent; } /* Prevent zoom on input focus */ input[type="text"], input[type="number"], input[type="search"], textarea, select { font-size: 16px !important; } } /* ===== Mobile Toast ===== */ .mobile-toast { display: none; position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 8px 16px; font-size: 0.8rem; color: var(--text-secondary); z-index: 10001; box-shadow: 0 4px 20px var(--shadow); align-items: center; gap: 6px; white-space: nowrap; max-width: calc(100vw - 32px); overflow: hidden; text-overflow: ellipsis; } .mobile-toast.show { display: flex; }