:root{--bg:#f6f7f4;--surface:#ffffff;--border:#e3e6df;--text:#1f2a24;--muted:#66736b;--brand:#2f7a5b;--brand-dark:#245f47;--brand-soft:#e6f2ec;--accent:#e9a23b;--danger:#b4423a;--danger-soft:#f8e7e5;--warn-soft:#fbf1df;--radius:12px;--shadow:0 1px 2px rgba(20,40,30,0.06)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;font-size:15px}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:1.5rem;margin:0 0 4px}h2{font-size:1.15rem;margin:0 0 12px}h3{font-size:1rem;margin:0 0 6px}p{margin:0 0 8px}.muted{color:var(--muted)}.small{font-size:.85rem}.pre{white-space:pre-wrap}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:4px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.brand{font-weight:700;font-size:1.05rem;color:var(--brand-dark);padding:0 10px 16px}.brand span{display:block;font-weight:400;font-size:.8rem;color:var(--muted)}.nav a{display:flex;align-items:center;justify-content:space-between;padding:9px 10px;border-radius:8px;color:var(--text)}.nav a:hover{text-decoration:none}.nav a.active,.nav a:hover{background:var(--brand-soft)}.nav a.active{color:var(--brand-dark);font-weight:600}.sidebar .bottom{margin-top:auto;display:flex;flex-direction:column;gap:4px}.main{padding:28px 32px 60px;max-width:1100px;width:100%}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:20px;flex-wrap:wrap}@media (max-width:800px){.shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;overflow-x:auto;padding:10px 12px;border-right:none;border-bottom:1px solid var(--border)}.brand{display:none}.nav{display:flex;gap:4px}.nav a{white-space:nowrap}.sidebar .bottom{margin-top:0;flex-direction:row}.main{padding:20px 16px 48px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}.stack{flex-direction:column;gap:16px}.row,.stack{display:flex}.row{gap:10px;align-items:center;flex-wrap:wrap}.grid{grid-gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.grid,.grid-2{display:grid;gap:16px}.grid-2{grid-gap:16px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.highlight{background:var(--brand-soft);border-color:#cfe5da}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--brand);color:#fff;border:none;border-radius:8px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer}.btn:hover{background:var(--brand-dark);text-decoration:none}.btn:disabled{opacity:.6;cursor:default}.btn.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn.secondary:hover{background:var(--bg)}.btn.danger{background:var(--surface);color:var(--danger);border:1px solid var(--border)}.btn.small{padding:5px 10px;font-size:.85rem}.linkbtn{background:none;border:none;color:var(--muted);font:inherit;cursor:pointer;padding:9px 10px;text-align:left;border-radius:8px}.linkbtn:hover{background:var(--bg)}form.form{display:flex;flex-direction:column;gap:12px}.fields{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;font-weight:600;color:var(--muted)}input,select,textarea{font:inherit;color:var(--text);background:#fff;border:1px solid var(--border);border-radius:8px;padding:8px 10px}input:focus,select:focus,textarea:focus{outline:2px solid #b8dccb;border-color:var(--brand)}label.check{flex-direction:row;align-items:center;gap:6px;font-weight:400;color:var(--text);font-size:.92rem}textarea{min-height:90px;resize:vertical}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.78rem;font-weight:600;background:var(--bg);color:var(--muted);border:1px solid var(--border)}.badge.ok{background:var(--brand-soft);color:var(--brand-dark);border-color:#cfe5da}.badge.warn{background:var(--warn-soft);color:#8a5a12;border-color:#f0dcb5}.badge.danger{background:var(--danger-soft);color:var(--danger);border-color:#efc9c4}.dot{display:inline-block;min-width:20px;padding:0 6px;height:20px;border-radius:10px;background:var(--accent);color:#fff;font-size:.75rem;font-weight:700;text-align:center;line-height:20px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:20px;overflow-x:auto}.tabs a{padding:9px 14px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap}.tabs a:hover{color:var(--text);text-decoration:none}.tabs a.active{color:var(--brand-dark);border-bottom-color:var(--brand);font-weight:600}table{width:100%;border-collapse:collapse;font-size:.92rem}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600;font-size:.8rem}.table-wrap{overflow-x:auto}.list{display:flex;flex-direction:column}.list-item{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.list-item:last-child{border-bottom:none}.private{background:#fff8ec;border:1px dashed #e7c88f;border-radius:10px;padding:10px 12px}.private-label{font-size:.75rem;font-weight:700;color:#8a5a12;text-transform:uppercase;letter-spacing:.04em}.empty{color:var(--muted);padding:16px 0}.error{background:var(--danger-soft);color:var(--danger)}.error,.success{padding:10px 12px;border-radius:8px}.success{background:var(--brand-soft);color:var(--brand-dark)}.chat{display:flex;flex-direction:column;height:min(70vh,640px);padding:0;overflow:hidden}.chat-messages{flex:1 1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:8px;background:#fafbf8}.bubble{max-width:75%;padding:8px 12px;border-radius:14px;background:#fff;border:1px solid var(--border);white-space:pre-wrap}.bubble.mine{align-self:flex-end;background:var(--brand);color:#fff;border-color:var(--brand)}.bubble time{display:block;font-size:.7rem;opacity:.7;margin-top:2px}.chat-form{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border);background:var(--surface)}.chat-form textarea{flex:1 1;min-height:42px;height:42px}.chart svg{width:100%;height:auto;display:block}.chart .line{fill:none;stroke:var(--brand);stroke-width:2.5}.chart .area{fill:var(--brand-soft)}.chart .point{fill:var(--surface);stroke:var(--brand);stroke-width:2}.chart .grid-line{stroke:var(--border)}.chart text{fill:var(--muted);font-size:11px}.chart .value{fill:var(--text)}.chart .value,.delta{font-weight:600}.recipe img{width:100%;height:160px;object-fit:cover;border-radius:8px;margin-bottom:10px}.recipe details summary{cursor:pointer;color:var(--brand);font-weight:600;margin-top:8px}.auth-page{min-height:100vh;display:grid;place-items:center;padding:16px}.auth-card{width:100%;max-width:380px}.summary{display:flex;flex-direction:column;margin:6px 0 10px}.summary-row{display:grid;grid-template-columns:1fr auto;grid-column-gap:10px;column-gap:10px;padding:6px 0;border-bottom:1px solid var(--border);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.summary-row:last-child{border-bottom:none}.summary-row .small{grid-column:1/-1}.import-box{border:1px dashed var(--border);border-radius:10px;padding:12px 14px;background:var(--bg)}input.imported{background:var(--brand-soft);border-color:#b8dccb}.sub-field{color:var(--muted);font-weight:400;margin-top:-6px}.sub-field textarea{min-height:60px}.files{display:flex;flex-wrap:wrap;gap:10px}.file-thumb{display:flex;flex-direction:column;gap:4px;width:140px;font-size:.8rem}.file-thumb img{width:140px;height:100px;object-fit:cover;border-radius:8px}.file-chip,.file-thumb img{border:1px solid var(--border)}.file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:var(--surface);font-size:.85rem}.history-section{border-top:1px solid var(--border);padding-top:14px}.history-section h3{margin-bottom:10px}.cap{display:inline-block}h2.cap,p.cap{display:block}.cap:first-letter{text-transform:uppercase}.code{font-family:ui-monospace,Menlo,monospace;letter-spacing:.12em;font-size:1.1rem}.code-message{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 10px;color:var(--text)}button.link{background:none;border:0;padding:0;color:var(--brand);cursor:pointer;font:inherit;text-decoration:underline}