diff --git a/public/styles.css b/public/styles.css index f330864..82e4740 100755 --- a/public/styles.css +++ b/public/styles.css @@ -1,4 +1,63 @@ -/* --- Sidebar and Overlay fix --- */ +/* ============================================================ + THE FOLD WITHIN — Self-Organizing Static Site Framework v2.3.1 + ============================================================ */ + +/* === 1. Base Palette and Typography ======================== */ +:root { + --bg: #0b0c10; + --fg: #f3f3f3; + --accent: #d0aa5b; + --muted: #8d8f95; + --line: #2a2d34; +} + +html, body { + margin: 0; + padding: 0; + background: var(--bg); + color: var(--fg); + font-family: system-ui, sans-serif; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + scroll-behavior: smooth; +} + +/* === 2. Topbar ============================================= */ +.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: 300; + box-shadow: 0 2px 8px rgba(0,0,0,.3); +} + +.topbar a { + color: var(--accent); + text-decoration: none; + font-weight: 500; +} + +.topbar a:hover { color: var(--fg); } + +.topbar button { + font-size: 24px; + background: transparent; + color: var(--accent); + border: none; + padding: 4px 8px; + cursor: pointer; + transition: color 0.2s ease; +} +.topbar button:hover { color: var(--fg); } + +/* === 3. Sidebar / Overlay Layout =========================== */ .sidebar { position: fixed; top: 48px; @@ -13,32 +72,37 @@ padding: 10px; z-index: 200; /* ABOVE overlay */ will-change: transform; + border-right: 1px solid var(--line); } + .sidebar.open { transform: translateX(0); } +/* Dimmed blur behind sidebar */ .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 */ + z-index: 150; /* BELOW sidebar */ opacity: 0; pointer-events: none; - transition: opacity .3s; + transition: opacity .3s ease; } .sidebar.open ~ .overlay { opacity: 1; pointer-events: all; } +/* === 4. Content Region ===================================== */ .content { margin-top: 48px; padding: 16px; transition: margin-left .3s ease; + max-width: 960px; } -/* Desktop layout */ +/* Desktop two-column mode */ @media (min-width: 900px) { .sidebar { transform: none !important; @@ -53,9 +117,140 @@ .overlay { display: none !important; } } -/* Mobile layout */ +/* Mobile single-column mode */ @media (max-width: 899px) { - .content { - margin-left: 0 !important; - } + .content { margin-left: 0 !important; } + .viewer { padding: 12px; font-size: 1.05em; line-height: 1.6; } + #htmlView, #mdView { min-height: calc(100vh - 60px); } +} + +/* === 5. Viewer ============================================= */ +.viewer { + height: calc(100vh - 80px); + overflow: auto; + max-width: 820px; + margin: 0 auto; + padding-bottom: 40px; +} + +#htmlView { + width: 100%; + height: 100%; + border: none; + background: #0b0c10; +} + +/* Markdown formatting */ +#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); +} +#mdView blockquote { + border-left: 3px solid var(--accent); + padding-left: 12px; + color: var(--muted); + font-style: italic; +} +#mdView a { color: var(--accent); } + +/* === 6. Meta / Pager ======================================= */ +.meta { + color: var(--muted); + margin-bottom: 12px; + font-size: 0.9em; +} + +button#prev, button#next { + background: transparent; + border: 1px solid var(--line); + color: var(--fg); + border-radius: 8px; + padding: 4px 10px; + font-size: 0.95em; + cursor: pointer; + transition: all 0.2s ease; +} +button#prev:hover, button#next:hover { + border-color: var(--accent); + color: var(--accent); +} + +/* === 7. Controls =========================================== */ +.controls { + display: flex; + gap: 0.5em; + margin-bottom: 8px; +} +select, #search { + background: #0b0c10; + color: var(--fg); + border: 1px solid var(--line); + border-radius: 4px; + padding: 6px; + font-size: 0.9em; +} +#search { flex: 1; } + +/* === 8. Directory Tree ===================================== */ +.dir .label { + display: flex; + align-items: center; + cursor: pointer; + padding: 4px 6px; + color: var(--accent); + font-weight: 600; + user-select: none; +} +.dir .label::before { + content: "▶"; + margin-right: 6px; + font-size: 0.8em; + color: var(--muted); + transition: transform .2s; +} +.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; + font-size: 0.95em; + transition: background 0.15s ease; +} +.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; } + +/* === 9. Scrollbars ========================================= */ +::-webkit-scrollbar { width: 8px; height: 8px; } +::-webkit-scrollbar-thumb { background: var(--line); border-radius: 4px; } +::-webkit-scrollbar-thumb:hover { background: var(--accent); } + +/* === 10. Animations & Effects ============================== */ +.fade-in { animation: fadeIn 0.25s ease-in; } +@keyframes fadeIn { + from { opacity: 0; transform: translateY(6px); } + to { opacity: 1; transform: translateY(0); } } \ No newline at end of file