diff --git a/public/styles.css b/public/styles.css index 867892d..f330864 100755 --- a/public/styles.css +++ b/public/styles.css @@ -1,33 +1,61 @@ -:root { --bg: #0b0c10; --fg: #f3f3f3; --accent: #d0aa5b; --muted: #8d8f95; --line: #2a2d34; } -body { margin: 0; background: var(--bg); color: var(--fg); font-family: system-ui, sans-serif; } -.topbar { position: fixed; top: 0; left: 0; right: 0; height: 48px; display: flex; align-items: center; gap: 1em; background: #111; padding: 0 1em; z-index: 100; box-shadow: 0 2px 8px rgba(0,0,0,.3); } -.topbar a { color: var(--accent); text-decoration: none; } -.topbar button { font-size: 24px; background: transparent; color: var(--accent); border: none; padding: 4px 8px; cursor: pointer; transition: color 0.2s; } -.topbar button:hover { color: var(--fg); } -.sidebar { position: fixed; top: 48px; bottom: 0; width: 85%; max-width: 320px; overflow: auto; background: #111; transition: transform .3s ease; transform: translateX(-100%); padding: 10px; } +/* --- Sidebar and Overlay fix --- */ +.sidebar { + position: fixed; + top: 48px; + bottom: 0; + left: 0; + width: 85%; + max-width: 320px; + overflow-y: auto; + background: #111; + transform: translateX(-100%); + transition: transform .3s ease; + padding: 10px; + z-index: 200; /* ABOVE overlay */ + will-change: transform; +} .sidebar.open { transform: translateX(0); } -.overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.5); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); z-index: 99; transition: opacity 0.3s; opacity: 0; } -.sidebar.open ~ .overlay { display: block; opacity: 1; } -.content { margin-top: 48px; padding: 16px; } -@media (min-width: 900px) { .sidebar { transform: none; position: static; width: 280px; height: calc(100vh - 48px); } .content { margin-left: 280px; } .overlay { display: none !important; } } -@media (max-width: 900px) { .viewer { padding: 12px; font-size: 1.05em; line-height: 1.6; } #htmlView, #mdView { min-height: calc(100vh - 60px); } } -.viewer { height: calc(100vh - 80px); overflow: auto; max-width: 820px; margin: 0 auto; } -#htmlView { width: 100%; height: 100%; border: none; background: #0b0c10; } -#mdView h1, #mdView h2, #mdView h3 { color: var(--accent); } -#mdView pre, #mdView code { overflow-x: auto; word-break: break-word; background: #111; padding: 0.5em; border-radius: 4px; color: var(--accent); } -.meta { color: var(--muted); margin-bottom: 12px; } -button#prev, button#next { background: transparent; border: 1px solid var(--line); color: var(--fg); border-radius: 8px; padding: 4px 10px; } -button#prev:hover, button#next:hover { border-color: var(--accent); color: var(--accent); } -.controls { display: flex; gap: 0.5em; margin-bottom: 8px; } -select { background: #0b0c10; color: var(--fg); border: 1px solid var(--line); border-radius: 4px; padding: 4px; } -#search { flex: 1; background: #0b0c10; color: var(--fg); border: 1px solid var(--line); border-radius: 4px; padding: 6px; } -.dir .label { display: flex; align-items: center; cursor: pointer; padding: 4px 6px; color: var(--accent); font-weight: 600; } -.dir .label::before { content: "▶"; margin-right: 6px; font-size: 0.8em; color: var(--muted); } -.dir.open .label::before { content: "▼"; } -.children { display: none; margin-left: 1em; border-left: 1px dashed var(--line); padding-left: 10px; } -.dir.open > .children { display: block; } -.file { display: block; padding: 4px 12px; color: var(--fg); text-decoration: none; border-radius: 4px; } -.file:hover { background: rgba(208,170,91,.1); } -.file.active { background: rgba(208,170,91,.2); outline: 1px solid var(--line); } -.pin { color: var(--accent); margin-right: 4px; } -.meta { color: var(--muted); font-size: 0.85em; margin-left: 6px; } \ No newline at end of file + +.overlay { + position: fixed; + inset: 0; + background: rgba(0,0,0,.45); + backdrop-filter: blur(4px); + -webkit-backdrop-filter: blur(4px); + z-index: 150; /* BELOW sidebar */ + opacity: 0; + pointer-events: none; + transition: opacity .3s; +} +.sidebar.open ~ .overlay { + opacity: 1; + pointer-events: all; +} + +.content { + margin-top: 48px; + padding: 16px; + transition: margin-left .3s ease; +} + +/* Desktop layout */ +@media (min-width: 900px) { + .sidebar { + transform: none !important; + position: static; + width: 280px; + height: calc(100vh - 48px); + z-index: auto; + } + .content { + margin-left: 280px; + } + .overlay { display: none !important; } +} + +/* Mobile layout */ +@media (max-width: 899px) { + .content { + margin-left: 0 !important; + } +} \ No newline at end of file