:root{--ink:#29483d;--muted:#64766c;--sage:#dfe9df;--border:#e1e8df;--cream:#f8f7f1;--forest:#284e40;--gold:#c09664}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:Arial,Helvetica,sans-serif;line-height:1.5}button,input,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.wrap{max-width:1120px;margin:auto;padding:0 23px}header{background:#fffefa;border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:10}.head{display:flex;align-items:center;gap:20px;justify-content:space-between;min-height:76px}.brand{background:none;border:0;font:700 33px Georgia,serif;color:var(--ink);letter-spacing:-2px}.brand span,.login-card h1 span{color:var(--gold)}nav{display:flex;gap:5px}nav button{display:flex;align-items:center;gap:7px;padding:10px 13px;border:0;border-radius:9px;background:transparent;color:#64766c}nav button.selected,nav button:hover{background:#ecf2e9;color:var(--forest)}.signout{border:0;background:none;color:var(--muted)}.hero{background:linear-gradient(125deg,#e4eadd,#f8f2e8 65%,#efdfd0)}.hero-inner{display:grid;grid-template-columns:1.3fr .7fr;align-items:center;grid-gap:30px;gap:30px;padding-top:52px;padding-bottom:50px}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:11px;font-weight:700;color:#8d775e}.hero h1{font:normal clamp(38px,5vw,69px)/1.08 Georgia,serif;letter-spacing:-1px;margin:14px 0}.hero p{color:var(--muted);font-size:17px;max-width:530px}.hero-photo{height:220px;border-radius:18px;background:linear-gradient(135deg,#8fa69a,#d5c0a5);display:flex;align-items:end;justify-content:center;overflow:hidden}.hero-photo span{display:flex;gap:7px;align-items:center;color:white;margin-bottom:22px;font-size:14px}.content{padding-top:25px;padding-bottom:80px}section{margin-bottom:48px}.section-title{display:flex;justify-content:space-between;margin-bottom:18px}.section-title h2{font:normal 34px Georgia,serif;margin:3px 0}.panel{background:#fffefa;border-radius:16px;padding:24px;border:1px solid var(--border);box-shadow:0 5px 20px #1b352808}.panel h3{font:normal 25px Georgia,serif;margin:7px 0 9px}.panel p{color:var(--muted)}.calendar-layout{display:grid;grid-template-columns:1.15fr .85fr;grid-gap:20px;gap:20px}.panel.soft{background:#eaf0e7}.panel.soft small{color:var(--muted)}.primary{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:0;background:var(--forest);color:white;border-radius:9px;padding:12px 17px;font-weight:700;text-decoration:none}.primary:disabled{opacity:.5}.link{margin-top:8px}.upload-panel{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.upload-fields{display:flex;gap:8px;flex-wrap:wrap}.comment-entry input,.login-card input,.upload-fields input,textarea{border:1px solid #d7e0d6;background:white;border-radius:9px;padding:11px;max-width:100%}.upload-fields input{width:145px}.upload-button{white-space:nowrap}.upload-button input{display:none}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:18px;gap:18px}.photo-card{background:white;border:1px solid var(--border);border-radius:16px;overflow:hidden}.photo-card>img{width:100%;height:220px;object-fit:cover;display:block}.photo-fallback{height:220px;background:var(--sage);display:grid;place-items:center}.photo-details{padding:17px}.photo-details p{margin:10px 0 4px}.photo-details small{color:var(--muted)}.chip{font-size:11px;background:var(--sage);padding:5px 9px;border-radius:12px}.comments{border-top:1px solid var(--border);margin-top:15px;padding-top:12px}.comment-heading{font-size:12px;color:var(--muted);display:flex;gap:7px;align-items:center}.comment{font-size:13px;margin:10px 0;color:var(--ink)}.comment-entry{display:flex;gap:5px;margin-top:12px}.comment-entry input{width:100%;min-width:0}.comment-entry button{background:var(--sage);border:0;border-radius:8px;padding:8px 11px;color:var(--forest)}.post-form{display:flex;flex-direction:column;align-items:end;gap:12px}.post-form textarea{width:100%;min-height:86px;resize:vertical}.post-list{display:grid;grid-gap:14px;gap:14px;margin-top:18px}.post-by{display:flex;gap:10px;align-items:center}.post-by small{display:block;color:var(--muted)}.avatar{display:grid;place-items:center;border-radius:50%;background:var(--sage);width:40px;height:40px;font-weight:700}.post>p{white-space:pre-wrap;color:var(--ink)}.empty{border:1px dashed #bbcdbd;border-radius:15px;text-align:center;padding:35px}.empty,footer{color:var(--muted)}footer{background:#fffefa;border-top:1px solid var(--border);padding:30px 0;font-size:13px}footer .wrap{display:flex;align-items:center;gap:8px}.login-shell{min-height:100vh;display:grid;place-items:center;background:linear-gradient(145deg,#e7ede3,#f9f5ee)}.login-card{width:min(430px,calc(100% - 30px));background:white;padding:38px;border-radius:19px;box-shadow:0 12px 50px #233c3417}.login-card h1{font:700 52px Georgia,serif;margin:3px 0}.login-card h2{font:normal 31px Georgia,serif;margin:12px 0}.login-card p{color:var(--muted)}.login-card form{display:grid;grid-gap:14px;gap:14px;margin:24px 0}.login-card label{font-size:13px;display:grid;grid-gap:6px;gap:6px}.login-card input{width:100%}.login-card small{display:flex;align-items:center;gap:6px;color:var(--muted)}.error{color:#a52f36}.banner{background:#fff3f0;padding:15px;border-radius:10px;margin-bottom:15px}.banner button{margin-left:15px;border:0;background:none;text-decoration:underline}.loading{padding:40px;text-align:center}@media(max-width:750px){.head{gap:8px}.head nav{gap:0}.head nav button{padding:9px}.head nav button span{display:none}.calendar-layout,.hero-inner{grid-template-columns:1fr}.hero-inner{padding-top:38px;padding-bottom:35px}.hero-photo{height:150px}.upload-panel{display:block}.upload-fields{margin-top:15px}.photo-grid{grid-template-columns:1fr}.section-title h2{font-size:29px}}.photo-tools{display:flex;gap:9px;align-items:center;justify-content:space-between;margin:5px 0 9px}.photo-actions button,.photo-editor input,.photo-tools button,.photo-tools select{border:1px solid #d9ded6;background:#fff;color:#29483d;border-radius:9px;padding:9px 11px;font:inherit}.photo-actions button,.photo-tools button{cursor:pointer}.photo-actions{display:flex;gap:8px;flex-wrap:wrap;padding:9px 0}.photo-actions button{font-size:12px}.photo-actions .danger{color:#a22626;border-color:#e6b4b4}.photo-editor{display:grid;grid-gap:8px;gap:8px;padding:10px 0}.photo-editor label{display:grid;grid-gap:3px;gap:3px;font-size:12px;color:#526c62}.photo-editor button{justify-self:start}.photo-grid .photo-card img{max-height:330px;object-fit:cover}.photo-tools .muted{font-size:13px;color:#667b72}.auth-link{display:block;background:none;border:0;color:var(--forest);text-decoration:underline;padding:2px 0 16px;font-size:14px}.auth-link:hover{color:#196c4b}.family-month{padding:clamp(14px,3vw,30px)}.family-month-header{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.family-month-header h3{font-size:clamp(1.3rem,2.5vw,1.8rem);margin:0;color:#29483d}.family-month-header p{color:#64766c;margin:4px 0 0}.family-month-controls{display:flex;align-items:center;gap:7px}.family-month-controls button{border:1px solid #d8e1d8;background:#f7f8f3;border-radius:10px;padding:9px 12px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#29483d;font-weight:700}.family-month-controls button:hover{background:#e1efe2}.family-legend{display:flex;flex-wrap:wrap;gap:9px;margin:22px 0 16px;font-size:12px;color:#455f54}.family-legend span{background:#f6f7f2;border-radius:20px;padding:6px 10px}.family-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:5px;gap:5px}.family-calendar-grid .weekday{text-align:center;font-weight:700;font-size:12px;color:#64766c;padding:9px 0}.family-day{font:inherit;text-align:left;min-width:0;min-height:104px;border:1px solid #e1e8df;background:#fbfcf9;border-radius:11px;padding:7px;cursor:pointer;display:flex;flex-direction:column;gap:4px;color:#29483d}.family-day:hover{border-color:#7fa890;background:#f3f8f1}.family-day.active{outline:2px solid #47765a}.family-day.outside{border:none;background:transparent;cursor:default}.day-number{font-size:12px;font-weight:700}.family-event{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;border-radius:5px;padding:4px;font-size:11px;line-height:1.3;background:#e1eddf;color:#27513b}.family-event.birthday{background:#f9dae4;color:#81354b}.family-event.travel{background:#dce9f9;color:#234b7d}.family-event.celebration{background:#fff0c8;color:#76530f}.family-event.holiday{background:#fce3d4;color:#84461e}.family-day small{color:#64766c;font-size:10px}.selected-family-day{margin-top:16px;padding:15px;border-radius:13px;background:#f4f7ee;color:#29483d}.selected-family-day p{margin:9px 0 0;font-size:14px}.calendar-foot{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-top:16px;font-size:12px;color:#64766c}.calendar-foot p{margin:0;max-width:580px}.calendar-foot a{display:flex;align-items:center;gap:4px;color:#29483d;font-weight:700}@media(max-width:700px){.family-calendar-grid{gap:2px}.family-day{min-height:63px;border-radius:6px;padding:3px;gap:2px}.family-event{font-size:8px;padding:2px}.day-number{font-size:11px}.family-month{padding:12px}.family-legend{gap:4px}.family-legend span{font-size:10px;padding:4px 6px}}.calendar-and-upcoming{display:grid;grid-template-columns:minmax(0,7fr) minmax(235px,3fr);grid-gap:18px;gap:18px;align-items:start}.calendar-and-upcoming .family-month{min-width:0}.calendar-and-upcoming .family-day{min-height:94px;padding:5px;overflow:hidden}.calendar-and-upcoming .family-event{font-size:10px}.upcoming-panel{position:-webkit-sticky;position:sticky;top:95px;background:#edf2e9;border-color:#dce6db;padding:24px 20px}.upcoming-eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;color:#83795f}.upcoming-panel h3{font-family:Georgia,serif;font-size:26px;margin:4px 0 3px;color:#29483d}.upcoming-description{font-size:13px;margin:0 0 16px}.upcoming-list{display:grid;grid-gap:9px;gap:9px}.upcoming-item{display:flex;align-items:center;gap:10px;text-align:left;width:100%;background:#fffefa;border:1px solid #e1e8df;border-radius:12px;padding:9px;cursor:pointer;color:#29483d}.upcoming-item:hover{border-color:#7fa890;box-shadow:0 2px 10px #1b352812}.upcoming-date{width:49px;min-width:49px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:9px;padding:5px;background:#dceade;color:#27513b}.upcoming-date.birthday{background:#f9dae4;color:#81354b}.upcoming-date.travel{background:#dce9f9;color:#234b7d}.upcoming-date.celebration{background:#fff0c8;color:#76530f}.upcoming-date small{font-size:10px;font-weight:700}.upcoming-date strong{font-size:21px;line-height:1.2}.upcoming-info{min-width:0;display:grid;grid-gap:2px;gap:2px}.upcoming-info strong{font-size:13px;line-height:1.3;overflow-wrap:anywhere}.upcoming-info small{font-size:11px;color:#64766c}.upcoming-empty{font-size:13px}.upcoming-footer{border-top:1px solid #d4dfd0;padding-top:12px;margin-top:18px;font-size:11px;color:#687a6c}@media(max-width:950px){.calendar-and-upcoming{grid-template-columns:1fr}.upcoming-panel{position:static}.upcoming-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.upcoming-list{grid-template-columns:1fr}.calendar-and-upcoming .family-day{min-height:64px;padding:3px}.calendar-and-upcoming .family-event{font-size:8px}}