/* Baustelle PWA — Mobile-first CSS */ * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; } html, body { margin: 0; padding: 0; height: 100%; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #1a1a1f; color: #f0f0f0; -webkit-font-smoothing: antialiased; overscroll-behavior-y: contain; } #app { display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh; } #topbar { display: flex; align-items: center; gap: 12px; padding: 14px 16px; background: #25252b; border-bottom: 1px solid #333; position: sticky; top: 0; z-index: 10; } #topbar h1 { flex: 1; margin: 0; font-size: 17px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .icon-btn { background: transparent; border: none; color: #f0f0f0; font-size: 22px; padding: 4px 8px; cursor: pointer; -webkit-appearance: none; } #status-badge { font-size: 14px; } #main { flex: 1; padding: 16px; overflow-y: auto; -webkit-overflow-scrolling: touch; } #bottom-nav { display: flex; background: #25252b; border-top: 1px solid #333; padding-bottom: env(safe-area-inset-bottom); } #bottom-nav button { flex: 1; background: transparent; border: none; color: #888; padding: 14px 8px; font-size: 12px; cursor: pointer; } #bottom-nav button.active { color: #7aa2f7; } /* ----- Login ----- */ .login-form { max-width: 360px; margin: 60px auto 0; text-align: center; } .login-form h2 { margin: 0 0 24px; font-weight: 600; } .login-form input { display: block; width: 100%; padding: 16px; margin-bottom: 12px; border-radius: 8px; border: 1px solid #444; background: #2a2a30; color: #f0f0f0; font-size: 16px; -webkit-appearance: none; } .login-form input:focus { outline: 2px solid #337ab7; } /* ----- Buttons ----- */ .btn { display: block; width: 100%; padding: 16px 20px; font-size: 16px; font-weight: 600; border-radius: 10px; border: none; cursor: pointer; background: #337ab7; color: #fff; margin: 8px 0; -webkit-appearance: none; transition: transform 0.1s; } .btn:active { transform: scale(0.97); } .btn-secondary { background: #2a2a30; border: 1px solid #444; color: #f0f0f0; } .btn-large { padding: 22px; font-size: 18px; } .hidden-input { display: none; } /* ----- Order List ----- */ .search-bar { margin-bottom: 12px; } .search-bar input { width: 100%; padding: 12px 16px; border-radius: 24px; border: 1px solid #444; background: #2a2a30; color: #f0f0f0; font-size: 15px; -webkit-appearance: none; } .order-card { background: #25252b; border-radius: 10px; padding: 14px 16px; margin-bottom: 10px; cursor: pointer; transition: background 0.15s; } .order-card:active { background: #2f2f35; } .order-card .ref { font-weight: 600; color: #7aa2f7; font-size: 14px; } .order-card .name { font-size: 15px; margin-top: 4px; } .order-card .meta { display: flex; justify-content: space-between; margin-top: 6px; font-size: 12px; opacity: 0.7; } .order-card .badge { background: #337ab7; color: #fff; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; } /* ----- Order Detail ----- */ .detail-section { background: #25252b; border-radius: 10px; padding: 14px 16px; margin-bottom: 12px; } .detail-section h3 { margin: 0 0 8px; font-size: 13px; text-transform: uppercase; color: #7aa2f7; letter-spacing: 0.5px; } .detail-section p { margin: 4px 0; font-size: 14px; } .detail-section .label { opacity: 0.6; font-size: 12px; } .photo-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 10px; } .photo-grid .thumb { aspect-ratio: 1; background: #2a2a30; border-radius: 6px; overflow: hidden; position: relative; } .photo-grid .thumb img { width: 100%; height: 100%; object-fit: cover; } .photo-grid .thumb-placeholder { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 24px; opacity: 0.5; } /* ----- Toast ----- */ #toast-container { position: fixed; top: 16px; left: 16px; right: 16px; z-index: 100; pointer-events: none; } .toast { background: #5cb85c; color: #fff; padding: 14px 16px; border-radius: 8px; margin-bottom: 8px; text-align: center; box-shadow: 0 4px 16px rgba(0,0,0,0.4); animation: slide-down 0.2s; pointer-events: auto; } .toast.error { background: #d9534f; } .toast.warn { background: #f0ad4e; } @keyframes slide-down { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; } } .empty-state { text-align: center; padding: 40px 20px; opacity: 0.6; } .empty-state .icon { font-size: 48px; margin-bottom: 12px; } /* Loader */ .loader { text-align: center; padding: 40px; opacity: 0.6; }