diff --git a/web/static/css/style.css b/web/static/css/style.css index c9c381e..7b909c2 100644 --- a/web/static/css/style.css +++ b/web/static/css/style.css @@ -1,132 +1,52 @@ -/* Chronological - Main Stylesheet */ - -/* CSS Reset and Base Styles */ -*, *::before, *::after { - box-sizing: border-box; -} - -:root { - --color-primary: #3b82f6; - --color-primary-dark: #2563eb; - --color-secondary: #64748b; - --color-success: #22c55e; - --color-danger: #ef4444; - --color-warning: #f59e0b; - - --color-bg: #f8fafc; - --color-surface: #ffffff; - --color-border: #e2e8f0; - --color-text: #1e293b; - --color-text-muted: #64748b; - - --spacing-xs: 0.25rem; - --spacing-sm: 0.5rem; - --spacing-md: 1rem; - --spacing-lg: 1.5rem; - --spacing-xl: 2rem; - - --radius-sm: 0.25rem; - --radius-md: 0.5rem; - --radius-lg: 1rem; - - --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); - --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); - --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); - - --font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; - --font-size-sm: 0.875rem; - --font-size-md: 1rem; - --font-size-lg: 1.25rem; - --font-size-xl: 1.5rem; -} - -html, body { - margin: 0; - padding: 0; - font-family: var(--font-family); - font-size: var(--font-size-md); - line-height: 1.5; - color: var(--color-text); - background-color: var(--color-bg); - min-height: 100vh; -} - -/* App Layout */ -.app-header { - background-color: var(--color-primary); - color: white; - padding: var(--spacing-md) var(--spacing-lg); - box-shadow: var(--shadow-md); -} - -.app-header h1 { - margin: 0; - font-size: var(--font-size-xl); - font-weight: 600; -} +/* Chronological - App-Specific Styles */ +/* TuiCss provides the base styling, this file adds app-specific layout */ +/* Main App Layout */ .app-main { - height: calc(100vh - 60px); + height: calc(100vh - 40px); /* Account for navbar and statusbar */ + padding: 8px; overflow: hidden; } /* Timeline Container - Split Layout */ .timeline-container { display: grid; - grid-template-columns: 350px 1fr; + grid-template-columns: 320px 1fr; height: 100%; + gap: 8px; } /* Calendar Panel */ .calendar-panel { - background-color: var(--color-surface); - border-right: 1px solid var(--color-border); - padding: var(--spacing-lg); overflow-y: auto; } +.calendar-panel .tui-window { + height: 100%; +} + .calendar { - max-width: 320px; - margin: 0 auto; + padding: 8px; } .calendar-header { display: flex; align-items: center; justify-content: space-between; - margin-bottom: var(--spacing-md); + margin-bottom: 8px; } -.calendar-header h2 { - margin: 0; - font-size: var(--font-size-lg); - font-weight: 600; -} - -.nav-btn { - background: none; - border: 1px solid var(--color-border); - border-radius: var(--radius-sm); - padding: var(--spacing-xs) var(--spacing-sm); - cursor: pointer; - font-size: var(--font-size-lg); - color: var(--color-text); - transition: background-color 0.2s, border-color 0.2s; -} - -.nav-btn:hover { - background-color: var(--color-bg); - border-color: var(--color-primary); +.calendar-title { + font-weight: bold; } .calendar-weekdays { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; - font-size: var(--font-size-sm); - font-weight: 600; - color: var(--color-text-muted); - margin-bottom: var(--spacing-sm); + font-size: 0.8em; + margin-bottom: 4px; + color: #aaa; } .calendar-grid { @@ -141,151 +61,128 @@ html, body { flex-direction: column; align-items: center; justify-content: center; - background-color: var(--color-bg); - border-radius: var(--radius-sm); cursor: pointer; - transition: background-color 0.2s; position: relative; + border: 1px solid transparent; padding: 2px; } .calendar-day:hover { - background-color: var(--color-border); + background-color: #00aaaa; + color: #000; } .calendar-day.empty { - background: none; cursor: default; } +.calendar-day.empty:hover { + background-color: transparent; +} + .calendar-day.today { - background-color: var(--color-primary); - color: white; + background-color: #aa0000; + color: #fff; } .calendar-day.today:hover { - background-color: var(--color-primary-dark); + background-color: #ff0000; } .calendar-day.has-content { - font-weight: 600; + font-weight: bold; + color: #ffff00; } .day-number { - font-size: var(--font-size-sm); + font-size: 0.9em; } .day-indicators { display: flex; gap: 1px; - font-size: 0.6rem; + font-size: 0.6em; position: absolute; - bottom: 2px; + bottom: 1px; } .indicator { - line-height: 1; + color: #00ff00; } .calendar-actions { - margin-top: var(--spacing-lg); + margin-top: 16px; text-align: center; } /* Timeline Panel */ .timeline-panel { - padding: var(--spacing-lg); overflow-y: auto; } +.timeline-panel .tui-window { + height: 100%; +} + .timeline { - max-width: 800px; - margin: 0 auto; + padding: 8px; } .timeline-header { display: flex; align-items: center; justify-content: space-between; - margin-bottom: var(--spacing-lg); - padding-bottom: var(--spacing-md); - border-bottom: 2px solid var(--color-border); + margin-bottom: 16px; } -.timeline-header h2 { - margin: 0; - font-size: var(--font-size-xl); +.timeline-title { + font-weight: bold; } .timeline-content { display: flex; flex-direction: column; - gap: var(--spacing-lg); + gap: 8px; } .timeline-day { - background-color: var(--color-surface); - border-radius: var(--radius-lg); - box-shadow: var(--shadow-sm); - overflow: hidden; -} - -.timeline-day-header { - background-color: var(--color-bg); - padding: var(--spacing-md) var(--spacing-lg); - border-bottom: 1px solid var(--color-border); -} - -.timeline-day-header time { - font-weight: 600; - color: var(--color-primary); + margin-bottom: 8px; } .timeline-entries { - padding: var(--spacing-md) var(--spacing-lg); - display: flex; - flex-direction: column; - gap: var(--spacing-md); + padding: 4px 0; } .timeline-entry { - display: flex; - gap: var(--spacing-md); - padding: var(--spacing-md); - background-color: var(--color-bg); - border-radius: var(--radius-md); + margin-bottom: 8px; + padding: 4px 0; + border-bottom: 1px dotted #555; } -.entry-icon { - font-size: 1.5rem; - flex-shrink: 0; +.timeline-entry:last-child { + border-bottom: none; } -.entry-content { - flex-grow: 1; - min-width: 0; +.entry-type { + margin-right: 8px; } -.entry-content h4 { - margin: 0 0 var(--spacing-xs); - font-size: var(--font-size-md); +.entry-title { + margin-right: 8px; } .entry-time { - font-size: var(--font-size-sm); - color: var(--color-text-muted); - margin-right: var(--spacing-sm); + margin-right: 8px; } .entry-location { - font-size: var(--font-size-sm); - color: var(--color-text-muted); + margin-right: 8px; } .entry-description { - margin: var(--spacing-sm) 0 0; - color: var(--color-text-muted); - font-size: var(--font-size-sm); + margin-top: 4px; + padding-left: 8px; + color: #aaa; } .diary-text { @@ -294,16 +191,15 @@ html, body { .timeline-empty { text-align: center; - padding: var(--spacing-xl); - color: var(--color-text-muted); + padding: 32px; } /* Photo Grid */ .photo-grid, .photo-gallery { display: grid; - grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); - gap: var(--spacing-md); - margin-top: var(--spacing-sm); + grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); + gap: 8px; + margin-top: 8px; } .photo-item { @@ -312,61 +208,57 @@ html, body { .photo-item img { width: 100%; - height: 150px; + height: 100px; object-fit: cover; - border-radius: var(--radius-md); - cursor: pointer; - transition: transform 0.2s; + border: 1px solid #555; } .photo-item img:hover { - transform: scale(1.02); + border-color: #00ffff; } .photo-item figcaption { - font-size: var(--font-size-sm); - color: var(--color-text-muted); - margin-top: var(--spacing-xs); + font-size: 0.8em; + color: #aaa; text-align: center; + margin-top: 2px; } /* Day Modal */ -.day-modal { +.tui-modal { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); border: none; - border-radius: var(--radius-lg); - box-shadow: var(--shadow-lg); + padding: 0; max-width: 600px; width: 90%; - padding: 0; + max-height: 80vh; + overflow: hidden; } -.day-modal::backdrop { - background-color: rgba(0, 0, 0, 0.5); +.tui-modal::backdrop { + background-color: rgba(0, 0, 0, 0.7); +} + +.tui-modal .tui-window { + max-height: 80vh; + overflow-y: auto; } .day-detail { - padding: var(--spacing-lg); + padding: 8px; } .day-header { - margin-bottom: var(--spacing-lg); - padding-bottom: var(--spacing-md); - border-bottom: 2px solid var(--color-border); + margin-bottom: 16px; + font-weight: bold; + font-size: 1.1em; } -.day-header h2 { - margin: 0; - font-size: var(--font-size-lg); -} - -.day-section { - margin-bottom: var(--spacing-lg); -} - -.day-section h3 { - margin: 0 0 var(--spacing-md); - font-size: var(--font-size-md); - color: var(--color-text-muted); +.day-content .tui-input-fieldset { + margin-bottom: 16px; } .event-list { @@ -376,100 +268,51 @@ html, body { } .event-item { - padding: var(--spacing-sm); - background-color: var(--color-bg); - border-radius: var(--radius-sm); - margin-bottom: var(--spacing-sm); + padding: 4px 0; + border-bottom: 1px dotted #555; } -.event-item strong { - display: block; - margin-bottom: var(--spacing-xs); +.event-item:last-child { + border-bottom: none; } .empty-message { - color: var(--color-text-muted); + color: #666; font-style: italic; } /* Form Elements */ -textarea { - width: 100%; - padding: var(--spacing-md); - border: 1px solid var(--color-border); - border-radius: var(--radius-md); - font-family: inherit; - font-size: var(--font-size-md); - resize: vertical; - min-height: 100px; -} - -textarea:focus { - outline: none; - border-color: var(--color-primary); - box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); -} - .form-actions { display: flex; - gap: var(--spacing-sm); - margin-top: var(--spacing-md); + gap: 8px; + margin-top: 8px; } -/* Buttons */ -.btn { - display: inline-flex; - align-items: center; - justify-content: center; - padding: var(--spacing-sm) var(--spacing-md); - border: none; - border-radius: var(--radius-md); +.modal-actions { + margin-top: 16px; + text-align: right; +} + +.full-width { + width: 100%; +} + +/* TuiCss Overrides */ +.tui-no-shadow { + box-shadow: none !important; +} + +.tui-border-single .tui-fieldset, +.tui-fieldset.tui-border-single { + border-style: solid; + border-width: 1px; +} + +/* Make input textareas work with TuiCss */ +textarea.tui-input { + resize: vertical; + min-height: 100px; font-family: inherit; - font-size: var(--font-size-sm); - font-weight: 500; - cursor: pointer; - transition: background-color 0.2s, transform 0.1s; -} - -.btn:hover { - transform: translateY(-1px); -} - -.btn:active { - transform: translateY(0); -} - -.btn-primary { - background-color: var(--color-primary); - color: white; -} - -.btn-primary:hover { - background-color: var(--color-primary-dark); -} - -.btn-secondary { - background-color: var(--color-border); - color: var(--color-text); -} - -.btn-secondary:hover { - background-color: var(--color-secondary); - color: white; -} - -.btn-danger { - background-color: var(--color-danger); - color: white; -} - -.btn-danger:hover { - background-color: #dc2626; -} - -.btn-small { - padding: var(--spacing-xs) var(--spacing-sm); - font-size: var(--font-size-sm); } /* Responsive Design */ @@ -480,13 +323,11 @@ textarea:focus { } .calendar-panel { - border-right: none; - border-bottom: 1px solid var(--color-border); max-height: 50vh; } - .calendar { - max-width: none; + .calendar-panel .tui-window { + height: auto; } } @@ -495,23 +336,3 @@ textarea:focus { opacity: 0.7; pointer-events: none; } - -.htmx-request::after { - content: ''; - position: absolute; - top: 50%; - left: 50%; - width: 20px; - height: 20px; - margin: -10px 0 0 -10px; - border: 2px solid var(--color-border); - border-top-color: var(--color-primary); - border-radius: 50%; - animation: spin 0.8s linear infinite; -} - -@keyframes spin { - to { - transform: rotate(360deg); - } -} diff --git a/web/templates/layouts/base.html b/web/templates/layouts/base.html index 21d944f..1ae19c8 100644 --- a/web/templates/layouts/base.html +++ b/web/templates/layouts/base.html @@ -1,20 +1,42 @@ {{define "base"}} - +