/* * /post form bundle CSS. U3 scope: make the EasyMDE editor usable without the * FontAwesome dependency (toolbar glyphs supplied here). Field Notes theming, * mobile layout, and the "More options" disclosure land in U5. */ /* Edit-mode prefill-failure banner (U5, D7): shown between the heading and the first field when the entry can't be loaded for editing. */ .post-edit-error { margin: 1rem 0; padding: 0.75rem 1rem; border: 1px solid #E5786A; border-radius: 8px; background: rgba(229, 120, 106, 0.12); color: #E5786A; font-size: 0.9rem; line-height: 1.4; } /* EasyMDE toolbar glyphs β€” replace the FontAwesome icons EasyMDE expects. */ .editor-toolbar .mde-btn::before { font-style: normal; font-weight: 400; font-family: inherit; } .editor-toolbar .mde-bold::before { content: 'B'; font-weight: 700; } .editor-toolbar .mde-italic::before { content: 'I'; font-style: italic; } .editor-toolbar .mde-ul::before { content: '\2022\2002\2014'; } /* β€’ β€” */ .editor-toolbar .mde-link::before { content: '\1F517'; } /* πŸ”— */ .editor-toolbar .mde-preview::before { content: '\1F441'; } /* πŸ‘ */ .EasyMDEContainer .CodeMirror { min-height: 180px; } /* ── Photo HEIC-conversion feedback (U4) ──────────────────── * FilePond renders the thumbnails/progress; these are the pre-FilePond * "converting…" status line and the draft photos-reselect hint (U6). */ .photo-convert-status:empty { display: none; } .photo-convert-status { font-size: var(--text-sm); margin-top: var(--space-2); } .photo-reauth-hint { display: none; font-size: var(--text-sm); color: var(--color-ink-muted); margin-top: var(--space-2); } .photo-reauth-hint.is-shown { display: block; } /* ── Field Notes styling for the new controls (U5, R11/R12) ── */ /* Select fields (weather condition, transport mode) match the text inputs. */ .post-form-wrap select { width: 100%; font-family: var(--font-ui); font-size: var(--text-base); padding: 0.875rem 1rem; min-height: 44px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-canvas); color: var(--color-ink); -webkit-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2390887E' d='M1 1l5 5 5-5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; padding-right: 2.5rem; } .post-form-wrap select:focus { outline: 2px solid var(--color-accent); outline-offset: 1px; border-color: var(--color-accent); } .post-form-wrap input[type="number"] { width: 100%; font-family: var(--font-ui); font-size: var(--text-base); padding: 0.875rem 1rem; min-height: 44px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-canvas); color: var(--color-ink); -webkit-appearance: none; appearance: none; } .post-form-wrap input[type="number"]:focus { outline: 2px solid var(--color-accent); outline-offset: 1px; border-color: var(--color-accent); } /* "More options" disclosure */ .more-options { margin-bottom: var(--space-5); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-canvas); } .more-options__summary { cursor: pointer; padding: 0.875rem 1rem; min-height: 44px; display: flex; align-items: center; font-family: var(--font-ui); font-size: var(--text-sm); font-weight: 600; color: var(--color-ink); list-style: none; user-select: none; } .more-options__summary::-webkit-details-marker { display: none; } .more-options__summary::before { content: 'β–Έ'; margin-right: var(--space-2); color: var(--color-ink-muted); transition: transform 0.15s; } .more-options[open] .more-options__summary::before { transform: rotate(90deg); } .more-options[open] .more-options__summary { border-bottom: 1px solid var(--color-border); } .more-options > .form-field { padding: 0 1rem; } .more-options > .form-field:first-of-type { padding-top: var(--space-4); } .more-options > .form-field:last-child { padding-bottom: var(--space-4); margin-bottom: 0; } /* Button loading spinner (Get Location / Get Weather) */ .btn-action.is-loading { position: relative; color: transparent; pointer-events: none; } .btn-action.is-loading::after { content: ''; position: absolute; top: 50%; left: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border: 2px solid var(--color-ink-muted); border-top-color: var(--color-accent); border-radius: 50%; animation: post-spin 0.7s linear infinite; } .btn-action[disabled] { opacity: 0.5; cursor: not-allowed; } @keyframes post-spin { to { transform: rotate(360deg); } } /* Grav renders form status as
. The theme doesn't style .notices, so on the dark background it was nearly invisible β€” style it prominently here. */ .post-form-wrap .notices { padding: 1rem 1.1rem; border-radius: var(--radius-md); font-size: var(--text-base); margin: 0 0 var(--space-5); background: var(--color-canvas); color: var(--color-ink); border-left: 4px solid var(--color-accent); } .post-form-wrap .notices p { margin: 0; } .post-form-wrap .notices.error, .post-form-wrap .notices.red { border-left-color: var(--color-error); } .post-form-wrap .notices.success, .post-form-wrap .notices.green { border-left-color: var(--color-accent); } /* Post-success confirmation CTA (injected by post-form.js). */ .post-success { margin: 0 0 var(--space-5); padding: 1.1rem; border-radius: var(--radius-md); background: var(--color-accent-light); border: 1px solid var(--color-accent); } .post-success__title { font-family: var(--font-ui); font-size: var(--text-md); font-weight: 600; color: var(--color-ink); margin: 0 0 var(--space-3); } .post-success__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); } .post-success__view { flex: 1; min-width: 140px; text-align: center; padding: 0.8rem 1rem; min-height: 44px; border-radius: var(--radius-md); background: var(--color-accent); color: var(--color-accent-on); font-weight: 600; text-decoration: none; } .post-success__again { flex: 1; min-width: 140px; text-align: center; padding: 0.8rem 1rem; min-height: 44px; border-radius: var(--radius-md); background: transparent; color: var(--color-ink); border: 1px solid var(--color-border); font-weight: 600; text-decoration: none; } /* Hide FilePond's "Powered by PQINA" credit. */ .filepond--credits { display: none !important; } /* Field Notes dark theme for the FilePond widget β€” the default is a light/cream panel that clashes with the site's warm near-black palette. Repaint the drop zone, thumbnails and actions with the design tokens. */ .filepond--root { font-family: var(--font-ui); font-size: var(--text-base); } .filepond--panel-root { background-color: var(--color-canvas); border: 1px solid var(--color-border); border-radius: var(--radius-md); } .filepond--drop-label, .filepond--drop-label label { color: var(--color-ink-muted); } .filepond--label-action { color: var(--color-accent); text-decoration-color: var(--color-accent); } .filepond--item-panel { background-color: var(--color-surface-raised); border-radius: var(--radius-md); } .filepond--drip-blob { background-color: var(--color-accent); } .filepond--file { color: var(--color-ink); } .filepond--file-action-button { color: var(--color-ink); background-color: rgba(0, 0, 0, 0.45); } .filepond--file-action-button:hover { background-color: rgba(0, 0, 0, 0.65); } /* Issue #2: FilePond's completed thumbnail carries a murky gradient tint + the filename overlay, which reads as "something's wrong". Strip those overlays and show a single clean green βœ“ badge so a finished upload is unambiguous. The remove (Γ—) action button is left untouched so photos stay removable. */ .filepond--image-preview-overlay { display: none !important; } .filepond--item[data-filepond-item-state="processing-complete"] .filepond--file-info, .filepond--item[data-filepond-item-state="processing-complete"] .filepond--file-status { opacity: 0; } .filepond--item[data-filepond-item-state="processing-complete"]::after { content: 'βœ“'; position: absolute; top: 8px; right: 8px; z-index: 5; width: 24px; height: 24px; line-height: 24px; text-align: center; border-radius: 50%; background: var(--color-accent); color: #fff; font-size: 15px; font-weight: 700; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35); pointer-events: none; } /* Issue #3: photo section auto-collapses to a summary bar after upload β€” same
affordance as "More options" above. */ .photos-collapse { margin-bottom: var(--space-5); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-canvas); } .photos-collapse__summary { cursor: pointer; padding: 0.875rem 1rem; min-height: 44px; display: flex; align-items: center; font-family: var(--font-ui); font-size: var(--text-sm); font-weight: 600; color: var(--color-ink); list-style: none; user-select: none; } .photos-collapse__summary::-webkit-details-marker { display: none; } .photos-collapse__summary::before { content: 'β–Έ'; margin-right: var(--space-2); color: var(--color-ink-muted); transition: transform 0.15s; } .photos-collapse[open] .photos-collapse__summary::before { transform: rotate(90deg); } .photos-collapse[open] .photos-collapse__summary { border-bottom: 1px solid var(--color-border); } .photos-collapse > :not(summary) { padding-left: 1rem; padding-right: 1rem; } .photos-collapse[open] .filepond--root, .photos-collapse[open] .filepond-root { margin: var(--space-4) 0; } .photos-collapse[open] > .photo-convert-status:last-child, .photos-collapse[open] > .photo-reauth-hint:last-child { padding-bottom: var(--space-4); } /* ── EasyMDE β€” Field Notes dark theme (U5) ─────────────────── */ .EasyMDEContainer .CodeMirror { background: var(--color-canvas); color: var(--color-ink); border: 1px solid var(--color-border); border-radius: 0 0 var(--radius-md) var(--radius-md); font-family: var(--font-ui); font-size: var(--text-base); line-height: var(--leading-normal); padding: var(--space-1); } .EasyMDEContainer .CodeMirror-cursor { border-color: var(--color-ink); } .EasyMDEContainer .CodeMirror-selected { background: var(--color-accent-light) !important; } .EasyMDEContainer .editor-toolbar { background: var(--color-surface-raised); border: 1px solid var(--color-border); border-bottom: none; border-radius: var(--radius-md) var(--radius-md) 0 0; opacity: 1; } .EasyMDEContainer .editor-toolbar button { color: var(--color-ink) !important; min-width: 34px; height: 34px; } .EasyMDEContainer .editor-toolbar button:hover, .EasyMDEContainer .editor-toolbar button.active { background: var(--color-accent-light); border-color: var(--color-border); } .EasyMDEContainer .editor-toolbar i.separator { border-color: var(--color-border); } .EasyMDEContainer .editor-preview, .EasyMDEContainer .editor-preview-side { background: var(--color-canvas); color: var(--color-ink); } .EasyMDEContainer .editor-preview a { color: var(--color-accent); }