:root{color:#1d2a20;background:#f5f7f4;font-family:Inter,PingFang SC,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select,textarea{font:inherit}.shell{grid-template-columns:248px minmax(0,1fr);height:100dvh;display:grid;overflow:hidden}aside{color:#dce9df;background:#173f30;flex-direction:column;height:100dvh;padding:28px 18px;display:flex;overflow-y:auto}.brand{color:#fff;padding:8px 14px 38px;font-size:21px;font-weight:750}.brand small{color:#9fc2aa;letter-spacing:1px;margin-top:5px;font-size:10px;display:block}nav{gap:5px;display:grid}nav button{color:#c6d6ca;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:12px 14px}nav button:hover,.nav-active{color:#fff!important;background:#286047!important}.logout{color:#dce9df;cursor:pointer;background:0 0;border:1px solid #4c715f;border-radius:7px;margin-top:auto;padding:10px}main{width:100%;min-width:0;height:100dvh;margin:0;padding:34px 42px;overflow:hidden auto}header{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}h1{margin:0 0 6px;font-size:27px}h2{margin:0;font-size:16px}h3{margin:0;font-size:15px}header p,.card p,.section-head p{color:#718073;margin:0;font-size:13px}.primary,.secondary,.remove-row{cursor:pointer;border-radius:7px}.primary{color:#fff;background:#1d6b4f;border:0;padding:11px 16px;font-size:14px;font-weight:650}.primary:disabled{opacity:.65;cursor:wait}.secondary{color:#1d6b4f;background:#fff;border:1px solid #cdd8cf;padding:10px 14px}.text-button{color:#1d6b4f;cursor:pointer;background:0 0;border:0}.danger-button{color:#b13c32;cursor:pointer;background:0 0;border:0;margin-left:10px}.metrics{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px;display:grid}.metric,.card{background:#fff;border:1px solid #e4e9e4;border-radius:9px}.metric{color:#1d2a20;text-align:left;cursor:pointer;border:1px solid #e4e9e4;width:100%;padding:20px}.metric:hover{border-color:#8eb8a0;box-shadow:0 8px 20px #173f3010}.metric span{color:#718073;font-size:13px;display:block}.metric strong{margin:12px 0 8px;font-size:30px;display:block}.metric small{color:#1d6b4f;font-size:12px}.card{padding:22px}.card-head,.toolbar{justify-content:space-between;align-items:center;display:flex}.toolbar{margin-bottom:18px}.page-toolbar{flex-wrap:wrap;justify-content:flex-start;gap:10px}.page-toolbar>input{flex:230px;min-width:180px}.page-toolbar>select,.page-toolbar>button{white-space:nowrap;flex:none}.toolbar input,.toolbar select,.login-card input,.recipe-modal input,.recipe-modal select,.recipe-modal textarea{background:#fff;border:1px solid #d9e2da;border-radius:7px;padding:10px}.toolbar input{width:260px}table{border-collapse:collapse;width:100%;font-size:13px}th{color:#718073;text-align:left;border-bottom:1px solid #e7ece7;padding:12px;font-weight:600}td{border-bottom:1px solid #edf0ed;padding:14px 12px}tr:last-child td{border-bottom:0}.recipe-cell,.user-cell{align-items:center;gap:11px;display:flex}.recipe-actions{white-space:nowrap;min-width:230px}.recipe-actions button{margin-right:8px}.recipe-actions .danger-button{margin-left:0;margin-right:0}.compact-action{padding:6px 11px;font-size:12px}.recipe-cell img{object-fit:cover;background:#dfe9e1;border-radius:5px;width:40px;height:34px}.user-cell img{object-fit:cover;background:#edf0ed;border-radius:50%;width:32px;height:32px}.status{border-radius:5px;padding:4px 8px;font-size:12px}.published{color:#1e6d45;background:#e2f3e7}.draft{color:#a36410;background:#fff1d8}.offline{color:#69736c;background:#f0f1f0}.page-note{color:#718073;margin:18px 0 0}.pagination{color:#526257;justify-content:flex-end;align-items:center;gap:10px;margin-top:18px;font-size:14px;display:flex}.pagination label{align-items:center;gap:6px;display:flex}.pagination select{background:#fff;border:1px solid #d9e2da;border-radius:7px;min-width:66px;padding:7px 8px}.date-range-picker{color:#536057;white-space:nowrap;flex:none;align-items:center;gap:7px;font-size:14px;display:flex;position:relative}.date-range-label{color:#506057;font-weight:600}.date-range-separator{color:#8a978e}.date-trigger{color:#27372d;cursor:pointer;text-align:left;background:#fff;border:1px solid #cfded3;border-radius:8px;justify-content:space-between;align-items:center;min-width:142px;padding:10px 12px;display:flex;box-shadow:0 1px 1px #173f3008}.date-trigger-icon{color:#1d6b4f;font-size:14px;line-height:1}.date-trigger:hover,.date-trigger.active{background:#f7fcf8;border-color:#5a9c7d;box-shadow:0 0 0 3px #1d6b4f16}.calendar-popover{z-index:20;background:#fff;border:1px solid #d8e4db;border-radius:12px;width:302px;padding:14px;position:absolute;top:calc(100% + 9px);left:68px;box-shadow:0 16px 38px #173f3022}.calendar-head{grid-template-columns:36px 1fr 36px;align-items:center;margin-bottom:11px;display:grid}.calendar-head strong{color:#1d2a20;text-align:center;font-size:14px}.calendar-head button{color:#1d6b4f;cursor:pointer;background:0 0;border:0;border-radius:7px;width:32px;height:32px;font-size:25px;line-height:1}.calendar-head button:hover{background:#eaf5ee}.calendar-week,.calendar-days{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.calendar-week{color:#89968d;text-align:center;margin-bottom:5px;font-size:12px}.calendar-days button{color:#26352b;cursor:pointer;background:0 0;border:0;border-radius:7px;height:33px;font-size:13px}.calendar-days button:hover{color:#146043;background:#e6f4eb}.calendar-days button.other-month{color:#b8c1ba}.calendar-days button.in-range{color:#146043;background:#e6f4eb;border-radius:0}.calendar-days button.selected{color:#fff;background:#1d6b4f;border-radius:7px;font-weight:700}.calendar-foot{border-top:1px solid #edf1ee;justify-content:space-between;margin-top:11px;padding-top:10px;display:flex}.calendar-foot button{color:#1d6b4f;cursor:pointer;background:0 0;border:0;padding:5px 4px;font-size:13px}.toolbar-clear{color:#537060;padding:10px 7px}.review-hint{max-width:560px;margin:0 0 0 6px!important}.review-grid{gap:16px;display:grid}.review-card{background:#fff;border:1px solid #e4e9e4;border-radius:10px;grid-template-columns:180px minmax(0,1fr);display:grid;overflow:hidden}.review-cover{color:#1d6b4f;cursor:zoom-in;text-align:center;background:#f3f6f3;border:0;grid-template-rows:360px auto;width:180px;padding:6px;display:grid}.review-cover img{object-fit:contain;object-position:center;width:100%;height:360px;min-height:0;display:block}.review-cover span{padding:7px 0 2px;font-size:12px}.image-preview-backdrop{z-index:80;cursor:zoom-out;background:#0f1a14d1;place-items:center;padding:32px;display:grid;position:fixed;inset:0}.image-preview-backdrop img{object-fit:contain;background:#fff;max-width:calc(100vw - 64px);max-height:calc(100vh - 64px)}.review-content{gap:14px;padding:20px;display:grid}.review-title{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.review-title h3{font-size:18px}.review-title p{color:#718073;margin:6px 0 0;font-size:13px}.review-title .status{white-space:nowrap;margin-left:6px;display:inline-block}.review-meta{background:#f6f8f6;border-radius:7px;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0;padding:12px;display:grid}.review-meta div{min-width:0}.review-meta dt{color:#718073;margin-bottom:4px;font-size:12px}.review-meta dd{color:#27332b;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.review-meta a{color:#1d6b4f}.review-steps{color:#354238;gap:7px;margin:0;padding-left:22px;font-size:13px;line-height:1.55;display:grid}.review-extracted{color:#385546;background:#f2f8f3;border-left:3px solid #5a9c7d;border-radius:6px;margin:0;padding:10px 12px;font-size:13px;line-height:1.55}.review-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.review-actions .danger-button{margin-left:0}.modal-backdrop{background:#173f3055;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:10px;gap:16px;width:min(460px,100%);padding:24px;display:grid}.recipe-modal{width:min(820px,100%);max-height:calc(100vh - 40px);overflow:auto}.recipe-modal>button.primary:last-child{z-index:4;border-radius:8px 8px 0 0;width:100%;margin:0;padding:14px 18px;position:sticky;bottom:-24px;box-shadow:0 -10px 24px #173f3018}.recipe-modal .card-head{z-index:3;background:#fff;border-bottom:1px solid #e7ece7;margin:-24px -24px 0;padding:24px 24px 16px;position:sticky;top:-24px;box-shadow:0 8px 14px -16px #173f30}.source-review-note{color:#8a5a0a;background:#fff8e8;border:1px solid #f0d49d;border-radius:7px;margin:0;padding:10px 12px;font-size:13px}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.recipe-modal label,.login-card label,.cover-field{gap:7px;font-size:13px;font-weight:650;display:grid}.cover-input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.cover-picker{color:#1d6b4f;text-align:left;cursor:pointer;background:#f7fbf8;border:1px dashed #a9c7b3;border-radius:7px;grid-template-columns:96px minmax(0,1fr);align-items:center;gap:10px;min-height:76px;padding:8px;display:grid}.cover-picker:hover{background:#eff8f1;border-color:#1d6b4f}.cover-picker:disabled{cursor:wait;opacity:.65}.cover-picker img{object-fit:cover;background:#dfe9e1;border-radius:5px;grid-row:1/span 2;width:96px;height:58px}.cover-picker small{color:#718073;font-weight:400}.recipe-section{border-top:1px solid #e7ece7;gap:10px;padding-top:18px;display:grid}.section-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.section-head p{margin-top:5px;font-size:12px}.item-list{gap:8px;display:grid}.item-row{grid-template-columns:minmax(0,1fr) 118px 88px auto;align-items:center;gap:8px;display:grid}.step-row{border:1px solid #e4e9e4;border-radius:7px;grid-template-columns:76px minmax(0,1fr) 120px auto;align-items:center;gap:10px;padding:12px;display:grid}.step-row b{font-size:13px}.step-row textarea{resize:vertical;min-height:76px}.step-row label{gap:7px;font-size:12px;display:grid}.water-toggle{justify-self:stretch;height:42px}.water-input{align-items:center;gap:6px;display:flex}.water-input input{width:72px;min-width:0}.remove-row{color:#ad3d32;background:#fff;border:1px solid #efc9c4;padding:9px 10px}.login{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:#fff;border:1px solid #e4e9e4;border-radius:9px;gap:16px;width:min(380px,100%);padding:30px;display:grid}.login-card p{color:#718073;margin:-7px 0 8px}.notice{border:1px solid #f2c9c2;border-radius:7px;margin:0 0 18px;padding:12px 14px;font-size:14px}.error{color:#a23323;background:#fff0ee}.success{color:#1e6d45;background:#eef9f0;border-color:#b8dcc3}.loading{color:#718073}.loading-panel{color:#647369;justify-content:center;align-items:center;gap:10px;min-height:180px;font-size:14px;display:flex}.loading-dot{border:2px solid #bcd5c4;border-top-color:#1d6b4f;border-radius:50%;width:11px;height:11px;animation:.75s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.rules-table{table-layout:fixed}.rules-table th:first-child,.rules-table td:first-child{width:16%}.rules-table th:nth-child(2),.rules-table td:nth-child(2){width:34%}.rules-table th:nth-child(n+3),.rules-table td:nth-child(n+3){white-space:nowrap;width:12.5%}.rule-aliases{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=800px){body{overflow:auto}.shell{grid-template-columns:1fr;height:auto;min-height:100vh;overflow:visible}aside{flex-direction:row;align-items:center;height:auto;padding:12px;overflow:visible}.brand{padding:0 14px}.brand small{display:none}nav{display:flex;overflow:auto}nav button{white-space:nowrap}main{height:auto;min-height:calc(100vh - 72px);padding:24px 18px;overflow:visible}.metrics{grid-template-columns:1fr 1fr}.metric strong{font-size:24px}.card{overflow:auto}}@media (width<=600px){.form-grid,.metrics{grid-template-columns:1fr}.page-toolbar{align-items:stretch}.page-toolbar>input{flex-basis:100%;width:100%}.pagination{flex-wrap:wrap;justify-content:flex-start}.date-range-picker{flex:100%}.date-trigger{flex:1 1 0;min-width:0}.calendar-popover{width:min(302px,100vw - 54px);left:0}.item-row{grid-template-columns:minmax(0,1fr) 82px 72px}.item-row .remove-row{grid-column:1/-1}.step-row{grid-template-columns:1fr}.step-row .remove-row{justify-self:start}.cover-picker{grid-template-columns:84px minmax(0,1fr)}.cover-picker img{width:84px}.review-card{grid-template-columns:1fr}.review-cover{grid-template-rows:260px auto;width:100%;height:auto;min-height:0}.review-cover img{height:260px}.review-title,.review-meta{grid-template-columns:1fr}.review-title{display:grid}.review-title .status{margin:0 6px 0 0}}
