@import url('https://fonts.googleapis.com/css2?family=Lora:wght@500;600&family=DM+Sans:wght@400;500&display=swap');
@import "https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css";

* { box-sizing: border-box; margin: 0; padding: 0; }

body {
font-family: 'DM Sans', sans-serif;
font-size: 1.0625rem;
line-height: 1.6;
/* background: rgb(244, 244, 244); */
background-color: white;
min-height: 100vh;
display: flex;
flex-direction: column;
}

a {
text-decoration: none;
}

hr {
border: none;               /* Strip the default 3D inset border */
height: 1px;                /* Define an explicit thickness */
background-color: #e0e0e0;  /* Apply a clean, modern flat color */
margin: 2rem 0;             /* Give it some breathing room */
}

.main-content {
flex: 1;
}

.dm-serif-display-regular {
font-family: "DM Serif Display", serif;
font-weight: 400;
font-style: normal;
}

.dm-serif-display-regular-italic {
font-family: "DM Serif Display", serif;
font-weight: 400;
font-style: italic;
}

.elms-sans {
font-family: "Elms Sans", sans-serif;
font-optical-sizing: auto;
font-weight: 100;
font-style: normal;
}

.roboto {
font-family: "Roboto", sans-serif;
font-optical-sizing: auto;
font-weight: 100;
font-style: normal;
font-variation-settings:
  "wdth" 100;
}

.montserrat {
font-family: "Montserrat", sans-serif;
font-optical-sizing: auto;
font-weight: 100;
font-style: normal;
}

.playfair-display {
font-family: "Playfair Display", serif;
font-optical-sizing: auto;
font-weight: 100;
font-style: normal;
}

/* LANDING PAGE */
.ol-page {
max-width: 680px;
margin: 0 auto;
font-family: "DM Sans", sans-serif;
color: rgb(34, 34, 34);
padding: 0 16px;
}

.ol-section {
padding: 13px 0;
/* border-bottom: 1px solid rgb(34, 34, 34); */
}

.ol-hero {
padding-top: 24px;
padding-bottom: 32px;
}

.ol-section-tag-row {
/* display: flex; */
align-items: center;
gap: 10px;
margin-bottom: 16px;
flex-wrap: wrap;
}

.ol-tag {
border: 1px solid rgb(34, 34, 34);
border-radius: 999px;
padding: 3px 12px;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.06em;
/* text-transform: uppercase; */
font-family: "DM Sans", sans-serif;
}

.ol-section-title {
font-weight: 700;
font-size: 16px;
}

.ol-code {
font-size: 11px;
color: #888;
font-family: "DM Sans", sans-serif;
margin-left: auto;
white-space: nowrap;
}

.ol-h1 {
font-size: 34px;
font-weight: 700;
line-height: 1.2;
margin: 0 0 14px;
letter-spacing: -0.01em;
font-family: "DM Serif Display", serif;
}

.ol-lede {
font-size: 14px;
color: #444;
line-height: 1.6;
margin: 0 0 24px;
max-width: 480px;
}

.ol-hero-pills {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 28px;
}

.ol-hero-pill {
display: inline-flex;
align-items: center;
gap: 6px;
border: 1px solid rgb(34, 34, 34);
border-radius: 999px;
padding: 5px 14px;
font-size: 12px;
font-weight: 500;
}

.ol-cta-row {
display: flex;
gap: 10px;
flex-wrap: wrap;
}

.ol-pill {
display: inline-flex;
align-items: center;
border-radius: 999px;
padding: 9px 20px;
font-size: 13px;
font-weight: 500;
text-decoration: none;
}

.ol-pill-outline {
border: 1px solid rgb(34, 34, 34);
color: rgb(34, 34, 34);
background: none;
}

.ol-pill-outline-list-calendar {
border: 1px solid rgb(48 126 196);
color: rgb(48 126 196);
background: none;
}

.ol-pill-filled {
background: rgb(34, 34, 34);
color: #fff;
}

.ol-pill-filled-list-calendar {
background: rgb(48 126 196);
color: #fff;
}

.ol-pill-button {
cursor: pointer;
font-family: inherit;
}

.ol-pill-today {
display: inline-block;
flex-shrink: 0;
width: 52px;
text-align: center;
background: rgb(34, 34, 34);
color: #fff;
font-size: 10px;
font-weight: 700;
/* text-transform: uppercase; */
padding: 4px 0;
border-radius: 999px;
font-family: "DM Sans", sans-serif;
}

.ol-section-body {
font-size: 13px;
color: #444;
line-height: 1.6;
margin: 0 0 16px;
}

.ol-list {
list-style: none;
margin: 0 0 20px;
padding: 0;
font-size: 13px;
color: #444;
}

.ol-list li {
padding: 4px 0 4px 16px;
position: relative;
}

.ol-list li::before {
content: "-";
position: absolute;
left: 0;
color: rgb(34, 34, 34);
}

.ol-preview-card {
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
}

.ol-preview-row {
display: flex;
align-items: flex-start;
gap: 14px;
padding: 14px 16px;
border-bottom: 1px solid #ddd;
}

.ol-preview-row-last {
border-bottom: none;
}

.ol-preview-row .ol-code {
flex-shrink: 0;
margin-left: 0;
padding-top: 2px;
}

.ol-preview-text {
flex: 1;
min-width: 0;
}

.ol-preview-title {
font-size: 13px;
font-weight: 600;
margin: 0 0 2px;
}

.ol-preview-body {
font-size: 12px;
color: #666;
margin: 0;
line-height: 1.4;
}

.ol-closing {
border-bottom: none;
text-align: center;
padding: 40px 0;
}

.ol-closing-title {
font-weight: 700;
font-size: 18px;
margin: 0 0 6px;
font-family: "DM Serif Display", serif;
}

.ol-closing-body {
font-size: 13px;
color: #444;
margin: 0 0 20px;
}

/* ABOUT PAGE */
.ol-prose {
font-size: 14px;
color: #222;
line-height: 1.7;
margin: 0 0 16px;
max-width: 560px;
}

.ol-prose:last-child {
margin-bottom: 0;
}

.ol-belief-list {
display: flex;
flex-direction: column;
}

.ol-belief-row {
display: flex;
gap: 16px;
padding: 18px 0;
border-bottom: 1px solid #ddd;
}

.ol-belief-row-last {
border-bottom: none;
padding-bottom: 0;
}

.ol-belief-row .ol-code {
flex-shrink: 0;
margin-left: 0;
padding-top: 2px;
font-size: 13px;
font-weight: 700;
color: rgb(34, 34, 34);
}

.ol-belief-text {
flex: 1;
}

.ol-belief-title {
font-weight: 700;
font-size: 14px;
margin: 0 0 6px;
}

.ol-belief-body {
font-size: 13px;
color: #444;
line-height: 1.6;
margin: 0;
}

.ol-inline-link {
color: rgb(34, 34, 34);
text-decoration: underline;
}

/* PRICING PAGE */
.ol-compare-table {
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
}

.ol-compare-row {
display: grid;
grid-template-columns: 1fr 90px 90px;
align-items: center;
padding: 12px 16px;
border-bottom: 1px solid #ddd;
font-size: 13px;
}

.ol-compare-row-last {
border-bottom: none;
}

.ol-compare-head {
font-family: "DM Sans", sans-serif;
font-size: 11px;
font-weight: 700;
/* text-transform: uppercase; */
letter-spacing: 0.04em;
color: #888;
border-bottom: 1px solid rgb(34, 34, 34);
}

.ol-compare-feature {
color: #222;
}

.ol-compare-value {
text-align: center;
color: #666;
}

.ol-compare-premium {
color: rgb(34, 34, 34);
font-weight: 700;
}

.ol-price-block {
text-align: center;
padding: 24px 0 28px;
border-bottom: 1px solid rgb(34, 34, 34);
margin-bottom: 28px;
}

.ol-price-row {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
margin-bottom: 4px;
}

.ol-price-original {
font-size: 13px;
color: #999;
text-decoration: line-through;
font-family: "DM Sans", sans-serif;
}

.ol-price-new {
font-size: 36px;
font-weight: 700;
margin: 8px 0 4px;
font-family: "DM Serif Display", serif;
}

.ol-price-period {
font-size: 16px;
font-weight: 400;
color: #666;
}

.ol-price-saving {
font-size: 12px;
color: #444;
font-family: "DM Sans", sans-serif;
margin: 0;
}

.ol-cta-block {
text-align: center;
}

.ol-cta-sub {
font-size: 12px;
color: #9b9999;
margin: 10px 0 4px;
}

.ol-cta-note {
font-size: 11px;
color: #999;
margin: 8px 0 0;
}

.ol-already-premium {
font-size: 14px;
font-weight: 500;
padding: 14px 0;
}

/* Toast - "notice" */
.ol-toast {
position: fixed;
left: 50%;
bottom: 24px;
transform: translateX(-50%);
z-index: 1000;
display: flex;
align-items: center;
gap: 14px;
width: max-content;
max-width: calc(100% - 32px);
background: #fff;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 12px 16px;
font-family: "DM Sans", sans-serif;
font-size: 14px;
line-height: 1.4;
color: rgb(34, 34, 34);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
animation: ol-toast-in 0.25s ease;
}

.ol-toast p {
margin: 0;
}

.ol-toast-success {
border-left: 4px solid rgb(34, 34, 34);
}

.ol-toast-alert {
border-left: 4px solid #c0392b;
}

.ol-toast-close {
background: none;
border: none;
font-family: inherit;
font-size: 14px;
line-height: 1;
color: #666;
cursor: pointer;
padding: 0;
flex-shrink: 0;
}

.ol-toast-close:hover {
color: rgb(34, 34, 34);
}

.ol-toast.toast-hide {
opacity: 0;
transform: translateX(-50%) translateY(8px);
transition: opacity 0.3s ease, transform 0.3s ease;
}

@keyframes ol-toast-in {
from { opacity: 0; transform: translateX(-50%) translateY(8px); }
to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* SIGN IN & SIGN UP PAGES */
.ol-page-narrow {
max-width: 420px;
padding-top: 48px;
}

.ol-auth-card {
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 28px 24px;
}

.ol-auth-title {
font-size: 24px;
margin-bottom: 30px;
}

.ol-auth-subtitle {
font-size: 13px;
color: #666;
line-height: 1.5;
margin: 0 0 20px;
}

.ol-field {
margin-bottom: 16px;
}

.ol-field label {
display: block;
font-size: 11px;
font-weight: 700;
/* text-transform: uppercase; */
letter-spacing: 0.04em;
font-family: "DM Sans", sans-serif;
color: #444;
margin-bottom: 6px;
}

.ol-field input[type="text"],
.ol-field input[type="email"],
.ol-field input[type="password"],
.ol-field select {
width: 100%;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 10px 12px;
font-size: 16px;
font-family: "DM Sans", sans-serif;
background: #fff;
}

.ol-field-hint {
display: block;
font-size: 11px;
color: #888;
margin-bottom: 6px;
margin-top: 4px;
}

.ol-field-remember {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 20px;
font-size: 13px;
}

.ol-notice {
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 12px 14px;
font-size: 13px;
margin-bottom: 16px;
}

.ol-notice-muted {
border-color: #ccc;
color: #444;
}

.ol-notice-title {
font-weight: 700;
font-size: 13px;
margin: 0 0 4px;
}

.ol-notice-body {
font-size: 12px;
margin: 0;
color: #555;
}

.ol-form-actions {
margin: 20px 0 14px;
}

.ol-pill-full {
display: block;
width: 100%;
text-align: center;
border: none;
cursor: pointer;
font-family: inherit;
}

.ol-legal-note {
font-size: 11px;
color: #888;
text-align: center;
margin: 0;
}

.ol-auth-links {
text-align: center;
margin-top: 18px;
font-size: 12px;
}

/* DEVISE ERROR MESSAGE (line style, shared with note/task forms) */
.ol-form-errors {
border-bottom: 2px solid #c0392b;
padding-bottom: 14px;
margin-bottom: 18px;
}

.ol-form-errors-title {
font-size: 13px;
font-weight: 700;
margin: 0 0 6px;
color: #c0392b;
}

.ol-form-errors-list {
margin: 0;
padding-left: 18px;
font-size: 12px;
color: #444;
}

.ol-form-errors-list li {
margin-bottom: 2px;
}

/* _links.html.erb */
.ol-auth-links-list {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}

.ol-omniauth-list {
display: flex;
flex-direction: column;
gap: 8px;
margin-top: 14px;
}

/* SHARED APP-PAGE SHELL (used by all index + show pages) */
.ol-app-container {
max-width: 680px;
margin: 0 auto;
padding: 55px 15px;
font-family: "DM Sans", sans-serif;
color: rgb(34, 34, 34);
}

.ol-app-header-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 0px
}

.ol-app-title {
display: flex;
align-items: center;
gap: 8px;
font-size: 22px;
font-weight: 700;
margin: 0;
font-family: "DM Sans", sans-serif;
}

.ol-pill-sm {
padding: 6px 16px;
font-size: 12px;
}

.ol-task-desc {
font-size: 12px;
color: #444;
/* margin: 4px 0 0 100px; */
overflow-wrap: break-word;
}

.ol-task-actions-bottom {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
flex-wrap: wrap;
}

.ol-task-actions-right {
display: flex;
align-items: center;
gap: 6px;
}

.ol-task-visibility-inline {
display: inline-flex;
}


.ol-app-header-actions {
display: flex;
align-items: center;
gap: 8px;
}

.ol-section-label {
font-size: 24px;
font-weight: 700;
margin: 35px 0 0;
color: rgb(34, 34, 34);
}

.ol-section-sublabel {
font-size: 17px;
color: #2270bb;
margin-bottom: 6px;
}

.ol-task-pdf {
margin-bottom: 10px;
}

.ol-task-pdf-link {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 12px;
color: rgb(34, 34, 34);
text-decoration: underline;
}

.ol-share-label {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 11px;
color: #666;
text-decoration: none;
/* border: 1px solid #ccc; */
/* border-radius: 999px; */
/* padding: 3px 10px; */
}

.ol-btn-icon {
background: none;
border: none;
border-radius: 50%;
width: 28px;
height: 28px;
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: rgb(34, 34, 34);
margin-left: 6px;
}

.ol-empty-state {
text-align: center;
padding: 60px 0;
color: #666;
font-size: 14px;
}

.ol-image-overlay {
position: fixed;
inset: 0;
background: rgba(0,0,0,0.85);
display: none;
align-items: center;
justify-content: center;
z-index: 500;
}

.ol-image-overlay.open {
display: flex;
}

.ol-image-overlay-inner {
position: relative;
max-width: 90vw;
max-height: 90vh;
}

.ol-image-overlay-img {
max-width: 100%;
max-height: 90vh;
border-radius: 4px;
}

.ol-image-overlay-close {
position: absolute;
top: -36px;
right: 0;
background: none;
border: none;
color: #fff;
font-size: 20px;
cursor: pointer;
}

.ol-image-overlay-hint {
text-align: center;
color: #fff;
font-size: 12px;
margin-top: 8px;
}

.ol-task-expandable {
display: none;
}

.ol-task-expandable.task-card-expanded {
display: block;
margin-top: 8px;
}

.ol-task-date-form {
display: none;
}

.ol-task-date-form-label {
font-size: 12px;
font-weight: 700;
margin: 0 0 6px;
}

.ol-task-date-form.task-date-form-visible {
display: block;
margin-top: 8px;
padding: 10px;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
}

.ol-task-inline-date-input {
width: 100%;
border: none;
border-bottom: 1px solid rgb(34, 34, 34);
border-radius: 0;
padding: 6px 0;
font-size: 16px;
font-family: "DM Sans", sans-serif;
background: transparent;
outline: none;
}

.ol-task-inline-date-input:focus {
border-bottom: 2px solid rgb(34, 34, 34);
}

/* JOURNAL page */
.ol-plan-banner {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 12px 16px;
margin-bottom: 16px;
}

.ol-plan-banner-title {
font-size: 13px;
font-weight: 700;
margin: 0 0 2px;
}

.ol-plan-banner-body {
font-size: 12px;
color: #666;
margin: 0;
}

.ol-plan-banner-partial p {
font-size: 12px;
color: #444;
margin: 0;
}

.ol-load-older {
text-align: center;
margin: 24px 16px;
}

.ol-task-audio audio {
width: 100%;
}

/* SORTABLE JS */
.sortable-ghost {
opacity: 0.4;
border: 1px dashed rgb(34, 34, 34);
}

.sortable-drag {
opacity: 0.9;
}

.sortable-chosen {
border-color: rgb(34, 34, 34);
}

/* NOTES page */
.ol-reorder-tip {
font-size: 11px;
color: #888;
text-align: right;
margin-bottom: 12px;
font-family: "DM Sans", sans-serif;
letter-spacing: 0.04em;
}

.ol-note-content {
font-size: 13px;
color: #444;
line-height: 1.6;
margin-top: 8px;
}

.ol-note-content h1,
.ol-note-content h2,
.ol-note-content h3 {
font-size: 13px;
font-weight: 700;
margin: 10px 0 4px;
}

.ol-note-content ul {
margin: 4px 0;
padding-left: 18px;
}

.ol-notes-actions-bottom {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 10px;
gap: 8px;
padding: 0 14px 14px;
}

.ol-plain-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
}

.ol-plain-title {
font-size: 20px;
font-weight: 600;
margin: 25px 0 10px 0;
font-family: "DM Sans", sans-serif;
}

.ol-plain-title-letter {
font-weight: 700;
text-decoration: underline;
}

.ol-plain-add {
font-size: 22px;
color: rgb(34, 34, 34);
text-decoration: none;
}

.ol-reorder-hint {
font-size: 12px;
color: #999;
margin-bottom: 8px;
}

.ol-plain-list {
display: flex;
flex-direction: column;
}

.ol-plain-row {
border-bottom: 1px solid #ddd;
margin-bottom: 12px;
}

.ol-plain-row-overdue .ol-plain-row-title {
  color: #e07070;
}

.ol-plain-row-main {
/* display: flex;
align-items: center;
justify-content: space-between;
margin-left: 12px;
gap: 8px; */
}

.ol-plain-row-notes-main {
}

.ol-plain-row-title {
font-size: 16px;
font-weight: 300;
color: rgb(34, 34, 34);
text-decoration: none;
overflow-wrap: break-word;
word-break: break-word;
max-width: 190px;
}

.ol-plain-row-checkbox-title {
/* display: flex; */
/* align-items: center; */
/* gap: 5px; */
/* flex: 1; */
/* min-width: 0; */
}

.ol-media-section {
margin-bottom: 28px;
padding-bottom: 20px;
border-bottom: 1px solid #ddd;
}

.ol-media-hint {
font-size: 12px;
color: #888;
margin: 0 0 10px;
}

.ol-media-preview {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}

.ol-media-preview-stacked {
margin-bottom: 12px;
}

.ol-media-preview-thumb {
width: 60px;
height: 60px;
object-fit: cover;
flex-shrink: 0;
}

.ol-media-preview-info {
flex: 1;
min-width: 0;
}

.ol-media-preview-name {
font-size: 13px;
font-weight: 600;
margin: 0 0 4px;
overflow-wrap: break-word;
}

.ol-media-remove-label {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
color: #c0392b;
cursor: pointer;
}

.ol-voice-controls {
display: flex;
align-items: center;
gap: 14px;
margin-bottom: 8px;
}

.ol-plain-date {
font-size: 12px;
color: #888;
max-width: 105px;
min-width: 104px;
/* margin: 4px 0 0 32px; */
}

.ol-task-image {
margin-top: 8px;
/* padding: 0 16px; */
}

.ol-form-guide-context {
font-size: 13px;
margin: 0 0 4px;
}

.ol-form-guide-context-link {
color: #666;
text-decoration: none;
}

.ol-form-guide-context-link:hover {
color: rgb(34, 34, 34);
text-decoration: underline;
}

.ol-step-media {
margin-top: 12px;
}

.ol-step-media-img {
width: 100%;
border-radius: 0;
display: block;
}

.ol-step-media-clickable {
cursor: pointer;
}

.ol-plain-row-actions {
display: flex;
align-items: center;
gap: 16px;
}

.ol-plain-icon-btn {
background: none;
border: none;
cursor: pointer;
color: rgb(34, 34, 34);
padding: 0;
font-size: 14px;
}

.ol-plain-chevron {
flex-shrink: 0;
background: none;
border: none;
cursor: pointer;
color: #444;
}

.ol-plain-expandable {
display: none;
margin-top: 8px;
margin-left: 50px;
}

.ol-plain-note-expandable {
display: none;
margin-top: 8px;
margin-left: 50px;
}

.ol-plain-expandable.task-card-expanded {
display: block;
}

.ol-plain-row-footer {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 7px;
margin-left: 47px;
}

.ol-plain-row-footer-notes {
display: flex;
align-items: center;
justify-content: space-between;
margin: 4px 0;

}

.ol-plain-people {
display: flex;
align-items: center;
gap: 6px;
font-size: 13px;
color: #666;
}

.ol-plain-edit {
color: rgb(34, 34, 34);
font-size: 14px;
}

/* GUIDE page */
.ol-stale-banner {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 12px 16px;
margin-bottom: 16px;
}

.ol-stale-text {
font-size: 13px;
margin: 0;
}

.ol-guides-grid {
display: grid;
grid-template-columns: 1fr;
gap: 10px;
}

.ol-guide-card {
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 16px;
}

.ol-guide-card-draft {
border-style: dashed;
}

.ol-guide-badges {
margin-bottom: 8px;
}

.ol-badge {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 10px;
font-weight: 700;
/* text-transform: uppercase; */
letter-spacing: 0.04em;
font-family: "DM Sans", sans-serif;
color: #888;
}

.ol-badge-draft,
.ol-badge-public {
color: rgb(34, 34, 34);
}

.ol-guide-top h2 {
margin: 0 0 4px;
}

.ol-guide-title-link {
font-size: 16px;
font-weight: 700;
color: rgb(34, 34, 34);
text-decoration: none;
overflow-wrap: break-word;
word-break: break-word;
}

.ol-guide-description {
font-size: 13px;
color: #444;
margin: 0 0 10px;
}

.ol-unstyled-link {
color: inherit;
text-decoration: none;
}

.ol-guide-meta-row {
display: flex;
align-items: center;
gap: 6px;
margin-bottom: 10px;
}

.ol-guide-meta-row .ol-code {
display: inline;
margin-left: 0;
white-space: normal;
}

.ol-guide-meta-dot {
color: #ccc;
}

.ol-guide-share-status {
margin-bottom: 10px;
}

.ol-guide-actions {
display: flex;
align-items: center;
justify-content: space-between;
}

.ol-form-topbar {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
border-bottom: 1px solid #ddd;
margin-bottom: 24px;
padding-bottom: 12px;
}

.ol-form-actions-row {
display: flex;
justify-content: flex-end;
align-items: center;
gap: 12px;
margin-top: 28px;
padding-top: 16px;
}

.ol-guide-category {
margin-bottom: 24px;
}

.ol-guide-share-tip {
font-size: 13px;
line-height: 1.6;
color: #444;
border-left: 2px solid rgb(34, 34, 34);
padding-left: 12px;
margin: 0 0 24px;
}

.ol-form-title {
font-size: 28px;
font-weight: 400;
margin: 0 0 20px;
}


.ol-guide-hero {
margin-bottom: 16px;
}

.ol-share-label-everyone {
/* border-color: rgb(34, 34, 34); */
color: #666;
}

.ol-share-label-some {
/* border-color: #ccc; */
color: #666;
}

.ol-share-label-private {
color: #666;
}

/* TASK SHOW page */
.ol-task-show-card {
/* border: 1px solid rgb(34, 34, 34); */
border-radius: 4px;
padding: 12px 0;
}

.ol-task-show-media {
margin-top: 10px;
margin-bottom: 4px;
}

.ol-task-video {
margin-top: 4px;
}

.ol-task-show-header {
margin-bottom: 16px;
}

.ol-tag-overdue {
border-color: rgb(34, 34, 34);
}

.ol-task-show-date {
margin: 8px 0 4px;
}

.ol-task-show-title {
font-size: 16px;
font-weight: 700;
margin: 4px 0 0;
font-family: "DM Sans", sans-serif;
overflow-wrap: break-word;
word-break: break-word;
}

.ol-task-show-description {
font-size: 14px;
color: #444;
line-height: 1.6;
margin: 0 0 12px;
overflow-wrap: break-word;
}

.ol-task-show-author {
font-size: 12px;
color: #888;
margin: 0 0 16px;
font-family: "DM Sans", sans-serif;
}

.ol-task-show-sharing {
margin-top: 16px;
padding-top: 5px;
border-top: 1px solid rgb(34, 34, 34);
}

/* GUIDE SHOW page */
.ol-guide-hero-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
margin-top: 12px;
}

.ol-guide-share-status {
margin-bottom: 12px;
}

.ol-divider {
border: none;
border-top: 1px solid rgb(34, 34, 34);
margin: 20px 0;
}

.ol-steps-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
}

.ol-guided-mode-bar {
/* display: flex; */
/* align-items: center; */
/* justify-content: space-between; */
/* flex-wrap: wrap; */
/* gap: 10px; */
margin-bottom: 16px;
}

.ol-guided-mode-controls {
display: flex;
align-items: center;
gap: 10px;
}

.ol-guided-mode-counter {
white-space: nowrap;
}

.ol-steps-list {
display: flex;
flex-direction: column;
gap: 12px;
}

/* ---- Writing tips accordion ---- */
.ol-writing-tips {
border: 1px solid #ddd;
border-radius: 4px;
margin-bottom: 24px;
}

.ol-writing-tips-summary {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 14px;
font-size: 13px;
font-weight: 700;
cursor: pointer;
list-style: none;
}

.ol-writing-tips-summary::-webkit-details-marker {
display: none;
}

.ol-writing-tips-chevron {
transition: transform 0.2s ease;
font-size: 12px;
}

.ol-writing-tips[open] .ol-writing-tips-chevron {
transform: rotate(180deg);
}

.ol-writing-tips-body {
padding: 0 14px 14px;
border-top: 1px solid #eee;
}

.ol-writing-tips-intro {
font-size: 13px;
color: #444;
line-height: 1.6;
margin: 12px 0 14px;
}

.ol-writing-tips-list {
display: flex;
flex-direction: column;
gap: 12px;
}

.ol-writing-tip {
border-left: 2px solid #ddd;
padding-left: 12px;
}

.ol-writing-tip-avoid {
font-size: 13px;
color: #999;
margin: 0 0 2px;
}

.ol-writing-tip-better {
font-size: 13px;
color: rgb(34, 34, 34);
margin: 0;
}

/* ---- Media upload groups (line-style, hairline-separated ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â no boxes) ---- */
.ol-media-group {
border-top: 1px solid #ddd;
padding-top: 20px;
margin-top: 20px;
}

.ol-media-group-header {
display: flex;
align-items: flex-start;
gap: 12px;
margin-bottom: 12px;
}

.ol-media-icon {
flex-shrink: 0;
width: 36px;
height: 36px;
border: 1px solid rgb(34, 34, 34);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: rgb(34, 34, 34);
}

.ol-media-title {
font-size: 14px;
font-weight: 700;
margin: 0 0 2px;
}

.ol-media-subtitle {
font-size: 12px;
color: #666;
margin: 0;
line-height: 1.5;
}

/* ---- Existing-attachment previews ---- */
.ol-media-preview {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}

.ol-media-thumb {
width: 56px;
height: 56px;
object-fit: cover;
border-radius: 4px;
border: 1px solid rgb(34, 34, 34);
}

.ol-media-pdf-icon {
width: 56px;
height: 56px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
color: rgb(34, 34, 34);
}

.ol-media-preview-info {
min-width: 0;
}

.ol-media-name {
font-size: 13px;
margin: 0 0 4px;
overflow-wrap: break-word;
word-break: break-word;
}

.ol-media-audio-preview,
.ol-media-video-preview {
margin-bottom: 12px;
}

.ol-media-remove {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 12px;
color: #666;
cursor: pointer;
}

.ol-media-remove-checkbox {
width: 14px;
height: 14px;
accent-color: rgb(34, 34, 34);
}

.ol-media-hint {
font-size: 12px;
color: #888;
line-height: 1.5;
margin: 8px 0 0;
}

/* ---- File upload zone (label wraps a hidden input) ---- */
.ol-file-zone {
display: block;
border: 1px dashed #ccc;
border-radius: 4px;
padding: 14px;
text-align: center;
cursor: pointer;
}

/* literal "has-file" ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â toggled by file_upload_controller.js */
.ol-file-zone.has-file {
border-style: solid;
border-color: rgb(34, 34, 34);
}

.ol-file-zone-inner {
display: flex;
justify-content: center;
}

.ol-file-zone-btn {
display: inline-block;
font-size: 13px;
font-weight: 500;
border: 1px solid rgb(34, 34, 34);
border-radius: 999px;
padding: 6px 16px;
}

.ol-file-zone-selected {
font-size: 12px;
color: #444;
margin: 8px 0 0;
overflow-wrap: break-word;
word-break: break-word;
}

.ol-file-input {
display: none;
}

/* ---- In-app voice recorder ---- */
.ol-voice-unsupported {
font-size: 12px;
color: #666;
line-height: 1.5;
margin: 0 0 12px;
}

.ol-voice-controls {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
margin-bottom: 8px;
}

.ol-voice-btn {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 13px;
font-weight: 500;
font-family: inherit;
border: 1px solid rgb(34, 34, 34);
border-radius: 999px;
padding: 6px 16px;
background: none;
color: rgb(34, 34, 34);
cursor: pointer;
}

.ol-voice-btn-record svg {
color: #c0392b;
}

.ol-voice-btn-stop {
background: rgb(34, 34, 34);
color: #fff;
}

.ol-voice-status {
font-size: 12px;
color: #666;
}

/* literal "recording-active" ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â toggled by voice_recorder_controller.js */
.ol-voice-status.recording-active {
color: #c0392b;
font-weight: 700;
}

/* literal "voice-recorder-filename" ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â injected into the preview by the controller */
.voice-recorder-filename {
font-size: 12px;
color: #444;
margin: 4px 0 0;
overflow-wrap: break-word;
word-break: break-word;
}

.ol-voice-divider {
display: flex;
align-items: center;
gap: 10px;
margin: 16px 0;
font-size: 12px;
color: #999;
}

.ol-voice-divider::before,
.ol-voice-divider::after {
content: "";
flex: 1;
border-top: 1px solid #eee;
}

/* ---- Direct-upload progress UI (injected verbatim by file_upload_controller.js) ---- */
.direct-upload-progress {
position: relative;
height: 4px;
background: #eee;
border-radius: 2px;
margin-top: 8px;
overflow: hidden;
}

.direct-upload-progress-bar {
position: absolute;
inset: 0 auto 0 0;
width: 0;
background: rgb(34, 34, 34);
transition: width 0.2s ease;
}

.direct-upload-progress-label {
display: block;
font-size: 11px;
color: #666;
margin-top: 6px;
}

.direct-upload-progress-error .direct-upload-progress-bar {
background: #c0392b;
}

.direct-upload-progress-error .direct-upload-progress-label {
color: #c0392b;
}

.direct-upload-progress-complete .direct-upload-progress-bar {
background: rgb(34, 34, 34);
width: 100%;
}

.btn-uploading {
opacity: 0.6;
cursor: progress;
}

.ol-step-card {
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 16px;
}
.guided-mode-active [data-guided-mode-target="step"] {
display: none;
}

.guided-mode-active [data-guided-mode-target="step"] .guided-step-active,
[data-guided-mode-target="step"].guided-step-active {
display: block;
}

[data-guided-mode-target="step"].guided-step-hidden {
display: none;
}

.ol-step-header {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}

.ol-step-number {
width: 24px;
height: 24px;
border-radius: 50%;
background: rgb(34, 34, 34);
color: #fff;
font-size: 12px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}

.ol-step-title {
font-size: 15px;
font-weight: 700;
margin: 0 0 6px;
}

.ol-step-body {
font-size: 13px;
color: #444;
line-height: 1.6;
margin: 0;
}

.ol-step-placeholder {
display: flex;
flex-direction: column;
gap: 6px;
margin-top: 10px;
padding: 10px;
border: 1px dashed #ccc;
border-radius: 4px;
}

.ol-step-hint {
display: flex;
align-items: center;
gap: 6px;
font-size: 11px;
color: #999;
}

.ol-step-actions {
display: flex;
justify-content: flex-end;
gap: 6px;
margin-top: 10px;
}

.ol-guided-mode-done {
text-align: center;
padding: 24px 0;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
margin-top: 12px;
}

/* QR CODE page */
.ol-qr-card {
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 28px 24px;
margin-top: 16px;
text-align: center;
}

.ol-qr-header {
margin-bottom: 20px;
}

.ol-qr-title {
font-size: 18px;
font-weight: 700;
letter-spacing: 0.02em;
margin: 0 0 8px;
font-family: "DM Sans", sans-serif;
}

.ol-qr-hint {
font-size: 13px;
color: #444;
margin: 0;
}

.ol-qr-code-wrapper {
display: flex;
justify-content: center;
margin-bottom: 20px;
}

.ol-qr-code-wrapper svg {
max-width: 220px;
width: 100%;
height: auto;
}

.ol-qr-actions {
display: flex;
justify-content: center;
gap: 10px;
margin-bottom: 20px;
flex-wrap: wrap;
}

.ol-qr-url {
border-top: 1px solid #ddd;
padding-top: 14px;
}

.ol-qr-url-value {
font-size: 12px;
color: #444;
font-family: "DM Sans", sans-serif;
word-break: break-all;
margin: 4px 0 0;
}

/* ACCOUNT EDIT PAGE */
.ol-account-wrapper {
display: flex;
flex-direction: column;
gap: 28px;
}

.ol-account-header {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 16px;
}

.ol-account-section {
padding-top: 16px;
}

.ol-tag-muted {
color: #888;
}

.ol-tag-danger {
border-color: #c0392b;
color: #c0392b;
}

.ol-family-card {
/* padding: 16px; */
}

.ol-family-card-top {
display: flex;
align-items: flex-start;
justify-content: space-between;
margin-bottom: 12px;
}

.ol-family-card-name {
font-size: 16px;
font-weight: 700;
margin: 0 0 2px;
}

.ol-family-card-actions {
display: flex;
gap: 8px;
flex-wrap: wrap;
border-bottom: 1px solid lightgrey;
padding-bottom: 8px;
}

.ol-pill-danger {
border-color: #c0392b;
color: #c0392b;
}

.ol-family-empty {
text-align: center;
padding: 24px;
border: 1px dashed rgb(34, 34, 34);
border-radius: 4px;
}

.ol-family-empty-text {
font-size: 13px;
color: #666;
margin: 0 0 12px;
}

.ol-account-form-grid {
display: flex;
flex-direction: column;
gap: 16px;
margin-top: 12px;
}

.ol-subscription-card {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid lightgrey;
padding-bottom: 8px;
}


.ol-subscription-note {
font-size: 12px;
color: #666;
margin: 0;
text-align: right;
}

.ol-danger-zone {
/* border: 1px solid #c0392b;
border-radius: 4px;
padding: 16px; */
margin-top: 12px;
}

.ol-danger-zone-title {
font-size: 14px;
font-weight: 700;
color: #c0392b;
margin: 0 0 4px;
}

.ol-danger-zone-body {
font-size: 12px;
color: #666;
margin: 0 0 12px;
}

.ol-danger-instruction {
font-size: 12px;
margin: 0 0 6px;
}

.ol-danger-input {
width: 100%;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 8px 12px;
font-size: 16px;
margin-bottom: 10px;
}

.ol-btn-danger {
width: 100%;
border: 1px solid #c0392b;
background: #fff;
color: #c0392b;
border-radius: 4px;
padding: 10px;
font-size: 13px;
font-weight: 600;
cursor: not-allowed;
opacity: 0.5;
}

.ol-btn-danger.btn-danger-active {
cursor: pointer;
opacity: 1;
background: #c0392b;
color: #fff;
}

.ol-nav-bar {
  position: sticky;
  top: 0;
  z-index: 200;
  background: #fff;
  margin-bottom: 15px;
  border-bottom: none;
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.06);
  width: 100%;
}

.ol-nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  max-width: 680px;
  margin: 0 auto;
  padding: 20px 15px 0
}

.ol-nav-logo {
font-family: "DM Serif Display", serif;
font-weight: 700;
color: rgb(34, 34, 34);
text-decoration: none;
flex-shrink: 0;
}

.ol-nav-admin {
font-size: 12px;
color: #ffffff;
padding: 8px 16px;
border-radius: 15px;
background-color: rgb(127, 30, 47);
}

/* ---- Right-hand row: nav links + divider + bell, all one flex row ---- */
.ol-nav-links {
display: flex;
align-items: center;
gap: 28px;
font-family: "DM Sans", sans-serif;
position: relative;
}

.ol-nav-letter {
display: inline-flex;
align-items: center;
color: rgb(135, 132, 132);
text-decoration: none;
position: relative
}

.ol-nav-letter-active::before {
  content: "";
  position: absolute;
  bottom: -7px;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  height: 3px;
  background-color: currentColor;
  border-radius: 2px 2px 0 0;
}

@media (max-width: 768px) {
  .ol-nav-letter-active::before {
    bottom: auto;
    top: 0;
    left: 0;
    transform: none;
    width: 100%;
    height: 3px;
    border-radius: 0 0 2px 2px;
  }
}

.ol-nav-letter-active {
font-weight: 500;
color: black;
}


.ol-nav-word {
font-size: 15px;
color: #656464;
text-decoration: none;
}

.ol-nav-word-active {
font-weight: 700;
color: rgb(34, 34, 34);
text-decoration: underline;
}

.ol-nav-person {
display: inline-flex;
align-items: center;
color: rgb(34, 34, 34);
}

/* Text labels under each icon ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â shown on mobile only (see media query) */
.ol-nav-label {
display: none;
font-size: 10px;
font-family: "DM Sans", sans-serif;
text-align: center;
margin-top: 3px;
text-decoration: none;
color: #000;
line-height: 1;
}

/* ---- Bell: desktop placement ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â last item in the nav-links row,
  separated by a vertical divider, with its own circular badge ---- */

.ol-nav-dot-wrapper {
  position: fixed;
  top: 10%;
  right: 100px;
  z-index: 250; /* above page content, below the panel itself (z-index: 300) */
  margin-left: 0;
  padding-left: 0;
  border-left: none; /* the desktop divider doesn't apply here */
}

.ol-nav-bell {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgb(255, 255, 255);
  border: 2px solid rgb(0, 0, 0);
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}

.ol-nav-dot-panel {
width: 300px;
max-height: 70vh;
overflow-y: auto;
background: rgb(255, 255, 255);
border: 1px solid rgb(48, 48, 48);
z-index: 300;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 90vw;
border-radius: 4px;
}

.ol-nav-dot-panel-header {
background: rgb(255, 255, 255);
color: white;
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 14px;
border-bottom: 1px solid rgb(0, 0, 0);
flex-shrink: 0;
}

.ol-nav-dot-panel-title {
font-weight: 700;
font-size: 13px;
}

.ol-nav-dot-panel-close {
background: none;
border: none;
cursor: pointer;
font-size: 13px;
color: rgb(31, 31, 31);
}

.ol-nav-dot-panel turbo-frame {
position: relative;
padding-right: 10px;
flex: 1;
overflow-y: auto;
min-height: 0;
}

.ol-custom-scrollbar-track {
position: absolute;
top: 0;
bottom: 0;
right: 2px;
width: 4px;
background: transparent;
pointer-events: none;
}

.ol-custom-scrollbar-thumb {
position: absolute;
top: 0;
right: 0;
width: 4px;
background: rgb(34, 34, 34);
border-radius: 999px;
}

.ol-nav-dot-panel turbo-frame::-webkit-scrollbar {
width: 6px;
}

.ol-nav-dot-panel turbo-frame::-webkit-scrollbar-track {
background: transparent;
}

.ol-nav-dot-panel turbo-frame::-webkit-scrollbar-thumb {
background: rgb(34, 34, 34);
border-radius: 999px;
}

.ol-nav-dot-loading {
padding: 16px;
font-size: 12px;
color: #888;
text-align: center;
}

/* ---- "More" button + popover (mobile only ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â see media query) ---- */
.ol-nav-more-wrapper {
position: relative;
display: flex;
align-items: center;
justify-content: center;
}

.ol-nav-more-btn {
background: none;
border: none;
padding: 0;
cursor: pointer;
color: #000;
display: flex;
flex-direction: column;
align-items: center;
min-width: 44px;
min-height: 44px;
justify-content: center;
appearance: none;
-webkit-appearance: none;
}

.ol-nav-more-panel {
position: absolute;
bottom: calc(100% + 8px);
right: 0;
background: #fff;
border: 1px solid #000;
border-radius: 8px;
overflow: hidden;
min-width: 110px;
box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.12);
z-index: 400;
}

.ol-nav-more-item {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 14px 16px;
text-decoration: none;
color: #000;
font-size: 14px;
font-family: "DM Sans", sans-serif;
border-bottom: 1px solid #eee;
}

.ol-nav-more-item:last-child {
border-bottom: none;
}

.ol-nav-more-item:active {
background: #f5f5f5;
}

/* ---- Desktop-only / mobile-only visibility helpers ---- */
.ol-nav-desktop-only {
display: inline-flex;
}

.ol-nav-mobile-only {
display: none;
}

/* ---- Logo: mobile vs desktop image swap ---- */
@media (min-width: 769px) {
.ol-nav-logo img:first-child {
  display: none; /* hide website-logo-mobile.svg on desktop */
}
}

@media (max-width: 768px) {
  .main-content {
    padding-top: env(safe-area-inset-top, 0px);
    padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
  }

  .ol-nav-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    top: auto;
    min-height: auto;
    height: auto;
    padding-bottom: env(safe-area-inset-bottom, 0px);
    background: #fff; /* Ensure background color covers the safe area */
    margin-bottom: 0;
    border-top: none;
    box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.08), 0 -4px 12px rgba(0, 0, 0, 0.06);
    border-bottom: none;
  }

  .ol-nav-inner {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    max-width: none;  /* full-bleed on mobile, NOT capped at 680px */
    margin: 0;
    height: 60px;
    padding: 8px;
  }

  .ol-nav-logo,
  .ol-nav-admin {
    display: none;
  }

  .ol-nav-links {
    display: flex;
    flex: 1;
    justify-content: space-around;
    align-items: center;
    gap: 0;
    margin-top: 0;
  }

  .ol-nav-letter,
  .ol-nav-person {
    flex-direction: column;
    min-width: 44px;
    height: 60px;
    min-height: 60px;
    font-size: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0;
  }

  .ol-nav-label {
    display: block; /* shown on mobile, under each destination icon */
  }

  @media (max-width: 768px) {
    .ol-nav-word {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      flex: 1;
      text-align: center;
      font-size: 13px;
    }
  }

  .ol-nav-desktop-only {
    display: none;
  }

  .ol-nav-mobile-only {
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .ol-nav-dot-wrapper {
    position: fixed;
    top: 3%;
    right: 12px;
    z-index: 250; /* above page content, below the panel itself (z-index: 300) */
    margin-left: 0;
    padding-left: 0;
    border-left: none; /* the desktop divider doesn't apply here */
  }

  /* Mobile */
  .ol-nav-bell {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgb(255, 255, 255);
    cursor: pointer;
    border: 2px solid rgb(0, 0, 0);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  }

  .ol-nav-logo img {
    display: none;
  }
}

/* INSTALL PROMPT */
.ol-install-wrapper {
position: relative;
display: inline-flex;
}

.ol-install-panel {
position: absolute;
top: calc(100% + 8px);
right: 0;
background: #fff;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
box-shadow: 0 8px 24px rgba(0,0,0,0.12);
width: 320px;
max-height: 70vh;
overflow-y: auto;
padding: 16px;
z-index: 300;
}

.ol-install-panel-heading {
font-size: 14px;
font-weight: 700;
margin: 0 0 12px;
}

.ol-install-steps {
margin: 14px 0px
}

.ol-install-step {
display: flex;
align-items: flex-start;
gap: 10px;
margin-bottom: 10px;
}

.ol-install-step-number {
flex-shrink: 0;
width: 20px;
height: 20px;
border-radius: 50%;
background: rgb(34, 34, 34);
color: #fff;
font-size: 11px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
}

.ol-install-step-text {
font-size: 12px;
color: #444;
line-height: 1.5;
margin: 0;
}

.ol-install-link-list {
list-style: none;
margin: 25px 0px;
padding: 0;
display: flex;
flex-direction: column;
gap: 6px;
}

.ol-install-link {
display: flex;
align-items: center;
gap: 30px;
padding: 8px 10px;
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
text-decoration: none;
color: rgb(34, 34, 34);
}

.ol-install-link-platform {
flex-shrink: 0;
width: 100px;
font-size: 14px;
}

.ol-install-link-title {
flex: 1;
font-size: 12px;
}

.ol-install-link-arrow {
flex-shrink: 0;
}

.ol-install-confirmed {
display: flex;
align-items: center;
gap: 6px;
font-size: 12px;
font-weight: 600;
margin: 8px 0;
}

.ol-install-tips {
display: flex;
flex-direction: column;
gap: 8px;
}

.ol-install-tip {
display: flex;
align-items: center;
gap: 6px;
font-size: 14px;
color: #666;
}

.ol-secondary-actions-bar {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 10px;
padding: 10px 0;
margin-bottom: 12px;
border-bottom: 1px solid rgb(34, 34, 34);
}
/* ============================================================
  LINE-STYLE FORM SYSTEM (notes/todos/journal forms, file inputs)
  ============================================================ */

.ol-field-line {
position: relative;
margin-bottom: 24px;
}

/* Scoped to :has(input ...)/:has(textarea ...) so a .ol-field-line wrapping
  a <select> (e.g. the recurrence dropdown) keeps its label in normal
  static flow, completely unaffected ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â <select> doesn't support
  :placeholder-shown at all, so an unconditional rule here would leave a
  select's label stuck absolutely-positioned with nothing to ever float it. */
.ol-field-line:has(input) label,
.ol-field-line:has(textarea) label {
position: absolute;
left: 0;
top: 6px;
font-size: 16px;
font-weight: 400;
color: #888;
margin-bottom: 0;
pointer-events: none; /* clicks pass through to the input underneath */
transform-origin: left top;
transition: transform 0.15s ease, color 0.15s ease;
}

/* Float the label up and shrink it once the field is focused OR has real
  content. Requires placeholder=" " (a literal single space) on the
  input/textarea ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â :placeholder-shown only activates when a non-empty
  placeholder attribute is present, so this is what lets :has() detect
  "is this field empty" at all. */
.ol-field-line:has(input:focus) label,
.ol-field-line:has(input:not(:placeholder-shown)) label,
.ol-field-line:has(textarea:focus) label,
.ol-field-line:has(textarea:not(:placeholder-shown)) label {
transform: translateY(-20px) scale(0.75);
color: #000;
}

.ol-field-line input[type="text"],
.ol-field-line input[type="email"],
.ol-field-line input[type="password"],
.ol-field-line input[type="number"],
.ol-field-line textarea {
width: 100%;
border: none;
border-bottom: 1px solid rgb(34, 34, 34);
border-radius: 0;
padding: 6px 0;
font-size: 16px;
font-family: "DM Sans", sans-serif;
background: transparent;
outline: none;
position: relative; /* sits visually above the absolutely-positioned label */
z-index: 1;
}

.ol-field-line input:focus,
.ol-field-line textarea:focus {
border-bottom: 2px solid rgb(34, 34, 34);
}

.ol-field-line textarea {
resize: vertical;
min-height: 90px;
}

.ol-field-line select {
width: 100%;
border: none;
border-bottom: 1px solid rgb(34, 34, 34);
border-radius: 0;
padding: 6px 24px 6px 0;
font-size: 15px;
font-family: "DM Sans", sans-serif;
background: transparent;
outline: none;
cursor: pointer;
appearance: none;
-webkit-appearance: none;
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right center;
background-size: 14px;
}

.ol-field-line select:focus {
border-bottom: 2px solid rgb(34, 34, 34);
}

.ol-search-bar {
margin-bottom: 16px;
}

.ol-search-input {
width: 100%;
border: none;
border-bottom: 1px solid rgb(34, 34, 34);
padding: 8px 0;
font-size: 16px;
font-family: "DM Sans", sans-serif;
background: transparent;
outline: none;
}

.ol-search-input:focus {
border-bottom: 2px solid rgb(34, 34, 34);
}

.ol-search-results-info {
font-size: 12px;
color: #666;
margin-bottom: 16px;
}

.ol-quick-add-form {
margin-bottom: 24px;
padding-bottom: 16px;
border-bottom: 1px solid rgb(34, 34, 34);
}

.ol-form-header {
display: flex;
flex-direction: column;
gap: 12px;
margin-bottom: 24px;
}

.ol-form-header-actions {
display: flex;
justify-content: flex-end;
align-items: center;
gap: 12px;
border-bottom: 1px solid #ddd;
margin-bottom: 24px;
padding-bottom: 12px;
}

.ol-form-footer-actions {
display: flex;
justify-content: flex-end;
gap: 16px;

}

.ol-form-footer-actions {
margin-top: 28px;
}

.ol-text-btn {
background: none;
border: none;
font-size: 15px;
color: rgb(34, 34, 34);
cursor: pointer;
text-decoration: none;
font-family: inherit;
font-weight: 600;
padding: 0;
}

.ol-form-label {
font-size: 13px;
font-weight: 700;
margin: 0 0 8px;
}

.ol-pill-row {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 20px;
}

.ol-line-pill {
background: none;
border: 1px solid #ccc;
border-radius: 999px;
padding: 4px 14px;
font-size: 13px;
color: rgb(34, 34, 34);
cursor: pointer;
font-family: inherit;
}

/* Matches the actual class toggled by category_chips_controller.js */
.ol-line-pill.category-chip-active {
background: rgb(34, 34, 34);
color: #fff;
border-color: rgb(34, 34, 34);
}

.ol-line-pill-input {
border: none;
border-bottom: 1px solid #ccc;
background: transparent;
font-size: 16px;
padding: 9px 0;
outline: none;
flex: 1;
min-width: 120px;
max-width: 200px;
}

.ol-line-date-input {
border: none;
border-bottom: 1px solid rgb(34, 34, 34);
background: transparent;
font-size: 16px;
padding: 4px 0;
}

.ol-file-input-hidden {
display: none;
}

.ol-file-selected {
font-size: 12px;
color: #666;
margin-top: 4px;
}

/* Category filter view */
.ol-filter-row {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 20px;
}

.ol-filter-tab {
font-size: 13px;
color: #666;
text-decoration: none;
border: 1px solid #ccc;
border-radius: 999px;
padding: 4px 14px;
}

.ol-filter-tab-active {
background: rgb(34, 34, 34);
color: #fff;
border-color: rgb(34, 34, 34);
}

/* Share selector */
.ol-share-selector {
margin-bottom: 20px;
}

.ol-share-selector-members {
display: flex;
flex-wrap: wrap;
gap: 8px;
}

.ol-share-btn {
background: none;
border: 1px solid #ccc;
border-radius: 999px;
padding: 4px 14px;
font-size: 13px;
cursor: pointer;
font-family: inherit;
color: rgb(34, 34, 34);
}

.ol-share-btn.active {
background: rgb(34, 34, 34);
color: #fff;
border-color: rgb(34, 34, 34);
}



/* Footer */
.ol-footer {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
padding: 20px 24px;
border-top: 1px solid rgb(34, 34, 34);
margin-top: 40px;
}

@media (max-width: 768px) {
.ol-footer {
  display: none;
}
}

.ol-footer-links {
display: flex;
flex-wrap: wrap;
gap: 18px;
}

.ol-footer-link {
font-size: 13px;
color: #444;
text-decoration: none;
}

.ol-footer-link:hover {
text-decoration: underline;
}

.ol-footer-copy {
font-size: 12px;
color: #888;
}

/* Demo page related */
.ol-demo-ribbon {
position: fixed;
top: 16px;
left: 50%;
transform: translateX(-50%);
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
background: rgb(34, 34, 34);
color: #fff;
border-radius: 15px;
padding: 8px 16px;
font-size: 13px;
z-index: 400;
}

.ol-demo-ribbon-btn {
background: white;
border: none;
color: black;
padding: 4px 12px;
font-size: 12px;
cursor: pointer;
border-radius: 5px;
}

.ol-plain-checkbox[disabled] {
  border-color: #ddd;
  box-shadow: 0 3px 0 #e8e8e8;
  cursor: default;
  opacity: 0.5;
}

.ol-plain-recurrence {
display: flex;
align-items: center;
gap: 7px;
font-size: 12px;
color: #5eae32;
margin-top: 4px;
margin-left: 37px;;
}


.ol-plain-checkbox,
.ol-plain-undo {
  background: #fff;
  border: 1.5px solid #ddd;
  border-radius: 50%;
  width: 24px;
  height: 24px;
  min-width: 24px;
  padding: 0;
  cursor: pointer;
  color: rgb(34, 34, 34);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  appearance: none;
  -webkit-appearance: none;
  transition: border-color 0.15s ease;
  /* explicitly remove the old 3D treatment */
  box-shadow: none;
  transform: none;
}

/* Icon hidden at rest, fades in on hover */
.ol-plain-checkbox svg,
.ol-plain-undo svg {
  opacity: 0;
  transition: opacity 0.15s ease;
}

.ol-plain-checkbox:hover,
.ol-plain-undo:hover {
  border-color: rgb(34, 34, 34);
}

.ol-plain-checkbox:hover svg,
.ol-plain-undo:hover svg {
  opacity: 1;
}

/* No hover/press animation shift â€” flat, just the border + icon change */
.ol-plain-checkbox:active,
.ol-plain-undo:active {
  background: #f5f5f5;
}

.ol-plain-checkbox[disabled] {
  border-color: #eee;
  cursor: default;
  opacity: 0.5;
}

.ol-plain-checkbox[disabled]:hover {
  border-color: #eee;
}


/* ACTIVITY FEED */
.ol-activity-feed-list {
display: flex;
flex-direction: column;
}

.ol-activity-feed-item {
display: flex;
align-items: flex-start;
gap: 5px;
padding: 12px;
border-bottom: 1px solid #eee;
text-decoration: none;
color: rgb(0, 0, 0);
background-color: rgb(255, 255, 255);
}

.ol-activity-feed-item:last-child {
border-bottom: none;
}

.ol-activity-feed-item:hover {
opacity: 0.65;
}

.ol-activity-feed-icon {
flex-shrink: 0;
width: 30px;
height: 30px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: rgb(60, 60, 60);
}

.ol-activity-feed-text {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
}

.ol-activity-feed-text-line {
font-size: 13px;
line-height: 1.45;
overflow-wrap: break-word;
}

.ol-activity-feed-time {
font-size: 11px;
color: #999;
}

.ol-activity-empty {
font-size: 13px;
color: #999;
padding: 16px 0;
text-align: center;
}

/* ===================================================================
  LEGAL PAGES (terms.html.erb, privacy.html.erb) ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â ol- system
  -------------------------------------------------------------------
  Plain long-form document style: container + header (title/date) +
  flowing content (h2/p/ul/li/a/strong as descendants of .ol-legal-content).
  Reuses .ol-notice (intro callout box) and .ol-inline-link (mailto links) ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â
  no new classes needed for either.
  =================================================================== */

.ol-legal-page {
max-width: 680px;
margin: 0 auto;
padding: 32px 16px 64px;
font-family: "DM Sans", sans-serif;
color: rgb(34, 34, 34);
}

.ol-legal-header {
border-bottom: 1px solid rgb(34, 34, 34);
padding-bottom: 16px;
margin-bottom: 24px;
}

.ol-legal-title {
font-size: 30px;
font-weight: 700;
font-family: "DM Serif Display", serif;
margin: 0 0 8px;
letter-spacing: -0.01em;
}

.ol-legal-date {
font-size: 13px;
color: #888;
margin: 0;
}

.ol-legal-content h2 {
font-size: 17px;
font-weight: 700;
margin: 32px 0 10px;
}

.ol-legal-content h2:first-of-type {
margin-top: 0;
}

.ol-legal-content p {
font-size: 14px;
color: #222;
line-height: 1.7;
margin: 0 0 14px;
}

.ol-legal-content ul {
margin: 0 0 14px;
padding-left: 20px;
}

.ol-legal-content li {
font-size: 14px;
color: #222;
line-height: 1.7;
margin-bottom: 6px;
}

.ol-legal-content li strong {
color: rgb(34, 34, 34);
}

.ol-legal-content .ol-notice {
margin-bottom: 28px;
}

.ol-legal-content .ol-notice p {
margin: 0;
color: rgb(34, 34, 34);
}

/* INVITE page */
.ol-invite-link-row {
display: flex;
align-items: center;
gap: 10px;
margin-top: 24px;
}

.ol-invite-link-input {
flex: 1;
min-width: 0;
border: none;
border-bottom: 1px solid rgb(34, 34, 34);
border-radius: 0;
padding: 6px 0;
font-size: 16px;
font-family: "DM Sans", sans-serif;
background: transparent;
outline: none;
color: #444;
overflow: hidden;
text-overflow: ellipsis;
}

.ol-members-section {
margin-top: 24px;
}

.ol-member-left {
display: flex;
align-items: center;
gap: 12px;
min-width: 0;
}

/* Matches the existing .ol-media-icon circle treatment (36px, bordered,
  centered) used elsewhere in the system, just with a letter instead of an svg. */
.ol-avatar-circle {
flex-shrink: 0;
width: 36px;
height: 36px;
border: 1px solid rgb(34, 34, 34);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: 700;
}

.ol-member-info {
min-width: 0;
}

.ol-member-name {
font-size: 14px;
font-weight: 700;
margin: 0 0 2px;
}

.ol-member-email {
font-size: 12px;
color: #666;
margin: 0 0 2px;
overflow-wrap: break-word;
word-break: break-word;
}

.ol-member-joined {
font-size: 11px;
color: #888;
font-family: "DM Sans", sans-serif;
white-space: nowrap;
}

.ol-page-wide {
max-width: 1100px;
}

.ol-admin-summary {
font-size: 13px;
color: #666;
margin: 4px 0 24px;
}

/* ---- Stat cards: bordered boxes are a deliberate exception here,
  same as .ol-auth-card / .ol-family-card / .ol-danger-zone elsewhere ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â
  a stats dashboard reads naturally as cards, unlike list rows. ---- */
.ol-admin-stats {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
gap: 10px;
margin-bottom: 28px;
}

.ol-admin-stat-card {
border: 1px solid rgb(34, 34, 34);
border-radius: 4px;
padding: 14px 16px;
}

.ol-admin-stat-number {
font-size: 26px;
font-weight: 700;
margin: 0 0 2px;
font-family: "DM Serif Display", serif;
}

.ol-admin-stat-label {
font-size: 11px;
color: #888;
margin: 0;
}

/* ---- Table ---- */
.ol-admin-table-wrapper {
overflow-x: auto; /* safety net on narrower screens ÃƒÆ’Ã†â€™Ãƒâ€šÃ‚Â¢ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â€šÂ¬Ã…Â¡Ãƒâ€šÃ‚Â¬ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬Ãƒâ€šÃ‚Â page itself stays at ol-page-wide's max-width */
}

.ol-admin-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}

.ol-admin-table thead th {
text-align: left;
font-size: 11px;
font-weight: 700;
color: #888;
letter-spacing: 0.04em;
padding: 0 12px 10px 0;
border-bottom: 1px solid rgb(34, 34, 34);
white-space: nowrap;
}

.ol-admin-table td {
padding: 12px 12px 12px 0;
white-space: nowrap;
}

.ol-admin-table-row {
border-bottom: 1px solid #eee;
}

.ol-admin-table-row:last-child {
border-bottom: none;
}

.ol-admin-table-link {
color: rgb(34, 34, 34);
text-decoration: none;
font-weight: 500;
}

.ol-admin-table-link:hover {
text-decoration: underline;
}

.ol-admin-table-muted {
color: #666;
}

.ol-admin-confirmed-yes {
color: #2d7a4f;
}

.ol-admin-confirmed-no {
color: #c0392b;
}












/* NEW JOURNAL FORM */
.ol-form-card {
  border: 1px solid #000;
  border-radius: 12px;
  padding: 20px;
}

/* Title/description sit directly in the card, no extra wrapper needed ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â
    .ol-field-line (floating label) already handles their styling. */
.ol-form-card .ol-field-line {
  margin-bottom: 18px;
}

.ol-form-card .ol-field-line:last-of-type {
  margin-bottom: 16px;
}

/* ---- Pill action row: date + category chips share one row ---- */
.ol-pill-action-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 18px;
}

/* ---- Date pill: wraps the existing datepicker-controlled text input,
    restyled from full-width line input to a compact pill. The input
    itself keeps its existing data-controller="datepicker" untouched. ---- */
.ol-date-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid #000;
  border-radius: 999px;
  padding: 7px 14px;
}

.ol-date-pill svg {
  flex-shrink: 0;
  color: #000;
}

.ol-date-pill input {
  border: none;
  outline: none;
  background: transparent;
  font-size: 13px;
  font-family: "DM Sans", sans-serif;
  width: 13ch;
  padding: 0;
  cursor: pointer;
}

.ol-form-card-section {
  margin-bottom: 18px;
}

.ol-form-card-section:last-of-type {
  margin-bottom: 0;
}

.ol-media-pill-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.ol-media-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid #000;
  border-radius: 999px;
  padding: 7px 14px;
  font-size: 13px;
  font-family: "DM Sans", sans-serif;
  background: none;
  cursor: pointer;
  color: #000;
}

.ol-media-pill:hover {
  background: #f5f5f5;
}

.ol-media-pill-status {
  font-size: 11px;
  color: #666;
  margin: 6px 0 0;
}

/* ---- Footer: divider + Cancel/Save pills, bottom-right of the card,
    matching the screenshot's footer position (not top, as some similar
    patterns place it). ---- */
.ol-form-card-footer {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid #eee;
}

/* ===================================================================
   CATEGORY PICKER ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â collapsed behind a single trigger button instead
   of always showing every category inline (gets messy with 30+
   categories). Click opens a popover with categories listed one below
   another, plus a field to add a custom one. Pairs with the updated
   category_chips_toggle_controller.js (adds toggle/close/outside-click).
   =================================================================== */

   .ol-category-picker {
    position: relative;
    display: inline-flex;
  }
  
  /* Trigger button ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â same pill treatment as .ol-date-pill/.ol-media-pill
     so it sits visually consistent in the same action row. */
  .ol-category-trigger {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 1px solid #000;
    border-radius: 999px;
    padding: 7px 14px;
    font-size: 13px;
    font-family: "DM Sans", sans-serif;
    background: none;
    cursor: pointer;
    color: #000;
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  
  .ol-category-trigger:hover {
    background: #f5f5f5;
  }
  
  /* Popover panel ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â bordered box (acceptable boxed exception for a
     popover, same as .ol-nav-more-panel elsewhere in the app). */
  .ol-category-panel {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    width: 220px;
    max-width: 80vw;
    background: #fff;
    border: 1px solid #000;
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
    z-index: 50;
    overflow: hidden;
  }
  
  /* Vertical list ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â one category per row, not pills/chips, exactly as
     requested ("one below another"). Scrolls internally past a max
     height so 30 categories don't blow out the page layout. */
  .ol-category-list {
    max-height: 220px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
  }
  
  .ol-category-row {
    display: block;
    width: 100%;
    text-align: left;
    background: none;
    border: none;
    border-bottom: 1px solid #eee;
    padding: 10px 14px;
    font-size: 13px;
    font-family: "DM Sans", sans-serif;
    color: #000;
    cursor: pointer;
  }
  
  .ol-category-row:last-child {
    border-bottom: none;
  }
  
  .ol-category-row:hover {
    background: #f5f5f5;
  }
  
  /* literal "category-chip-active" ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â toggled by category_chips_toggle_controller.js,
     reused here on the row instead of a pill-shaped chip */
  .ol-category-row.category-chip-active {
    font-weight: 700;
    background: #f5f5f5;
  }
  
  .ol-category-custom {
    border-top: 1px solid #000;
    padding: 10px 14px;
  }
  
  .ol-category-custom input {
    width: 100%;
    border: none;
    outline: none;
    background: transparent;
    font-size: 13px;
    font-family: "DM Sans", sans-serif;
    padding: 4px 0;
  }

  /* ===================================================================
   Attachment indicator badges ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â small icon badges on todo/journal rows
   showing whether a pdf, voice recording, or video is attached, without
   needing to open the row or the task show page to find out.
   =================================================================== */

.ol-attachment-badges {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
}

.ol-attachment-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: 3px;
  color: #666;
}

/* Standard visually-hidden utility ÃƒÆ’Ã‚Â¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚Â¬ÃƒÂ¢Ã¢â€šÂ¬Ã‚Â keeps the badge accessible to screen
   readers (icon alone isn't enough) without showing redundant text
   alongside the title= tooltip for sighted users. */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.ol-section-month-label {
  font-size: 24px;
  font-weight: 700;
  margin: 35px 0 0;
  color: rgb(38 119 142);
  }
  



/* ===================================================================
   CALENDAR VIEW (shared by todos.html.erb and journal.html.erb)
   =================================================================== */

   .ol-calendar {
    margin-bottom: 24px;
  }
  
  .ol-calendar-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
  }
  
  .ol-calendar-month-label {
    font-size: 16px;
    font-weight: 700;
    color: rgb(38 119 142);
  }
  
  .ol-calendar-weekdays {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    margin-bottom: 6px;
  }
  
  .ol-calendar-weekdays span {
    text-align: center;
    font-size: 11px;
    color: #888;
    text-transform: uppercase;
  }
  
  .ol-calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
  }
  
  .ol-calendar-cell {
    aspect-ratio: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    border-radius: 4px;
    text-decoration: none;
    color: rgb(34, 34, 34);
  }
  
  .ol-calendar-cell-blank {
    visibility: hidden;
  }
  
  .ol-calendar-cell-link {
    cursor: pointer;
  }
  
  .ol-calendar-cell-link:hover {
    background: #f5f5f5;
  }
  
  .ol-calendar-cell-today {
    border: 1px solid rgb(34, 34, 34);
  }
  
  .ol-calendar-daynum {
    font-size: 13px;
  }
  
  .ol-calendar-dot-row {
    display: flex;
    align-items: center;
    gap: 3px;
  }
  
  .ol-calendar-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgb(34, 34, 34);
  }
  
  .ol-calendar-dot-overdue {
    background: #c0392b;
  }
  
  .ol-calendar-count {
    font-size: 10px;
    color: #666;
  }
  
  /* ---- List/calendar toggle ---- */
  .ol-view-toggle {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
  }


/* ---- Calendar month/year picker selects ---- */
.ol-calendar-picker {
  display: flex;
  align-items: center;
  gap: 6px;
}

.ol-calendar-picker-select {
  border: none;
  background: transparent;
  font-size: 15px;
  font-weight: 700;
  font-family: "DM Sans", sans-serif;
  color: rgb(34, 34, 34);
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  padding: 4px 2px;
  text-align: center;
}

.ol-calendar-picker-select:focus {
  outline: none;
  border-bottom: 1px solid rgb(34, 34, 34);
}

trix-toolbar .trix-button--icon-attach {
  display: none;
}

/* ---- Calendar anchor scroll offset ---- */
span[id^="day-"],
#today-todo {
  scroll-margin-top: 80px;
}

@media (max-width: 768px) {
  span[id^="day-"],
  #today-todo {
    scroll-margin-top: 0;
  }
}

/* ---- Note reminder pills ---- */
.ol-reminder-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid #000;
  border-radius: 999px;
  padding: 7px 14px;
  font-size: 13px;
  font-family: "DM Sans", sans-serif;
  background: none;
  margin-bottom: 6px;
  cursor: pointer;
  color: #000;
}

.ol-reminder-pill:hover {
  background: #f5f5f5;
}

.ol-reminder-pill.ol-reminder-pill-active {
  background: rgb(34, 34, 34);
  color: #fff;
  border-color: rgb(34, 34, 34);
}