:root{--ink:#18352b;--green:#1e5843;--cream:#f5f4ed;--paper:#fffefa;--line:#dedfd4;--muted:#718077;--red:#b84438;--orange:#bf6d24;--yellow:#a78527;--shadow:0 10px 30px rgba(31,55,44,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:Pretendard,"Noto Sans KR",system-ui,sans-serif}.shell{width:min(760px,100%);min-height:100vh;margin:auto;padding:28px 22px 110px}.eyebrow{margin:0 0 5px;color:#4c7967;font-size:.76rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}h1,h2,h3,p{margin-top:0}.topbar,.form-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.topbar h1,.form-header h1{margin:0;font-size:clamp(1.55rem,6vw,2.15rem);letter-spacing:-.05em}.text-link,.form-header>a{color:var(--muted);text-decoration:none;font-weight:700}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:20px}.stat{border:1px solid transparent;border-radius:16px;padding:14px 5px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);cursor:pointer}.stat strong,.stat span{display:block}.stat strong{font-size:1.45rem}.stat span{margin-top:4px;font-size:.7rem;color:var(--muted)}.stat.selected{outline:2px solid var(--green)}.stat.danger strong{color:var(--red)}.stat.warning strong{color:var(--orange)}.stat.mild strong{color:var(--yellow)}.controls{display:grid;grid-template-columns:1fr auto;gap:9px}.search{display:flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line);border-radius:13px;padding:0 13px}.search input{border:0!important;padding-left:0!important;background:transparent!important}.controls select{width:125px}.list-head{display:flex;align-items:baseline;justify-content:space-between;margin:27px 2px 11px}.list-head h2{font-size:1rem;margin:0}.list-head span{font-size:.78rem;color:var(--muted)}.item-list{display:grid;gap:10px}.item-card{background:var(--paper);border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 5px 20px rgba(31,55,44,.04)}.item-main{display:grid;grid-template-columns:43px 1fr auto;gap:12px;align-items:center;padding:16px;color:inherit;text-decoration:none}.category-icon{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:#edf1e9;font-size:1.3rem}.item-copy{min-width:0}.item-title{display:flex;align-items:center;gap:7px}.item-title h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:1rem}.item-title span{flex:none;color:var(--muted);font-size:.75rem}.item-copy p{margin:5px 0 0;color:var(--muted);font-size:.75rem}.due{text-align:right}.due strong,.due span{display:block}.due strong{font-size:.76rem}.due span{margin-top:4px;color:var(--muted);font-size:.71rem}.due.expired strong{color:var(--red)}.due.urgent strong{color:var(--orange)}.due.soon strong{color:var(--yellow)}.quick-actions{display:flex;justify-content:flex-end;gap:5px;padding:8px 12px;border-top:1px solid #ecece4}.quick-actions form{margin:0}.quick-actions button,.telegram-card button,.date-shortcuts button{border:0;border-radius:9px;padding:8px 10px;background:#e7eee9;color:var(--green);font-weight:750;cursor:pointer}.quick-actions button.muted{background:transparent;color:var(--muted)}.telegram-card{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:22px;padding:17px;background:#e6eee8;border-radius:18px}.telegram-card strong{font-size:.9rem}.telegram-card p{margin:4px 0 0;color:var(--muted);font-size:.72rem}.fab{position:fixed;right:max(22px,calc((100vw - 716px)/2));bottom:22px;display:flex;align-items:center;gap:7px;padding:15px 20px;border-radius:16px;background:var(--green);color:white;text-decoration:none;font-weight:800;box-shadow:0 12px 28px rgba(30,88,67,.3)}.fab span{font-size:1.25rem}.form-header{justify-content:flex-start;gap:16px}.form-header>a{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--paper);font-size:1.3rem}.item-form{display:grid;gap:14px}.form-section{display:grid;gap:16px;padding:19px;background:var(--paper);border:1px solid var(--line);border-radius:20px}.accent-section{border-color:#c9d9cc;background:#f3f8f2}label{display:grid;gap:7px;font-size:.78rem;font-weight:800}label small{color:var(--muted);font-weight:500}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:11px;background:white;padding:12px;color:var(--ink);font:inherit;font-size:.92rem;outline:none}input:focus,select:focus,textarea:focus{border-color:#5b8976;box-shadow:0 0 0 3px rgba(91,137,118,.12)}.two-col,.quantity-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.quantity-row{grid-template-columns:2fr 1fr}.date-shortcuts{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.date-shortcuts button{padding:10px 3px;background:#deebe1}.primary{width:100%;border:0;border-radius:13px;background:var(--green);color:white;padding:14px;font:inherit;font-weight:800;cursor:pointer}.sticky-save{position:sticky;bottom:15px;box-shadow:0 10px 25px rgba(30,88,67,.25)}.login-card{width:min(430px,100%);margin:12vh auto 0;padding:30px;background:var(--paper);border:1px solid var(--line);border-radius:26px;box-shadow:var(--shadow)}.login-card h1{font-size:1.8rem;letter-spacing:-.05em}.brand-mark{display:grid;place-items:center;width:45px;height:45px;margin-bottom:22px;border-radius:14px;background:var(--green);color:white;font-weight:900}.stack{display:grid;gap:14px;margin-top:28px}.error,.toast.error{color:var(--red)}.toast{margin-bottom:15px;padding:12px 15px;border-radius:12px;background:white;font-size:.82rem}.toast.ok{color:var(--green)}.empty{text-align:center;padding:55px 20px;color:var(--muted)}.empty span{font-size:2.5rem}.empty h2{margin:12px 0 5px;color:var(--ink);font-size:1.05rem}.empty p{font-size:.8rem}
@media(max-width:480px){.shell{padding:22px 15px 105px}.summary{gap:5px}.stat{padding:12px 2px}.stat span{font-size:.62rem}.controls{grid-template-columns:minmax(0,1fr) 105px}.controls select{width:100%;min-width:0}.item-main{grid-template-columns:40px minmax(0,1fr) auto;padding:14px 12px;gap:9px}.category-icon{width:40px;height:40px}.quick-actions button{font-size:.7rem}.two-col{gap:8px}.date-shortcuts{grid-template-columns:1fr 1fr}.login-card{margin-top:7vh;padding:24px}}

.header-actions{display:flex;align-items:center;gap:10px}.header-actions form{margin:0}.admin-test{border:0;background:#e4ece6;color:var(--green);border-radius:8px;padding:6px 8px;font-size:.66rem;font-weight:800}.location-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin-top:10px}.location-button{min-width:0;border:1px solid var(--line);border-radius:13px;padding:9px 3px;background:var(--paper);color:var(--ink);cursor:pointer}.location-button b,.location-button span{display:block}.location-button b{font-size:1.25rem}.location-button span{overflow:hidden;margin-top:4px;font-size:.62rem;white-space:nowrap;text-overflow:ellipsis}.location-button.selected{border-color:var(--green);background:#e2eee6;box-shadow:0 0 0 1px var(--green)}
.item-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.food-tile{position:relative;min-width:0;background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:0 5px 20px rgba(31,55,44,.05)}.tile-main{display:flex;min-height:190px;padding:17px 8px 14px;align-items:center;flex-direction:column;color:inherit;text-align:center;text-decoration:none}.food-icon{display:grid;place-items:center;width:67px;height:67px;border-radius:20px;background:#edf3e9;font-size:2.25rem}.tile-main h3{width:100%;overflow:hidden;margin:11px 0 2px;font-size:.91rem;white-space:nowrap;text-overflow:ellipsis}.tile-quantity{margin:0 0 8px;color:var(--muted);font-size:.69rem}.tile-main .due{margin-top:auto;text-align:center}.tile-main .due strong{font-size:.72rem}.tile-main .due span{font-size:.67rem}.due.undated strong{color:var(--red)}.tile-done{position:absolute;right:7px;top:7px}.tile-done button{display:grid;place-items:center;width:27px;height:27px;border:0;border-radius:50%;background:#e5ede7;color:var(--green);font-weight:900;cursor:pointer}.bottom-actions{position:fixed;z-index:4;left:50%;bottom:14px;display:grid;grid-template-columns:repeat(3,1fr);width:min(560px,calc(100% - 28px));transform:translateX(-50%);overflow:hidden;border:1px solid var(--line);border-radius:18px;background:rgba(255,254,250,.96);box-shadow:0 12px 35px rgba(31,55,44,.18);backdrop-filter:blur(10px)}.bottom-actions a{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px;padding:10px 4px;color:var(--ink);font-size:.68rem;text-decoration:none}.bottom-actions b{font-size:1.1rem}.bottom-actions .primary-action{background:var(--green);color:white}
.scan-card{padding:30px 22px;background:var(--paper);border:1px solid var(--line);border-radius:22px;text-align:center}.scan-visual{display:grid;place-items:center;width:82px;height:82px;margin:0 auto 18px;border:2px dashed #79a08f;border-radius:23px;background:#edf5ef;color:var(--green);font-size:2.5rem}.scan-card h2{font-size:1.1rem}.scan-card>p,.scan-tips p,.result-help{color:var(--muted);font-size:.8rem;line-height:1.65}.file-picker{display:block;border:1px dashed #8eaa9d;border-radius:13px;padding:14px;background:#f3f7f2;color:var(--green);cursor:pointer}.file-picker input{position:absolute;width:1px;height:1px;opacity:0}.scan-tips{margin-top:14px;padding:18px;background:#e8efe8;border-radius:17px}.scan-tips h3{margin-bottom:5px;font-size:.86rem}.scan-tips p{margin:0}.result-list{display:grid;gap:8px}.result-list>div{display:flex;align-items:center;gap:12px;padding:13px;background:var(--paper);border:1px solid var(--line);border-radius:14px}.result-list>div>span{font-size:1.5rem}.result-list p{display:grid;margin:0}.result-list small{margin-top:3px;color:var(--muted)}.button-link{display:block;text-align:center;text-decoration:none}.urgent-strip{display:flex;gap:7px;overflow:auto;margin-bottom:18px;padding-bottom:4px}.urgent-strip span{flex:none;padding:8px 11px;border-radius:99px;background:#f4e8d8;font-size:.75rem}.recipe-grid{display:grid;gap:11px}.recipe-card{display:flex;gap:14px;padding:18px;background:var(--paper);border:1px solid var(--line);border-radius:18px}.recipe-icon{display:grid;place-items:center;flex:none;width:50px;height:50px;border-radius:15px;background:#edf3e9;font-size:1.6rem}.recipe-card h2{margin-bottom:5px;font-size:1rem}.recipe-card p{margin-bottom:7px;color:var(--muted);font-size:.78rem}.recipe-card small{color:#4b7966;font-size:.7rem}
@media(max-width:600px){.location-grid{grid-template-columns:repeat(4,1fr)}.item-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.food-icon{width:58px;height:58px;font-size:2rem}.tile-main{min-height:174px}.list-head span{font-size:.66rem}}
@media(max-width:370px){.item-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
