:root{--c-primary:#6366f1;--c-primary-light:#eef2ff;--c-primary-dark:#4f46e5;--c-accent:#f59e0b;--c-accent-light:#fef3c7;--c-success:#10b981;--c-success-light:#ecfdf5;--c-danger:#ef4444;--c-danger-light:#fef2f2;--c-bg:#f8fafc;--c-surface:#fff;--c-text:#1e293b;--c-text-soft:#64748b;--c-border:#e2e8f0;--c-shadow:0 1px 3px #0000000f, 0 1px 2px #0000000a;--c-shadow-md:0 4px 6px -1px #00000014, 0 2px 4px -1px #0000000a;--c-shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -2px #0000000a;--c-shadow-xl:0 20px 25px -5px #00000014, 0 10px 10px -5px #0000000a;--r:16px;--r-sm:10px;--r-xs:8px}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:Noto Sans SC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;font-weight:400;line-height:1.6}#root{min-height:100dvh}::selection{background:var(--c-primary-light);color:var(--c-primary-dark)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px;transition:background .2s}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.ant-card{transition:box-shadow .3s,transform .2s;border-radius:var(--r)!important;border:1px solid var(--c-border)!important;box-shadow:var(--c-shadow)!important}.ant-card:hover{box-shadow:var(--c-shadow-md)!important}.ant-card-head{border-bottom:1px solid var(--c-border)!important;min-height:auto!important;padding:16px 24px!important;font-size:15px!important;font-weight:600!important}.ant-card-body{padding:24px!important}.ant-btn{border-radius:var(--r-sm)!important;height:40px!important;padding:4px 20px!important;font-weight:500!important;transition:all .2s!important}.ant-btn-primary{background:linear-gradient(135deg, var(--c-primary) 0%, var(--c-primary-dark) 100%)!important;border:none!important;box-shadow:0 4px 12px #6366f14d!important}.ant-btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px #6366f166!important}.ant-btn-primary:active{transform:translateY(0)}.ant-input,.ant-input-number,.ant-picker,.ant-select-selector,.ant-input-affix-wrapper{box-shadow:none;border-radius:var(--r-sm)!important;border:1px solid var(--c-border)!important}.ant-input-affix-wrapper{background:var(--c-bg-card,#fff);gap:8px;padding:8px 12px!important}.ant-input-affix-wrapper>input.ant-input{min-width:0;box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;padding:0!important}.ant-input-affix-wrapper .ant-input-prefix{margin:0}.ant-input-affix-wrapper:focus-within,input.ant-input:focus,.ant-picker:focus-within{border-color:var(--c-primary)!important}.ant-form-item{box-shadow:none}.ant-tag{border-radius:var(--r-xs)!important;border:none!important;padding:4px 10px!important;font-weight:500!important}.ant-tag-green{background:var(--c-success-light)!important;color:var(--c-success)!important}.ant-tag-blue{background:var(--c-primary-light)!important;color:var(--c-primary)!important}.ant-tag-orange{background:var(--c-accent-light)!important;color:var(--c-accent)!important}.ant-segmented{border-radius:var(--r-sm)!important;background:var(--c-bg)!important;padding:4px!important}.ant-segmented-item{border-radius:var(--r-xs)!important}.ant-segmented-item-selected{background:var(--c-surface)!important;box-shadow:var(--c-shadow)!important}.ant-progress-bg{background:linear-gradient(90deg, var(--c-primary) 0%, var(--c-primary-dark) 100%)!important;border-radius:999px!important}.ant-progress-success-bg{background:linear-gradient(90deg, var(--c-success) 0%, #059669 100%)!important}.ant-alert{border-radius:var(--r)!important;border:none!important;padding:16px 20px!important}.ant-alert-info{background:var(--c-primary-light)!important;color:var(--c-primary-dark)!important}.ant-alert-success{background:var(--c-success-light)!important;color:#047857!important}.ant-modal-content{box-shadow:var(--c-shadow-xl)!important;border-radius:20px!important;padding:24px!important}.ant-modal-header{border-bottom:1px solid var(--c-border)!important;margin:-24px -24px 20px!important;padding:20px 24px!important}.ant-modal-footer{border-top:1px solid var(--c-border)!important;margin:20px -24px -24px!important;padding:16px 24px!important}.ant-statistic-title{color:var(--c-text-soft)!important;margin-bottom:4px!important;font-size:13px!important;font-weight:500!important}.ant-statistic-content{letter-spacing:-.5px;font-size:28px!important;font-weight:700!important}.ant-statistic-content-value{letter-spacing:-.5px;font-weight:700!important}.ant-tabs-tab{padding:12px 0!important;font-weight:500!important}.ant-tabs-tab-active{color:var(--c-primary)!important}.ant-tabs-ink-bar{background:var(--c-primary)!important;border-radius:3px!important;height:3px!important}.ant-table-thead>tr>th{color:var(--c-text-soft)!important;background:var(--c-bg)!important;border-bottom:2px solid var(--c-border)!important;font-weight:600!important}.ant-switch-checked{background:var(--c-primary)!important}.desktop-header{-webkit-backdrop-filter:blur(20px);z-index:100;align-items:center;position:sticky;top:0;overflow:hidden;border-bottom:1px solid var(--c-border)!important;background:#ffffffd9!important;height:64px!important;padding:0 32px!important;line-height:64px!important;display:flex!important}.desktop-header .brand{background:linear-gradient(135deg, var(--c-primary) 0%, var(--c-primary-dark) 100%);-webkit-text-fill-color:transparent;letter-spacing:-.3px;white-space:nowrap;-webkit-background-clip:text;background-clip:text;flex-shrink:0;align-items:center;gap:8px;margin-right:40px;font-size:20px;font-weight:700;display:flex}.desktop-header .ant-menu{flex:1;min-width:0;background:0 0!important;border-bottom:none!important}.desktop-header .ant-menu-item{flex-shrink:0;border-radius:var(--r-sm)!important;height:40px!important;margin:0 4px!important;padding:0 18px!important;font-weight:500!important;line-height:40px!important}.desktop-header .ant-menu-item-selected{background:var(--c-primary-light)!important;color:var(--c-primary)!important;font-weight:600!important}.mobile-topbar{-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--c-border);z-index:99;background:#ffffffe6;justify-content:space-between;align-items:center;height:52px;padding:0 16px;display:none;position:sticky;top:0}.mobile-brand{color:var(--c-primary-dark);font-size:17px;font-weight:700}.mobile-nav{-webkit-backdrop-filter:blur(24px);border-top:1px solid var(--c-border);padding:6px 0 calc(6px + env(safe-area-inset-bottom,0px));z-index:100;background:#fffffff2;justify-content:space-around;align-items:center;display:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 20px #0000000f}.mobile-nav-item{min-width:56px;color:var(--c-text-soft);-webkit-tap-highlight-color:transparent;border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:5px 0;font-size:10px;font-weight:500;text-decoration:none;transition:color .2s;display:flex}.mobile-nav-item.active{color:var(--c-primary)}.mobile-nav-item svg{font-size:22px}.mobile-nav-item:active{opacity:.7}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.page-content>*{animation:.5s cubic-bezier(.16,1,.3,1) fadeUp}@media (width<=1024px){.desktop-header{padding:0 24px!important}.desktop-header .brand{margin-right:24px}.desktop-header .ant-menu-item{padding:0 14px!important;font-size:14px!important}}@media (width<=900px){.desktop-header .ant-menu-item{padding:0 12px!important;font-size:13px!important}}@media (width<=768px){.desktop-header{display:none!important}.mobile-topbar,.mobile-nav{display:flex}.page-content{padding:14px 14px calc(72px + env(safe-area-inset-bottom,0px))!important}.ant-card-body{padding:14px!important}.ant-card-head{padding:12px 14px!important;font-size:14px!important}.ant-statistic-content{font-size:22px!important}.ant-modal-content{border-radius:14px!important;margin:8px!important;padding:18px!important}.ant-btn{height:42px!important}.hidden-mobile{display:none!important}.show-mobile{display:block!important}}@media (width>=769px){.hidden-mobile{display:block!important}.show-mobile{display:none!important}}@media (width<=480px){.page-content{padding:12px 10px calc(68px + env(safe-area-inset-bottom,0px))!important}.ant-card{border-radius:12px!important}}@media (width>=769px){.desktop-header .ant-menu{scrollbar-width:none;-ms-overflow-style:none;overflow:auto hidden}.desktop-header .ant-menu::-webkit-scrollbar{display:none}}.login-page{background:linear-gradient(135deg,#f8fafc 0%,#eef2ff 50%,#f0fdf4 100%);justify-content:center;align-items:center;min-height:100dvh;padding:20px;display:flex}.login-container{width:100%;max-width:420px}.login-card{padding:32px;box-shadow:var(--c-shadow-xl)!important;border-radius:24px!important}.login-header{text-align:center;margin-bottom:28px}.login-title{background:linear-gradient(135deg, var(--c-primary) 0%, var(--c-primary-dark) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0 0 8px;font-size:28px;font-weight:700}.login-subtitle{color:var(--c-text-soft);margin:0;font-size:14px}.login-tabs{margin-bottom:24px}.login-tabs .ant-tabs-tab{font-size:14px;font-weight:600}.login-form{margin-top:8px}.login-footer{text-align:center;border-top:1px solid var(--c-border);margin-top:24px;padding-top:20px}.login-footer p{color:var(--c-text-soft);margin:0;font-size:13px}.text-gradient{background:linear-gradient(135deg, var(--c-primary) 0%, var(--c-primary-dark) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.glass{-webkit-backdrop-filter:blur(12px);background:#ffffffd9}.shadow-hover{transition:all .3s}.shadow-hover:hover{transform:translateY(-2px);box-shadow:var(--c-shadow-lg)!important}.member-switcher{width:180px;min-width:0;max-width:46vw}.member-switcher .ant-select-selection-item{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mobile-brand{flex-shrink:0}.preference-row{border-bottom:1px solid var(--c-border);justify-content:space-between;align-items:center;gap:16px;padding:16px 0;display:flex}@media (width<=767px){.member-switcher{width:164px}}.diary-timeline{margin:24px 0;padding:0;list-style:none}.diary-timeline-item{grid-template-columns:52px 20px minmax(0,1fr);align-items:start;gap:12px;padding-bottom:24px;display:grid;position:relative}.diary-timeline-date{color:var(--c-text-soft,#747d81);flex-direction:column;align-items:flex-end;gap:2px;padding-top:18px;font-size:12px;display:flex}.diary-timeline-date span{font-size:11px}.diary-timeline-track{justify-content:center;align-self:stretch;padding-top:22px;display:flex;position:relative}.diary-timeline-track:after{content:"";background:var(--c-border,#e8e5df);width:2px;position:absolute;top:30px;bottom:-24px}.diary-timeline-item:last-child .diary-timeline-track:after{display:none}.diary-timeline-track>span{z-index:1;border-radius:50%;flex-shrink:0;width:10px;height:10px}.diary-timeline-card{text-align:left;background:var(--c-surface,var(--c-bg-card,#fff));width:100%;min-width:0;color:var(--c-text,#2d3436);border:1px solid var(--c-border,#e8e5df);font:inherit;cursor:pointer;border-radius:12px;flex-direction:column;gap:8px;padding:16px;display:flex}.diary-timeline-card:hover{border-color:var(--c-primary,#6b9080)}.diary-timeline-card:focus-visible{outline:2px solid var(--c-primary,#6b9080);outline-offset:3px}.diary-timeline-author{color:var(--c-text-soft,#747d81);font-size:12px}.diary-timeline-card strong{overflow-wrap:anywhere;font-size:15px}.diary-timeline-preview{color:var(--c-text-soft,#747d81);-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:13px;line-height:1.6;display:-webkit-box;overflow:hidden}@media (width<=480px){.diary-timeline-item{grid-template-columns:42px 14px minmax(0,1fr);gap:8px}.diary-timeline-card{padding:12px}}.diary-tag-filters{justify-content:center;align-items:center;padding:8px 0}.diary-tag-filters .ant-tag{text-align:center;flex-shrink:0;justify-content:center;align-items:center;min-height:34px;margin:0;line-height:20px;display:inline-flex}.diary-tag-filters{scrollbar-width:none;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:10px;margin-bottom:20px;padding:4px 2px 10px;scroll-padding-inline:2px;display:flex;overflow-x:auto}.diary-tag-filters .ant-tag{flex:none;justify-content:center;align-items:center;min-width:50px;min-height:36px;margin:0;display:inline-flex}.settings-groups .ant-collapse-content-box{padding:12px!important}.settings-groups .ant-card-body{padding:16px!important}.record-workspace{max-width:720px;margin:0 auto}.record-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.record-heading h1{margin:0 0 4px;font-size:22px;line-height:1.3}.record-heading p,.record-hint{color:var(--c-text-soft,#747d81);margin:8px 0;font-size:13px;line-height:1.6}.record-heading .ant-picker{max-width:156px}.record-savebar{z-index:50;background:var(--c-bg,#f8fafc);color:var(--c-text-soft);justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;padding:10px 0;font-size:12px;display:flex;position:sticky;top:52px}.record-tabs .ant-tabs-nav{margin-bottom:14px}.record-tabs .ant-tabs-tab{padding:10px 0}.record-tabs .ant-card-body{padding:16px!important}.record-tabs .ant-input-number{width:100%}.record-tabs .ant-card-head{padding:12px 16px!important}.record-quick-actions{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.record-quick-actions .ant-btn{padding-inline:12px!important}.record-section-toolbar{color:var(--c-text-soft);justify-content:space-between;align-items:center;gap:10px;margin:16px 0;font-size:13px;display:flex}.record-entry-list{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.record-entry{border-bottom:1px solid var(--c-border);align-items:center;gap:4px;padding:10px 0;display:flex}.record-entry .ant-btn{flex-shrink:0;padding:4px 8px!important}.record-entry-main{text-align:left;cursor:pointer;min-width:0;color:var(--c-text);font:inherit;background:0 0;border:none;flex-direction:column;flex:1;gap:5px;padding:0;display:flex}.record-entry-main strong{overflow-wrap:anywhere;font-size:14px}.record-entry-main span{color:var(--c-text-soft);font-size:12px}.record-editor .ant-modal-body{max-height:65dvh;overflow-y:auto}.record-editor .ant-form-item{margin-bottom:14px}.record-editor .ant-input-number,.record-editor .ant-select{width:100%}.record-editor .ant-segmented,.record-editor .ant-input-affix-wrapper{margin-bottom:12px}.food-choice-list{flex-direction:column;gap:6px;margin:12px 0;display:flex}.food-choice{border:1px solid var(--c-border);background:var(--c-bg-card,#fff);min-height:42px;color:var(--c-text);text-align:left;cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.food-choice span{color:var(--c-text-soft);text-align:right;font-size:12px}.food-choice.selected{border-color:var(--c-primary);background:var(--c-primary-light)}.record-entry-main:focus-visible,.food-choice:focus-visible{outline:2px solid var(--c-primary);outline-offset:3px}@media (width<=480px){.record-tabs .ant-tabs-tab+.ant-tabs-tab{margin-left:22px}.record-heading h1{font-size:20px}.record-editor .ant-modal-content{padding:16px}}.diary-tag-filters::-webkit-scrollbar{display:none}.ant-input-affix-wrapper>textarea.ant-input{box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;padding:0!important}.batch-picker .ant-tabs-tab+.ant-tabs-tab{margin-left:18px}.batch-picker .food-choice{justify-content:flex-start}.choice-marker{border:1px solid var(--c-border);width:24px;height:24px;color:var(--c-primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.food-choice.selected .choice-marker{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}.choice-copy{text-align:left;flex-direction:column;gap:4px;display:flex}.choice-copy small{color:var(--c-text-soft);font-size:12px}.batch-total{background:var(--c-bg-card,#fff);justify-content:space-between;align-items:center;gap:8px;padding:12px 0;font-size:13px;display:flex;position:sticky;bottom:0}.batch-total .ant-btn{padding-inline:8px!important}.batch-selection-row{border-bottom:1px solid var(--c-border);padding:12px 0}.batch-selection-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.batch-selection-heading .ant-btn{padding:4px 8px!important}.batch-quantity{align-items:center;gap:12px;margin-top:8px;font-size:13px;display:flex}.batch-quantity>.ant-input-number{flex-shrink:0;width:104px}.batch-quantity>span:first-child{min-width:44px;color:var(--c-text-soft)}.routine-row{border-bottom:1px solid var(--c-border);padding:12px 0}.routine-save{flex-wrap:wrap;gap:8px;padding:16px 0;display:flex}.routine-save .ant-input{flex:1;min-width:140px}.custom-manager h3{margin:12px 0;font-size:15px}.catalog-manage-row{border-bottom:1px solid var(--c-border);align-items:center;gap:4px;min-height:44px;display:flex}.catalog-manage-row>span{overflow-wrap:anywhere;flex:1;min-width:0}.catalog-manage-row .ant-btn{padding:4px 8px!important}.temporary-entry{padding:16px 0}.temporary-entry summary{cursor:pointer;color:var(--c-primary);margin-bottom:12px;font-size:13px}.record-note-panel{padding:12px 0}.record-note-panel h2{margin:0 0 16px;font-size:16px}.batch-picker .food-choice{gap:12px;min-height:64px;padding:12px}.batch-picker .choice-copy{text-align:left;min-width:0;color:var(--c-text);flex:1;align-items:flex-start;font-size:16px}.batch-picker .choice-copy strong{text-align:left;color:var(--c-text);font-size:16px;font-weight:600;line-height:1.5}.batch-picker .choice-copy small{color:var(--c-text-soft);font-size:14px;line-height:1.4}.batch-picker .choice-marker{text-align:center;width:28px;height:28px;font-size:16px}.batch-picker .batch-selection-heading strong{font-size:16px}.batch-picker .batch-quantity{font-size:15px}.batch-picker .catalog-manage-row{min-height:48px;font-size:16px}@media (width<=640px){.ant-modal.batch-picker{width:100vw!important;max-width:100vw!important;margin:0!important;padding:0!important;top:0!important}.batch-picker .ant-modal-container{flex-direction:column;height:100dvh;max-height:100dvh;display:flex;border-radius:0!important;padding:0!important}.batch-picker .ant-modal-header{border-bottom:1px solid var(--c-border);flex-shrink:0;margin:0!important;padding:18px 60px 16px 16px!important}.batch-picker .ant-modal-title{font-size:19px;line-height:28px}.batch-picker .ant-modal-close{width:44px;height:44px;top:8px;right:8px}.batch-picker .ant-modal-body{overscroll-behavior:contain;flex:1;min-height:0;padding:0 16px;overflow-y:auto;max-height:none!important}.batch-picker .ant-modal-footer{border-top:1px solid var(--c-border);background:var(--c-bg-card,#fff);flex-shrink:0;align-items:center;gap:12px;display:flex;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))!important;margin:0!important}.batch-picker .ant-modal-footer>.ant-btn{flex:1;min-width:0;min-height:48px;font-size:16px;height:48px!important;margin:0!important}.batch-picker .ant-tabs-nav{z-index:3;background:var(--c-bg-card,#fff);margin-bottom:14px;padding-top:4px;position:sticky;top:0}.batch-picker .ant-tabs-tab{min-height:48px;padding:10px 0;font-size:15px}.batch-picker .ant-tabs-tab+.ant-tabs-tab{margin-left:16px}.batch-picker .ant-input,.batch-picker .ant-input-number-input,.batch-picker .ant-select{font-size:16px}.batch-picker .ant-input-affix-wrapper{min-height:46px}.batch-picker .ant-select,.batch-picker .ant-input-number{min-height:44px}.batch-picker .ant-input-number-input{min-height:42px}.batch-picker .ant-btn{min-height:44px}.batch-picker .ant-pagination-item,.batch-picker .ant-pagination-prev,.batch-picker .ant-pagination-next{min-width:40px;min-height:40px;line-height:40px}.batch-picker .batch-total{padding:10px 0;font-size:14px}.batch-picker .custom-manager .ant-form-item-label label{font-size:15px}.batch-picker .custom-manager h3{font-size:17px}}.family-summary{flex-wrap:wrap;gap:12px}.family-summary>div:first-child{flex:100%;min-width:0}.family-summary>div:first-child>div>div:first-child{flex-shrink:0}.family-summary h2{overflow-wrap:anywhere}.family-summary>.ant-btn{min-height:44px}.family-metadata{flex-wrap:wrap;gap:4px 12px!important}.family-metadata>div{white-space:nowrap}.family-invite{flex-wrap:wrap}.period-heading{flex-wrap:wrap;min-width:0}.period-title{white-space:nowrap;flex-shrink:0}.period-heading .ant-tag{white-space:normal;overflow-wrap:anywhere;max-width:100%;margin:0}@media (width<=640px){.period-page{padding:8px 0!important}.period-header{align-items:flex-start!important}.period-heading{flex:100%;gap:8px!important}.family-summary>.ant-btn{flex:1}}
