:root{--app-bg:#fff8f2;--surface-bg:#fff;--surface-strong:#fff0e2;--border:#ead7c8;--text-primary:#2d211b;--text-muted:#76655a;--text-soft:#a89384;--accent:#d95f4c;--accent-strong:#aa3e31;--accent-soft:#d95f4c24;--accent-contrast:#fffaf6;--danger:#bd2f2f;--success:#2f8c6c;--stack-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", Roboto, sans-serif;--stack-serif:ui-serif, Georgia, Cambria, "Songti SC", "Noto Serif CJK SC", "Times New Roman", serif;--stack-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--font-body:var(--stack-sans);--font-display:var(--stack-serif);--text-xs:11px;--text-sm:12px;--text-md:15px;--text-lg:18px;--text-xl:24px;--space-page-x:16px;--space-section-y:18px;--space-card:16px;--space-control:12px;--radius-card:18px;--radius-control:12px;--radius-pill:999px;--control-height:44px;--bottom-nav-height:64px;--shadow-card:0 14px 34px #5b3a2621;--shadow-float:0 -14px 34px #5b3a2624;--page-wash:linear-gradient(180deg, #fff8f2 0%, #fffaf6 52%, #f8eee6 100%);--panel-wash:linear-gradient(180deg, #fff 0%, #fffaf6 100%);--accent-wash:linear-gradient(135deg, #d95f4c 0%, #ef9a6d 100%);--success-soft:#2f8c6c21;--danger-soft:#bd2f2f1c;--control-bg:#fffaf6;--overlay:#2d211b57;--focus-ring:#d95f4c47;--calendar-grid:#ead7c8c7}*{box-sizing:border-box}html,body,#root{min-height:100%}html{background:var(--app-bg);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{color:var(--text-primary);background:var(--app-bg);font-family:var(--font-body);font-size:var(--text-md);-webkit-tap-highlight-color:transparent;margin:0}button,input,textarea,select{font:inherit}button{color:inherit}button:disabled,[aria-disabled=true]{cursor:not-allowed;opacity:.58}img,svg{max-width:100%;display:block}.app-shell{background:var(--page-wash);flex-direction:column;width:100%;max-width:480px;min-height:100dvh;margin:0 auto;display:flex;position:relative;overflow:hidden}.app-header{z-index:5;justify-content:space-between;align-items:center;gap:var(--space-control);min-height:64px;padding:calc(env(safe-area-inset-top,0px) + 10px) var(--space-page-x) 10px;border-bottom:1px solid var(--border);background:var(--surface-bg);display:flex;position:sticky;top:0}.brand-lockup{align-items:center;gap:10px;min-width:0;display:flex}.brand-lockup h1{font-family:var(--font-display);font-size:var(--text-lg);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:800;line-height:1.15;overflow:hidden}.app-header-actions{flex:none;align-items:center;gap:8px;display:flex}.app-logo{border:1px solid var(--border);width:40px;height:40px;color:var(--accent-contrast);background:var(--accent-wash);box-shadow:var(--shadow-card);border-radius:14px;flex:none;place-items:center;display:grid;position:relative;overflow:hidden}.app-logo img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.app-logo-fallback{font-family:var(--font-display);font-size:var(--text-lg);font-weight:800}.app-content{min-height:0;padding:var(--space-section-y) var(--space-page-x) calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px) + 22px);overscroll-behavior-y:contain;flex:1;overflow-y:auto}.system-status-bar{border:1px solid var(--border);border-radius:var(--radius-pill);min-height:34px;color:var(--text-muted);background:var(--surface-bg);font-size:var(--text-sm);box-shadow:var(--shadow-card);justify-content:space-between;align-items:center;gap:10px;padding:7px 10px;display:flex}.page-heading{justify-content:space-between;align-items:flex-start;gap:var(--space-control);margin-bottom:var(--space-section-y);display:flex}.page-heading h2,.page-heading p,.eyebrow{margin:0}.page-heading h2{font-family:var(--font-display);font-size:var(--text-xl);font-weight:800;line-height:1.16}.page-heading p{color:var(--text-muted);margin-top:6px;line-height:1.45}.eyebrow{color:var(--accent-strong);font-size:var(--text-xs);letter-spacing:0;font-weight:800}.app-banner,.summary-card,.item-card,.list-section,.profile-card,.compact-card,.history-card,.trend-card,.crud-detail-card{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--panel-wash);box-shadow:var(--shadow-card)}.app-banner,.summary-card,.list-section,.profile-card,.compact-card,.history-card,.trend-card,.crud-detail-card{padding:var(--space-card)}.home-focus-grid{gap:12px;display:grid}.list-section{gap:var(--space-control);margin-top:var(--space-section-y);display:grid}.section-title,.section-heading-row,.history-title-row{align-items:center;gap:10px;display:flex}.section-heading-row,.history-title-row{justify-content:space-between}.section-title i{border-radius:var(--radius-pill);background:var(--accent);flex:none;width:8px;height:8px}.section-title h2,.section-title h3{font-family:var(--font-display);font-size:var(--text-lg);margin:0;line-height:1.18}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.metric-tile{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--control-bg);gap:5px;min-width:0;min-height:78px;padding:12px;display:grid}.metric-tile span,.item-card-meta,.history-title-row>span{color:var(--text-muted);font-size:var(--text-sm)}.metric-tile strong{color:var(--accent-strong);font-family:var(--font-display);font-size:var(--text-xl);line-height:1.05}.item-list,.crud-list,.record-form,.crud-detail{gap:10px;display:grid}.item-card{gap:4px;padding:14px;display:grid}.item-card strong{font-size:var(--text-md);line-height:1.25}.profile-card{align-items:center;gap:12px;display:flex}.profile-avatar,.crud-row-icon,.metric-icon{border-radius:var(--radius-pill);width:40px;height:40px;color:var(--accent-contrast);background:var(--accent-wash);flex:none;place-items:center;font-weight:800;display:grid}.primary-action,.secondary-action,.icon-button,.period-pill,.sheet-cancel,.option-sheet-item,.select-trigger{min-height:var(--control-height);border-radius:var(--radius-control);justify-content:center;align-items:center;font-weight:800;line-height:1;text-decoration:none;display:inline-flex}.primary-action{border:1px solid var(--accent-strong);width:100%;color:var(--accent-contrast);background:var(--accent-wash);box-shadow:var(--shadow-card)}.secondary-action,.period-pill,.sheet-cancel,.select-trigger{border:1px solid var(--border);color:var(--text-primary);background:var(--surface-bg)}.icon-button{border:1px solid var(--border);width:42px;height:42px;min-height:42px;color:var(--accent-strong);background:var(--surface-bg);box-shadow:var(--shadow-card);padding:0}.app-icon,.fitness-icon{flex:none}.bottom-nav{right:12px;bottom:calc(env(safe-area-inset-bottom,0px) + 10px);z-index:8;grid-template-columns:repeat(var(--nav-count,5), minmax(0, 1fr));min-height:var(--bottom-nav-height);border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-bg);box-shadow:var(--shadow-float);padding:6px;display:grid;position:absolute;left:12px}.bottom-nav-item{border-radius:var(--radius-control);min-width:0;min-height:50px;color:var(--text-muted);font-size:var(--text-xs);background:0 0;border:0;place-items:center;gap:3px;font-weight:800;display:grid}.bottom-nav-item span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.bottom-nav-item[data-active=true]{color:var(--accent-contrast);background:var(--accent-wash)}.sheet-layer{z-index:20;place-items:end center;display:grid;position:fixed;inset:0}.sheet-backdrop{background:var(--overlay);border:0;position:absolute;inset:0}.bottom-sheet{z-index:1;width:min(100%,480px);max-height:min(82dvh,720px);padding:14px var(--space-page-x) calc(env(safe-area-inset-bottom,0px) + 16px);border:1px solid var(--border);background:var(--surface-bg);box-shadow:var(--shadow-float);border-radius:24px 24px 0 0;flex-direction:column;display:flex;position:relative}.bottom-sheet[data-size=full]{max-height:94dvh}.sheet-header,.sheet-actions,.bottom-action-bar,.crud-row-actions{align-items:center;gap:10px;display:flex}.sheet-header{justify-content:space-between;padding-bottom:12px}.sheet-header strong{font-family:var(--font-display);font-size:var(--text-lg)}.sheet-content{min-height:0;padding:2px 0;overflow-y:auto}.sheet-actions,.bottom-action-bar{padding-top:12px}.sheet-actions>*,.bottom-action-bar>*{flex:1}.form-field{gap:7px;display:grid}.form-field label{color:var(--text-muted);font-size:var(--text-sm);font-weight:800}.text-input,.textarea-input,.select-input,.select-trigger{width:100%;min-height:var(--control-height);border:1px solid var(--border);border-radius:var(--radius-control);color:var(--text-primary);background:var(--control-bg);outline:none;padding:0 12px}.textarea-input{resize:vertical;min-height:96px;padding:12px;line-height:1.5}.text-input:focus,.textarea-input:focus,.select-input:focus,.select-trigger:focus-visible,.primary-action:focus-visible,.secondary-action:focus-visible,.icon-button:focus-visible,.bottom-nav-item:focus-visible,.option-sheet-item:focus-visible{border-color:var(--accent);box-shadow:0 0 0 4px var(--focus-ring);outline:none}.option-sheet-list{gap:8px;display:grid}.option-sheet-item{border:1px solid var(--border);width:100%;color:var(--text-primary);background:var(--control-bg);justify-content:flex-start;padding:0 12px}.data-state,.empty-state,.error-state,.loading-state,.success-state{min-height:120px;padding:var(--space-card);border:1px dashed var(--border);border-radius:var(--radius-card);text-align:center;background:var(--surface-bg);place-items:center;gap:10px;margin:0;line-height:1.5;display:grid}.empty-state,.loading-state{color:var(--text-muted)}.error-state{color:var(--danger);background:var(--danger-soft)}.success-state{color:var(--success);background:var(--success-soft)}.data-state h3,.data-state p{margin:0}.data-state h3{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-lg)}.data-state p{color:var(--text-muted)}.data-state-action{width:100%}.loading-progress{border-radius:var(--radius-pill);background:var(--accent-soft);width:100%;height:8px;position:relative;overflow:hidden}.loading-progress:after{border-radius:inherit;background:var(--accent-wash);content:"";width:42%;animation:1.15s ease-in-out infinite loading-slide;position:absolute;inset:0 auto 0 0}@keyframes loading-slide{0%{transform:translate(-100%)}to{transform:translate(240%)}}.crud-row{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-bg);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;display:grid}.crud-row-main{min-width:0;color:var(--text-primary);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:0;display:flex}.crud-row-main span,.crud-row-main strong,.crud-row-main small{min-width:0}.crud-row-main strong{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.crud-row-main small,.detail-row span{color:var(--text-muted);font-size:var(--text-sm);display:block}.crud-row-actions .icon-button{width:36px;height:36px;min-height:36px}.detail-row{border-bottom:1px solid var(--border);gap:5px;padding:10px 0;display:grid}.detail-row:last-child{border-bottom:0}.detail-row strong{line-height:1.4}.progress-block{gap:8px;display:grid}.progress-label{color:var(--text-muted);font-size:var(--text-sm);justify-content:space-between;gap:10px;font-weight:800;display:flex}.progress-track{border-radius:var(--radius-pill);background:var(--accent-soft);height:9px;overflow:hidden}.progress-track>span,.progress-track:before{width:var(--progress,0%);border-radius:inherit;background:var(--accent-wash);content:"";height:100%;display:block}.app-progress-ring,.progress-ring,.donut-chart,.streak-ring{aspect-ratio:1;border-radius:var(--radius-pill);place-items:center;display:grid;position:relative}.app-progress-ring,.progress-ring{background:conic-gradient(var(--accent) 0 var(--progress,0%), var(--accent-soft) var(--progress,0%) 100%);width:min(44vw,170px);margin-inline:auto}.app-progress-ring:before,.progress-ring:before,.donut-chart:before,.streak-ring:before{aspect-ratio:1;border-radius:inherit;background:var(--surface-bg);content:"";width:72%;position:absolute}.progress-ring-core,.app-progress-ring>*{z-index:1;justify-items:center;gap:4px;display:grid;position:relative}.bar-chart,.weekly-trend{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--control-bg);gap:8px;min-height:180px;padding:12px;display:grid}.bar-chart-item,.trend-column{color:var(--text-muted);font-size:var(--text-xs);place-items:end center;font-weight:800;display:grid}.trend-grid{border-bottom:1px solid var(--calendar-grid);grid-template-columns:repeat(7,minmax(0,1fr));align-items:end;min-height:150px;display:grid}.trend-column i,.bar-chart-item i{width:12px;height:var(--bar-height,40%);border-radius:var(--radius-pill) var(--radius-pill) 4px 4px;background:var(--accent-wash);min-height:5px;display:block}.calendar-shell{padding:var(--space-card);border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-bg);box-shadow:var(--shadow-card);gap:10px;display:grid}.calendar-grid{border:1px solid var(--calendar-grid);border-radius:var(--radius-control);background:var(--calendar-grid);grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.calendar-day{min-height:54px;color:var(--text-primary);background:var(--surface-bg);text-align:left;border:0;align-content:start;padding:7px;display:grid}.calendar-day[data-has-event=true]{background:var(--accent-soft)}.calendar-day[data-current-month=false]{color:var(--text-soft);background:var(--control-bg)}.calendar-day small{color:var(--accent-strong);text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:800;line-height:1.2;overflow:hidden}.reminder-chip,.date-chip,.gift-chip{border:1px solid var(--border);border-radius:var(--radius-pill);width:fit-content;max-width:100%;min-height:26px;color:var(--accent-strong);background:var(--accent-soft);font-size:var(--text-xs);align-items:center;padding:0 9px;font-weight:800;display:inline-flex}.reminder-list{gap:10px;display:grid}.reminder-card{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-bg);box-shadow:var(--shadow-card);grid-template-columns:auto minmax(0,1fr);gap:12px;padding:14px;display:grid}.reminder-button,.gift-card,.month-event-row,.contact-main{width:100%;color:var(--text-primary);text-align:left;background:0 0;border:0}.reminder-date{width:48px;height:48px;color:var(--accent-contrast);background:var(--accent-wash);font-family:var(--font-display);border-radius:16px;place-items:center;font-weight:800;display:grid}.insight-grid,.performance-grid,.type-chart,.history-metrics{gap:10px;display:grid}.insight-grid,.performance-grid{grid-template-columns:1fr}.history-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.history-metric,.legend-row{color:var(--text-muted);gap:4px;display:grid}.history-metric strong,.legend-row strong{color:var(--accent-strong)}.donut-chart,.streak-ring{background:conic-gradient(var(--accent) 0 70%, var(--accent-soft) 70% 100%);width:104px;margin-inline:auto}.type-legend{gap:8px;display:grid}.legend-row{grid-template-columns:10px minmax(0,1fr) auto;align-items:center}.legend-row span{border-radius:var(--radius-pill);background:var(--accent);width:10px;height:10px}.birthday-hero{margin-top:var(--space-section-y);gap:14px;display:grid}.birthday-hero h2,.birthday-hero p,.contact-card p,.reminder-card p,.gift-card small,.gift-note-body{margin:0}.birthday-hero h2{font-family:var(--font-display);margin-top:4px;font-size:clamp(28px,9vw,44px);line-height:1.02}.birthday-hero p,.contact-card p,.reminder-card p,.gift-card small,.gift-note-body,.month-event-row small{color:var(--text-muted);line-height:1.45}.status-refresh,.compact-action{border-radius:var(--radius-pill);min-height:32px;font-size:var(--text-sm);padding:0 10px}.status-refresh{border:1px solid var(--border);color:var(--accent-strong);background:var(--control-bg);font-weight:800}.quick-action-grid{margin-top:var(--space-section-y);grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.quick-action{border:1px solid var(--border);border-radius:var(--radius-card);min-width:0;min-height:78px;color:var(--accent-strong);background:var(--surface-bg);box-shadow:var(--shadow-card);font-size:var(--text-sm);justify-items:center;gap:6px;padding:12px 8px;font-weight:800;display:grid}.quick-action span,.card-title-row strong,.gift-card-head strong,.month-event-row strong{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.contact-list,.gift-list{gap:12px;display:grid}.contact-card,.gift-card,.month-event-row{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-bg);box-shadow:var(--shadow-card);gap:9px;padding:14px;display:grid}.contact-main{align-items:center;gap:10px;padding:0;display:flex}.contact-main span:last-child,.reminder-card>div,.reminder-card>span:last-child,.gift-card,.month-event-row{min-width:0}.contact-main strong,.contact-main small,.card-title-row,.gift-card-head,.card-footer-row,.calendar-toolbar,.calendar-weekdays{align-items:center;gap:8px;min-width:0;display:flex}.contact-main strong,.contact-main small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.contact-main small,.reminder-card small,.month-event-row small{color:var(--text-muted);font-size:var(--text-sm)}.card-title-row,.gift-card-head,.card-footer-row,.calendar-toolbar{justify-content:space-between}.card-footer-row{color:var(--text-muted);font-size:var(--text-sm)}.reminder-card[data-active=true]{border-color:var(--accent);background:linear-gradient(180deg, var(--surface-bg) 0%, var(--surface-strong) 100%)}.reminder-button,.gift-card{cursor:pointer}.gift-card[data-prepared=true]{border-color:var(--success);background:var(--success-soft)}.gift-note-body{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.calendar-toolbar strong{font-family:var(--font-display);font-size:var(--text-lg)}.calendar-weekdays{color:var(--text-muted);font-size:var(--text-xs);text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));font-weight:800;display:grid}.month-event-row{cursor:pointer}.danger-action{color:var(--danger)}@media (width>=720px){.app-shell{border-right:1px solid var(--border);border-left:1px solid var(--border);max-width:960px}.app-content{padding-left:24px;padding-right:24px}.metric-grid,.history-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.insight-grid,.performance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.primary-action{width:auto;padding-inline:18px}}
