/* ── Develop banner ── */ .develop-banner { position: fixed; top: 26px; left: -52px; width: 200px; background: rgba(194, 120, 20, 0.5); color: rgba(255, 255, 255, 0.95); text-align: center; transform: rotate(-45deg); z-index: 9999; pointer-events: none; } .develop-banner-text { display: block; padding: 6px 0; font-family: var(--mono); font-size: 0.62rem; font-weight: 600; letter-spacing: 0.2em; } /* ── Sidebar ── */ html { scrollbar-gutter: stable; overflow-y: scroll; } .sidebar { position: fixed; top: 0; left: 0; bottom: 0; width: var(--sidebar, 220px); min-width: var(--sidebar, 220px); max-width: var(--sidebar, 220px); background: var(--surface); border-right: 1px solid var(--border); display: flex; flex-direction: column; padding: 1.5rem 0.75rem; z-index: 10; } .sidebar-logo { padding: 0 0.5rem 1.5rem; border-bottom: 1px solid var(--border); margin-bottom: 1rem; } .sidebar-logo a { display: flex; align-items: center; gap: 0.4rem; } .sidebar-logo-img { width: 26px; height: auto; flex-shrink: 0; } .sidebar-logo h1 { margin: 0; font-size: 1.25rem; font-weight: 700; letter-spacing: -0.02em; } .sidebar-logo h1 span { color: var(--accent); } .sidebar-section-label { font-family: var(--mono); font-size: 0.6rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-dim); padding: 0 0.5rem; margin-bottom: 0.35rem; margin-top: 0.25rem; } .sidebar-nav { list-style: none; margin: 0; padding: 0; } .sidebar-nav li + li { margin-top: 0.15rem; } .sidebar-nav a { white-space: nowrap; display: flex; align-items: center; gap: 0.6rem; padding: 0.45rem 0.6rem; border-radius: var(--radius); font-family: var(--mono); font-size: 0.78rem; color: var(--text-dim); text-decoration: none; transition: background 0.12s, color 0.12s; } .sidebar-nav a:visited { color: var(--text-dim); } .sidebar-nav a:hover { background: var(--surface2); color: var(--text); } .sidebar-nav a.active, .sidebar-nav a.active:visited { background: var(--surface2); color: var(--accent); } .sidebar-nav a svg { flex-shrink: 0; } .sidebar-count { font-size: 0.65rem; color: var(--text-dim); margin-left: auto; min-width: 2ch; text-align: right; } .sidebar-divider { border: none; border-top: 1px solid var(--border); margin: 0.85rem 0; } .sidebar-bottom { margin-top: auto; } .disk-warning { display: flex; align-items: center; gap: 0.4rem; padding: 0.4rem 0.6rem; border-radius: var(--radius); font-family: var(--mono); font-size: 0.7rem; margin-bottom: 0.5rem; background: rgba(200,160,58,0.12); border: 1px solid rgba(200,160,58,0.3); color: #c8a03a; } .disk-warning.critical { background: rgba(200,90,58,0.12); border-color: rgba(200,90,58,0.3); color: #c85a3a; } .btn-rescan { display: flex; align-items: center; justify-content: center; gap: 0.5rem; width: 100%; padding: 0.4rem 0.6rem; background: none; border: 1px solid var(--border); border-radius: var(--radius); font-family: var(--mono); font-size: 0.7rem; color: var(--text-dim); cursor: pointer; transition: background 0.12s, color 0.12s; margin-top: 0.5rem; } .btn-rescan:hover { background: var(--surface2); color: var(--text); } .btn-rescan:disabled { opacity: 0.5; cursor: not-allowed; } .backup-status-bar { display: flex; align-items: center; gap: 0.45rem; width: 100%; padding: 0.35rem 0.6rem; border-radius: var(--radius); font-family: var(--mono); font-size: 0.68rem; color: var(--accent); text-decoration: none; transition: background 0.12s, opacity 0.12s; margin-bottom: 0.25rem; } .backup-status-bar:hover { background: var(--surface2); opacity: 0.85; } .backup-dot { flex-shrink: 0; width: 7px; height: 7px; border-radius: 50%; background: var(--border); } .backup-dot.dot-ok { background: var(--ok, #7fbe7f); } .backup-dot.dot-err { background: var(--err, #d0674c); } .backup-dot.dot-dim { background: var(--text-dim); opacity: 0.5; } .backup-dot.dot-running { background: var(--warn, #d2b063); animation: backup-pulse 1.2s ease-in-out infinite; } @keyframes backup-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } .backup-status-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ── Mobile hamburger ──────────────────────────────────────────────────── */ .sidebar-toggle { display: none; position: fixed; top: 0.75rem; left: 0.75rem; z-index: 50; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); width: 36px; height: 36px; align-items: center; justify-content: center; cursor: pointer; color: var(--text-dim); transition: color 0.15s, border-color 0.15s; padding: 0; } .sidebar-toggle:hover { color: var(--text); border-color: var(--text-faint); } .sidebar-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 9; } @media (max-width: 768px) { .sidebar-toggle { display: flex; } .sidebar { transform: translateX(-100%); transition: transform 0.22s ease; z-index: 11; } .sidebar.open { transform: translateX(0); } .sidebar-overlay.open { display: block; } }