:root{--bg:#f7f8fa;--surface:#ffffff;--surface-muted:#f1f3f5;--surface-warm:#fff7f2;--text:#262321;--muted:#77716d;--subtle:#9d9691;--line:#e6e2df;--primary:#d9674b;--primary-strong:#bd4f35;--primary-soft:#f7e4dd;--teal:#287c75;--teal-soft:#e2f0ee;--gold:#bd8b3e;--danger:#b64444;--shadow:0 10px 30px rgba(40,35,31,.07)}*{box-sizing:border-box}html{min-width:320px}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.5}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}.app-shell{min-height:100vh;display:flex}.sidebar{width:240px;background:var(--surface);border-right:1px solid var(--line);padding:28px 18px 20px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:10}.brand,.login-brand{display:flex;align-items:center;gap:10px;font-weight:750;letter-spacing:.01em}.brand{padding:0 10px 28px;font-size:18px}.brand-mark{width:36px;height:36px;border-radius:10px;display:inline-grid;place-items:center;color:#fff;background:var(--primary);flex:none}.brand-mark.large{width:52px;height:52px;border-radius:14px}.sidebar-nav{display:grid;grid-gap:6px;gap:6px}.bottom-link,.nav-link{display:flex;align-items:center;gap:12px;color:var(--muted);border-radius:8px;transition:.2s ease}.nav-link{padding:12px 13px}.nav-link.active,.nav-link:hover{color:var(--primary-strong);background:var(--primary-soft)}.nav-link.active{font-weight:700}.account-block{margin-top:auto;border-top:1px solid var(--line);padding:18px 6px 0;display:flex;align-items:center;gap:8px}.account-email{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1}.main-content{flex:1 1;margin-left:240px;min-width:0}.bottom-nav{display:none}.page{max-width:1120px;margin:0 auto;padding:38px 42px 56px}.page-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.page-header h1{font-size:28px;line-height:1.2;letter-spacing:-.02em}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--primary-strong);font-weight:750;font-size:11px;margin-bottom:8px}.page-description{color:var(--muted);margin-top:8px}.page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-left:auto}.danger-button,.primary-button,.secondary-button{min-height:40px;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:7px;font-weight:700;transition:.2s ease}.primary-button{background:var(--primary);color:#fff}.primary-button:hover{background:var(--primary-strong)}.secondary-button{background:var(--surface);color:var(--text);border:1px solid var(--line)}.secondary-button:hover{border-color:var(--primary);color:var(--primary-strong)}.danger-button{background:#fff0ef;color:var(--danger)}.danger-button:hover{background:#f8d8d5}.full{width:100%}.icon-button,.inline-icon{border:0;background:transparent;color:var(--muted);display:inline-grid;place-items:center;padding:7px;border-radius:6px}.icon-button:hover,.inline-icon:hover{color:var(--primary-strong);background:var(--surface-muted)}.tabs{display:flex;gap:4px;padding:4px;background:var(--surface-muted);border-radius:9px;width:max-content;max-width:100%}.tab{border:0;background:transparent;color:var(--muted);border-radius:6px;padding:9px 20px;font-weight:650}.tab.active{background:var(--surface);color:var(--primary-strong);box-shadow:0 2px 7px rgba(30,24,20,.08)}.state-panel{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--muted)}.state-panel.error{color:var(--danger)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.empty-panel{border:1px dashed var(--line);background:var(--surface);min-height:220px;display:grid;place-items:center;text-align:center;padding:30px;color:var(--muted);border-radius:8px}.empty-panel strong{display:block;color:var(--text);font-size:17px;margin-top:10px}.empty-panel svg{color:var(--primary)}.records-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.record-group{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin-bottom:14px;overflow:hidden}.group-header{display:flex;align-items:center;gap:12px;padding:16px 18px;background:var(--surface-warm);border-bottom:1px solid var(--line);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.group-date{font-weight:750}.group-date-link:hover{color:var(--primary-strong);text-decoration:underline;text-underline-offset:3px}.group-subtitle{color:var(--muted);font-size:12px}.group-header .spacer{flex:1 1}.collapse-icon{color:var(--muted);transition:transform .18s ease}.collapse-icon.collapsed{transform:rotate(-90deg)}.group-content{padding:5px 14px}.log-row{display:flex;align-items:center;gap:12px;padding:13px 4px;border-bottom:1px solid var(--line)}.log-row:last-child{border-bottom:0}.drag-handle{color:var(--subtle);cursor:-webkit-grab;cursor:grab;padding:4px}.log-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;color:#fff;flex:none}.log-icon.feeding{background:var(--primary)}.log-icon.urination{background:var(--teal)}.log-icon.vitamin{background:var(--gold)}.log-main{min-width:0;flex:1 1}.log-title{font-weight:700}.log-ago{color:var(--muted);font-weight:400;font-size:12px;margin-left:6px}.log-note{overflow:hidden;text-overflow:ellipsis}.log-note,.log-value{color:var(--muted);font-size:13px;white-space:nowrap}.log-actions{display:flex;gap:2px}.load-more{display:flex;justify-content:center;padding:8px 0 24px}.fab{position:fixed;right:36px;bottom:32px;width:54px;height:54px;display:grid;place-items:center;border-radius:50%;border:0;color:#fff;background:var(--primary);box-shadow:0 10px 22px rgba(189,79,53,.28);z-index:5}.fab:hover{background:var(--primary-strong);transform:translateY(-1px)}.stats-layout{display:grid;grid-gap:18px;gap:18px}.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:17px}.stat-card p{color:var(--muted);font-size:12px}.stat-card strong{display:block;margin-top:6px;font-size:23px}.chart-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:20px 16px 12px}.chart-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.chart-header h2{font-size:17px}.chart-container{width:100%;height:320px}.stats-chart-frame{display:flex;min-width:0}.stats-chart-axis{width:48px;height:100%;flex:none}.stats-chart-scroll{flex:1 1;min-width:0;height:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--subtle) var(--surface-muted);-webkit-overflow-scrolling:touch}.stats-chart-scroll:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.stats-chart-scroll::-webkit-scrollbar{height:7px}.stats-chart-scroll::-webkit-scrollbar-track{background:var(--surface-muted);border-radius:7px}.stats-chart-scroll::-webkit-scrollbar-thumb{background:var(--subtle);border-radius:7px}.stats-chart-content{min-width:100%;height:100%}.chart-empty{height:220px;display:grid;place-items:center;color:var(--muted)}.metric-toggle{display:flex;gap:4px;background:var(--surface-muted);padding:3px;border-radius:7px}.metric-toggle button{border:0;background:transparent;padding:6px 10px;color:var(--muted);border-radius:5px;font-size:12px}.metric-toggle button.active{background:var(--surface);color:var(--primary-strong);font-weight:700}.day-list{display:grid;grid-gap:7px;gap:7px;margin-top:16px}.day-stat{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:7px;background:var(--surface)}.day-stat strong{flex:1 1}.day-stat span{color:var(--muted);font-size:13px}.memory-toolbar{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-bottom:20px}.memory-counts{color:var(--muted);font-size:13px;align-self:center}.memory-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}.memory-day{margin-bottom:26px}.memory-day h2{font-size:16px;margin:0 0 10px}.memory-day h2 small{color:var(--muted);font-size:12px;font-weight:400;margin-left:8px}.memory-card{min-width:0}.memory-card-media{position:relative;aspect-ratio:1;overflow:hidden;background:#ece9e6;border-radius:7px}.memory-card-media>a{display:block;width:100%;height:100%}.memory-card-media img,.memory-card-media video{width:100%;height:100%;object-fit:cover;display:block}.memory-card-media:hover .memory-overlay{opacity:1}.memory-card-note{margin:7px 2px 0;color:var(--muted);font-size:13px;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.memory-delete{position:absolute;top:7px;right:7px;z-index:3;color:#fff;background:rgba(0,0,0,.5)}.memory-delete:hover{color:#fff;background:var(--danger)}.memory-overlay{position:absolute;inset:auto 0 0;padding:35px 9px 9px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.72));opacity:0;transition:.2s ease;text-align:left}.memory-overlay small{display:block}.video-badge{position:absolute;top:8px;left:8px;color:#fff;background:rgba(0,0,0,.52);border-radius:50%;width:28px;height:28px;display:grid;place-items:center}.upload-progress{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:13px}.progress-bar{width:120px;height:5px;background:var(--surface-muted);border-radius:9px;overflow:hidden}.progress-bar i{display:block;height:100%;background:var(--primary)}.settings-grid{display:grid;grid-gap:16px;gap:16px;max-width:760px}.settings-section{background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}.settings-section-header{padding:17px 19px;border-bottom:1px solid var(--line)}.settings-section-header h2{font-size:16px}.settings-section-header p{color:var(--muted);font-size:13px;margin-top:4px}.setting-row{min-height:68px;padding:13px 19px;display:flex;align-items:center;gap:15px;border-bottom:1px solid var(--line)}.setting-row:last-child{border-bottom:0}.setting-copy{flex:1 1}.setting-copy strong{display:block}.setting-copy span{display:block;color:var(--muted);font-size:13px;margin-top:2px}.setting-control{flex:none}.segmented{display:flex;gap:3px;padding:3px;background:var(--surface-muted);border-radius:7px}.segmented button{border:0;background:transparent;color:var(--muted);padding:6px 10px;border-radius:5px;font-size:12px}.segmented button.active{background:var(--surface);color:var(--primary-strong);font-weight:700}.setting-input{width:170px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:var(--surface);color:var(--text)}.modal-backdrop{position:fixed;inset:0;z-index:50;background:rgba(27,23,21,.46);display:grid;place-items:end center;padding:20px}.modal{background:var(--surface);width:min(100%,500px);max-height:min(760px,calc(100vh - 40px));overflow:auto;border-radius:10px;box-shadow:var(--shadow)}.modal.wide{width:min(100%,680px)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;background:var(--surface);z-index:1}.modal-header h2{font-size:18px}.modal-body{padding:20px}.form-grid{display:grid;grid-gap:15px;gap:15px}.form-field{display:grid;grid-gap:6px;gap:6px}.auth-form label,.form-field label{color:var(--muted);font-size:13px;font-weight:650}.auth-form input,.form-field input,.form-field select,.form-field textarea{width:100%;border:1px solid var(--line);border-radius:7px;padding:10px 11px;background:var(--surface);color:var(--text);outline:none}.auth-form input:focus,.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.form-field textarea{resize:vertical;min-height:80px}.choice-row{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.choice-row button{border:1px solid var(--line);padding:10px 4px;background:var(--surface);border-radius:7px;color:var(--muted)}.choice-row button.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-strong);font-weight:700}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.form-error{color:var(--danger);font-size:13px}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:90;padding:10px 15px;border-radius:7px;color:#fff;box-shadow:var(--shadow);font-size:13px}.toast.success{background:var(--teal)}.toast.error{background:var(--danger)}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr minmax(360px,500px)}.login-panel{background:var(--surface);display:flex;flex-direction:column;justify-content:center;padding:7vw}.login-brand{align-items:flex-start;margin-bottom:42px}.login-brand h1{font-size:27px;line-height:1.2}.login-brand p{color:var(--muted);margin-top:7px}.auth-form{display:grid;grid-gap:17px;gap:17px}.input-with-icon{position:relative;display:flex;align-items:center}.input-with-icon>svg{position:absolute;left:11px;color:var(--subtle);pointer-events:none}.input-with-icon input{padding-left:38px;padding-right:38px}.inline-icon{position:absolute;right:5px}.login-note{color:var(--subtle);font-size:12px;margin-top:18px}.login-visual{background:var(--surface-warm);padding:10vw 7vw;display:flex;flex-direction:column;justify-content:center;color:var(--text)}.visual-date span{display:block;color:var(--primary-strong);font-size:13px;font-weight:700}.visual-date strong{display:block;font-size:clamp(30px,4vw,52px);letter-spacing:-.03em;margin-top:7px}.visual-timeline{position:relative;display:grid;grid-gap:28px;gap:28px;margin-top:70px;padding-left:34px}.timeline-line{position:absolute;left:7px;top:11px;bottom:11px;width:2px;background:var(--line)}.visual-timeline>div{position:relative;display:grid;grid-template-columns:70px 1fr;grid-gap:10px;gap:10px;align-items:center}.visual-timeline small{color:var(--muted)}.visual-timeline strong{grid-column:2;margin-top:-5px}.dot{position:absolute;left:-32px;top:4px;width:14px;height:14px;border:3px solid var(--surface-warm);border-radius:50%;z-index:1}.dot.coral{background:var(--primary)}.dot.teal{background:var(--teal)}.dot.gold{background:var(--gold)}.center-page{min-height:100vh;display:grid;place-items:center;padding:20px}.password-panel{width:min(100%,430px);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:36px;box-shadow:var(--shadow)}.password-panel>h1{margin-top:22px;font-size:24px}.password-panel>p{margin:7px 0 25px}.password-panel small,.password-panel>p{color:var(--muted)}.preview-media{max-width:100%;max-height:55vh;display:block;margin:0 auto;border-radius:6px;background:#111}.memory-note-section{margin:20px 4px 0;padding-top:18px;border-top:1px solid var(--line)}.memory-note-header{min-height:34px;display:flex;align-items:center;justify-content:space-between;gap:12px}.memory-note-header h2{font-size:16px}.memory-note-action{min-height:34px;padding:0 11px;font-size:13px}.memory-note-text{margin-top:13px;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}.memory-note-editor{display:grid;grid-gap:9px;gap:9px;margin-top:12px}.memory-note-editor textarea{width:100%;min-height:118px;resize:vertical;border:1px solid var(--line);border-radius:7px;padding:10px 11px;background:var(--surface);color:var(--text);outline:none;line-height:1.65}.memory-note-editor textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.memory-note-editor-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.memory-note-editor-footer small{color:var(--muted)}.memory-note-actions{display:flex;gap:8px}.memory-detail-panel .preview-details{margin-top:18px;border-top:1px solid var(--line)}.preview-details{padding:14px 20px 20px;color:var(--muted);font-size:13px;display:flex;justify-content:space-between}.preview-details a{display:inline-flex;align-items:center;gap:4px}.backup-preview{display:grid;grid-gap:10px;gap:10px}.backup-preview p{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:8px}.backup-preview strong{color:var(--text)}.dark{--bg:#15191e;--surface:#1d2329;--surface-muted:#252c33;--surface-warm:#252221;--text:#f1efed;--muted:#aaa6a2;--subtle:#817b76;--line:#343b42;--primary-soft:#3c2825;--teal-soft:#1b3533;--shadow:0 14px 35px rgba(0,0,0,.22)}.dark .primary-button{color:#fff}.dark .empty-panel{background:var(--surface)}.dark .memory-card-media{background:#111}@media (max-width:860px){.sidebar{display:none}.main-content{margin-left:0;padding-bottom:70px}.bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(3,1fr);inset:auto 0 0;height:64px;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);z-index:20}.bottom-link{justify-content:center;flex-direction:column;gap:3px;font-size:11px;border-radius:0}.bottom-link.active{color:var(--primary-strong)}.page{padding:24px 17px 38px}.page-header{margin-bottom:16px}.page-header h1{font-size:24px}.page-description{font-size:13px}.fab{right:20px;bottom:82px}.memory-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.stat-cards{grid-template-columns:repeat(2,1fr)}.login-page{grid-template-columns:1fr}.login-panel{min-height:100vh;padding:38px 28px}.login-visual{display:none}}@media (max-width:520px){.page-header{align-items:center;flex-wrap:wrap;gap:10px}.page-actions{justify-content:flex-end}.page-actions .primary-button{flex:none}.records-toolbar{align-items:stretch;flex-direction:column}.tabs{width:100%}.tab{flex:1 1;padding:8px 5px}.group-header{padding:14px}.group-content{padding:4px 10px}.log-row{gap:8px}.drag-handle{display:none}.log-value{font-size:12px}.log-actions .icon-button{padding:5px}.stat-card{padding:13px}.stat-card strong{font-size:19px}.chart-panel{padding:15px 8px 8px}.chart-container{height:270px}.memory-toolbar{flex-direction:column}.memory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.memory-overlay{opacity:1;padding-top:30px}.setting-row{align-items:flex-start;flex-direction:column;gap:9px}.setting-control,.setting-control .segmented{width:100%}.setting-control .segmented button{flex:1 1}.setting-input{width:100%}.modal-backdrop{padding:0}.modal{width:100%;max-height:92vh;border-radius:12px 12px 0 0}.modal-body{padding:17px}.choice-row{gap:5px}.password-panel{padding:28px 21px}}