*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-deep: #15181c;--bg-base: #1a1d21;--bg-surface: #1f2229;--bg-elevated: #2a2e34;--bg-hover: #3d424a;--bg-active: #4a5157;--text-primary: #f0efeb;--text-secondary: #b4bcc4;--text-muted: #8b919a;--text-faint: #515761;--accent: #d4ccb4;--accent-hover: #ccc4b0;--accent-text: #1a1d21;--success: #b8c4b8;--success-text: #1a1d21;--warning: #d4ccb4;--danger: #cdacac;--danger-hover: #c4a0a0;--info: #b4c0c8;--border: #2a2e34;--border-focus: #d4ccb4;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(212, 204, 180, .08);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--leading-tight: 1.2;--leading-normal: 1.5;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .12s;--duration-normal: .2s;--duration-slow: .35s;--nav-height: 64px;--sidebar-width: 240px;--max-content: 640px;color-scheme:dark}[data-theme=lauds]{--bg-deep: #e8e5df;--bg-base: #f0efeb;--bg-surface: #f5f4f1;--bg-elevated: #e0dcd4;--bg-hover: #d5d1c9;--bg-active: #c8c4bc;--text-primary: #1a1d21;--text-secondary: #5a6b7a;--text-muted: #7a6d5a;--text-faint: #9a9791;--accent: #8b7e52;--accent-hover: #7a6e47;--accent-text: #f0efeb;--success: #5a6b5a;--success-text: #f0efeb;--warning: #8b7e52;--danger: #8b6666;--danger-hover: #7a5858;--info: #5a6b7a;--border: #e0dcd4;--border-focus: #8b7e52;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .1);--shadow-glow: 0 0 20px rgba(139, 126, 82, .06);color-scheme:light}[data-theme=vigil]{--bg-deep: #000000;--bg-base: #000000;--bg-surface: #0a0a0a;--bg-elevated: #141414;--bg-hover: #1e1e1e;--bg-active: #2a2a2a;--text-primary: #f0efeb;--text-secondary: #b4bcc4;--text-muted: #8b919a;--text-faint: #515761;--accent: #d4ccb4;--accent-hover: #ccc4b0;--accent-text: #000000;--success: #b8c4b8;--success-text: #000000;--warning: #d4ccb4;--danger: #cdacac;--danger-hover: #c4a0a0;--info: #b4c0c8;--border: #1a1a1a;--border-focus: #d4ccb4;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .6);--shadow-md: 0 4px 12px rgba(0, 0, 0, .7);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .8);--shadow-glow: 0 0 20px rgba(212, 204, 180, .06);color-scheme:dark}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--text-primary);background-color:var(--bg-base);min-height:100dvh;overflow-x:hidden}#app{display:flex;flex-direction:column;min-height:100dvh}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--bg-active)}:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}::selection{background:var(--accent);color:var(--accent-text)}.page{flex:1;padding:var(--sp-4);padding-bottom:calc(var(--nav-height) + var(--sp-4) + env(safe-area-inset-bottom));max-width:var(--max-content);margin:0 auto;width:100%;animation:pageIn var(--duration-normal) var(--ease-out)}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-header{margin-bottom:var(--sp-6)}.page-title{font-size:var(--text-2xl);font-weight:var(--weight-bold);letter-spacing:-.02em;color:var(--text-primary)}.page-subtitle{font-size:var(--text-sm);color:var(--text-secondary);margin-top:var(--sp-1)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--bg-deep);border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-around;z-index:100;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);color:var(--text-muted);text-decoration:none;font-size:var(--text-xs);font-weight:var(--weight-medium);transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out);cursor:pointer;border:none;background:none;-webkit-tap-highlight-color:transparent}.nav-item:hover{color:var(--text-secondary)}.nav-item.active{color:var(--accent)}.nav-item svg{width:24px;height:24px;stroke-width:1.5}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link:focus{position:fixed;top:var(--sp-2);left:var(--sp-2);z-index:9999;width:auto;height:auto;padding:var(--sp-3) var(--sp-4);margin:0;overflow:visible;clip:auto;background:var(--accent);color:var(--accent-text);border-radius:var(--radius-md);font-weight:var(--weight-semibold);font-size:var(--text-sm);box-shadow:var(--shadow-lg)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--sp-1)}.gap-2{gap:var(--sp-2)}.gap-3{gap:var(--sp-3)}.gap-4{gap:var(--sp-4)}.gap-6{gap:var(--sp-6)}.w-full{width:100%}.text-center{text-align:center}.text-right{text-align:right}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-accent{color:var(--accent)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.font-medium{font-weight:var(--weight-medium)}.font-semibold{font-weight:var(--weight-semibold)}.font-bold{font-weight:var(--weight-bold)}.font-mono{font-family:var(--font-mono)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.relative{position:relative}.overflow-hidden{overflow:hidden}@media(min-width:768px){#app{flex-direction:row}.bottom-nav{position:fixed;top:0;left:0;bottom:0;right:auto;width:var(--sidebar-width);height:100%;flex-direction:column;justify-content:flex-start;padding:var(--sp-6) var(--sp-4);padding-bottom:var(--sp-4);border-top:none;border-right:1px solid var(--border);gap:var(--sp-1)}.nav-item{flex-direction:row;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);justify-content:flex-start}.nav-brand{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-6);font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--accent);letter-spacing:-.02em}.page{margin-left:var(--sidebar-width);padding-bottom:var(--sp-8);max-width:calc(var(--max-content) + var(--sp-8) * 2)}}@media(max-width:767px){.nav-brand{display:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@keyframes checkmark{0%{stroke-dashoffset:24}to{stroke-dashoffset:0}}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.card:hover{border-color:var(--bg-hover)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-3)}.card-title{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--text-primary)}.card-body{color:var(--text-secondary);font-size:var(--text-sm)}.card-clickable{cursor:pointer;-webkit-tap-highlight-color:transparent}.card-clickable:hover{box-shadow:var(--shadow-glow);border-color:var(--accent)}.card-clickable:active{transform:scale(.98)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-5);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-semibold);line-height:1;text-decoration:none;border:1px solid transparent;cursor:pointer;transition:all var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.96)}.btn svg{width:18px;height:18px;flex-shrink:0}.btn-primary{background:var(--accent);color:var(--accent-text)}.btn-primary:hover{background:var(--accent-hover);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--bg-hover);color:var(--text-primary)}.btn-secondary:hover{background:var(--bg-active)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-danger{background:var(--danger);color:var(--accent-text)}.btn-danger:hover{background:var(--danger-hover)}.btn-icon{padding:var(--sp-2);border-radius:var(--radius-md);width:40px;height:40px}.btn-lg{padding:var(--sp-4) var(--sp-6);font-size:var(--text-base);border-radius:var(--radius-lg)}.btn-full{width:100%}.input-group{display:flex;flex-direction:column;gap:var(--sp-1)}.input-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary)}.input{padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out);width:100%}.input::placeholder{color:var(--text-faint)}.input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #d4ccb41f}.input-inline{background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);text-align:center;width:100%;min-width:0;font-size:var(--text-base);font-weight:var(--weight-semibold);font-family:var(--font-sans);color:var(--text-primary)}.input-inline:focus{outline:none;border-color:var(--border-focus)}.input-inline.locked{opacity:.5;pointer-events:none}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b919a' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:var(--sp-10)}textarea.input{min-height:80px;resize:vertical}.toggle{position:relative;width:48px;height:28px;border-radius:var(--radius-full);background:var(--bg-hover);border:none;cursor:pointer;transition:background var(--duration-fast) var(--ease-out);flex-shrink:0}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:var(--text-primary);transition:transform var(--duration-normal) var(--ease-spring)}.toggle.active{background:var(--accent)}.toggle.active:after{transform:translate(20px)}.badge{display:inline-flex;align-items:center;padding:2px var(--sp-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:.01em;white-space:nowrap}.badge-accent{background:#d4ccb426;color:var(--accent)}.badge-success{background:#b8c4b826;color:var(--success)}.badge-danger{background:#cdacac26;color:var(--danger)}.badge-muted{background:var(--bg-elevated);color:var(--text-muted)}.chip{display:inline-flex;align-items:center;padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);background:var(--bg-elevated);color:var(--text-secondary);border:1px solid var(--border);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);-webkit-user-select:none;user-select:none}.chip:hover{border-color:var(--bg-hover);background:var(--bg-hover)}.chip.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.tabs{display:flex;gap:var(--sp-1);background:var(--bg-surface);border-radius:var(--radius-md);padding:3px;border:1px solid var(--border)}.tab{flex:1;padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted);border:none;background:none;cursor:pointer;text-align:center;transition:all var(--duration-fast) var(--ease-out);font-family:var(--font-sans)}.tab:hover{color:var(--text-secondary)}.tab.active{background:var(--bg-hover);color:var(--text-primary)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:200;animation:fadeIn var(--duration-fast) var(--ease-out);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.modal-content{position:fixed;bottom:0;left:0;right:0;background:var(--bg-surface);border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl);padding:var(--sp-6);padding-bottom:calc(var(--sp-6) + env(safe-area-inset-bottom));z-index:201;max-height:85dvh;overflow-y:auto;animation:slideUp var(--duration-normal) var(--ease-out)}.modal-handle{width:40px;height:4px;border-radius:var(--radius-full);background:var(--bg-hover);margin:0 auto var(--sp-4)}.modal-title{font-size:var(--text-lg);font-weight:var(--weight-bold);margin-bottom:var(--sp-4)}.ingredient-search-modal{max-height:95dvh;display:flex;flex-direction:column}.ingredient-search-modal .search-input-wrapper{flex-shrink:0}.ingredient-search-results{flex:1;overflow-y:auto;min-height:0;margin-top:var(--sp-3)}@media(min-width:768px){.modal-content{bottom:auto;top:50%;left:50%;right:auto;transform:translate(-50%,-50%);max-width:480px;width:90%;border-radius:var(--radius-xl);animation:scaleIn var(--duration-normal) var(--ease-out)}.ingredient-search-modal{max-height:80dvh}}.toast-container{position:fixed;top:var(--sp-4);left:50%;transform:translate(-50%);z-index:300;display:flex;flex-direction:column;gap:var(--sp-2);pointer-events:none;width:calc(100% - var(--sp-8));max-width:400px}.toast{background:var(--bg-elevated);color:var(--text-primary);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);box-shadow:var(--shadow-lg);border:1px solid var(--border);animation:slideDown var(--duration-normal) var(--ease-out);pointer-events:auto;display:flex;align-items:center;gap:var(--sp-3)}.toast-success{border-left:3px solid var(--success)}.toast-danger{border-left:3px solid var(--danger)}.toast-info{border-left:3px solid var(--info)}.divider{height:1px;background:var(--border);margin:var(--sp-4) 0}.empty-state{text-align:center;padding:var(--sp-16) var(--sp-4);color:var(--text-muted)}.empty-state svg{width:64px;height:64px;margin-bottom:var(--sp-4);opacity:.4;stroke:var(--text-muted)}.empty-state-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-secondary);margin-bottom:var(--sp-2)}.empty-state-text{font-size:var(--text-sm);max-width:280px;margin:0 auto var(--sp-4)}.list-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent}.list-item:hover{background:var(--bg-hover)}.list-item:active{background:var(--bg-active)}.progress-bar{width:100%;height:6px;background:var(--bg-elevated);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:var(--accent);border-radius:var(--radius-full);transition:width var(--duration-slow) var(--ease-out)}.search-bar{position:relative}.search-bar svg{position:absolute;left:var(--sp-3);top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--text-muted);pointer-events:none}.search-bar .input{padding-left:var(--sp-10)}.fab{position:fixed;bottom:calc(var(--nav-height) + var(--sp-4) + env(safe-area-inset-bottom));right:var(--sp-4);width:56px;height:56px;border-radius:var(--radius-full);background:var(--accent);color:var(--accent-text);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);transition:transform var(--duration-fast) var(--ease-spring),box-shadow var(--duration-fast) var(--ease-out);z-index:50}.fab:hover{transform:scale(1.05);box-shadow:var(--shadow-lg),var(--shadow-glow)}.fab:active{transform:scale(.95)}.fab svg{width:24px;height:24px}@media(min-width:768px){.fab{bottom:var(--sp-6);right:var(--sp-6)}}.skeleton{background:var(--bg-elevated);border-radius:var(--radius-md);animation:pulse 1.5s ease-in-out infinite}.skeleton-text{height:14px;margin-bottom:var(--sp-2);width:80%}.skeleton-text.short{width:40%}.nutrition-ring{position:relative;width:120px;height:120px;margin:0 auto}.nutrition-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.nutrition-ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.nutrition-ring-value{font-size:var(--text-xl);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary);line-height:1}.nutrition-ring-label{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.macro-bars{display:flex;flex-direction:column;gap:var(--sp-2)}.macro-bar-row{display:flex;align-items:center;gap:var(--sp-3)}.macro-bar-label{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-secondary);min-width:48px}.macro-bar-track{flex:1;height:6px;background:var(--bg-elevated);border-radius:var(--radius-full);overflow:hidden}.macro-bar-fill{height:100%;border-radius:var(--radius-full);transition:width var(--duration-slow) var(--ease-out)}.macro-bar-fill.protein{background:var(--success)}.macro-bar-fill.carbs{background:var(--accent)}.macro-bar-fill.fat{background:var(--info)}.macro-bar-value{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-muted);min-width:64px;text-align:right}.meal-section{margin-bottom:var(--sp-4)}.meal-section-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) 0;margin-bottom:var(--sp-2);cursor:pointer;-webkit-tap-highlight-color:transparent}.meal-section-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:.02em;color:var(--accent)}.meal-section-kcal{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-muted)}.meal-section-items{display:flex;flex-direction:column;gap:var(--sp-1)}.food-entry{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-md);transition:background var(--duration-fast) var(--ease-out);cursor:pointer;-webkit-tap-highlight-color:transparent}.food-entry:hover{background:var(--bg-hover)}.food-entry:active{background:var(--bg-active)}.food-entry-info{flex:1;min-width:0}.food-entry-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.food-entry-portion{font-size:var(--text-xs);color:var(--text-muted)}.food-entry-kcal{font-size:var(--text-sm);font-family:var(--font-mono);font-weight:var(--weight-semibold);color:var(--text-secondary);white-space:nowrap}.food-result{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent;border-bottom:1px solid var(--border)}.food-result:hover{background:var(--bg-hover)}.food-result:last-child{border-bottom:none}.food-result-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.food-result-meta{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.food-result-macros{font-size:var(--text-xs);color:var(--text-faint);margin-top:2px;font-family:var(--font-mono)}.food-result-kcal{font-size:var(--text-base);font-family:var(--font-mono);font-weight:var(--weight-bold);color:var(--text-primary);white-space:nowrap}.portion-controls{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin:var(--sp-4) 0}.portion-controls .control-group:first-child{grid-column:1 / -1}.portion-btn{width:40px;height:40px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:var(--text-lg);font-weight:var(--weight-bold);transition:all var(--duration-fast) var(--ease-out)}.portion-btn:hover{background:var(--bg-hover);border-color:var(--accent)}.portion-btn:active{transform:scale(.9)}.portion-input{width:80px;text-align:center;font-size:var(--text-xl);font-weight:var(--weight-bold);font-family:var(--font-mono);background:transparent;border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-2);color:var(--text-primary)}.portion-input:focus{outline:none;border-color:var(--border-focus)}.portion-unit{font-size:var(--text-sm);color:var(--text-muted)}.portion-presets{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:var(--sp-3) 0}.portion-preset{padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);background:var(--bg-elevated);color:var(--text-secondary);border:1px solid var(--border);cursor:pointer;transition:all var(--duration-fast) var(--ease-out)}.portion-preset:hover{border-color:var(--accent);color:var(--text-primary)}.portion-preview{background:var(--bg-elevated);border-radius:var(--radius-md);padding:var(--sp-3);margin:var(--sp-3) 0;text-align:center}.portion-preview-kcal{font-size:var(--text-2xl);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary)}.portion-preview-macros{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-mono);margin-top:var(--sp-1)}.date-nav{display:flex;align-items:center;justify-content:center;gap:var(--sp-4);margin-bottom:var(--sp-4)}.date-nav-btn{width:36px;height:36px;border-radius:var(--radius-full);border:1px solid var(--border);background:transparent;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--duration-fast) var(--ease-out)}.date-nav-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.date-nav-label{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--text-primary);cursor:pointer;min-width:160px;text-align:center}.stat-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);text-align:center}.stat-value{font-size:var(--text-2xl);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary)}.stat-label{font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--sp-1)}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3);margin-bottom:var(--sp-4)}.settings-section{margin-bottom:var(--sp-6)}.settings-section-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:.02em;color:var(--accent);margin-bottom:var(--sp-3)}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}.settings-row:last-child{border-bottom:none}.settings-row-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.settings-row-hint{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.settings-row-value{font-size:var(--text-sm);color:var(--text-secondary);font-family:var(--font-mono)}.quick-add-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-2);margin-bottom:var(--sp-4)}.quick-add-item{display:flex;flex-direction:column;gap:2px;padding:var(--sp-3);border-radius:var(--radius-md);background:var(--bg-surface);border:1px solid var(--border);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent}.quick-add-item:hover{border-color:var(--accent);box-shadow:var(--shadow-glow)}.quick-add-item:active{transform:scale(.98)}.quick-add-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quick-add-meta{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-mono)}.source-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:var(--radius-full);font-size:10px;font-weight:var(--weight-semibold);letter-spacing:.02em}.source-badge.off{background:#b8c4b826;color:var(--success)}.source-badge.usda{background:#b4c0c826;color:var(--info)}.source-badge.custom{background:#d4ccb426;color:var(--accent)}.app{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.navbar{display:none}.page-container{flex:1;padding:var(--sp-4);padding-bottom:calc(var(--nav-height) + var(--sp-6) + env(safe-area-inset-bottom));max-width:var(--max-content);margin:0 auto;width:100%;box-sizing:border-box}@media(min-width:768px){.navbar{display:none}.page-container{margin-left:var(--sidebar-width);padding-bottom:var(--sp-8);max-width:calc(var(--max-content) + var(--sp-8) * 2)}}.diary-page{display:flex;flex-direction:column;gap:var(--sp-4)}.date-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) 0}.date-display{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1)}.date-label{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--text-primary)}.today-btn{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--accent);background:none;border:1px solid var(--accent);border-radius:var(--radius-full);padding:2px var(--sp-3);cursor:pointer;transition:all var(--duration-fast) var(--ease-out)}.today-btn:hover{background:var(--accent);color:var(--accent-text)}.nutrition-summary{display:flex;align-items:center;gap:var(--sp-6);padding:var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.nutrition-ring-container{position:relative;flex-shrink:0}.ring-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.ring-main{font-size:var(--text-xl);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary);line-height:1}.ring-sub{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.macro-bar{display:flex;flex-direction:column;gap:4px}.macro-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.macro-label{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-secondary)}.macro-value{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-muted)}.macro-track{height:6px;background:var(--bg-elevated);border-radius:var(--radius-full);overflow:hidden}.macro-fill{height:100%;border-radius:var(--radius-full);transition:width var(--duration-slow) var(--ease-out);min-width:2px}.macro-fill.protein{background:var(--success)}.macro-fill.carbs{background:var(--accent)}.macro-fill.fat{background:var(--info)}.remaining-calories{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2) 0}.remaining-label{font-size:var(--text-sm);color:var(--text-muted)}.remaining-value{font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-mono);color:var(--text-primary)}.meals-container{display:flex;flex-direction:column;gap:var(--sp-2)}.meal-section-content{display:flex;flex-direction:column;gap:var(--sp-1)}.meal-empty{padding:var(--sp-3);text-align:center;font-size:var(--text-sm);color:var(--text-muted)}.meal-add-btn{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2);border:1px dashed var(--border);border-radius:var(--radius-md);background:transparent;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);width:100%}.meal-add-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--bg-hover)}.meal-add-btn svg{width:16px;height:16px}.food-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-md);transition:background var(--duration-fast) var(--ease-out);cursor:pointer;-webkit-tap-highlight-color:transparent}.food-item:hover{background:var(--bg-hover)}.food-item:active{background:var(--bg-active)}.food-info{flex:1;min-width:0}.food-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.food-portion{font-size:var(--text-xs);color:var(--text-muted)}.food-calories{font-size:var(--text-sm);font-family:var(--font-mono);font-weight:var(--weight-semibold);color:var(--text-secondary);white-space:nowrap}.nutrition-preview{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2);padding:var(--sp-3);background:var(--bg-elevated);border-radius:var(--radius-md);margin:var(--sp-3) 0}.preview-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.preview-label{font-size:var(--text-xs);color:var(--text-muted)}.preview-value{font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-mono);color:var(--text-primary)}.error-message{display:flex;align-items:center;justify-content:center;padding:var(--sp-8);color:var(--text-muted);font-size:var(--text-sm)}.navbar-brand{display:none;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-6);font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--accent);letter-spacing:-.02em}@media(min-width:768px){.navbar-brand{display:flex}}.navbar-brand svg{width:24px;height:24px}.brand-text{font-size:var(--text-lg);font-weight:var(--weight-bold)}.search-page{display:flex;flex-direction:column;gap:var(--sp-4)}.search-header{display:flex;align-items:center;gap:var(--sp-3)}.search-input-wrapper{position:relative;flex:1}.search-icon{position:absolute;left:var(--sp-3);top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--text-muted);pointer-events:none}.search-input{width:100%;padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-10);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.search-input::placeholder{color:var(--text-faint)}.search-input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #d4ccb41f}.search-input-row{display:flex;gap:var(--sp-2);align-items:center}.search-input-row .search-input-wrapper{flex:1}.search-filter-btn{display:flex;align-items:center;justify-content:center;width:42px;height:42px;flex-shrink:0;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-surface);color:var(--text-muted);cursor:pointer;transition:all var(--duration-fast) var(--ease-out)}.search-filter-btn:hover{border-color:var(--accent);color:var(--text-primary)}.search-filter-btn.has-filter{border-color:var(--accent);color:var(--accent)}.search-source-filters{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-3);padding-top:var(--sp-2)}.search-source-filters.hidden{display:none}.source-filter-chip{padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-semibold);font-family:var(--font-sans);letter-spacing:.02em;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;transition:all var(--duration-fast) var(--ease-out)}.source-filter-chip.active{background:var(--bg-elevated);border-color:var(--accent);color:var(--text-primary)}.source-filter-chip:hover:not(.active){border-color:var(--text-muted);color:var(--text-secondary)}.meal-type-badge{padding:var(--sp-2) var(--sp-4);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);font-family:var(--font-sans);color:var(--text-secondary);white-space:nowrap;cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.meal-type-badge:hover{border-color:var(--accent);color:var(--text-primary)}.meal-type-badge:active{transform:scale(.95)}.search-top-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.search-mode-tabs{display:flex;gap:var(--sp-1);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;mask-image:linear-gradient(to right,black 85%,transparent 100%);-webkit-mask-image:linear-gradient(to right,black 85%,transparent 100%);padding-right:var(--sp-4)}.search-mode-tab{display:flex;align-items:center;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-muted);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--weight-medium);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:all var(--duration-fast) var(--ease-out)}.search-mode-tab.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.search-mode-tab:hover:not(.active){border-color:var(--accent);color:var(--text-primary)}.search-mode-content{min-height:200px}.scan-manual-input{display:flex;gap:var(--sp-2);align-items:center}.scan-manual-input .search-input{flex:1}.ai-text-input{display:flex;flex-direction:column;gap:var(--sp-3)}.ai-text-area{width:100%;padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-normal);resize:vertical;min-height:100px}.ai-text-area::placeholder{color:var(--text-faint)}.ai-text-area:focus{outline:none;border-color:var(--border-focus)}.ai-unified-input{display:flex;flex-direction:column;gap:var(--sp-3)}.ai-attached-photo{position:relative;width:80px;height:80px;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border)}.ai-attached-photo img{width:100%;height:100%;object-fit:cover}.ai-photo-remove{position:absolute;top:2px;right:2px;width:22px;height:22px;border-radius:var(--radius-full);background:var(--bg-base);border:1px solid var(--border);color:var(--text-muted);font-size:12px;display:flex;align-items:center;justify-content:center;cursor:pointer}.ai-photo-remove:hover{color:var(--danger)}.ai-input-actions{display:flex;gap:var(--sp-2)}.ai-input-actions .btn{display:flex;align-items:center;gap:var(--sp-1)}.ai-input-actions .btn-primary{margin-left:auto}.ai-input-actions .btn.recording{border-color:var(--danger);color:var(--danger)}.ai-recording-indicator{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-3)}.search-content{display:flex;flex-direction:column;gap:var(--sp-4)}.search-section{display:flex;flex-direction:column;gap:var(--sp-2)}.section-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:.02em;color:var(--accent);margin-bottom:var(--sp-2)}.food-results{display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.food-result-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);cursor:pointer;transition:background var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent}.food-result-item:last-child{border-bottom:none}.food-result-item:hover{background:var(--bg-hover)}.food-result-item:active{background:var(--bg-active)}.food-result-info{flex:1;min-width:0}.food-result-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);margin-bottom:var(--sp-1)}.food-result-brand{font-size:var(--text-xs);color:var(--text-muted);margin-bottom:var(--sp-1)}.food-result-meta{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.kcal-badge{font-size:var(--text-xs);color:var(--text-secondary);font-family:var(--font-mono)}.macro-summary{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-mono)}.food-result-action{display:flex;align-items:center;color:var(--text-muted);flex-shrink:0}.search-empty{text-align:center;padding:var(--sp-8) var(--sp-4);color:var(--text-muted)}.search-empty p{margin:var(--sp-2) 0}.search-suggestion{font-size:var(--text-sm);color:var(--text-faint)}.search-actions{display:flex;justify-content:center;padding:var(--sp-4) 0}.btn-outline{background:transparent;color:var(--accent);border:1px solid var(--accent)}.btn-outline:hover{background:#d4ccb41a;border-color:var(--accent-hover)}.scan-page{display:flex;flex-direction:column;gap:var(--sp-6)}.scan-header{display:flex;flex-direction:column;gap:var(--sp-2)}.scan-header h1{font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--text-primary)}.scan-note{font-size:var(--text-sm);color:var(--text-secondary)}.scan-container{display:flex;flex-direction:column;gap:var(--sp-4)}.barcode-input-group{position:relative;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.barcode-icon{flex-shrink:0;color:var(--text-secondary)}.barcode-input{flex:1;padding:0;background:transparent;border:none;color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-base)}.barcode-input::placeholder{color:var(--text-faint)}.barcode-input:focus{outline:none}.btn-primary.btn-large{width:100%;padding:var(--sp-4) var(--sp-6);font-size:var(--text-base)}.scan-result-container{display:flex;flex-direction:column;gap:var(--sp-3)}.scan-found{padding:var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.found-header{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);color:var(--success)}.found-header svg{width:24px;height:24px}.found-details{display:flex;flex-direction:column;gap:var(--sp-1)}.food-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.food-brand{font-size:var(--text-xs);color:var(--text-muted)}.food-nutrition{font-size:var(--text-xs);color:var(--text-secondary)}.scan-not-found,.scan-error{padding:var(--sp-4);text-align:center;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.scan-not-found svg,.scan-error svg{width:48px;height:48px;margin:0 auto var(--sp-2);opacity:.6;color:var(--text-muted)}.scan-not-found p,.scan-error p{margin:var(--sp-2) 0}.scan-alternatives{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-4)}.scan-alternatives p{font-size:var(--text-sm);color:var(--text-secondary)}.btn-small{padding:var(--sp-2) var(--sp-4);font-size:var(--text-xs)}.settings-page{display:flex;flex-direction:column;gap:var(--sp-6)}.settings-header{display:flex;flex-direction:column;gap:var(--sp-2)}.settings-header h1{font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--text-primary)}.settings-container{display:flex;flex-direction:column;gap:var(--sp-6)}.settings-section{display:flex;flex-direction:column;gap:var(--sp-3)}.settings-section h2{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-primary)}.settings-group{display:flex;flex-direction:column;gap:var(--sp-3)}.setting-input{display:flex;flex-direction:column;gap:var(--sp-1)}.setting-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary)}.setting-input input,.setting-input select{padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.setting-input input::placeholder,.setting-input select::placeholder{color:var(--text-faint)}.setting-input input:focus,.setting-input select:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #d4ccb41f}.setting-input select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b919a' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:var(--sp-10)}.theme-chips{display:flex;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:4px;gap:0}.theme-chip{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--sp-2) var(--sp-3);background:transparent;border:1px solid transparent;border-radius:calc(var(--radius-md) - 2px);color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);font-family:var(--font-sans)}.theme-chip:hover{color:var(--text-primary)}.theme-chip.active{background:var(--bg-elevated);border-color:var(--border);color:var(--text-primary);font-weight:var(--weight-semibold)}.webdav-status{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md)}.status-label{font-size:var(--text-sm);color:var(--text-secondary)}.status-badge{padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium)}.status-badge.connected{background:#b8c4b826;color:var(--success)}.status-badge.disconnected{background:#cdacac26;color:var(--danger)}.webdav-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.btn.btn-small{padding:var(--sp-2) var(--sp-4);font-size:var(--text-xs)}.about-content{display:flex;flex-direction:column;gap:var(--sp-2)}.about-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md)}.about-label{font-size:var(--text-sm);color:var(--text-secondary)}.about-value{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);font-family:var(--font-mono)}.about-links{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-2)}.about-link{padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border:1px solid var(--accent);border-radius:var(--radius-md);color:var(--accent);text-decoration:none;font-size:var(--text-sm);text-align:center;font-weight:var(--weight-medium);transition:all var(--duration-fast) var(--ease-out)}.about-link:hover{background:#d4ccb41a}.about-attribution{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--border)}.about-attribution p{font-size:var(--text-xs);color:var(--text-muted);margin:0 0 var(--sp-2) 0;line-height:1.5}.about-attribution p:last-child{margin-bottom:0}.about-attribution a{color:var(--accent);text-decoration:none}.about-attribution a:hover{text-decoration:underline}.portion-editor{max-width:480px;width:100%;overflow:visible}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--sp-4)}.modal-header h2{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--text-primary);margin-bottom:var(--sp-1)}.modal-subtitle{font-size:var(--text-sm);color:var(--text-secondary)}.modal-close{background:none;border:none;color:var(--text-muted);font-size:var(--text-lg);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color var(--duration-fast) var(--ease-out)}.modal-close:hover{color:var(--text-primary)}.control-group{display:flex;flex-direction:column;gap:var(--sp-2)}.control-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary)}.quantity-input-group{display:flex;align-items:center;gap:var(--sp-2)}.qty-btn{width:40px;height:40px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:var(--text-lg);font-weight:var(--weight-bold);transition:all var(--duration-fast) var(--ease-out)}.qty-btn:hover{background:var(--bg-hover);border-color:var(--accent)}.qty-btn:active{transform:scale(.9)}.qty-input{flex:1;min-width:0;text-align:center;padding:var(--sp-2) var(--sp-3);font-size:var(--text-base);font-weight:var(--weight-semibold);font-family:var(--font-mono);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--duration-fast) var(--ease-out)}.qty-input:focus{outline:none;border-color:var(--border-focus)}.unit-select,.meal-type-select,.notes-input{padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.unit-select::placeholder,.meal-type-select::placeholder,.notes-input::placeholder{color:var(--text-faint)}.unit-select:focus,.meal-type-select:focus,.notes-input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #d4ccb41f}.unit-select,.meal-type-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b919a' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:var(--sp-10)}.modal-actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-4)}.modal-actions .btn{flex:1}.custom-food-form{max-width:480px;width:100%}.form-group{display:flex;flex-direction:column;gap:var(--sp-2)}.form-group label{display:flex;flex-direction:column;gap:var(--sp-1)}.form-input{width:100%;padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.form-input::placeholder{color:var(--text-faint)}.form-input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px #d4ccb41f}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.form-row .form-input{min-width:0}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--accent-text);border-top-color:transparent;border-radius:50%;animation:spin var(--duration-normal) linear infinite}.insights-page{display:flex;flex-direction:column;gap:var(--sp-4)}.insights-header{display:flex;align-items:center;gap:var(--sp-2)}.insights-header h1{font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--text-primary)}.period-tabs,.tab-selector{display:flex;gap:var(--sp-1);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:3px}.period-tab,.tab-btn{flex:1;padding:var(--sp-2) var(--sp-4);background:transparent;border:none;border-radius:var(--radius-md);color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);font-family:var(--font-sans);white-space:nowrap}.period-tab:hover,.tab-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.period-tab.active,.tab-btn.active{background:var(--accent);color:var(--accent-text);font-weight:var(--weight-semibold);box-shadow:var(--shadow-sm)}.insights-page,.insights-content,.insights-section{display:flex;flex-direction:column;gap:var(--sp-4)}.section-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:.02em;color:var(--accent)}.section-subtitle{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-primary);margin-bottom:var(--sp-2)}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.stat-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);text-align:center;display:flex;flex-direction:column;gap:var(--sp-1)}.stat-card .stat-label{font-size:var(--text-xs);color:var(--text-muted);font-weight:var(--weight-medium)}.stat-card .stat-value{font-size:var(--text-2xl);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary);line-height:1}.stat-card .stat-unit{font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-mono)}.stat-card-calories{border-left:3px solid var(--accent)}.stat-card-protein{border-left:3px solid var(--success)}.stat-card-carbs{border-left:3px solid var(--info)}.stat-card-fat{border-left:3px solid var(--warning)}.calorie-progress{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2)}.progress-header{display:flex;justify-content:space-between;align-items:center}.progress-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.progress-remaining{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-muted)}.calorie-progress .progress-bar{height:8px;background:var(--bg-elevated);border-radius:var(--radius-full);overflow:hidden}.calorie-progress .progress-fill{height:100%;background:var(--accent);border-radius:var(--radius-full);transition:width var(--duration-slow) var(--ease-out);min-width:2px}.progress-text{display:flex;justify-content:space-between;font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-secondary)}.progress-text .text-muted{color:var(--text-muted)}.week-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-3)}.week-stat{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1)}.week-stat-label{font-size:var(--text-xs);color:var(--text-muted);font-weight:var(--weight-medium)}.week-stat-value{font-size:var(--text-lg);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary)}.week-chart{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4)}.chart-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-primary);margin-bottom:var(--sp-4)}.bar-chart{display:flex;align-items:flex-end;gap:var(--sp-2);height:160px;padding-bottom:var(--sp-6);position:relative}.bar-column{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--sp-1);height:100%;justify-content:flex-end;position:relative}.bar-column .bar{width:100%;max-width:40px;background:var(--bg-elevated);border-radius:var(--radius-md) var(--radius-md) 0 0;min-height:2px;transition:height var(--duration-slow) var(--ease-out)}.bar-column.today .bar{background:var(--accent)}.bar-column .bar-label{font-size:var(--text-xs);color:var(--text-muted);font-weight:var(--weight-medium);position:absolute;bottom:-20px}.bar-column .bar-value{font-size:10px;font-family:var(--font-mono);color:var(--text-muted);position:absolute;top:-16px}.bar-column.today .bar-label{color:var(--accent);font-weight:var(--weight-semibold)}.bar-column.today .bar-value{color:var(--accent)}.frequent-foods{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4)}.frequent-list{display:flex;flex-direction:column}.frequent-list .text-muted{font-size:var(--text-sm);color:var(--text-muted);padding:var(--sp-2) 0}.frequent-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) 0;border-bottom:1px solid var(--border)}.frequent-item:last-child{border-bottom:none}.frequent-name{font-size:var(--text-sm);color:var(--text-primary)}.frequent-count{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-muted);font-weight:var(--weight-semibold)}.month-stats{display:flex;flex-direction:column;gap:var(--sp-3)}.month-stat{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);display:flex;align-items:center;gap:var(--sp-4)}.month-stat .stat-icon{font-size:var(--text-xl);flex-shrink:0}.month-stat .stat-info{display:flex;flex-direction:column;gap:2px}.month-stat .stat-label{font-size:var(--text-xs);color:var(--text-muted)}.month-stat .stat-value{font-size:var(--text-lg);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary)}.month-heatmap{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4)}.heatmap{display:grid;grid-template-columns:repeat(10,1fr);gap:4px}.heatmap-day{aspect-ratio:1;border-radius:var(--radius-sm, 4px);background:var(--bg-elevated);transition:background var(--duration-fast) var(--ease-out)}.heatmap-day.active{background:var(--accent)}.food-breakdown{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4)}.breakdown-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-primary);margin-bottom:var(--sp-3)}.breakdown-list{display:flex;flex-direction:column}.breakdown-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) 0;border-bottom:1px solid var(--border)}.breakdown-item:last-child{border-bottom:none}.breakdown-kcal{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-muted)}.measurement-list{display:flex;flex-direction:column}.measurement-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) 0;border-bottom:1px solid var(--border)}.measurement-item:last-child{border-bottom:none}.measurement-date{font-size:var(--text-sm);color:var(--text-muted)}.measurement-weight{font-size:var(--text-sm);font-weight:var(--weight-semibold);font-family:var(--font-mono);color:var(--text-primary)}.daily-notes{margin-top:var(--sp-4);padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md)}.notes-label{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);margin-bottom:var(--sp-2)}.daily-note-input{width:100%;background:var(--bg-base);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-normal);resize:vertical;min-height:40px;transition:border-color var(--duration-fast) var(--ease-out)}.daily-note-input::placeholder{color:var(--text-faint)}.daily-note-input:focus{outline:none;border-color:var(--border-focus)}.recent-carousel{margin:var(--sp-3) 0}.carousel-title{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);margin-bottom:var(--sp-2)}.carousel-scroll{display:flex;gap:var(--sp-2);overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:var(--sp-1)}.carousel-scroll::-webkit-scrollbar{display:none}.carousel-chip{flex-shrink:0;scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:var(--sp-2) var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out);font-family:var(--font-sans);min-width:120px;max-width:160px}.carousel-chip:hover{border-color:var(--accent);background:var(--bg-elevated)}.carousel-chip:active{transform:scale(.97)}.chip-name{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.chip-kcal{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-muted)}.micro-details{margin:var(--sp-2) 0;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.micro-summary{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none;transition:background var(--duration-fast) var(--ease-out)}.micro-summary::-webkit-details-marker{display:none}.micro-summary:hover{background:var(--bg-hover)}.micro-chevron{transition:transform var(--duration-normal) var(--ease-out)}.micro-details[open] .micro-chevron{transform:rotate(180deg)}.micro-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-3)}.micro-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-1) var(--sp-2);background:var(--bg-base);border-radius:var(--radius-sm)}.micro-label{font-size:var(--text-xs);color:var(--text-muted)}.micro-value{font-size:var(--text-xs);font-family:var(--font-mono);font-weight:var(--weight-medium);color:var(--text-primary)}.scanner-camera-container{position:relative;width:100%;max-width:400px;margin:0 auto;border-radius:var(--radius-lg);overflow:hidden;background:#000;aspect-ratio:4/3}.scanner-camera-container video,.scanner-camera-container canvas{width:100%;height:100%;object-fit:cover}.scanner-reticle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:70%;height:40%;border:2px solid var(--accent);border-radius:var(--radius-sm);opacity:.8;pointer-events:none}.scanner-reticle:after{content:"";position:absolute;top:50%;left:0;right:0;height:2px;background:var(--accent);animation:scanLine 2s ease-in-out infinite}@keyframes scanLine{0%,to{transform:translateY(-20px);opacity:.5}50%{transform:translateY(20px);opacity:1}}.scanner-controls{display:flex;gap:var(--sp-3);justify-content:center;margin-top:var(--sp-3)}.scanner-or-divider{display:flex;align-items:center;gap:var(--sp-3);margin:var(--sp-4) 0;color:var(--text-faint);font-size:var(--text-sm)}.scanner-or-divider:before,.scanner-or-divider:after{content:"";flex:1;height:1px;background:var(--border)}.diary-actions{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap}.diary-actions .btn-ghost{font-size:var(--text-xs);padding:var(--sp-1) var(--sp-2);gap:var(--sp-1);color:var(--text-muted)}.diary-actions .btn-ghost:hover{color:var(--text-primary)}.template-list{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-3) 0}.template-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out)}.template-item:hover{border-color:var(--accent)}.template-name{font-weight:var(--weight-medium);color:var(--text-primary)}.meal-picker{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);padding:var(--sp-3) 0}.meal-picker-btn{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-4) var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);transition:all var(--duration-fast) var(--ease-out)}.meal-picker-btn:hover{border-color:var(--accent);background:var(--bg-elevated)}.meal-picker-btn:active{transform:scale(.96)}.meal-picker-icon{font-size:var(--text-2xl)}.template-meta{font-size:var(--text-xs);color:var(--text-muted)}.weight-page{padding:var(--sp-4);padding-bottom:calc(var(--nav-height) + var(--sp-8) + env(safe-area-inset-bottom));max-width:var(--max-content);margin:0 auto}.weight-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-4)}.weight-title{font-size:var(--text-2xl);font-weight:var(--weight-bold)}.weight-section-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--sp-3)}.weight-quick-form{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4);margin-bottom:var(--sp-4)}.weight-form-row{display:flex;gap:var(--sp-3);margin-bottom:var(--sp-3);align-items:flex-end}.weight-form-row:last-child{margin-bottom:0}.weight-form-group{display:flex;flex-direction:column;gap:var(--sp-1);flex:1}.weight-form-group--wide{flex:2}.weight-form-group--action{flex:0 0 auto}.weight-form-label{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-secondary)}.weight-input{width:100%;padding:var(--sp-2) var(--sp-3);background:var(--bg-base);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-sm)}.weight-input:focus{outline:none;border-color:var(--border-focus)}.weight-log-btn{white-space:nowrap}.weight-stats{margin-bottom:var(--sp-4)}.weight-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--sp-2)}.weight-stat-card{padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center}.weight-stat-label{font-size:var(--text-xs);color:var(--text-muted);display:block;margin-bottom:var(--sp-1)}.weight-stat-value{font-size:var(--text-lg);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary)}.weight-stat-value.weight-loss{color:var(--success)}.weight-stat-value.weight-gain{color:var(--danger)}.weight-chart-section{margin-bottom:var(--sp-4)}.weight-chart-container{display:flex;gap:var(--sp-2);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4)}.weight-chart-y-axis{display:flex;flex-direction:column;justify-content:space-between;padding:var(--sp-1) 0;min-width:40px}.weight-chart-y-label{font-size:9px;font-family:var(--font-mono);color:var(--text-faint);text-align:right}.weight-chart{flex:1;position:relative;min-height:140px}.weight-chart-bars{display:flex;align-items:flex-end;gap:2px;height:100%;position:relative;z-index:1}.weight-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;height:140px;justify-content:flex-end;min-width:0}.weight-bar{width:100%;max-width:20px;background:var(--accent);border-radius:var(--radius-sm) var(--radius-sm) 0 0;opacity:.6;min-height:3px;transition:height var(--duration-normal) var(--ease-out)}.weight-bar--min{color:var(--success)}.weight-bar--min.weight-bar{background:var(--success);opacity:.9}.weight-bar--max{color:var(--danger)}.weight-bar--max.weight-bar{background:var(--danger);opacity:.9}.weight-bar-value{font-size:8px;font-family:var(--font-mono);color:var(--text-faint);margin-bottom:2px;white-space:nowrap}.weight-bar-date{font-size:7px;color:var(--text-faint);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.weight-export{margin-bottom:var(--sp-4)}.weight-history{margin-top:var(--sp-2)}.weight-empty{color:var(--text-muted);font-size:var(--text-sm)}.weight-history-list{display:flex;flex-direction:column}.weight-history-row{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-3);border-bottom:1px solid var(--border)}.weight-history-row:last-child{border-bottom:none}.weight-history-info{display:flex;align-items:center;gap:var(--sp-3)}.weight-history-date{font-size:var(--text-sm);color:var(--text-muted);min-width:90px}.weight-history-value{font-family:var(--font-mono);font-weight:var(--weight-semibold);color:var(--text-primary)}.weight-history-bf{font-size:var(--text-xs);color:var(--text-muted)}.recipes-page{padding:var(--sp-4);padding-bottom:calc(var(--nav-height) + var(--sp-8) + env(safe-area-inset-bottom));overflow-x:hidden;max-width:var(--max-content);margin:0 auto}.recipe-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-2);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out)}.recipe-card:hover{border-color:var(--accent)}.recipe-card-name{font-weight:var(--weight-semibold);color:var(--text-primary);margin-bottom:var(--sp-1)}.recipe-card-meta{font-size:var(--text-xs);color:var(--text-muted);display:flex;gap:var(--sp-3)}.recipe-detail{max-width:var(--max-content)}.ingredient-list{margin:var(--sp-3) 0}.ingredient-item{display:flex;justify-content:space-between;align-items:center;padding:var(--sp-2) var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:var(--sp-1)}.ingredient-info{flex:1}.ingredient-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.ingredient-qty{font-size:var(--text-xs);color:var(--text-muted)}.ingredient-kcal{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-secondary);margin:0 var(--sp-2)}.ingredient-remove{background:none;border:none;color:var(--text-faint);cursor:pointer;padding:var(--sp-1);font-size:var(--text-lg)}.ingredient-remove:hover{color:var(--danger)}.recipe-nutrition-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:var(--sp-2);padding:var(--sp-3);background:var(--bg-elevated);border-radius:var(--radius-md);margin:var(--sp-3) 0}.recipe-nutrition-item{text-align:center}.recipe-nutrition-label{font-size:var(--text-xs);color:var(--text-muted);display:block}.recipe-nutrition-value{font-size:var(--text-sm);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary)}.recipe-detail .form-group,.recipe-detail .form-row{margin-bottom:var(--sp-4)}.recipe-detail .form-row .form-group{margin-bottom:0}.recipe-section{margin-bottom:var(--sp-5)}.empty-hint{color:var(--text-muted);font-size:var(--text-sm);margin-bottom:var(--sp-3)}.nutrition-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:var(--sp-2);padding:var(--sp-3);background:var(--bg-elevated);border-radius:var(--radius-md)}.nutrition-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.nutrition-stat-value{font-size:var(--text-sm);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary)}.nutrition-stat-label{font-size:var(--text-xs);color:var(--text-muted)}.recipe-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-5)}.alert{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);margin:var(--sp-3) 0;font-size:var(--text-sm)}.alert-warning{background:#d4ccb41a;border:1px solid var(--warning);color:var(--warning)}.setting-hint{display:block;font-size:var(--text-xs);font-weight:var(--weight-normal);color:var(--text-faint);margin-top:2px}.ai-page{padding:var(--sp-4);padding-bottom:calc(var(--nav-height) + var(--sp-8) + env(safe-area-inset-bottom));max-width:var(--max-content);margin:0 auto}.ai-header{margin-bottom:var(--sp-4)}.ai-header h1{font-size:var(--text-2xl);font-weight:var(--weight-bold)}.ai-subtitle{color:var(--text-muted);font-size:var(--text-sm)}.ai-setup-prompt{text-align:center;padding:var(--sp-8) var(--sp-4)}.ai-setup-icon{color:var(--text-faint);margin-bottom:var(--sp-4)}.ai-setup-prompt h2{font-size:var(--text-xl);margin-bottom:var(--sp-3)}.ai-setup-prompt p{color:var(--text-secondary);font-size:var(--text-sm);margin-bottom:var(--sp-3);max-width:400px;margin-inline:auto}.ai-cost-note{font-family:var(--font-mono);font-size:var(--text-xs)!important;color:var(--text-faint)!important}.ai-skip-note{margin-top:var(--sp-4)!important;font-size:var(--text-xs)!important;color:var(--text-faint)!important}.ai-skip-note a{color:var(--accent)}.ai-tabs{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-4)}.ai-tab-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-muted);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:all var(--duration-fast) var(--ease-out)}.ai-tab-btn.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.ai-tab-btn:hover:not(.active){border-color:var(--accent);color:var(--text-primary)}.ai-photo-area{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-8) var(--sp-4);background:var(--bg-surface);border:2px dashed var(--border);border-radius:var(--radius-lg);color:var(--text-faint);text-align:center;margin-bottom:var(--sp-3)}.ai-photo-area p{margin-top:var(--sp-2);font-size:var(--text-sm)}.ai-photo-buttons{display:flex;gap:var(--sp-3)}.ai-photo-buttons .btn{flex:1}.ai-voice-area{display:flex;flex-direction:column;align-items:center;padding:var(--sp-6) var(--sp-4);text-align:center}.ai-voice-btn{width:80px;height:80px;border-radius:50%;background:var(--bg-surface);border:3px solid var(--border);color:var(--accent);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--duration-normal) var(--ease-out);margin-bottom:var(--sp-3)}.ai-voice-btn:hover{border-color:var(--accent);box-shadow:var(--shadow-glow)}.ai-voice-btn.recording{background:var(--danger);border-color:var(--danger);color:var(--accent-text);animation:pulse 1.5s ease-in-out infinite}.ai-voice-waveform{height:40px;width:100%;max-width:200px;margin-bottom:var(--sp-2)}.waveform-bars{display:flex;align-items:center;justify-content:center;gap:3px;height:100%}.waveform-bar{width:4px;height:20%;background:var(--accent);border-radius:2px;transition:height .1s ease-out}.ai-voice-hint{font-size:var(--text-sm);color:var(--text-secondary)}.ai-voice-example{font-size:var(--text-xs);color:var(--text-faint);font-style:italic;margin-top:var(--sp-2)}.ai-transcription{padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);margin-top:var(--sp-3);font-size:var(--text-sm);color:var(--text-secondary)}.ai-processing{text-align:center;padding:var(--sp-8) var(--sp-4)}.ai-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto var(--sp-3)}.ai-processing p{font-size:var(--text-sm);color:var(--text-secondary)}.ai-results{animation:slideUp var(--duration-normal) var(--ease-out)}.ai-results-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--sp-1)}.ai-results-time{font-size:var(--text-xs);color:var(--text-faint);margin-bottom:var(--sp-3)}.ai-food-list{display:flex;flex-direction:column;gap:var(--sp-2)}.ai-food-item{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.ai-food-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);cursor:pointer}.ai-food-check{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0}.ai-food-info{flex:1;min-width:0}.ai-food-name{font-weight:var(--weight-medium);color:var(--text-primary);font-size:var(--text-sm)}.ai-food-portion{font-size:var(--text-xs);color:var(--text-muted)}.ai-food-nutrition{text-align:right;flex-shrink:0}.ai-food-kcal{display:block;font-size:var(--text-sm);font-family:var(--font-mono);font-weight:var(--weight-semibold);color:var(--text-primary)}.ai-food-macros{display:block;font-size:var(--text-xs);color:var(--text-muted)}.ai-confidence{font-size:var(--text-xs);font-weight:var(--weight-semibold);padding:2px 6px;border-radius:var(--radius-sm);flex-shrink:0}.ai-confidence-high{background:#b8c4b833;color:var(--success)}.ai-confidence-medium{background:#d4ccb433;color:var(--warning)}.ai-confidence-low{background:#cdacac33;color:var(--danger)}.ai-results-actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-4)}.ai-results-actions .btn{flex:1}.ai-no-results{text-align:center;padding:var(--sp-6) var(--sp-4);color:var(--text-muted)}.ai-no-results .btn{margin-top:var(--sp-3)}.clarify-container{padding:var(--sp-2) 0}.clarify-header{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--sp-4)}.clarify-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-4);margin-bottom:var(--sp-3)}.clarify-question{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-primary);margin-bottom:var(--sp-1)}.clarify-food-context{font-size:var(--text-xs);color:var(--text-muted);margin-bottom:var(--sp-3)}.clarify-options{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.clarify-option{padding:var(--sp-2) var(--sp-4);min-height:44px;border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-secondary);font-size:var(--text-sm);font-family:var(--font-sans);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent}.clarify-option:hover{border-color:var(--accent);color:var(--text-primary)}.clarify-option.selected{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.clarify-actions{display:flex;gap:var(--sp-3);margin-top:var(--sp-4)}.clarify-actions .btn{flex:1}.ai-disclaimer{margin-top:var(--sp-4);padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--text-xs);color:var(--text-faint);text-align:center}.ai-cost-tracker{border-top:1px solid var(--border);padding-top:var(--sp-3);margin-top:var(--sp-2)}.ai-cost-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2);margin-top:var(--sp-2)}.ai-cost-stat{text-align:center;padding:var(--sp-2);background:var(--bg-base);border-radius:var(--radius-sm)}.ai-cost-label{font-size:var(--text-xs);color:var(--text-faint);display:block}.ai-cost-value{font-size:var(--text-sm);font-weight:var(--weight-bold);font-family:var(--font-mono);color:var(--text-primary)}
