/* ─── RESET & BASE ─────────────────────────────────────────────────────────── */ * { box-sizing: border-box; margin: 0; padding: 0; } html, body { height: 100%; } body { font-family: Arial, sans-serif; background-color: #eeeeee; color: #333; overflow: hidden; /* inner containers will scroll */ } /* ─── HEADER & NAVIGATION ─────────────────────────────────────────────────── */ .main-header { background-color: #232F3E; display: flex; align-items: center; padding: 0.5rem 1rem; position: fixed; top: 0; left: 0; right: 0; z-index: 1000; } .logo { height: 40px; margin-right: 1rem; } .header-title { color: #fff; font-size: 1.2rem; font-weight: bold; margin-right: auto; } .nav-btn { background-color: #FF9900; color: #111; border: none; border-radius: 5px; padding: 0.5rem 1rem; margin-left: 0.5rem; cursor: pointer; font-weight: bold; } .nav-btn:hover { background-color: #e48f00; } /* ─── PAGE CONTAINER ───────────────────────────────────────────────────────── */ .page-container { position: absolute; top: 70px; /* header height */ left: 0; right: 0; bottom: 0; overflow: auto; background: #fff; } /* ─── HEATMAP PAGE ─────────────────────────────────────────────────────────── */ .page-container.heatmap { padding: 0; /* we’ll handle padding inside */ } #heatmap-container { position: relative; width: 100%; height: 100%; overflow: auto; background-color: #f9f9f9; } /* The SVG (or container) for everything */ .map-svg-container { min-width: 2000px; /* adjust to map width */ min-height: 400px; /* adjust to map height */ transform-origin: 0 0; cursor: grab; } .map-svg-container:active { cursor: grabbing; } /* Dock-door squares */ .dock-door { fill: #ccc; stroke: #999; stroke-width: 1; cursor: pointer; } .dock-door:hover { stroke: #FF9900; stroke-width: 2; } /* Area rectangles */ .area-rect { fill: rgba(200,200,200,0.3); stroke: #999; stroke-width: 1; } .area-rect label { font-size: 0.85rem; font-weight: bold; } /* Floor selector overlay */ .floor-selector { position: absolute; top: 1rem; right: 1rem; background: rgba(255,255,255,0.9); padding: 0.5rem; border-radius: 6px; box-shadow: 0 1px 4px rgba(0,0,0,0.2); } .floor-selector label { margin-right: 0.75rem; font-size: 0.9rem; cursor: pointer; } /* ─── GENERIC FORM STYLES (for input.html) ───────────────────────────────── */ .form-input, .form-textarea, select { width: 90%; margin: 0.5rem auto; display: block; padding: 0.75rem; border: 1px solid #ccc; border-radius: 6px; font-size: 1rem; } fieldset { border: 1px solid #ccc; border-radius: 6px; margin: 1rem 0; padding: 1rem; } legend { padding: 0 0.5rem; font-weight: bold; } .big-button { background-color: #28a745; color: white; padding: 0.75rem 1.5rem; border: none; border-radius: 6px; cursor: pointer; font-size: 1rem; margin: 1rem auto; display: block; } .big-button:hover { background-color: #218838; } /* ─── TRENDS PAGE STYLES (for reference) ──────────────────────────────────── */ /* (These go in same file; keep them here so you don’t lose anything.) */ .page-container.trends { display: flex; flex-direction: column; height: 100%; } .page-container.trends > h1 { margin: 1rem; } .trends-controls { display: flex; align-items: center; padding: 0 1rem; } #timeframe-slider { flex: 1; } #timeframe-label { margin-left: 1rem; } .trends-metrics { padding: 0 1rem; margin-bottom: 1rem; } .chart-container { flex: 0 0 50%; position: relative; margin: 0 1rem 1rem; } .chart-container canvas { width: 100% !important; height: 100% !important; } .table-wrapper { flex: 0 0 45%; margin: 0 1rem 1rem; overflow: auto; border: 1px solid #ddd; } .table-wrapper table { width: 100%; border-collapse: collapse; table-layout: fixed; } .table-wrapper th, .table-wrapper td { padding: 8px; text-align: center; border: 1px solid #ccc; } .table-wrapper thead th { background: #f2f2f2; position: sticky; top: 0; z-index: 2; cursor: pointer; } .table-wrapper tbody tr:nth-child(even) { background: #fafafa; } .sortable::after { content: '▲▼'; font-size: 0.6em; margin-left: 4px; color: #888; } .sortable.asc::after { content: '▲'; } .sortable.desc::after { content: '▼'; }