*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--surface:#1a1d27;--surface2:#222534;--border:#2e3148;--accent:#6c63ff;--accent2:#4ade80;--accent3:#f59e0b;--text:#e8eaf0;--muted:#8b90a8;--danger:#f87171;--radius:12px;--radius-sm:8px}body,html{height:100%}body{background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font:inherit;border:none;outline:none}input,select,textarea{font:inherit;color:var(--text);background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;width:100%;outline:none;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent)}.shell{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:24px 16px;gap:4px;position:-webkit-sticky;position:sticky;top:0;height:100vh;transition:width .3s ease,padding .3s ease}.sidebar-collapsed{width:72px;padding:24px 12px}.sidebar-logo{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:800;letter-spacing:-.5px;color:var(--text);height:40px;padding:0 12px;flex-shrink:0;border-bottom:1px solid var(--border);margin-bottom:12px}.sidebar-logo-wordmark span{color:var(--accent)}.sidebar-logo-icon{font-size:18px;line-height:1}.nav-link{display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;color:var(--muted);white-space:nowrap;overflow:hidden;transition:background .15s,color .15s}.nav-link.active,.nav-link:hover{background:var(--surface2);color:var(--text)}.nav-icon{font-size:14px;width:18px;text-align:center;color:inherit;flex-shrink:0}.main-content{flex:1 1;padding:32px 36px;max-width:1400px;min-height:0;overflow-y:auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}.card-value{font-size:28px;font-weight:800;letter-spacing:-.5px}.card-sub{font-size:12px;color:var(--muted);margin-top:4px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px;margin-bottom:16px;max-width:860px;margin-left:auto;margin-right:auto}.macro-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}.macro-label{width:70px;font-size:13px;color:var(--muted);font-weight:600}.macro-bar-track{flex:1 1;height:8px;background:var(--surface2);border-radius:99px;overflow:hidden}.macro-bar-fill{height:100%;border-radius:99px;transition:width .4s ease}.macro-val{width:58px;text-align:right;font-size:13px;font-weight:700}.section-title{font-size:18px;font-weight:800;margin-bottom:16px;letter-spacing:-.3px}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:480px;padding:28px}.modal-title{font-size:17px;font-weight:800;margin-bottom:20px}.modal-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.modal-grid .full{grid-column:1/-1}.modal-wide{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:860px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.recipe-modal-header{display:grid;grid-template-columns:140px 1fr;grid-gap:20px;gap:20px;align-items:start;padding:24px 24px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.recipe-modal-body{display:grid;grid-template-columns:220px 1fr;flex:1 1;min-height:0}.recipe-modal-ingredients{border-right:1px solid var(--border)}.recipe-modal-ingredients,.recipe-modal-instructions{padding:20px;overflow-y:auto}.md-body{font-size:14px;line-height:1.7;color:var(--text)}.md-body h1,.md-body h2,.md-body h3{font-weight:700;margin:16px 0 8px}.md-body h1{font-size:18px}.md-body h2{font-size:16px}.md-body h3{font-size:14px}.md-body p{margin:0 0 10px}.md-body ol,.md-body ul{padding-left:20px;margin:0 0 10px}.md-body li{margin-bottom:4px}.md-body strong{font-weight:700}.md-body em{font-style:italic}.md-body code{background:var(--surface2);border-radius:4px;padding:1px 5px;font-size:12px;font-family:monospace}.md-body hr{border:none;border-top:1px solid var(--border);margin:16px 0}.field-label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;transition:opacity .15s,background .15s}.btn:hover{opacity:.88}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-ghost{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-danger{background:var(--danger);color:#fff}.pill{display:inline-block;padding:4px 10px;border-radius:99px;font-size:12px;font-weight:600}.pill-ok{background:rgba(74,222,128,.15);color:var(--accent2)}.pill-err{background:hsla(0,91%,71%,.15);color:var(--danger)}.cal-top{display:grid;grid-template-columns:1fr 300px;grid-gap:16px;gap:16px;align-items:start;margin-bottom:0}.cal-agenda{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;position:-webkit-sticky;position:sticky;top:20px}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:8px;gap:8px}@media (max-width:900px){.cal-top{grid-template-columns:1fr}.cal-agenda{position:static}}@media (max-width:680px){.week-grid{grid-template-columns:repeat(4,1fr)}}.bottom-nav{display:none}@media (max-width:680px){.sidebar{display:none}.main-content{padding:20px 16px 88px}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.modal-grid{grid-template-columns:1fr}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;height:64px;background:var(--surface);border-top:1px solid var(--border);z-index:100;align-items:stretch}.bottom-nav-item{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:10px;font-weight:500;color:var(--muted);text-decoration:none;letter-spacing:.3px;transition:color .15s}.bottom-nav-item i{font-size:17px}.bottom-nav-item.active{color:var(--accent)}}