:root{--ink:#202322;--muted:#626964;--line:#e1e6e1;--green:#2d6048;--green-light:#edf5ed;--pink:#f9e9ee;--orange:#ce5d2b;--white:#fff;--radius:14px;--font:Arial,Helvetica,sans-serif;--art-calendar:none;--art-yearbook:none}*{box-sizing:border-box}body{margin:0;background:var(--white);color:var(--ink);font:15px/1.5 var(--font)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button,a{ -webkit-tap-highlight-color:transparent}a{color:var(--green);text-underline-offset:3px}button{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:9px 15px;min-height:40px}button:hover{background:#f3f6f3}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--green);border-color:var(--green);color:#fff}button.primary:hover{background:#234b38}button.danger{color:#a52c40;border-color:#e5bcc3}.subtle{background:transparent;border:0;color:var(--muted)}:focus-visible{outline:3px solid #3869ba;outline-offset:3px}.skip{position:absolute;top:-80px}.skip:focus{top:4px;background:white;padding:10px;z-index:99}.header{max-width:1360px;margin:auto;display:flex;align-items:center;gap:40px;padding:24px 44px;border-bottom:1px solid var(--line)}.brand{font:27px/1.1 Georgia,serif;color:var(--ink);text-decoration:none;white-space:nowrap}.brand span{color:var(--green)}.brand small{font:9px/2 Arial;display:block;letter-spacing:2px;color:var(--muted);margin-top:6px}.brand-dot{color:var(--orange)!important}nav{display:flex;gap:12px;flex:1}nav a{padding:10px 14px;text-decoration:none;color:var(--muted);border-radius:8px}nav a[aria-current]{background:var(--green-light);color:var(--green);font-weight:bold}.local-banner{background:#f4f7f4;color:#526354;font-size:11px;text-align:center;letter-spacing:.2px;padding:7px}main{max-width:1280px;margin:36px auto 60px;padding:0 36px;min-height:65vh}h1,h2,h3,p{margin-top:0}h1{font:38px/1.15 Georgia,serif;margin-bottom:10px;letter-spacing:-.6px}h2{font:25px/1.2 Georgia,serif}h3{font-size:17px;line-height:1.35;margin-bottom:10px}.eyebrow{letter-spacing:2px;font-size:10px;font-weight:bold;color:var(--green);text-transform:uppercase;margin-bottom:12px}.muted{color:var(--muted)}.small{font-size:12px}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:28px}.page-head p{color:var(--muted);margin-bottom:0}.row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.toolbar{display:flex;justify-content:space-between;gap:15px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.segmented{display:flex;gap:3px;background:#f3f5f3;padding:4px;border-radius:10px}.segmented button{border:0;background:transparent;padding:6px 12px;min-height:32px}.segmented .active{background:#fff;box-shadow:0 1px 4px #0001}.calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:27px}.calendar{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.weekday,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekday{background:#f8faf8;text-align:center;border-bottom:1px solid var(--line);font-size:11px;font-weight:bold;color:var(--muted);padding:11px 0}.day-cell{min-height:108px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:7px;overflow:hidden}.day-cell:nth-child(7n){border-right:0}.day-cell.other .date-button{color:#8a928c}.day-cell.selected{background:#f5faf4}.date-button{border:0;border-radius:50%;min-height:29px;width:29px;padding:0;background:transparent;font-size:12px}.date-button.today{background:var(--green);color:#fff}.event-chip{display:block;width:100%;text-align:left;border:0;border-left:3px solid var(--event-color,#477960);border-radius:4px;background:#eaf2ed;font-size:10px;min-height:0;padding:3px 4px;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#263f32}.event-chip.tentative{border-style:dashed;background:#fff}.count{font-size:10px;color:var(--muted)}.panel{border:1px solid var(--line);border-radius:var(--radius);padding:21px;margin-bottom:18px}.panel h2{font-size:22px}.empty{padding:35px 18px;text-align:center;color:var(--muted)}.empty h3{color:var(--ink)}.empty.compact{padding:12px 0;text-align:left}.empty-mark{width:43px;height:43px;border:1px solid #b9cdbb;color:var(--green);border-radius:12px;display:grid;place-items:center;margin:0 auto 12px;font:26px Georgia}.agenda-event{border-left:3px solid var(--event-color,#477960);padding:10px 12px;margin-bottom:12px;background:#f5f8f5;border-radius:0 6px 6px 0}.agenda-event button{padding:0;border:0;background:transparent;text-align:left;min-height:24px;font-weight:bold}.agenda-event p{font-size:12px;margin:3px 0}.suggestion{border-top:1px solid var(--line);padding:13px 0}.suggestion button{font-size:13px;text-align:left;padding:0;border:0;background:none;min-height:24px}.pill{display:inline-block;font-size:10px;letter-spacing:.3px;padding:4px 8px;background:var(--green-light);border-radius:5px;color:var(--green);margin-right:4px}.pill.snapshot{background:#fff1df;color:#824e12}.pill.fixture{background:#f2eafa;color:#68448a}.filters{border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:25px}.filters-grid{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:12px}.filters details{margin-top:12px}label{display:block;font-size:12px;font-weight:bold}input,select,textarea{width:100%;border:1px solid #cfd7cf;border-radius:7px;padding:9px 10px;background:#fff;color:var(--ink);margin-top:5px;min-width:0}textarea{resize:vertical;min-height:80px}input[type=checkbox]{width:18px;height:18px;margin:0;accent-color:var(--green)}input[type=file]{font-size:12px}.checkbox{display:flex;gap:9px;align-items:center;font-weight:normal}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:19px}.card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;background:white}.card-top{background:#f2f7f0;padding:19px 21px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.card-top .date-block{font:25px/1.1 Georgia}.card-top .date-block small{font:10px Arial;display:block;letter-spacing:1.4px;margin-bottom:5px;color:var(--green)}.card-body{padding:21px;flex:1}.card-body h3{font:23px/1.2 Georgia}.card-body p{font-size:13px;color:var(--muted)}.card-actions{padding:0 21px 21px;display:flex;gap:8px}.card-actions button{font-size:12px}.section-title{margin-top:35px;display:flex;justify-content:space-between;align-items:center;gap:10px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:22px}.check-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #eef1ee}.check-item label{flex:1;font-size:14px;font-weight:normal;overflow-wrap:anywhere}.check-item.done label{text-decoration:line-through;color:var(--muted)}.check-item button{padding:2px 7px;min-height:25px}.inline-form{display:flex;gap:8px;margin-top:14px;align-items:end}.inline-form input{margin:0}.trip-stop{display:flex;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.stop-number{width:26px;height:26px;display:grid;place-items:center;background:var(--green-light);border-radius:50%;font-size:12px}.trip-stop .stop-info{flex:1}.trip-stop p{margin:0;font-size:12px;color:var(--muted)}.trip-stop button{padding:4px 7px;min-height:30px}.memory-photo{width:100%;height:220px;object-fit:cover}.memory-note{white-space:pre-wrap;overflow-wrap:anywhere}.month-title{border-bottom:1px solid var(--line);padding-bottom:12px;margin-top:30px}.week-day{border-bottom:1px solid var(--line);padding:16px 20px;display:grid;grid-template-columns:120px 1fr;gap:20px}.week-day h3{font-size:13px}.week-day.selected{background:#f5faf4}dialog{width:min(650px,calc(100% - 28px));border:1px solid var(--line);padding:0;border-radius:16px;color:var(--ink);max-height:90dvh}dialog::backdrop{background:#15251e66;backdrop-filter:blur(2px)}.dialog-head{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:24px 26px 0}.dialog-head h2{margin:0}.dialog-head button{border:0;font-size:22px;padding:0 6px}.dialog-body{padding:20px 26px 26px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;flex-wrap:wrap}.error{background:#fff0f2;color:#9a2337;padding:10px;border-radius:7px;margin-bottom:15px}.notice{background:#f3f7f2;padding:12px;border-radius:8px;font-size:12px;margin-bottom:18px}.detail-list{display:grid;grid-template-columns:100px 1fr;gap:10px;font-size:13px}.detail-list dt{color:var(--muted)}.detail-list dd{margin:0;overflow-wrap:anywhere}.detail-actions{display:flex;flex-wrap:wrap;gap:9px;margin:23px 0}.detail-actions a{border:1px solid var(--line);border-radius:8px;padding:9px 13px;font-size:13px}.interest-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}footer{max-width:1280px;margin:auto;border-top:1px solid var(--line);padding:20px 36px;display:flex;justify-content:space-between;gap:10px;font-size:11px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#243f30;color:white;padding:12px 22px;border-radius:9px;box-shadow:0 3px 20px #0002;z-index:10;display:none;max-width:90vw}#toast.show{display:block}.ornament{width:75px;height:40px;color:var(--green);opacity:.75;flex-shrink:0}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}.tag-group{display:flex;flex-wrap:wrap;gap:5px}.plain-list{padding-left:18px;font-size:13px}.list-count{font-size:11px;color:var(--muted)}
@media(max-width:1050px){.calendar-layout{grid-template-columns:minmax(0,1fr) 225px;gap:18px}.header{padding:20px 25px;gap:20px}main{padding:0 22px}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.day-cell{min-height:100px;padding:4px}.filters-grid{grid-template-columns:1fr 1fr}}
@media(max-width:740px){.header{flex-wrap:wrap;gap:15px;padding:17px 18px}.brand{font-size:25px;flex:1}.header>button{font-size:12px}nav{order:3;flex-basis:100%;justify-content:space-between;gap:0}nav a{font-size:13px;padding:8px 12px}.local-banner{font-size:10px;padding:6px 14px}main{padding:0 16px;margin-top:25px}h1{font-size:32px}.page-head{gap:12px}.page-head .row{justify-content:flex-end}.page-head button{font-size:12px;padding:9px 11px}.calendar-layout{display:block}.calendar-layout aside{margin-top:22px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.calendar-layout aside .panel{padding:17px}.day-cell{min-height:85px;padding:3px}.date-button{font-size:11px;width:25px;min-height:25px}.event-chip{font-size:9px;padding:2px;margin-top:3px}.weekday{font-size:10px}.toolbar{gap:12px}.toolbar input{max-width:140px}.cards,.two-col{grid-template-columns:1fr}.filters-grid{grid-template-columns:1fr 1fr}.form-grid{gap:12px}.week-day{grid-template-columns:80px 1fr;padding:13px;gap:10px}.ornament{display:none}footer{padding:18px 16px;align-items:center}.dialog-head{padding:20px 18px 0}.dialog-body{padding:17px 18px 22px}.detail-list{grid-template-columns:85px 1fr}.card-body h3{font-size:25px}}
@media(max-width:390px){nav a{padding:8px}.calendar-layout aside{grid-template-columns:1fr}.page-head{flex-direction:column}.form-grid{grid-template-columns:1fr}.full{grid-column:auto}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}@media print{.header nav,button,.local-banner,footer,.filters{display:none!important}main{max-width:none;margin:0;padding:0}.calendar-layout{display:block}.calendar-layout aside{display:none}}
.toolbar>.row>input{width:220px;margin-top:0}.toolbar>.row>select{width:170px;margin-top:0}@media(max-width:740px){.toolbar>.row>input{width:165px;max-width:none}.toolbar>.row>select{width:150px}}

/* Reviewed text intake uses the existing dialog and form palette. */
.intake-dates {min-inline-size:0; margin:0; border:1px solid var(--line,#d7d2ce); padding:12px; border-radius:8px;}
.intake-dates .checkbox {align-items:flex-start; padding-block:8px; min-height:44px;}
#intake-review p, #intake-review li, .intake-dates span {overflow-wrap:anywhere;}
/* Uses existing planner typography and controls; reminder review is functional. */
.reminder-review{display:grid;gap:12px}.reminder-review-item{padding:12px 0;border-bottom:1px solid var(--line,#ddd)}.reminder-review-item h3{margin-bottom:4px}.reminder-review-item p{margin:4px 0}.reminder-review-item .row{margin-top:8px}
.notebook-search{gap:8px;flex-wrap:wrap}.notebook-search input{flex:1;min-width:160px}.notebook-search button{min-height:44px}.notebook-search input{min-height:44px}
.memory-photo-editor{min-width:0;margin:10px 0;padding:12px;border:1px solid var(--line,#ddd);border-radius:8px}.memory-photo-editor img{display:block;max-width:160px;max-height:130px;object-fit:cover;margin-bottom:8px}.memory-viewer{margin:0}.memory-viewer img{display:block;max-width:100%;max-height:55vh;width:auto;height:auto;margin:auto;object-fit:contain}.memory-viewer figcaption{white-space:pre-wrap;margin:12px 0}
.saved-yearbooks{margin:12px 0}.yearbook-print h1{font-family:Georgia,serif;font-weight:normal}.yearbook-book-month{border-bottom:1px solid #571326;margin-top:24px}.yearbook-book-entry{padding:10px 0}.yearbook-book-entry figure{margin:12px 0}.yearbook-book-entry img{display:block;max-width:100%;max-height:65vh;object-fit:contain;margin:auto}.yearbook-book-entry figcaption{white-space:pre-wrap;font-size:14px;margin-top:8px}
@media print{body:has(.yearbook-print){padding:0!important;overflow:visible!important;background:white}body:has(.yearbook-print)>:not(#modal){display:none!important}#modal:has(.yearbook-print){position:static;max-width:none;max-height:none;width:auto;margin:0;padding:0;border:0;overflow:visible}#modal:has(.yearbook-print)::backdrop{display:none}#modal:has(.yearbook-print) .dialog-head,#modal:has(.yearbook-print) .form-actions{display:none!important}#modal:has(.yearbook-print) .dialog-body{padding:0}.yearbook-print figure{break-inside:avoid}.yearbook-print img{max-height:220mm}.yearbook-book-month{break-after:avoid}}

/* Keep native hidden semantics when component rules set display:grid/flex. */
[hidden]{display:none!important}
