*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#fafafa;color:#111}a{color:inherit;text-decoration:none}.container{max-width:800px;margin:0 auto;padding:24px}.header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:24px}.header h1{margin:0;font-size:22px}.muted{color:#888;font-size:13px}.list{list-style:none;padding:0;margin:0;border:1px solid #e5e5e5;border-radius:8px;background:#fff;overflow:hidden}.list li+li{border-top:1px solid #eee}.row{display:grid;grid-template-columns:220px 1fr 140px;grid-gap:12px;gap:12px;padding:12px 16px;align-items:baseline}.row:hover{background:#f5f5f5}.row .from{font-weight:500}.row .from,.row .subject{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .date{text-align:right;color:#888;font-size:13px}.row.unseen .from,.row.unseen .subject{font-weight:700}.empty,.error{padding:24px;border:1px solid #e5e5e5;background:#fff;border-radius:8px}.error{border-color:#f5c2c2;background:#fff5f5;color:#8a1f1f}.email-meta{border:1px solid #e5e5e5;border-radius:8px;background:#fff;padding:16px;margin-bottom:16px}.email-meta dl{display:grid;grid-template-columns:80px 1fr;grid-gap:4px 12px;gap:4px 12px;margin:0}.email-meta dt{color:#888}.email-body{border:1px solid #e5e5e5;border-radius:8px;background:#fff;padding:16px}.email-body pre{white-space:pre-wrap;word-wrap:break-word;font-family:inherit;margin:0}.back{display:inline-block;margin-bottom:16px;font-size:14px;color:#555}.app-content:has(.dashboard-page){max-width:none;padding:24px 28px 40px}.dashboard-page .header h1{font-size:26px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-auto-rows:340px;grid-gap:16px;gap:16px}@media (max-width:720px){.dashboard-grid{grid-template-columns:1fr}}.dashboard-grid>.widget,.dashboard-grid>.widget-placeholder{min-width:0;height:100%}.widget-placeholder{border:1px dashed #d8d8d8;border-radius:12px;background:transparent;display:flex;align-items:center;justify-content:center;color:#b5b5b5;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.widget{border:1px solid #ececec;border-radius:12px;background:#fff;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 1px 0 rgba(15,15,15,.02),0 1px 3px rgba(15,15,15,.04)}.widget-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #f1f1f1;gap:12px}.widget-header h2{margin:0;font-size:14px;letter-spacing:.01em;color:#222;gap:8px}.widget-badge,.widget-header h2{font-weight:600;display:inline-flex;align-items:center}.widget-badge{justify-content:center;min-width:20px;height:18px;padding:0 6px;border-radius:999px;background:#1e5fcc;color:#fff;font-size:11px;line-height:1}.widget-body{padding:12px 16px;flex:1 1;min-height:0;overflow:auto}.widget-body.flush{padding:0}.stat-card{display:flex;flex-direction:column;justify-content:space-between;padding:16px 18px;gap:10px;text-decoration:none;color:inherit;transition:border-color .1s}.stat-card:hover{border-color:#d4d4d4}.stat-label{font-size:11px;font-weight:600;color:#777;text-transform:uppercase;letter-spacing:.06em}.stat-value{font-size:34px;font-weight:700;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:#111}.stat-foot{font-size:12px;color:#888}.stat-card.accent-blue .stat-value{color:#1e5fcc}.stat-card.accent-green .stat-value{color:#1f8a4c}.stat-card.accent-orange .stat-value{color:#c2660d}.stat-card.accent-purple .stat-value{color:#6b3aa0}.quick-actions{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px;gap:10px}.quick-action{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid #ececec;border-radius:10px;text-decoration:none;color:inherit;background:#fafafa}.quick-action:hover{background:#f3f3f3;border-color:#d8d8d8}.quick-action .qa-title{font-weight:600;font-size:14px}.quick-action .qa-sub{font-size:12px;color:#777}.recipe-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:12px;gap:12px}.recipe-strip .recipe-card-body{padding:8px 10px 10px}.recipe-strip .recipe-card-body h3{font-size:14px}.mini-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:10px 14px}.mini-row:hover{background:#f7f7f7}.mini-title{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-meta{font-size:12px;color:#888;white-space:nowrap}.widget-tabs{display:flex;align-items:center;gap:8px;font-size:13px}.widget-tabs a,.widget-tabs button{padding:4px 10px;border-radius:999px;color:#555;background:none;border:none;font:inherit;cursor:pointer}.widget-tabs a:hover,.widget-tabs button:hover{background:#f0f0f0}.widget-tabs a.active,.widget-tabs button.active{background:#111;color:#fff}.widget-tabs .widget-link{margin-left:8px;color:#666;background:none}.widget-tabs .widget-link:hover{background:none;color:#111}.widget .list{border:none;border-radius:0}.widget .empty,.widget .error{border:none;border-radius:0;background:transparent;padding:16px}.widget .error{color:#8a1f1f;background:#fff5f5}.container.narrow{max-width:420px}.site-header{display:flex;align-items:center;gap:16px;padding:10px 24px;border-bottom:1px solid #eee;background:#fff;font-size:14px}.site-header .brand{font-weight:700;font-size:15px}.site-header .site-nav{display:flex;gap:14px;color:#555}.site-header .site-nav a:hover{color:#111}.site-header .site-user{margin-left:auto;display:flex;align-items:center;gap:12px}.link-button{background:none;border:none;padding:0;color:#555;cursor:pointer;font:inherit}.link-button:hover{color:#111;text-decoration:underline}.auth-form{display:flex;flex-direction:column;gap:8px}.auth-form label{font-size:13px;color:#555}.auth-form input{padding:10px 12px;border:1px solid #ddd;border-radius:6px;font:inherit}.auth-form button{margin-top:4px;padding:10px 14px;border:none;border-radius:6px;background:#111;color:#fff;font:inherit;cursor:pointer}.auth-form button:hover{background:#000}.app-shell{display:grid;grid-template-columns:64px 1fr;min-height:calc(100vh - 45px)}.app-main{background:#fafafa;overflow-x:hidden}.app-content{max-width:880px;padding:24px}.sidebar{position:relative;z-index:5;width:64px;background:#fff;border-right:1px solid #eee;padding:12px 8px;overflow:hidden;transition:width .18s ease,box-shadow .18s ease}.sidebar:hover{width:240px;box-shadow:2px 0 12px rgba(0,0,0,.06)}.sidebar ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}.sidebar a{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:6px;font-size:14px;color:#333;white-space:nowrap}.sidebar-icon{flex:0 0 24px;display:inline-flex;align-items:center;justify-content:center;color:#555}.sidebar a.active .sidebar-icon{color:inherit}.sidebar-label{opacity:0;transition:opacity .15s ease}.sidebar:hover .sidebar-label{opacity:1}.sidebar a:hover{background:#f3f3f3}.sidebar a.active{background:#111;color:#fff}.resource-form{display:flex;flex-direction:column;gap:10px}.resource-form label{font-size:13px;color:#555;margin-top:6px}.resource-form input,.resource-form select,.resource-form textarea{padding:8px 10px;border:1px solid #ddd;border-radius:6px;font:inherit;background:#fff}.resource-form textarea{resize:vertical}.resource-form .form-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.resource-form .form-actions{margin-top:12px;display:flex;gap:10px}.macros{border:1px solid #eee;border-radius:6px;padding:10px 14px 14px;margin-top:10px}.macros legend{font-size:12px;color:#777;padding:0 6px}.macros-grid{display:grid;grid-template-columns:110px 1fr;grid-gap:8px 12px;gap:8px 12px;align-items:center}.macros-grid label{margin:0}.btn{display:inline-block;padding:7px 12px;border:1px solid #ddd;border-radius:6px;background:#fff;font-size:14px;cursor:pointer}.btn:hover{background:#f5f5f5}.btn.primary{background:#111;color:#fff;border-color:#111}.btn.primary:hover{background:#000}.link-button.danger{color:#b81f1f}.link-button.danger:hover{color:#8a1f1f}.header-actions{display:flex;gap:10px;align-items:center}.dashboard-switcher{display:inline-block;padding:7px 28px 7px 12px;border:1px solid #ddd;border-radius:6px;background-color:#fff;font-size:14px;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' stroke='%23666' fill='none' stroke-width='1.5'/></svg>");background-repeat:no-repeat;background-position:right 10px center}.dashboard-switcher:hover{background-color:#f5f5f5}.widget-picker-group+.widget-picker-group{margin-top:16px}.widget-picker-group-heading{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#888;margin:0 0 6px}.widget-picker-empty{color:#888;font-size:13px;padding:8px 0}.placement-controls{display:flex;gap:6px;align-items:center}.sortable-list{list-style:none;padding:0;margin:0}.sortable-item{display:flex;align-items:stretch;gap:8px;padding:10px 0;border-bottom:1px solid #f0f0f0}.sortable-item:last-child{border-bottom:none}.sortable-item-body{flex:1 1;min-width:0}.drag-handle{flex:0 0 auto;display:flex;align-items:center;padding:0 6px;border:none;background:transparent;color:#bbb;font-size:14px;letter-spacing:-1px;cursor:-webkit-grab;cursor:grab;touch-action:none}.drag-handle:hover{color:#555}.drag-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.drag-handle:focus-visible{outline:2px solid #6cf;outline-offset:2px;border-radius:3px}.placement-config{margin:8px 0 4px;padding:8px 0 0;border-top:1px dashed #eee}.placement-config>summary{cursor:pointer;font-size:13px;color:#666;list-style:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.placement-config>summary:before{content:"▸ ";font-size:10px;color:#999}.placement-config[open]>summary:before{content:"▾ "}.placement-config>summary:hover{color:#111}.auto-form{display:grid;grid-template-columns:140px 1fr;grid-gap:10px 14px;gap:10px 14px;align-items:center;margin-top:12px}.auto-form-field{display:contents}.auto-form-field label{font-size:13px;color:#555;margin:0}.auto-form-field input[type=number],.auto-form-field input[type=text],.auto-form-field select{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px;background:#fff}.auto-form-field input[type=checkbox]{justify-self:start}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:14px;gap:14px}.recipe-card{display:block;background:#fff;border:1px solid #e5e5e5;border-radius:8px;overflow:hidden;transition:border-color .1s}.recipe-card:hover{border-color:#bbb}.recipe-card img,.recipe-card-placeholder{width:100%;aspect-ratio:4/3;object-fit:cover;background:#f0f0f0;display:block}.recipe-card-body{padding:10px 12px 12px}.recipe-card-body h3{margin:0 0 4px;font-size:15px}.recipe-card-body p{margin:0 0 6px;font-size:13px;color:#666;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-macros{font-size:12px;color:#555}.nutrition-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px}.nutrition-block{display:flex;flex-direction:column;gap:6px}dl.nutrition{display:grid;grid-template-columns:max-content 1fr;grid-gap:4px 12px;gap:4px 12px;margin:0;font-size:14px}dl.nutrition dt{color:#666}dl.nutrition dd{margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.recipe-hero{width:100%;max-height:360px;object-fit:cover;border-radius:8px;margin-bottom:12px}.recipe-description{margin:0 0 12px;color:#555}.recipe-meta{display:grid;grid-template-columns:max-content 1fr;grid-gap:4px 12px;gap:4px 12px;margin:0 0 12px;font-size:14px}.recipe-meta dt{color:#888}.ingredient-list{list-style:none;padding:0;margin:0}.ingredient-list li{display:grid;grid-template-columns:80px 1fr auto;grid-gap:10px;gap:10px;padding:6px 0;border-top:1px solid #f0f0f0}.ingredient-list li:first-child{border-top:none}.ingredient-list .qty{color:#555;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ingredient-row{grid-template-columns:1fr 140px 200px}.small{font-size:12px}.ingredient-lines{display:flex;flex-direction:column;gap:6px;border:1px solid #eee;border-radius:6px;padding:10px}.ingredient-line{display:grid;grid-template-columns:1fr 100px 1fr 24px;grid-gap:8px;gap:8px;align-items:center}.ingredient-line input,.ingredient-line select{padding:6px 8px;border:1px solid #ddd;border-radius:4px;font:inherit}.rte{border:1px solid #ddd;border-radius:6px;background:#fff;overflow:hidden}.rte-toolbar{display:flex;gap:4px;padding:6px;border-bottom:1px solid #eee;background:#fafafa}.rte-toolbar button{padding:4px 8px;border:1px solid transparent;border-radius:4px;background:transparent;font:inherit;cursor:pointer}.rte-toolbar button:hover{background:#eee}.rte-toolbar button.active{background:#111;color:#fff}.rte-content{padding:12px;min-height:140px;outline:none}.rte-content p{margin:0 0 .6em}.rte-content ol,.rte-content ul{padding-left:1.4em;margin:0 0 .6em}.rte-content blockquote{border-left:3px solid #ddd;margin:0 0 .6em;padding-left:12px;color:#555}.rte-content h2{font-size:18px;margin:0 0 .5em}.image-upload{display:flex;flex-direction:column;gap:8px}.image-upload-row{display:flex;gap:8px;align-items:center}.image-upload-row input[type=url]{flex:1 1}.image-upload-preview{max-width:240px;max-height:180px;border-radius:6px;border:1px solid #eee;object-fit:cover}.todo-list{display:flex;flex-direction:column;gap:8px}.todo-list .todo-list-title{font-weight:600;font-size:13px;color:#555}.todo-add{display:flex;gap:6px}.todo-add input{flex:1 1;padding:6px 10px;border:1px solid #ddd;border-radius:6px;font:inherit}.todo-add button{padding:4px 10px}.todo-list ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.todo-list li{display:flex;align-items:center;justify-content:space-between;padding:4px 0;gap:6px}.todo-list li label{display:flex;align-items:center;gap:8px;flex:1 1;cursor:pointer;font-size:14px}.todo-list li.done span{color:#999;text-decoration:line-through}.todo-list li input[type=checkbox]{cursor:pointer;flex-shrink:0}.todo-list li button.link-button{font-size:16px;line-height:1;padding:0 4px;color:#aaa}.todo-list li button.link-button:hover{color:#b81f1f}.todo-list.compact .todo-add input{font-size:13px;padding:4px 8px}.todo-list.compact li label{font-size:13px}.todo-list .todo-link{flex:1 1;font-size:14px;color:#111;text-decoration:none}.todo-list .todo-link:hover{text-decoration:underline}.todo-list li.done .todo-link{color:#999;text-decoration:line-through}.todo-list.compact .todo-link{font-size:13px}.todo-list .todo-source-chip{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;font-size:12px;color:#666;text-decoration:none;border-radius:4px;border:1px solid #ddd;background:#f7f7f7;margin-right:6px}.todo-list .todo-source-chip:hover{color:#111;background:#efefef;border-color:#bbb}.todo-table{list-style:none;padding:0;margin:0;border:1px solid #e5e5e5;border-radius:8px;background:#fff;overflow:hidden}.todo-table li{display:flex;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid #f0f0f0}.todo-table li:first-child{border-top:none}.todo-table li.done .title{color:#999;text-decoration:line-through}.todo-toggle{margin:0}.check{width:20px;height:20px;border:1px solid #bbb;border-radius:4px;background:#fff;cursor:pointer;font-size:12px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center}.check.checked{background:#111;border-color:#111;color:#fff}.todo-row-link{flex:1 1;display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.todo-row-link:hover .title{text-decoration:underline}.todo-row-main{display:flex;align-items:center;gap:8px;min-width:0}.todo-row-main .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.todo-pill{display:inline-block;padding:2px 8px;background:#f0f0f0;border-radius:999px;font-size:11px;color:#444;white-space:nowrap}.todo-row-due{font-size:12px;color:#888;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.todo-row-due.overdue{color:#b81f1f}.todo-done-title{text-decoration:line-through;color:#999}.todo-meta{display:grid;grid-template-columns:max-content 1fr;grid-gap:4px 12px;gap:4px 12px;margin:0 0 12px;font-size:14px}.todo-meta dt{color:#888}.todo-meta dd{margin:0}.todo-meta dd.overdue{color:#b81f1f}.media-upload{display:flex;flex-direction:column;gap:10px}.attachment-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));grid-gap:12px;gap:12px}.attachment-list li{display:flex;flex-direction:column;gap:6px;border:1px solid #eee;border-radius:6px;padding:8px;background:#fff}.attachment-list img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:4px;background:#f0f0f0}.attachment-file{display:block;padding:24px 8px;text-align:center;background:#f5f5f5;border-radius:4px;font-size:13px;word-break:break-all}.attachment-meta{display:flex;align-items:center;justify-content:space-between;font-size:12px}.filter-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.filter-pills .pill{display:inline-flex;align-items:center;padding:4px 12px;border:1px solid #e0e0e0;border-radius:999px;background:#fff;color:#444;font:inherit;font-size:12px;cursor:pointer;text-decoration:none}.filter-pills .pill:hover{background:#f3f3f3}.filter-pills .pill.active{background:#111;border-color:#111;color:#fff}.combobox{position:relative}.combobox-input-wrap{position:relative;display:flex}.combobox-input-wrap input{width:100%;padding:8px 30px 8px 10px;border:1px solid #ddd;border-radius:6px;font:inherit;background:#fff}.combobox-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:none;background:none;color:#888;width:22px;height:22px;border-radius:999px;cursor:pointer;font-size:16px;line-height:1}.combobox-clear:hover{color:#111;background:#f0f0f0}.combobox-menu{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid #e5e5e5;border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,.08);z-index:10;max-height:240px;overflow-y:auto;padding:4px}.combobox-option{display:block;width:100%;text-align:left;padding:6px 10px;border:none;background:transparent;border-radius:4px;font:inherit;color:#111;cursor:pointer}.combobox-option.active,.combobox-option:hover{background:#f0f0f0}.combobox-option.create{color:#1e5fcc}.todo-editor{position:relative}.todo-editor-status{position:absolute;top:-28px;right:0;font-size:12px}.todo-title-input{font-size:22px;font-weight:700;padding:6px 10px;border:1px solid transparent;border-radius:6px;background:transparent;width:100%}.todo-title-input:focus,.todo-title-input:hover{border-color:#ddd;background:#fff;outline:none}.todo-status-flag{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#c2660d}.todo-status-flag.done{color:#1f8a4c}.email-feed{list-style:none;padding:0;margin:0}.email-feed li+li{border-top:1px solid #f1f1f1}.email-feed li{display:flex;align-items:stretch;position:relative}.email-feed-row{gap:8px;padding:8px 4px 8px 14px;text-decoration:none;color:inherit;min-width:0;flex:1 1}.email-feed-row,.row-menu{display:flex;align-items:center}.row-menu{position:relative;padding-right:6px}.row-menu-trigger{background:transparent;border:0;cursor:pointer;width:24px;height:24px;border-radius:4px;color:#888;font-size:16px;line-height:1;padding:0}.row-menu-trigger:hover,.row-menu-trigger[aria-expanded=true]{background:#ececec;color:#333}.row-menu-popup{position:absolute;top:calc(100% + 2px);right:6px;z-index:20;background:#fff;border:1px solid #e2e2e2;border-radius:6px;box-shadow:0 6px 20px rgba(0,0,0,.08);min-width:160px;padding:4px}.row-menu-popup button{display:block;width:100%;text-align:left;background:transparent;border:0;padding:6px 10px;font-size:13px;border-radius:4px;cursor:pointer;color:#222}.row-menu-popup button:hover:not(:disabled){background:#f3f3f3}.row-menu-popup button:disabled{color:#aaa;cursor:default}.row-error{display:flex;align-items:center;gap:8px;margin-top:2px}.row-error,.row-error-retry{font-size:11px;color:#c0392b}.row-error-retry{background:transparent;border:1px solid #c0392b;border-radius:3px;padding:1px 6px;cursor:pointer}.row-error-retry:hover{background:#c0392b;color:#fff}.email-feed-row:hover{background:#f7f7f7}.unseen-dot{flex:0 0 6px;width:6px;height:6px;border-radius:999px;background:#1e5fcc;margin-left:-2px}.email-feed li:not(.unseen) .email-feed-row{padding-left:22px}.email-feed-content{flex:1 1;min-width:0}.email-feed-line{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:12.5px;line-height:1.25}.email-feed-from{font-weight:500;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.email-feed li.unseen .email-feed-from{font-weight:700;color:#111}.email-feed-date{flex-shrink:0;color:#999;font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.email-feed-subject{font-size:12.5px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;margin-top:1px}.email-feed li.unseen .email-feed-subject{color:#333}.food-page .header{margin-bottom:16px}.day-nav{gap:8px;margin-bottom:16px}.day-nav,.day-nav-current{display:flex;align-items:center}.day-nav-current{flex:1 1;flex-direction:column;gap:2px;font-size:15px}.day-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px;padding:14px 16px;background:#fff;border:1px solid #ececec;border-radius:12px;margin-bottom:16px}.goal-bar{display:flex;flex-direction:column;gap:6px}.goal-bar-label{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:500;color:#333}.goal-bar-track{height:6px;background:#f0f0f0;border-radius:999px;overflow:hidden}.goal-bar-fill{height:100%;background:#1f8a4c;border-radius:999px;transition:width .2s ease}.goal-bar.over .goal-bar-fill{background:#c2660d}.meal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));grid-gap:14px;gap:14px}.meal-section{background:#fff;border:1px solid #ececec;border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}.meal-header{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.meal-header h2{margin:0;font-size:15px;font-weight:600}.meal-totals{font-size:13px;color:#444;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.meal-entries{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.meal-entries li{display:grid;grid-template-columns:1fr auto auto;grid-gap:10px;gap:10px;padding:8px 0;border-top:1px solid #f3f3f3;align-items:baseline}.meal-entries li:first-child{border-top:none}.meal-entry-main{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;min-width:0}.meal-entry-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.meal-entry-name a{color:inherit}.meal-entry-name a:hover{text-decoration:underline}.meal-entry-macros{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:#444}.meal-entries .link-button.danger{font-size:16px;line-height:1;padding:0 4px;color:#aaa}.meal-entries .link-button.danger:hover{color:#b81f1f}.meal-recents{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding-top:4px}.meal-recent-form{display:inline}.meal-recent-pill{display:inline-flex;align-items:baseline;gap:4px;padding:4px 10px;border:1px solid #e0e0e0;border-radius:999px;background:#fafafa;color:#333;font:inherit;font-size:12px;cursor:pointer}.meal-recent-pill:hover{background:#f0f0f0;border-color:#ccc}.meal-add-btn{align-self:flex-start}.app-content:has(.food-page){max-width:none;padding:24px 28px 40px}.modal-overlay{position:fixed;inset:0;z-index:100;background:rgba(15,15,15,.45);display:flex;align-items:center;justify-content:center;padding:24px}.modal{background:#fff;border-radius:12px;width:100%;max-width:560px;max-height:calc(100vh - 48px);display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #eee}.modal-header h2{margin:0;font-size:16px;font-weight:600}.modal-close{background:none;border:none;font-size:24px;line-height:1;color:#666;cursor:pointer;padding:0 4px}.modal-close:hover{color:#111}.modal-body{padding:16px 18px;overflow:auto;flex:1 1;min-height:0}.modal-footer{padding:12px 18px;border-top:1px solid #eee}.chat-dock{position:fixed;top:16px;right:16px;bottom:16px;z-index:90;pointer-events:none;display:flex;align-items:flex-end;justify-content:flex-end}.chat-dock-panel{pointer-events:auto;width:min(440px,calc(100vw - 32px));height:100%;max-height:calc(100vh - 32px);background:#fff;border-radius:12px;box-shadow:0 16px 40px rgba(0,0,0,.18),0 0 0 1px rgba(0,0,0,.05);display:flex;flex-direction:column;overflow:hidden;transition:height .16s ease}.chat-dock.minimized .chat-dock-panel{height:44px}.chat-dock.minimized .chat-body,.chat-dock.minimized .chat-input-form{display:none}.chat-dock-header{display:flex;align-items:center;gap:10px;height:44px;padding:0 10px 0 6px;border-bottom:1px solid #eee;background:#fafafa;flex-shrink:0}.chat-dock-header h2{margin:0;font-size:14px;font-weight:600}.chat-dock-subtitle{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-dock-close,.chat-dock-minimize{background:none;border:none;padding:4px 8px;font-size:16px;line-height:1;color:#555;cursor:pointer;border-radius:4px}.chat-dock-close:hover,.chat-dock-minimize:hover{background:#ececec;color:#111}.chat-dock-close{font-size:22px;padding:0 8px}.chat-dock-cost{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:11px;color:#555;background:#f0f0f0;border-radius:4px;padding:2px 6px;flex-shrink:0}.chat-body{flex:1 1;min-height:0;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:12px;background:#fafafa}.chat-bubble{max-width:85%;padding:10px 12px;border-radius:10px;line-height:1.45;font-size:14px}.chat-bubble-user{align-self:flex-end;background:#1f2937;color:#fff}.chat-bubble-assistant{align-self:flex-start;background:#fff;color:#111;border:1px solid #e5e7eb}.chat-text{margin:0;white-space:pre-wrap}.chat-text+.chat-text,.chat-text+.chat-tool-use,.chat-tool-use+.chat-text{margin-top:6px}.chat-tool-use code{background:rgba(0,0,0,.06);padding:1px 6px;border-radius:4px;font-size:12px}.chat-pending{display:flex;flex-direction:column;gap:10px;padding:12px;background:#fff7ed;border:1px solid #fdba74;border-radius:10px}.chat-pending-header{font-weight:600;font-size:13px;color:#9a3412}.chat-pending-card{background:#fff;border:1px solid #fed7aa;border-radius:8px;padding:8px 10px}.chat-pending-row{display:flex;align-items:center;gap:10px}.chat-pending-check{display:inline-flex;align-items:center;cursor:pointer;flex-shrink:0}.chat-pending-check input[type=checkbox]{width:16px;height:16px;cursor:pointer}.chat-pending-title{flex:1 1;min-width:0;font-size:13px;font-weight:500;color:#111;line-height:1.35}.chat-pending-toggle{background:none;border:none;color:#9a3412;cursor:pointer;font-size:12px;padding:2px 6px;border-radius:4px;flex-shrink:0}.chat-pending-toggle:hover{background:#fff7ed}.chat-pending-details{margin:8px 0 2px;padding:8px 10px;background:#fffaf3;border:1px solid #fed7aa;border-radius:6px;display:grid;grid-template-columns:max-content 1fr;grid-column-gap:12px;column-gap:12px;grid-row-gap:4px;row-gap:4px;font-size:12px}.chat-pending-field{display:contents}.chat-pending-field dt{color:#9a3412;font-weight:500}.chat-pending-field dd{margin:0;color:#333;word-break:break-word}.chat-pending-field dd.multiline,.chat-tool-input{white-space:pre-wrap}.chat-tool-input{margin:6px 0 0;padding:8px;background:#f3f4f6;border-radius:6px;font-size:12px;word-break:break-word;max-height:160px;overflow:auto}.chat-input-form{display:flex;gap:8px;padding:12px 18px;border-top:1px solid #eee;background:#fff}.chat-input-form input{flex:1 1;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font:inherit}.chat-input-form input:disabled{background:#f9fafb;color:#9ca3af}.chat-attach-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;background:#fff;font-size:16px;flex-shrink:0}.chat-attach-btn:hover{background:#f3f4f6}.chat-attach-btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.add-modal{display:flex;flex-direction:column;gap:12px}.add-modal-tabs{display:flex;gap:6px}.add-modal-tabs .pill{padding:6px 14px;border:1px solid #e0e0e0;border-radius:999px;background:#fff;color:#444;font:inherit;font-size:13px;cursor:pointer}.add-modal-tabs .pill.active{background:#111;border-color:#111;color:#fff}.add-modal-search{width:100%;padding:9px 12px;border:1px solid #ddd;border-radius:8px;font:inherit;background:#fff}.add-modal-list{border:1px solid #eee;border-radius:8px;background:#fafafa;max-height:260px;overflow-y:auto;padding:4px;display:flex;flex-direction:column;gap:2px}.add-modal-item{display:grid;grid-template-columns:40px 1fr;grid-gap:10px;gap:10px;align-items:center;padding:6px 8px;border:1px solid transparent;border-radius:6px;background:transparent;text-align:left;font:inherit;cursor:pointer;width:100%}.add-modal-item:hover{background:#fff;border-color:#e5e5e5}.add-modal-item.selected{background:#fff;border-color:#111;box-shadow:0 0 0 1px #111}.add-modal-item img,.add-modal-thumb-placeholder{width:40px;height:40px;border-radius:6px;object-fit:cover;background:#eee;display:block}.add-modal-item-body{min-width:0;display:flex;flex-direction:column;gap:2px}.add-modal-item-name{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.add-modal-create-trigger{display:block;width:100%;margin-top:4px;padding:8px 10px;border:1px dashed #c8c8c8;border-radius:6px;background:#fff;color:#444;font:inherit;font-size:13px;text-align:left;cursor:pointer}.add-modal-create-trigger:hover{border-color:#111;color:#111}.add-modal-create{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border:1px solid #e5e5e5;border-radius:8px;background:#fafafa}.add-modal-create-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.add-modal-create-cancel{background:transparent;border:none;color:#666;font:inherit;font-size:13px;cursor:pointer;padding:2px 4px}.add-modal-create-cancel:hover{color:#111}.add-modal-create-field{display:flex;flex-direction:column;gap:3px;font-size:13px;color:#555}.add-modal-create-field input{padding:7px 10px;border:1px solid #ddd;border-radius:6px;font:inherit;background:#fff}.add-modal-create-field-wide input{width:100%}.add-modal-create-macros{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:8px;gap:8px}@media (max-width:520px){.add-modal-create-macros{grid-template-columns:repeat(2,1fr)}}.add-modal-create-actions{display:flex;justify-content:flex-end;gap:8px}.add-modal-form{display:grid;grid-template-columns:120px 1fr;grid-gap:10px 12px;gap:10px 12px;align-items:center;padding-top:8px;border-top:1px solid #eee}.add-modal-field{display:contents}.add-modal-field>span{font-size:13px;color:#555}.add-modal-field input{padding:8px 10px;border:1px solid #ddd;border-radius:6px;font:inherit;background:#fff}.add-modal-field-wide input{width:100%}.add-modal-preview{grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 12px;background:#f5f5f5;border-radius:6px}.macro-preview{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.add-modal-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.add-modal-actions .btn[disabled]{opacity:.5;cursor:not-allowed}@media (max-width:520px){.add-modal-form{grid-template-columns:1fr}.add-modal-field{display:flex;flex-direction:column;gap:4px}.add-modal-actions,.add-modal-preview{grid-column:auto}}.goal-progress-stack,.quick-add{display:flex;flex-direction:column;gap:10px}.quick-add-meals,.quick-add-tabs{display:flex;flex-wrap:wrap;gap:6px}.quick-add .pill{padding:4px 10px;border:1px solid #e0e0e0;border-radius:999px;background:#fff;color:#444;font:inherit;font-size:12px;cursor:pointer}.quick-add .pill.active{background:#111;border-color:#111;color:#fff}.quick-add-search{width:100%;padding:8px 10px;border:1px solid #ddd;border-radius:6px;font:inherit;background:#fff}.quick-add-list{border:1px solid #eee;border-radius:8px;background:#fafafa;max-height:200px;overflow-y:auto;padding:4px;display:flex;flex-direction:column;gap:2px}.quick-add-empty{padding:10px 8px}.quick-add-item{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:6px 8px;border:1px solid transparent;border-radius:6px;background:transparent;text-align:left;font:inherit;font-size:13px;cursor:pointer;width:100%}.quick-add-item:hover{background:#fff;border-color:#e5e5e5}.quick-add-item.selected{background:#fff;border-color:#111;box-shadow:0 0 0 1px #111}.quick-add-item-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.quick-add-form{display:flex;flex-wrap:wrap;gap:8px;align-items:end;padding-top:6px;border-top:1px solid #eee}.quick-add-qty{display:flex;flex-direction:column;gap:2px;font-size:12px;color:#555}.quick-add-qty input{width:90px;padding:6px 8px;border:1px solid #ddd;border-radius:6px;font:inherit}.quick-add-preview{flex:1 1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.quick-add-form .btn[disabled]{opacity:.5;cursor:not-allowed}.quick-add-new{display:flex;flex-direction:column;gap:10px}.quick-add-new-form{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.quick-add-new-form label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:#555}.quick-add-new-form input{padding:6px 8px;border:1px solid #ddd;border-radius:6px;font:inherit;background:#fff}.quick-add-new-name{grid-column:1/-1}.quick-add-new-actions{grid-column:1/-1;display:flex;justify-content:flex-end}.quick-add-new-recipe{padding-top:6px;border-top:1px solid #eee}.quick-prompt-form{display:flex;flex-direction:column;gap:8px;height:100%}.quick-prompt-input{flex:1 1 auto;min-height:64px;resize:none;font:inherit;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;background:#fff;line-height:1.4}.quick-prompt-input:focus{outline:none;border-color:#6b7280}.quick-prompt-input:disabled{background:#f9fafb;color:#9ca3af}.quick-prompt-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.toaster{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:1000;pointer-events:none;max-width:calc(100vw - 40px)}.toast{pointer-events:auto;display:flex;align-items:center;gap:12px;min-width:280px;max-width:420px;padding:10px 14px;border-radius:8px;background:#1a1a1a;color:#fafafa;box-shadow:0 8px 24px rgba(0,0,0,.18);font-size:13px;line-height:1.4;animation:toast-in .18s ease-out}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.toast-success{background:#1a1a1a;border-left:3px solid #4ade80}.toast-info{background:#1a1a1a;border-left:3px solid #60a5fa}.toast-error{background:#1a1a1a;border-left:3px solid #f87171}.toast-message{flex:1 1 auto;min-width:0;word-break:break-word}.toast-action{flex-shrink:0;background:transparent;color:#fafafa;border:1px solid rgba(255,255,255,.25);border-radius:6px;padding:4px 10px;font:inherit;cursor:pointer}.toast-action:hover:not(:disabled){background:rgba(255,255,255,.08)}.toast-action[disabled]{opacity:.5;cursor:not-allowed}.toast-action-done{border:none;color:#4ade80;cursor:default}.toast .toast-error{color:#fca5a5;font-size:12px;flex-basis:100%}.toast-close{flex-shrink:0;background:transparent;border:none;color:rgba(255,255,255,.55);font-size:18px;line-height:1;cursor:pointer;padding:0 4px}.toast-close:hover{color:#fafafa}.films-tabs{margin-bottom:16px}.films-list .row.films-row{display:grid;grid-template-columns:56px 1fr auto auto;grid-gap:16px;gap:16px;align-items:center;padding:8px 12px}.films-row-poster{width:56px;height:84px;flex-shrink:0;border-radius:4px;overflow:hidden;background:rgba(255,255,255,.04)}.films-row-poster img{width:100%;height:100%;object-fit:cover;display:block}.films-row-poster-placeholder{width:100%;height:100%;background:rgba(255,255,255,.04)}.films-row-rating{text-align:right;min-width:48px}.films-row-watched{min-width:140px;text-align:right}.add-modal-search-row{display:flex;gap:8px;margin-bottom:12px}.add-modal-search-row .add-modal-search{flex:1 1;margin-bottom:0}.film-detail-body{display:grid;grid-template-columns:200px 1fr;grid-gap:24px;gap:24px;margin:16px 0 24px}.film-detail-poster img{width:100%;border-radius:6px;display:block}.film-meta-list{display:grid;grid-template-columns:100px 1fr;grid-gap:4px 12px;gap:4px 12px;margin:0 0 12px}.film-meta-list dt{color:rgba(255,255,255,.55);font-size:13px}.film-meta-list dd{margin:0;font-size:14px}.film-plot{margin:12px 0 0;line-height:1.5;color:rgba(255,255,255,.8)}.film-user-section{border-top:1px solid rgba(255,255,255,.08);padding-top:16px;display:flex;flex-direction:column;gap:16px}.film-user-section h2{margin:0;font-size:16px}.film-user-row{display:flex;gap:32px}.film-user-rating strong{font-size:24px}.film-notes-form,.film-rate-form{display:flex;flex-direction:column;gap:8px;align-items:flex-start;max-width:400px}.film-notes-form textarea{width:100%;font-family:inherit;font-size:14px;padding:6px 8px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:4px;color:inherit;resize:vertical}.film-already-badge{color:var(--color-accent,#f59e0b);font-weight:500}.add-modal-item.disabled{opacity:.6}.add-modal-barcode-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.add-modal-barcode-form{display:flex;gap:6px;flex:1 1;min-width:180px}.add-modal-barcode-form input{flex:1 1;min-width:0;padding:6px 8px;border:1px solid var(--border,#ccc);border-radius:6px;background:var(--input-bg,#fff);color:inherit;font-size:14px}.add-modal-lookup-msg{margin:4px 0 8px}.add-modal-create-image{max-width:100%;max-height:140px;align-self:flex-start;border-radius:6px;object-fit:contain;background:var(--surface-2,#f5f5f5)}.barcode-scanner-overlay{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;padding:16px}.barcode-scanner-frame{position:relative;width:100%;max-width:480px;aspect-ratio:3/4;background:#000;border-radius:12px;overflow:hidden;box-shadow:0 8px 32px rgba(0,0,0,.4)}.barcode-scanner-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.barcode-scanner-target{position:absolute;left:10%;right:10%;top:40%;height:20%;border:2px solid rgba(255,255,255,.85);border-radius:8px;box-shadow:0 0 0 9999px rgba(0,0,0,.25);pointer-events:none}.barcode-scanner-status{position:absolute;left:0;right:0;bottom:60px;text-align:center;color:#fff;font-size:14px;text-shadow:0 1px 2px rgba(0,0,0,.6);padding:0 16px}.barcode-scanner-status .error{color:#ff8a8a}.barcode-scanner-close{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);padding:8px 20px;border:1px solid rgba(255,255,255,.6);border-radius:999px;background:rgba(0,0,0,.4);color:#fff;font-size:14px;cursor:pointer}.barcode-scanner-close:hover{background:rgba(0,0,0,.6)}