:root{--ink:#282621;--muted:#89867e;--primary:#bd6e51;--primary-hover:#a85d43;--paper:#f8f6f2;--white:#fff;--line:#eae5de;--shadow:0 12px 40px rgba(60,49,38,.07)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.5}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}[hidden]{display:none!important}.muted{color:var(--muted)}.small{font-size:.79rem}.tiny{font-size:.79rem}.dot{color:var(--primary)}.eyebrow{font-size:.68rem;font-weight:800;letter-spacing:.19em;color:var(--primary)}h1,h2,h3,p{margin-top:0}h1,h2{letter-spacing:-.045em}.primary,.secondary{border:1px solid transparent;border-radius:12px;min-height:46px;padding:11px 20px;font-weight:650;transition:background .15s ease}.primary{background:var(--primary);color:white}.primary:hover{background:var(--primary-hover)}.secondary{background:#f7f5f1;border-color:var(--line);color:var(--ink)}.secondary:hover{background:#eee9e2}.full{width:100%}.topbar{background:rgba(255,255,255,.89);border-bottom:1px solid var(--line)}.topbar-inner{max-width:1090px;margin:auto;min-height:78px;padding:0 25px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:11px;font-size:1.27rem;font-weight:780;letter-spacing:-.06em}.brand-icon{display:grid;place-items:center;width:33px;height:33px;border-radius:12px;background:#f9eae1;color:var(--primary);font-size:1.25rem}.icon-btn,.close-btn{border:none;background:none;color:#625e59;font-size:1.3rem;width:42px;height:42px;border-radius:10px}.icon-btn:hover,.close-btn:hover{background:#f4f0eb}.container{max-width:1090px;margin:auto;padding:60px 25px 24px}.welcome{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:39px}.welcome h1{font-size:clamp(2rem,4.5vw,3.35rem);margin:9px 0 8px;font-weight:790;line-height:1.1}.welcome p{font-size:1rem;margin-bottom:0}.toolbar{display:flex;justify-content:space-between;gap:12px;margin-bottom:32px}.search-wrap{width:min(100%,420px);position:relative}.search-wrap span{position:absolute;top:7px;left:15px;font-size:1.5rem;color:#aca59b}input,select,textarea{background:white;border:1px solid var(--line);border-radius:11px;padding:12px 13px;width:100%;color:var(--ink);outline:none}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #bd6e511d}.search-wrap input{padding-left:43px;height:47px}#year-filter{width:159px;height:47px}.timeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:23px}.entry{background:white;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;min-width:0}.cover{position:relative;height:208px;background:#f3ede7;display:flex;align-items:center;justify-content:center;overflow:hidden}.cover img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}.cover.placeholder{background:linear-gradient(145deg,#fcf1e7,#f3e7e1)}.cover .placeholder-symbol{font-size:4rem;color:#d7a68f}.photo-count{position:absolute;bottom:13px;right:13px;border-radius:8px;background:#24201ea8;color:white;padding:4px 10px;font-size:.76rem}.entry-body{padding:21px;flex:1}.date-label{font-size:.71rem;font-weight:780;letter-spacing:.1em;color:var(--primary);text-transform:uppercase}.entry h2{font-size:1.23rem;line-height:1.3;margin:9px 0 9px;overflow-wrap:anywhere}.entry p{margin:0;color:#716d66;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;font-size:.91rem}.entry-actions{padding:0 20px 17px;display:flex;gap:8px;margin-top:auto}.text-btn{background:transparent;border:0;padding:6px;color:var(--primary);font-size:.87rem;font-weight:650}.text-btn.delete{color:#a69c93;margin-left:auto}.text-btn:hover{text-decoration:underline}.empty{text-align:center;padding:70px 20px 100px}.empty-art{color:#d5aa92;font-size:5rem}.empty h2{margin-bottom:8px}.empty p{color:var(--muted);margin-bottom:23px}footer{text-align:center;padding-top:69px;color:#aaa49b;font-size:.76rem}.fab{display:none;position:fixed;bottom:calc(23px + env(safe-area-inset-bottom));right:23px;width:60px;height:60px;border-radius:21px;border:none;background:var(--primary);color:white;font-size:2rem;box-shadow:0 10px 25px #8a4a3770;z-index:8}.auth-page{min-height:100dvh;display:grid;place-items:center;padding:25px}.auth-card{width:min(100%,410px);background:white;border:1px solid var(--line);padding:37px 34px 35px;border-radius:22px;box-shadow:var(--shadow);text-align:center}.auth-icon{display:grid;place-items:center;margin:0 auto 18px;width:64px;height:64px;border-radius:18px;background:#f8e9df;color:var(--primary);font-size:2.5rem}.auth-card h1{font-size:1.8rem;white-space:nowrap;margin-bottom:6px}.auth-card p{margin-bottom:27px}.auth-card label,.settings-dialog label{display:block;text-align:left;font-size:.86rem;font-weight:700;margin:14px 0 6px}.auth-card input{text-align:left}.auth-card button{margin-top:20px}.auth-card #auth-hint{margin:18px 0 0}.overlay{position:fixed;inset:0;background:rgba(26,23,20,.63);z-index:30;display:flex;align-items:center;justify-content:center;padding:18px}.dialog{background:white;border-radius:20px;width:min(100%,650px);padding:28px;max-height:calc(100dvh - 35px);overflow:auto;overscroll-behavior:contain}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:23px}.dialog-head h2{font-size:1.73rem;margin:4px 0 0}.close-btn{font-size:1.9rem}.field{flex:1;margin-bottom:19px;min-width:0}.field-row{display:flex;gap:14px}.field label{display:block;margin-bottom:7px;font-size:.85rem;font-weight:740}.field textarea{resize:vertical;min-height:122px}.upload-zone{display:flex!important;align-items:center;flex-direction:column;justify-content:center;gap:3px;border:1.5px dashed #d8c9bc;padding:18px 13px;border-radius:13px;background:#fdfaf7;text-align:center;cursor:pointer;color:#7d6253}.upload-zone:hover{background:#fcf3ea}.upload-zone small{font-size:.76rem;color:#92877e}.upload-symbol{font-size:1.7rem;line-height:1}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.photo-previews{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:10px}.photo-previews:empty{display:none}.preview{position:relative;aspect-ratio:1;border-radius:10px;background:#eee;overflow:hidden}.preview img{width:100%;height:100%;object-fit:cover}.preview button{position:absolute;top:5px;right:5px;width:27px;height:27px;border:0;border-radius:50%;background:#241e1dc4;color:white;font-size:1.1rem}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:9px}.viewer{position:relative;max-width:100%;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.viewer img{max-width:calc(100% - 90px);max-height:calc(100% - 105px);object-fit:contain}.viewer button{position:absolute;border:0;border-radius:50%;width:43px;height:43px;color:white;background:#ffffff36;font-size:2rem;display:grid;place-items:center}.viewer #viewer-close{top:5px;right:5px}.viewer #viewer-prev{left:5px}.viewer #viewer-next{right:5px}#viewer-count{position:absolute;bottom:12px;color:white;font-size:.85rem}.settings-dialog{max-width:410px}.settings-dialog h3{font-size:1rem;margin-bottom:18px}.settings-dialog .primary{margin-top:20px}.settings-divider{height:1px;background:var(--line);margin:27px 0}.settings-dialog .tiny{margin:20px 0 0}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#292723;color:#fff;border-radius:12px;padding:13px 20px;opacity:0;pointer-events:none;z-index:60;transition:opacity .2s;max-width:calc(100% - 32px);text-align:center;box-shadow:var(--shadow)}#toast.visible{opacity:1}@media(max-width:900px){.timeline{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.topbar-inner{min-height:65px;padding:0 18px}.brand{font-size:1.14rem}.container{padding:42px 17px 85px}.welcome{margin-bottom:26px}.welcome h1{font-size:2.2rem}.welcome p{font-size:.91rem}.new-desktop{display:none}.toolbar{margin-bottom:22px}.timeline{grid-template-columns:1fr;gap:17px}.cover{height:230px}.fab{display:block}.entry-body{padding:18px}.entry-actions{padding:0 17px 15px}.auth-card{padding:28px 23px}.auth-card h1{font-size:1.6rem}.dialog{padding:21px 17px 24px;border-radius:18px;max-height:calc(100dvh - 24px)}.overlay{padding:12px}.field-row{flex-direction:column;gap:0}.field{margin-bottom:15px}.photo-previews{grid-template-columns:repeat(4,1fr)}.viewer img{max-width:calc(100% - 16px);max-height:calc(100% - 90px)}.viewer button{background:#1a17178a}.viewer #viewer-prev{left:0;bottom:12px;top:auto}.viewer #viewer-next{right:0;bottom:12px;top:auto}footer{padding-top:42px}}

/* v1.1 calendar and view toggles */
.view-switch{display:flex;gap:8px;margin:16px 0 24px}
.view-switch button{border:1px solid #d8d3ca;background:#fff;color:#394338;padding:11px 17px;border-radius:12px;font-weight:700;cursor:pointer}
.view-switch .view-active{background:#344b3b;color:white;border-color:#344b3b}
.calendar-view{background:#fff;padding:20px;border-radius:18px;border:1px solid #ece8e0;margin-bottom:26px}
.calendar-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}
.calendar-top h2{font-size:1.2rem;text-transform:capitalize;margin:0;text-align:center}
.calendar-top button{min-width:45px;font-size:24px}
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;text-align:center}
.calendar-weekdays{font-size:12px;font-weight:700;color:#6b706a;margin-bottom:7px}
.calendar-day{border:1px solid #ece8e0;border-radius:9px;background:#faf9f5;aspect-ratio:1/1;min-width:0;padding:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:#343d35;cursor:pointer;font-size:15px}
.calendar-day small{font-size:10px;color:#456f53;white-space:nowrap}
.calendar-day.has-entries{background:#edf4ed;border-color:#8eb89a;font-weight:800}
.calendar-day.is-today{outline:2px solid #c78f67;outline-offset:-2px}
.calendar-details{margin-top:20px;border-top:1px solid #eee;padding-top:15px}
.calendar-details h3{margin:0 0 12px}
.calendar-entry{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #eee;padding:10px 0}
.calendar-entry>div{display:flex;flex-direction:column;min-width:0;gap:3px}.calendar-entry small{color:#777}
@media(max-width:600px){.calendar-view{padding:12px}.calendar-grid{gap:3px}.calendar-day{font-size:13px;border-radius:6px}.calendar-day small{font-size:8px}.view-switch button{flex:1}}
