.calendar{background:#fff;border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow-sm);margin-bottom:16px}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.calendar-month{font-weight:600;font-size:15px;color:var(--gray-700)}.calendar-nav{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--gray-500);transition:all .2s}.calendar-nav:active{background:var(--gray-100)}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-day{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0;border-radius:var(--radius-md);transition:all .2s}.calendar-day:active{transform:scale(.95)}.calendar-day .day-name{font-size:11px;color:var(--gray-400);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.calendar-day .day-number{font-size:16px;font-weight:600;color:var(--gray-700);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%}.calendar-day.selected .day-number{background:var(--primary);color:#fff}.calendar-day.selected .day-name{color:var(--primary)}.calendar-day.today:not(.selected) .day-number{border:2px solid var(--primary-light);color:var(--primary)}.progress-ring-container{display:flex;flex-direction:column;align-items:center;padding:20px 0 8px}.progress-ring-wrapper{position:relative;width:140px;height:140px}.progress-ring{transform:rotate(-90deg)}.progress-ring-bg{fill:none;stroke:var(--gray-100)}.progress-ring-fill{fill:none;stroke-linecap:round;transition:stroke-dashoffset .8s ease-out,stroke .3s}.progress-ring-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;display:flex;flex-direction:column}.progress-amount{font-size:28px;font-weight:700;color:var(--gray-800);line-height:1}.progress-unit{font-size:12px;color:var(--gray-400);margin-top:2px}.progress-message{font-size:15px;color:var(--gray-600);margin-top:12px;font-weight:500}.entry-list{background:#fff;border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow-sm)}.entry-list-title{font-size:14px;font-weight:600;color:var(--gray-500);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px}.entry-item{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--gray-100)}.entry-item:last-child{border-bottom:none}.entry-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.entry-name{font-size:15px;font-weight:500;color:var(--gray-800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entry-details{font-size:12px;color:var(--gray-400)}.entry-right{display:flex;align-items:center;gap:12px}.entry-calcium{font-size:15px;font-weight:600;color:var(--primary)}.entry-delete{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--gray-400);transition:all .15s}.entry-delete:active{background:var(--danger-bg);color:var(--danger)}.entry-list-empty{text-align:center;padding:40px 16px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.empty-icon{font-size:40px;display:block;margin-bottom:12px}.entry-list-empty p:first-of-type{font-size:16px;font-weight:600;color:var(--gray-700)}.empty-hint{font-size:13px;color:var(--gray-400);margin-top:4px}.food-search-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;z-index:200;display:flex;align-items:flex-end;animation:fadeIn .2s ease-out}.food-search-panel{background:#fff;width:100%;max-height:90dvh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:20px 16px;padding-bottom:calc(env(safe-area-inset-bottom) + 16px);overflow-y:auto;animation:slideUp .3s ease-out;transition:max-height .2s ease-out,transform .2s ease-out;transform:translateY(0)}.food-search-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.food-search-header h3{font-size:18px;font-weight:700;color:var(--gray-800);flex:1;text-align:center}.back-btn,.close-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--gray-500);font-size:18px}.back-btn:active,.close-btn:active{background:var(--gray-100)}.search-input-wrapper{position:relative;margin-bottom:16px}.search-input-wrapper input{width:100%;padding:14px 14px 14px 42px;border:2px solid var(--gray-200);border-radius:var(--radius-md);font-size:16px;outline:none;transition:border-color .2s;background:var(--gray-50)}.search-input-wrapper input:focus{border-color:var(--primary);background:#fff}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--gray-400)}.favourites-section h4{font-size:14px;color:var(--gray-500);margin-bottom:8px;font-weight:600}.food-list{display:flex;flex-direction:column;gap:2px}.food-item{display:flex;align-items:center;justify-content:space-between;padding:12px;border-radius:var(--radius-sm);transition:background .15s;text-align:left;width:100%}.food-item:active{background:var(--gray-50)}.food-item-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.food-item-name{font-size:15px;font-weight:500;color:var(--gray-800);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.food-item-group{font-size:12px;color:var(--gray-400)}.food-item-right{display:flex;align-items:center;gap:8px}.food-item-calcium{text-align:right;display:flex;flex-direction:column;align-items:flex-end}.food-item-calcium span:first-child{font-size:14px;font-weight:600;color:var(--primary)}.per-100g{font-size:11px;color:var(--gray-400)}.fav-btn{font-size:20px;color:var(--gray-300);padding:4px}.fav-btn.is-fav{color:var(--danger)}.selected-food-card{background:var(--primary-bg);border-radius:var(--radius-md);padding:16px;margin-bottom:20px}.selected-food-info h4{font-size:17px;font-weight:600;color:var(--gray-800);margin-bottom:6px}.food-group-badge{display:inline-block;font-size:12px;color:var(--primary);background:#fff;padding:2px 10px;border-radius:100px;font-weight:500;margin-bottom:6px}.calcium-per-100{font-size:13px;color:var(--gray-500)}.grams-input-section{margin-bottom:16px}.grams-input-section label{display:block;font-size:14px;font-weight:600;color:var(--gray-700);margin-bottom:8px}.grams-input-wrapper{position:relative}.grams-input-wrapper input{width:100%;padding:14px 36px 14px 14px;border:2px solid var(--gray-200);border-radius:var(--radius-md);font-size:18px;font-weight:600;outline:none;transition:border-color .2s}.grams-input-wrapper input:focus{border-color:var(--primary)}.grams-suffix{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--gray-400);font-size:16px;font-weight:500}.quick-grams{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.quick-gram-btn{padding:6px 14px;border-radius:100px;font-size:13px;font-weight:500;color:var(--gray-600);background:var(--gray-100);transition:all .15s}.quick-gram-btn:active{background:var(--primary-bg);color:var(--primary)}.calcium-preview{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--success-bg);border-radius:var(--radius-md);margin-bottom:16px}.preview-label{font-size:14px;color:var(--gray-600);font-weight:500}.preview-amount{font-size:22px;font-weight:700;color:var(--success)}.add-entry-btn{width:100%;padding:16px;background:var(--primary);color:#fff;border-radius:var(--radius-md);font-size:16px;font-weight:600;transition:all .2s}.add-entry-btn:active{background:var(--primary-dark);transform:scale(.98)}.add-entry-btn:disabled{background:var(--gray-300);transform:none}.no-results{text-align:center;padding:32px 16px}.no-results p:first-child{font-size:15px;color:var(--gray-600)}.no-results-hint{font-size:13px;color:var(--gray-400);margin-top:4px}.daily-tracker{padding-top:16px;padding-bottom:24px}.tracker-header{margin-bottom:16px}.greeting{font-size:24px;font-weight:700;color:var(--gray-900)}.date-label{font-size:14px;color:var(--gray-400);margin-top:2px}.summary-card{background:#fff;border-radius:var(--radius-lg);padding:8px 16px 16px;box-shadow:var(--shadow-sm);margin-bottom:16px}.fab{position:fixed;bottom:calc(env(safe-area-inset-bottom) + 84px);right:20px;width:56px;height:56px;background:var(--primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg),0 4px 12px #6366f166;transition:all .2s;z-index:50}.fab:active{transform:scale(.92);background:var(--primary-dark)}.weekly-chart{padding-top:16px;padding-bottom:24px}.chart-header h1{font-size:24px;font-weight:700;color:var(--gray-900)}.chart-subtitle{font-size:14px;color:var(--gray-400);margin-top:2px}.stats-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.stat-card{background:#fff;border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;align-items:center;gap:4px}.stat-value{font-size:24px;font-weight:700;color:var(--primary)}.stat-label{font-size:12px;color:var(--gray-400);font-weight:500}.chart-card{background:#fff;border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow-sm);margin-bottom:16px}.chart-card h3{font-size:15px;font-weight:600;color:var(--gray-700);margin-bottom:16px}.chart-loading{height:260px;display:flex;align-items:center;justify-content:center;color:var(--gray-400)}.tips-card{background:#fff;border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow-sm)}.tips-card h3{font-size:15px;font-weight:600;color:var(--gray-700);margin-bottom:12px}.tips-card ul{list-style:none;display:flex;flex-direction:column;gap:10px}.tips-card li{font-size:14px;color:var(--gray-600);padding-left:20px;position:relative;line-height:1.5}.tips-card li:before{content:"•";color:var(--primary);position:absolute;left:4px;font-weight:700}.tips-card li strong{color:var(--gray-800)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:#fff;border-top:1px solid var(--gray-200);padding-bottom:env(safe-area-inset-bottom);z-index:100;box-shadow:0 -2px 10px #0000000d}.nav-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 0;color:var(--gray-400);transition:color .2s;font-size:11px;font-weight:500}.nav-tab.active{color:var(--primary)}.nav-tab svg{width:24px;height:24px}:root{--primary: #6366f1;--primary-light: #818cf8;--primary-dark: #4f46e5;--primary-bg: #eef2ff;--success: #22c55e;--success-bg: #f0fdf4;--warning: #f59e0b;--warning-bg: #fffbeb;--danger: #ef4444;--danger-bg: #fef2f2;--gray-50: #f8fafc;--gray-100: #f1f5f9;--gray-200: #e2e8f0;--gray-300: #cbd5e1;--gray-400: #94a3b8;--gray-500: #64748b;--gray-600: #475569;--gray-700: #334155;--gray-800: #1e293b;--gray-900: #0f172a;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body{font-family:var(--font-sans);background:var(--gray-50);color:var(--gray-800);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}body{padding-top:env(safe-area-inset-top);padding-bottom:calc(env(safe-area-inset-bottom) + 72px);min-height:100dvh}.app{max-width:480px;margin:0 auto;padding:0 16px}button{font-family:var(--font-sans);cursor:pointer;border:none;background:none;font-size:inherit}input,select{font-family:var(--font-sans);font-size:16px}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease-out}
