:root {
  --bg: #fffaf8; --paper: #ffffff; --ink: #493d42; --muted: #8c7d83;
  --pink: #c65b83; --pink-dark: #9e4165; --pink-light: #f9e8ee; --rose: #f3d5df;
  --line: #f0e2e6; --sage: #e5eee4; --lavender: #ece7f6; --butter: #fbf0d8;
  --shadow: 0 8px 28px rgba(115, 66, 83, .07); --radius: 22px;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--ink); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; line-height: 1.5; }
button, input, textarea, select { font: inherit; }
button { cursor: pointer; }
.app-shell { max-width: 1180px; margin: 0 auto; padding: 20px clamp(16px, 4vw, 44px) 24px; }
.topbar { display:flex; align-items:center; gap:13px; margin-bottom:25px; }
.brand-mark { width:48px; height:48px; display:grid; place-items:center; border-radius:17px; background:var(--pink-light); color:var(--pink); font-size:30px; }
.brand { flex:1; }
h1,h2,p { margin-top:0; }
h1 { margin:0; font-size:1.35rem; letter-spacing:-.03em; }
.eyebrow { margin:0 0 5px; color:var(--pink-dark); font-size:.68rem; font-weight:800; letter-spacing:.13em; }
.icon-button { width:42px; height:42px; border:1px solid var(--line); border-radius:15px; color:var(--pink-dark); background:var(--paper); font-size:1.3rem; }
.panel { background:var(--paper); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); }
.welcome { min-height:205px; display:flex; align-items:center; justify-content:space-between; padding:clamp(22px,4vw,38px); overflow:hidden; background:linear-gradient(120deg,#fff0f4 0%,#fff9f4 65%,#f8edf8 100%); }
.welcome h2 { font-size:clamp(1.65rem,4vw,2.65rem); line-height:1.14; letter-spacing:-.045em; margin:8px 0 12px; }
.welcome h2 span { color:var(--pink-dark); }
.muted { color:var(--muted); margin-bottom:0; }
.welcome-flower { color:#e9bdcd; font-size:clamp(5rem,14vw,9rem); line-height:1; transform:rotate(-12deg); padding:0 12px; }
.quick-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin:16px 0 32px; }
.stat-card { display:flex; align-items:center; gap:10px; padding:15px; background:var(--paper); border:1px solid var(--line); border-radius:18px; }
.stat-icon { width:38px; height:38px; display:grid; place-items:center; border-radius:13px; background:var(--pink-light); color:var(--pink-dark); font-size:1.25rem; }
.stat-card strong,.stat-card small { display:block; }
.stat-card strong { font-size:1.25rem; }
.stat-card small { color:var(--muted); font-size:.78rem; }
.section-heading { margin:0 0 15px; }
.section-heading h2,.panel-heading h2 { margin:0; font-size:1.35rem; letter-spacing:-.03em; }
.module-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.module-card { min-height:136px; padding:18px; text-align:left; border:1px solid var(--line); border-radius:20px; background:var(--paper); box-shadow:var(--shadow); color:var(--ink); transition:transform .15s, border-color .15s; }
.module-card:hover { transform:translateY(-2px); border-color:#e6b4c6; }
.module-icon { width:42px; height:42px; display:grid; place-items:center; border-radius:14px; margin-bottom:12px; font-size:1.35rem; }
.module-card strong,.module-card small { display:block; }
.module-card strong { font-size:.98rem; }
.module-card small { margin-top:3px; color:var(--muted); font-size:.76rem; }
.tone-pink .module-icon { background:var(--pink-light); color:#a9476e; }
.tone-sage .module-icon { background:var(--sage); color:#58765a; }
.tone-lavender .module-icon { background:var(--lavender); color:#76659d; }
.tone-butter .module-icon { background:var(--butter); color:#92712d; }
.tone-blue .module-icon { background:#e3f0f3; color:#4e7e89; }
.content-layout { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:22px; }
.content-panel { padding:22px; min-width:0; }
.panel-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:17px; }
.text-button { background:none; border:0; color:var(--pink-dark); font-weight:700; padding:8px 0; }
.inline-form { display:flex; gap:8px; }
input,textarea,select { width:100%; min-width:0; border:1px solid #e9d9df; border-radius:13px; padding:12px 13px; background:#fffdfd; color:var(--ink); outline:none; }
input:focus,textarea:focus,select:focus { border-color:var(--pink); box-shadow:0 0 0 3px #f9e8ee; }
textarea { resize:vertical; min-height:110px; }
.primary-button { border:0; border-radius:13px; padding:11px 16px; background:var(--pink); color:white; font-weight:750; }
.primary-button:hover { background:var(--pink-dark); }
.task-list { list-style:none; padding:0; margin:14px 0 0; }
.task-row { display:flex; align-items:center; gap:10px; padding:10px 0; border-bottom:1px solid #f6edf0; }
.task-row:last-child { border-bottom:0; }
.task-row label { flex:1; overflow-wrap:anywhere; }
.task-row input[type=checkbox] { width:19px; height:19px; accent-color:var(--pink); }
.task-row.done label { color:#a99ba1; text-decoration:line-through; }
.delete-button { border:0; background:transparent; color:#aa8d98; font-size:1.15rem; padding:5px; }
.recent-notes { display:grid; gap:10px; }
.note-card { padding:13px 14px; border-radius:15px; background:#fff7f9; }
.note-card strong { display:block; margin-bottom:3px; }
.note-card p { color:var(--muted); margin:0; font-size:.88rem; white-space:pre-wrap; overflow-wrap:anywhere; }
.note-date { color:var(--pink-dark); font-size:.7rem; font-weight:700; }
.workspace { margin-top:22px; padding:22px; }
.hidden { display:none !important; }
.form-stack { display:grid; gap:12px; max-width:720px; }
.form-stack label { display:grid; gap:5px; font-size:.86rem; font-weight:700; }
.form-actions { display:flex; gap:9px; flex-wrap:wrap; }
.secondary-button { border:1px solid var(--line); border-radius:13px; padding:10px 14px; color:var(--ink); background:white; }
.entry-list { display:grid; gap:10px; margin-top:18px; }
.entry-item { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; border:1px solid var(--line); border-radius:16px; padding:14px; }
.entry-item h3 { margin:0 0 5px; font-size:1rem; }
.entry-item p { margin:0; color:var(--muted); white-space:pre-wrap; overflow-wrap:anywhere; }
.pill { display:inline-block; padding:4px 9px; border-radius:99px; background:var(--pink-light); color:var(--pink-dark); font-size:.72rem; font-weight:700; }
.empty-state { padding:18px; color:var(--muted); background:#fffbfc; border:1px dashed #e9d6de; border-radius:15px; text-align:center; }
.privacy-note { margin:24px 0 0; padding:14px 16px; border-radius:16px; background:#fff3e4; color:#806b4b; font-size:.78rem; }
.privacy-note span { color:#b17b38; font-size:1rem; margin-right:5px; }
footer { display:flex; justify-content:space-between; gap:12px; padding:24px 4px 4px; color:#a18f96; font-size:.75rem; }
.toast { position:fixed; left:50%; bottom:22px; transform:translate(-50%,20px); opacity:0; pointer-events:none; padding:12px 18px; border-radius:14px; color:white; background:#57424b; box-shadow:var(--shadow); transition:all .2s; max-width:90vw; z-index:5; }
.toast.show { opacity:1; transform:translate(-50%,0); }
.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; }
@media(max-width:760px) { .module-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .content-layout { grid-template-columns:1fr; } .welcome-flower { font-size:5rem; padding:0; } }
@media(max-width:420px) { .app-shell { padding:14px 12px 20px; } .quick-stats { gap:7px; } .stat-card { padding:10px 8px; gap:6px; } .stat-icon { width:30px;height:30px;font-size:1rem; } .stat-card small { font-size:.68rem; } .welcome { padding:20px; } .welcome-flower { display:none; } .module-card { padding:14px; min-height:125px; } .content-panel,.workspace { padding:17px; } }

/* Private sign-in */
.login-gate{min-height:100vh;display:grid;place-items:center;padding:28px;background:linear-gradient(145deg,#fffaf7,#faeaf0)}.login-card{width:min(100%,430px);padding:35px 25px;background:white;border:1px solid #f1dce4;border-radius:28px;box-shadow:0 12px 40px #8d58701c;text-align:center}.login-flower{font-size:46px;color:#bd5d83}.login-card h1{font-size:30px;line-height:1.2;margin:12px 0;color:#543d47}.login-card p{color:#806f76}.login-card form{text-align:left;display:grid;gap:15px;margin:26px 0}.login-card label{display:grid;gap:7px;font-weight:600;color:#5b4b52}.login-card input{padding:13px;border:1px solid #e8d2dc;border-radius:12px;width:100%;font-size:16px}.login-card button{width:100%}.login-caution{font-size:13px;line-height:1.5}.auth-pending #appShell{display:none}#loginMessage{min-height:20px;color:#a83f5e}#signOutButton{margin-left:auto}

/* Keep signed-out and signed-in views mutually exclusive. */
[hidden] { display: none !important; }

/* Password recovery screens */
.login-card .auth-link{width:auto;display:block;margin:-12px 0 14px auto;text-align:right}.login-card .auth-link[hidden]{display:none}.login-card form[hidden]{display:none}.login-card form p{margin:0 0 3px}.login-card form .text-button{width:auto;justify-self:center}.login-card #loginMessage{line-height:1.5}

/* Master calendar on landing page */
.hub-calendar{padding:clamp(16px,3vw,27px);margin-bottom:18px}.calendar-top,.calendar-controls,.calendar-nav,.cal-agenda-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.calendar-top h2{margin:0;color:var(--ink);font-size:1.5rem}.calendar-controls{margin:17px 0;flex-wrap:wrap}.calendar-views{display:flex;gap:4px;padding:4px;border-radius:13px;background:#f9edf1}.calendar-views button,.calendar-nav button{border:0;background:transparent;padding:8px 12px;border-radius:10px;color:var(--ink)}.calendar-views button.selected{background:white;box-shadow:0 1px 6px #8a667029;color:var(--pink-dark);font-weight:700}.calendar-nav{flex:1;justify-content:flex-end}.calendar-nav strong{text-align:center;font-size:.9rem}.calendar-nav button{font-size:1.6rem;color:var(--pink-dark);padding:2px 10px}.cal-hint{font-size:.8rem;color:var(--muted);margin:4px 0 9px}.cal-hint span{color:var(--pink-dark);font-weight:700}.cal-filters{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:16px}.cal-filter{min-width:41px;min-height:42px;padding:5px 8px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--category-color);font-size:1.3rem;display:flex;align-items:center;justify-content:center;flex-direction:column}.cal-filter small{font-size:.55rem;line-height:1}.cal-filter.selected{border:2px solid var(--category-color);background:#fff5f8}.cal-weekdays,.cal-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.cal-weekdays{text-align:center;font-size:.72rem;color:var(--muted);margin-bottom:5px}.cal-day{border:1px solid var(--line);border-radius:10px;background:#fff;min-height:56px;display:flex;flex-direction:column;align-items:center;gap:7px;padding:6px 2px;color:var(--ink)}.cal-day.selected{background:#fff1f6;border:2px solid var(--pink)}.cal-day.outside{opacity:.4}.cal-day-num{font-size:.84rem}.cal-dots{display:flex;gap:3px;flex-wrap:wrap;justify-content:center}.cal-dots i{display:block;width:6px;height:6px;border-radius:50%}.cal-grid.day .cal-days{grid-template-columns:1fr}.cal-grid.day .cal-day{min-height:65px}.cal-agenda{margin-top:18px;background:#fff9fb;border-radius:15px;padding:15px}.cal-agenda-head{flex-wrap:wrap}.cal-agenda-head h3{font-size:.95rem;margin:0}.cal-agenda-head .text-button{font-size:.8rem}.cal-agenda-entry{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;border-top:1px solid var(--line);background:transparent;padding:12px 2px;color:var(--ink)}.cal-agenda-entry>span:nth-child(2){flex:1}.cal-agenda-entry strong,.cal-agenda-entry small{display:block}.cal-agenda-entry strong{font-size:.9rem}.cal-agenda-entry small{color:var(--muted);font-size:.72rem}.cal-agenda-icon{font-size:1.4rem}.cal-empty{color:var(--muted);font-size:.85rem;margin:12px 0 0}@media(max-width:480px){.calendar-controls{align-items:stretch}.calendar-nav{width:100%;justify-content:space-between}.cal-day{min-height:46px}.cal-filters{gap:5px}.cal-filter{min-width:36px;min-height:38px}.hub-calendar{padding:13px}}

.holiday-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:9px;margin:12px 0 24px}.holiday-option{display:flex;align-items:center;gap:10px;padding:11px 13px;border:1px solid #f0dfe5;border-radius:12px;background:#fffafb;cursor:pointer}.holiday-option input,.checkbox-line input{width:18px;height:18px;accent-color:#c65b83}.checkbox-line{display:flex!important;align-items:center;gap:10px}

/* Consistent line-art category icons */
.hub-line-icon{width:24px;height:24px;display:block;flex:none}.module-icon .hub-line-icon{width:27px;height:27px}.cal-agenda-icon .hub-line-icon{width:23px;height:23px}

/* Larger, legible category artwork in the approved icon style. */
.cal-filter{min-width:52px;min-height:54px;padding:7px 9px;border-radius:13px}
.cal-filter .hub-line-icon{width:32px;height:32px;stroke-width:1.9}
.module-icon .hub-line-icon{width:31px;height:31px}
.cal-agenda-icon .hub-line-icon{width:28px;height:28px}
@media(max-width:480px){.cal-filter{min-width:45px;min-height:48px;padding:5px 7px}.cal-filter .hub-line-icon{width:29px;height:29px}}

/* Consistent section colors throughout My Life Hub. */
.module-card{border:2px solid var(--section-color,#e8d9df);}
.module-card:hover,.module-card:focus-visible{border-color:var(--section-color,#c65b83);box-shadow:0 4px 20px #00000012;}
.module-card .module-icon{background:var(--section-tint,#f9edf1);color:var(--section-color,#c65b83);}
.cal-filter.selected{background:color-mix(in srgb,var(--category-color) 12%,white);}
.cal-weekdays span{background:var(--active-tint,#ffffff);border-radius:7px;padding:8px 1px;color:#51434a;}
.cal-day.selected{border-color:var(--active-color,#c65b83);background:var(--active-tint,#ffffff);}
.cal-agenda-entry{border-left:3px solid transparent;}
.cal-dots i{width:8px;height:8px;}

/* Shared, neutral tags */
.tag-toolbar{display:flex;justify-content:flex-end;margin:10px 0 14px}.tag-toolbar-button,.hub-tag-edit{border:1px solid #d8d2d4;background:#fff;color:#665f64;border-radius:20px;padding:9px 15px;cursor:pointer;font:inherit}.hub-tag-edit{font-size:.83rem;margin-top:8px}.hub-tag-list{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0}.hub-tag{background:#f3f1f0;border:1px solid #ddd8d6;color:#565258;border-radius:18px;padding:5px 11px;font-size:.85rem;cursor:pointer}.hub-tag.active{border-color:#777;background:#e7e3e2}.tag-form-fields{border-top:1px solid #eee4e7;margin-top:12px;padding-top:12px}.tag-groups{display:grid;gap:10px;margin:18px 0}

/* Smart mentions: neutral chips, searchable suggestions, and clickable saved text */
.mention-holder{position:relative;margin-top:6px}.mention-editor{border:1px solid #e9d7df;border-radius:12px;padding:13px 14px;min-height:47px;background:#fff;color:#4c4047;outline:none;white-space:pre-wrap;overflow-wrap:anywhere}.mention-editor:focus{border-color:#c65b83;box-shadow:0 0 0 2px #c65b8320}.mention-multiline{min-height:110px}.mention-editor:empty:before{content:attr(data-placeholder);color:#a69aa1;pointer-events:none}.mention-inline-chip,.inline-mention{background:#f1efee;color:#4d4a4b;border:1px solid #ddd9d6;border-radius:6px;padding:1px 4px;font:inherit}.inline-mention{cursor:pointer;text-decoration:underline;text-underline-offset:2px}.mention-suggestions{position:relative;z-index:10;background:white;border:1px solid #ddd9d6;border-radius:10px;box-shadow:0 7px 22px #0001;padding:5px;margin-top:3px}.mention-suggestions[hidden]{display:none}.mention-suggestions button{display:block;width:100%;border:0;background:transparent;text-align:left;padding:9px 12px;color:#4d4a4b;border-radius:6px}.mention-suggestions button:hover,.mention-suggestions button:focus{background:#f1efee}

/* Agenda entries contain interactive tag links, so the row itself is not a button. */
.cal-agenda-entry{cursor:pointer;}
.cal-agenda-entry .inline-mention{position:relative;z-index:1;}
#quickTaskForm .mention-holder{flex:1;min-width:0;}
#quickTaskForm .mention-editor{min-height:46px;}

/* Slim icons-only navigation and list-first workspace */
.app-shell{max-width:none;margin:0;padding:16px 24px 28px 100px}
.hub-sidebar{position:fixed;left:14px;top:18px;bottom:18px;width:64px;display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 5px;background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);overflow-y:auto;z-index:40}
.sidebar-link{width:49px;height:49px;flex-shrink:0;display:grid;place-items:center;border:1px solid transparent;border-radius:14px;background:transparent;color:var(--side-color);padding:9px}
.sidebar-link .hub-line-icon{width:29px;height:29px}
.sidebar-link:hover,.sidebar-link:focus-visible{background:#faf3f6;border-color:var(--line)}
.sidebar-link.active{background:color-mix(in srgb,var(--side-color) 12%,white);border-color:var(--side-color)}
main{max-width:1200px;margin:0 auto}.hidden{display:none!important}
.new-entry-disclosure{margin:14px 0 24px;border:1px solid var(--line);border-radius:15px;padding:12px 16px;background:#fffafa}
.new-entry-disclosure summary{cursor:pointer;color:var(--pink-dark);font-weight:750;list-style:none}
.new-entry-disclosure summary::-webkit-details-marker{display:none}
.new-entry-disclosure[open] summary{margin-bottom:16px}
.workspace{margin-top:8px}
@media(max-width:650px){.app-shell{padding:12px 12px 24px 77px}.hub-sidebar{left:7px;width:59px}.sidebar-link{width:45px;height:45px}.workspace{padding:14px}}

/* Calendar-first home: preserve hidden dashboard elements for existing app bindings. */
.home-only:not(.hub-calendar) { display:none !important; }
.calendar-select-hint { margin:12px 2px 6px; color:#8c7b82; font-size:.85rem; }

/* Daily agenda edit and delete controls */
.cal-agenda-actions{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}
.cal-action{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--pink-dark);cursor:pointer}
.cal-action .hub-line-icon{width:18px;height:18px}
.cal-action-delete{color:#a75b68}
.cal-action:focus-visible{outline:3px solid #c65b83;outline-offset:2px}
.cal-agenda-managed{font-size:.72rem;color:var(--muted);margin-left:auto}

.repeat-fields{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:9px 0}.repeat-fields legend{font-weight:700;color:var(--pink-dark);padding:0 8px}.repeat-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.repeat-options input[type=number]{width:82px;display:inline-block}.repeat-help{font-size:.9rem;margin:10px 0 0}@media(max-width:650px){.repeat-options{grid-template-columns:1fr}}

/* Direct month/year navigation, including older dates for backfilling. */
.calendar-jump{display:inline-flex;align-items:center;gap:7px}
.calendar-jump select{appearance:auto;background:#fff;border:1px solid #ecd9e0;color:#54434a;border-radius:10px;padding:9px 8px;font:inherit;font-weight:650;max-width:155px}
#calJumpYear{max-width:100px}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important}
.calendar-category-entries{margin-top:24px}
.calendar-category-entries .entry-item{display:flex;justify-content:space-between;align-items:center;gap:16px}
.calendar-category-entries .cal-agenda-actions{display:flex;flex-shrink:0;gap:8px}
@media(max-width:650px){.calendar-jump select{max-width:110px;padding:8px 5px}.calendar-nav{flex-wrap:wrap}}

/* Unified entry creation, accessible from the master calendar. */
.entry-type-dialog{width:min(720px,calc(100vw - 36px));max-height:min(88vh,920px);overflow:auto;padding:24px;border:1px solid var(--line);border-radius:22px;background:#fffafc;color:var(--ink);box-shadow:0 24px 80px rgba(51,25,37,.22)}
.entry-type-dialog::backdrop{background:rgba(36,24,32,.42)}
.entry-type-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}
.entry-type-head h2{margin:4px 0 7px}
.entry-type-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.entry-type-option{display:flex;align-items:flex-start;gap:12px;text-align:left;border:1px solid var(--line);background:white;border-radius:16px;padding:17px 13px;cursor:pointer;color:var(--ink)}
.entry-type-option:hover,.entry-type-option:focus-visible{border-color:var(--entry-accent);background:#fff5f9}
.entry-type-option .entry-type-icon{color:var(--entry-accent);width:28px;height:28px;flex-shrink:0}
.entry-type-option .entry-type-icon svg{width:28px;height:28px}
.entry-type-option strong{display:block;font-size:14px;margin-bottom:5px}
.entry-type-option small{display:block;font-size:12px;line-height:1.35;color:#8b7d86}
@media(max-width:550px){.entry-type-grid{grid-template-columns:1fr}.entry-type-dialog{padding:16px}}

/* Consistent, accessible pencil and trash controls in all entry lists */
.entry-item>.entry-actions,.entry-item>div.entry-actions,.entry-item>div:last-child:has(.entry-actions){display:flex;align-items:center;gap:7px}
.entry-actions{display:inline-flex;gap:7px;align-items:center;flex-shrink:0}
.entry-item{gap:12px}
.entry-item>.entry-actions{margin-left:auto}
#editEntryFields{max-height:60vh;overflow:auto}

/* Appointment listing: searchable, newest-first; calendar shares same component as home. */
.event-list-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:24px 0 12px}
.event-list-heading h3{margin:0}
.event-list-filters{display:grid;grid-template-columns:minmax(180px,2fr) minmax(170px,1fr);gap:14px;margin:10px 0 12px}
.event-list-filters label{font-weight:650;font-size:.88rem}
.event-list-filters input,.event-list-filters select{display:block;width:100%;margin-top:6px;background:#fff}
#eventResultCount{margin:8px 0}
#eventResults [hidden],#eventEmptyResults[hidden]{display:none!important}
@media(max-width:700px){.event-list-filters{grid-template-columns:1fr}}
