:root{--bg:#f3f6f7;--surface:#fff;--ink:#1d2b33;--ink-soft:#5d6b73;--ink-faint:#9aa7ae;--line:#e3e9ec;--line-soft:#eef2f4;--lunch-color:#f18101;--salad-color:#6fb43a;--dinner-color:#13989d;--sun-color:#d0503c;--sat-color:#3a6fb5;--brand:#ff7e11;--brand-strong:#e86a00;--brand-tint:#fff1e4;--on-brand:#202124;--on-brand-soft:#2021249e;--on-brand-hover:#2021241a;--primary-color:var(--brand);--border-color:var(--line)}*{box-sizing:border-box}body,html{width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;flex-direction:column;font-family:Pretendard,sans-serif;display:flex}button:focus-visible,a:focus-visible{outline:3px solid var(--dinner-color);outline-offset:2px}.meal-lunch{--meal:var(--lunch-color);--meal-tint:#fff1e1;--meal-deep:#9c4a00}.meal-salad{--meal:var(--salad-color);--meal-tint:#edf6e3;--meal-deep:#3b6a1b}.meal-dinner{--meal:var(--dinner-color);--meal-tint:#e1f2f2;--meal-deep:#0a6366}.swal2-container.swal2-backdrop-show{background:#1d2b3373!important}.swal2-popup{color:var(--ink)!important;border-radius:24px!important;padding:22px!important;font-family:Pretendard,sans-serif!important;position:relative!important;box-shadow:0 24px 60px #1d2b3338!important}.swal2-title{letter-spacing:-.02em;color:var(--ink)!important;padding:4px 0 0!important;font-size:19px!important;font-weight:700!important}.swal2-html-container{color:var(--ink-soft)!important;margin:0!important;padding:0!important;font-size:15px!important;line-height:1.6!important;overflow:visible!important}.swal2-actions{margin:22px 0 0!important}.swal2-styled.swal2-confirm{min-width:140px;height:48px;background:var(--brand)!important;color:var(--on-brand)!important;box-shadow:none!important;border-radius:999px!important;margin:0!important;padding:0 28px!important;font-family:inherit!important;font-size:15px!important;font-weight:600!important}.swal2-styled.swal2-confirm:hover{background:var(--brand-strong)!important}.swal2-styled.swal2-confirm:focus-visible{outline:3px solid var(--dinner-color);outline-offset:3px}.swal2-close{width:36px!important;height:36px!important;color:var(--ink-soft)!important;background:var(--line-soft)!important;border-radius:50%!important;margin:0!important;font-size:0!important;transition:background-color .2s,color .2s!important;position:absolute!important;top:26px!important;right:22px!important}.swal2-close svg{width:18px;height:18px}.swal2-close:hover{background:var(--line)!important;color:var(--ink)!important}.swal2-close:focus-visible{box-shadow:0 0 0 3px var(--dinner-color)!important}.popup-head{text-align:left;align-items:center;gap:12px;margin-bottom:16px;padding-right:44px;display:flex}.popup-head-icon{background:var(--line-soft);width:44px;height:44px;color:var(--ink);border-radius:14px;flex-shrink:0;place-items:center;display:grid}.popup-head-icon svg{width:22px;height:22px}.popup-head-text{flex-direction:column;min-width:0;display:flex}.popup-head-title{letter-spacing:-.02em;color:var(--ink);font-size:19px;font-weight:700;line-height:1.3}.popup-head-sub{color:var(--ink-faint);margin-top:2px;font-size:13px}.notice{text-align:center;flex-direction:column;align-items:center;padding-top:8px;display:flex}.notice.tone-success{--meal:var(--dinner-color);--meal-tint:#e1f2f2;--meal-deep:#0a6366}.notice.tone-error{--meal:#c8412d;--meal-tint:#fbecea;--meal-deep:#b03a2a}.notice-icon{background:var(--meal-tint);width:68px;height:68px;color:var(--meal);border-radius:50%;place-items:center;margin-bottom:16px;display:grid;position:relative}.notice-icon>svg{width:32px;height:32px}.notice-badge{background:var(--meal);color:#fff;width:26px;height:26px;box-shadow:0 0 0 3px var(--surface);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:-2px;right:-2px}.notice-badge svg{stroke-width:3px;width:14px;height:14px}.notice-title{letter-spacing:-.02em;color:var(--ink);margin:0;font-size:19px;font-weight:700}.notice-text{max-width:26em;color:var(--ink-soft);white-space:pre-line;word-break:keep-all;margin:6px 0 0;font-size:15px}.loading-overlay{justify-content:center;align-items:center;min-height:200px;display:flex}.calendar-wrapper>.loading-overlay{z-index:10;background-color:#f3f6f7b3;position:absolute;inset:0}.this-month-btn{border:1px solid var(--line);background:var(--surface);height:36px;color:var(--ink);font:inherit;white-space:nowrap;cursor:pointer;border-radius:999px;padding:0 14px;font-size:13px;font-weight:600;transition:background-color .2s}.this-month-btn:hover:not(:disabled){background:var(--line-soft)}.this-month-btn:active:not(:disabled){background:var(--line)}.this-month-btn:disabled{color:var(--ink-faint);cursor:default}.loader{width:132px;height:132px;display:block;overflow:visible}.loader-base{fill:var(--surface);stroke:var(--line);stroke-width:1.5px;filter:drop-shadow(0 10px 18px #1d2b3314)}.loader-ring{transform-origin:100px 100px;animation:1.6s linear infinite loader-spin}.loader-ring circle{fill:none;stroke-width:7px;stroke-linecap:round}.loader .lunch{stroke:var(--lunch-color)}.loader .salad{stroke:var(--salad-color)}.loader .dinner{stroke:var(--dinner-color)}.loader .t1{fill:var(--dinner-color)}.loader .t2{fill:var(--lunch-color)}.loader .t3{fill:var(--salad-color)}.loader .t4{fill:var(--ink)}@keyframes loader-spin{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}.boot-loader{z-index:950;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:18px;transition:opacity .2s;display:flex;position:fixed;inset:0}.boot-loader.is-hidden{opacity:0;pointer-events:none}.boot-loader-text{color:var(--ink-soft);margin:0;font-size:15px;font-weight:600}.swal2-container.is-loading-container{background:#f3f6f7b3!important;top:56px!important}.swal2-popup.is-loading-popup{box-shadow:none!important;background:0 0!important;padding:0!important}.loading-popup{flex-direction:column;align-items:center;gap:18px;display:flex}.loading-text{color:var(--ink-soft);word-break:keep-all;margin:0;font-size:15px;font-weight:600}@media (prefers-reduced-motion:reduce){.loader-ring{animation-duration:6s}}.top-header{height:56px;color:var(--on-brand);background:var(--brand);z-index:900;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 16px;display:flex;position:sticky;top:0}.header-left{align-items:center;gap:14px;display:flex}.menu-toggle-btn{cursor:pointer;color:var(--on-brand);background:0 0;border:none;border-radius:8px;align-items:center;margin-left:-6px;padding:6px;display:flex}.menu-toggle-btn:hover{background:var(--on-brand-hover)}.header-title{min-width:0;color:var(--on-brand);letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:19px;font-weight:600;overflow:hidden}.header-right{--avatar-btn-outset:8px;align-items:center;display:flex;position:relative}.header-icon-btn{color:var(--on-brand);border-radius:8px;align-items:center;padding:5px;text-decoration:none;transition:background-color .2s;display:flex}.header-icon-btn+.header-icon-btn{margin-left:1px}.header-icon-btn+.header-avatar-btn{margin-left:8px}.header-icon-btn svg{width:18px;height:18px}.header-icon-btn:hover,.header-icon-btn[aria-current=page]{background:var(--on-brand-hover)}.header-divider{background:#20212440;width:1px;height:20px;margin:0 8px 0 6px}@media (width<=520px){.header-icon-btn:not([data-menu-id=settings]),.header-divider{display:none}}.header-avatar-btn{cursor:pointer;margin-right:calc(-1 * var(--avatar-btn-outset));font:inherit;background-color:#0000;border:none;border-radius:999px;align-items:center;gap:10px;padding:4px 16px 4px 8px;transition:background-color .2s;display:flex}.header-avatar-btn:hover{background-color:var(--on-brand-hover)}.header-avatar-icon{width:36px;height:36px;color:var(--on-brand);background-color:#fff;border-radius:50%;justify-content:center;align-items:center;padding:7px;display:flex}.header-user-name{color:var(--on-brand);font-size:14px;font-weight:500}.header-user-text{flex-direction:column;align-items:flex-start;min-width:0;line-height:1.2;display:flex}.header-user-sub{text-overflow:ellipsis;white-space:nowrap;max-width:140px;color:var(--on-brand);opacity:.75;font-size:11px;font-weight:400;overflow:hidden}.header-user-sub:empty{display:none}.user-dropdown-menu{top:calc(100% + 6px);right:calc(-1 * var(--avatar-btn-outset));background:var(--surface);border:1px solid var(--line);z-index:2000;border-radius:14px;min-width:260px;animation:.2s slideDown;display:none;position:absolute;overflow:hidden;box-shadow:0 12px 32px #1d2b3324}.user-dropdown-menu.show{display:block}@keyframes slideDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.dropdown-header{align-items:center;gap:14px;padding:18px;display:flex}.dropdown-avatar-large{background-color:var(--line-soft);width:46px;height:46px;color:var(--ink-soft);border:1px solid var(--line);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.header-avatar-icon.has-photo{padding:0;overflow:hidden}.dropdown-avatar-large.has-photo{overflow:hidden}.avatar-photo{object-fit:cover;width:100%;height:100%}.dropdown-avatar-large svg{width:24px;height:24px}.dropdown-user-info{flex-direction:column;display:flex;overflow:hidden}.dropdown-name{color:var(--ink);font-size:16px;font-weight:700}.dropdown-account{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:13px;overflow:hidden}.dropdown-account:empty{display:none}.dropdown-dept{color:var(--ink-soft);margin-top:3px;font-size:13px}.dropdown-list{border-top:1px solid var(--line-soft);margin:0;padding:6px;list-style:none}.dropdown-item{color:var(--ink-soft);border-radius:10px;align-items:center;gap:10px;padding:11px 12px;font-size:14px;font-weight:600;text-decoration:none;transition:background-color .2s,color .2s;display:flex}.dropdown-item svg{stroke:currentColor}.settings-item:hover{background-color:var(--line-soft);color:var(--ink)}.logout-item:hover{color:#b03a2a;background-color:#fbecea}.side-logout-btn{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink-soft);font:inherit;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:8px;margin-bottom:14px;padding:12px;font-size:15px;font-weight:600;transition:background-color .2s,color .2s,border-color .2s;display:flex}.side-logout-btn:hover{color:#b03a2a;background-color:#fbecea;border-color:#f1c9c2}.sidebar{background:var(--surface);z-index:1000;flex-direction:column;width:280px;height:100%;transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:12px 0 40px #1d2b3329}.sidebar-header{border-bottom:1px solid var(--line-soft);flex-shrink:0;align-items:center;gap:12px;height:56px;margin-bottom:10px;padding:0 10px 0 20px;display:flex}.sidebar-brand{border-radius:4px;align-items:center;display:flex}.sidebar-header-logo{mix-blend-mode:multiply;width:auto;height:20px;display:block}.sidebar-brand-divider{background:var(--line);width:1px;height:16px}.sidebar-header-title{letter-spacing:-.02em;color:var(--ink);flex:1;font-size:15px;font-weight:700}.sidebar-close-btn{width:36px;height:36px;color:var(--ink-faint);cursor:pointer;background:0 0;border:none;border-radius:10px;place-items:center;transition:background-color .2s,color .2s;display:grid}.sidebar-close-btn:hover{background:var(--line-soft);color:var(--ink)}.sidebar-footer{padding:20px 20px 16px}.copyright-text{border-top:1px solid var(--line);color:var(--ink-faint);text-align:center;margin:12px -20px 0;padding:16px 20px 0;font-size:11px}.sidebar-footer .app-version{color:var(--ink-faint);opacity:.8;text-align:center;margin-top:2px;font-size:11px}.sidebar-overlay{z-index:999;opacity:0;visibility:hidden;background:#1d2b3373;transition:all .3s;position:fixed;inset:0}.sidebar-overlay.show{opacity:1;visibility:visible}.page-content{flex:1;min-height:0;padding-top:2px;position:relative}.page-content.is-scroll{scrollbar-gutter:stable both-edges;-webkit-overflow-scrolling:touch;overflow-y:auto}.menu-list{flex:1;margin:0;padding:4px 12px 12px;list-style:none;overflow-y:auto}.menu-icon{stroke:currentColor;stroke-width:2px;fill:none;width:20px;height:20px}.menu-group+.menu-group{margin-top:4px}.menu-group-btn{width:100%;min-height:44px;color:var(--ink);font:inherit;letter-spacing:-.01em;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:12px;align-items:center;gap:12px;padding:8px 10px 8px 8px;font-size:15px;font-weight:700;transition:background-color .2s;display:flex}.menu-group-btn:hover{background:#1d2b330a}.menu-group-icon{width:20px;height:20px;color:var(--ink-soft);flex-shrink:0;place-items:center;transition:color .2s;display:grid}.menu-group-icon .menu-icon{width:20px;height:20px}.menu-link-item a.menu-group-btn{box-sizing:border-box;text-decoration:none}.menu-link-item.has-active .menu-group-icon,.menu-group.has-active .menu-group-icon{color:var(--brand-strong)}.menu-group-label{flex:1;min-width:0}.menu-chevron{width:18px;height:18px;color:var(--ink-faint);flex-shrink:0;transition:transform .25s}.menu-group.is-open .menu-chevron{transform:rotate(90deg)}.menu-sub-wrap{grid-template-rows:0fr;transition:grid-template-rows .25s;display:grid}.menu-group.is-open .menu-sub-wrap{grid-template-rows:1fr}.menu-sub{min-height:0;padding:0 0 0 17px;overflow:hidden}.menu-sub-inner{margin:4px 0 6px;padding-left:14px;list-style:none;position:relative}.menu-sub-inner:before{content:"";background:var(--line);border-radius:1px;width:2px;position:absolute;top:4px;bottom:4px;left:0}.menu-item{position:relative}.menu-item+.menu-item{margin-top:2px}.menu-item a{min-height:40px;color:var(--ink-soft);border-radius:10px;align-items:center;padding:0 12px 0 9px;font-size:15px;font-weight:600;text-decoration:none;transition:background-color .2s,color .2s;display:flex}.menu-item-icon{flex-shrink:0;width:20px;height:20px;margin-right:10px}.menu-item a:hover{color:var(--ink);background:#1d2b330a}.menu-item.active a{background:var(--brand-tint);color:var(--brand-strong);font-weight:700}.menu-item.active:before{content:"";background:var(--brand);border-radius:1px;width:2px;position:absolute;top:8px;bottom:8px;left:-14px}@media (prefers-reduced-motion:reduce){.menu-sub-wrap,.menu-chevron{transition:none}}.top-header button:focus-visible,.top-header a:focus-visible{outline-color:var(--on-brand)}.menu-tabs{background:var(--line-soft);scrollbar-width:none;border-radius:999px;gap:2px;width:fit-content;max-width:100%;margin:0 auto 12px;padding:4px;display:flex;overflow-x:auto}.menu-tab{color:var(--ink-soft);font:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:600;transition:background-color .2s,color .2s,box-shadow .2s;display:flex}.menu-tab:hover{color:var(--ink)}.menu-tab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #1d2b3324}.tab-dot{background:var(--dinner-color);border-radius:50%;width:6px;height:6px}.viewer{position:relative}.menu-image-frame{touch-action:none;border:1px solid var(--line);background-color:var(--bg);border-radius:14px;width:100%;margin:0 auto;display:block;position:relative;overflow:hidden}.viewer-nav,.viewer-zoom{z-index:2;background:#fffffff0;position:absolute;box-shadow:0 2px 12px #1d2b332e}.viewer-nav{width:42px;height:42px;color:var(--ink);cursor:pointer;border:none;border-radius:50%;place-items:center;transition:opacity .2s,transform .1s;display:grid;top:50%;transform:translateY(-50%)}.viewer-nav svg{width:22px;height:22px}.viewer-nav.prev{left:10px}.viewer-nav.next{right:10px}.viewer-nav:active{transform:translateY(-50%)scale(.94)}.viewer-nav:disabled{opacity:0;pointer-events:none}.viewer-zoom{border-radius:999px;gap:2px;padding:4px;display:flex;bottom:10px;right:10px}.viewer-zoom button{width:34px;height:34px;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:50%;place-items:center;display:grid}.viewer-zoom button:hover{background:var(--line-soft)}.viewer-zoom svg{width:18px;height:18px}.viewer-nav:focus-visible,.viewer-zoom button:focus-visible,.menu-tab:focus-visible{outline:3px solid var(--dinner-color);outline-offset:2px}.menu-image-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;margin-top:10px;display:flex}.menu-image-hint{color:var(--ink-faint);text-align:left;align-items:center;gap:6px;font-size:12px;display:flex}.menu-image-hint svg{flex-shrink:0;width:14px;height:14px}.calendar-wrapper{flex:1;width:100%;min-height:0;position:relative}#calendar{width:100%;height:100%;padding:6px 12px 12px;overflow:hidden}.fc{--fc-border-color:var(--line-soft);--fc-page-bg-color:var(--surface);--fc-neutral-bg-color:var(--bg);--fc-today-bg-color:transparent;--fc-small-font-size:12px}.fc .fc-scrollgrid{background:var(--surface);border-radius:16px;overflow:hidden;box-shadow:0 8px 24px #1d2b330d;border:1px solid var(--line)!important}.fc .fc-scrollgrid-section>td,.fc .fc-scrollgrid-section>th{border:none}.fc .fc-col-header-cell{border-color:#0000;padding:10px 0 8px;border-bottom:1px solid var(--line)!important}.fc .fc-col-header-cell-cushion{color:var(--ink-soft);font-size:13px;font-weight:600;text-decoration:none}.fc .fc-col-header-cell.fc-day-sun .fc-col-header-cell-cushion{color:var(--sun-color)}.fc .fc-col-header-cell.fc-day-sat .fc-col-header-cell-cushion{color:var(--sat-color)}.fc .fc-daygrid-day-frame{min-height:134px}.fc .fc-daygrid-day-top{padding-top:6px;flex-direction:column!important;justify-content:center!important;align-items:center!important}.fc .fc-daygrid-day-number{max-width:100%;color:var(--ink);padding:2px;text-decoration:none!important}.day-content-wrapper{flex-direction:column;align-items:center;max-width:100%;display:flex}.day-num-circle{border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;padding-bottom:1px;font-size:14px;font-weight:600;line-height:1;display:flex}.fc-day-sun .day-num-circle{color:var(--sun-color)}.fc-day-sat .day-num-circle{color:var(--sat-color)}.fc-day-holiday .day-num-circle{color:var(--sun-color)}.fc-holiday-name{max-width:100%;color:var(--sun-color);text-align:center;word-break:keep-all;overflow-wrap:anywhere;font-size:11px;line-height:1.25;display:block}.fc .fc-day-today .day-num-circle{background-color:var(--brand);color:var(--on-brand)}.fc-day-disabled,.fc-day-closed{pointer-events:none!important;background:#fafbfc!important}.fc-day-disabled .day-num-circle{opacity:.6}.fc .fc-day-other .fc-daygrid-day-top{opacity:1}.fc .fc-day-other .day-num-circle{opacity:.55}.fc-week-badge{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;margin-top:4px;padding:1px 8px;font-size:11px;font-weight:600;line-height:1.5}.fc .meal-event{cursor:pointer;background:var(--meal-tint)!important;box-shadow:none!important;border:none!important;border-radius:8px!important;margin:0 5px 4px!important;padding:5px 6px!important}.fc .meal-event .fc-event-main{justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:600;line-height:1.2;display:flex;overflow:hidden;color:var(--meal-deep)!important}.meal-event-icon{color:var(--meal);flex-shrink:0;display:grid}.meal-event-icon svg{stroke-width:2.4px;width:15px;height:15px}.meal-event-past{opacity:.65}.fc-event-title,.fc-event-title-container{box-shadow:none!important;-webkit-touch-callout:none!important;-webkit-tap-highlight-color:transparent!important;border:0!important;outline:none!important;text-decoration:none!important}.fc .fc-daygrid-more-link{color:var(--ink-soft);font-size:12px}.fc .fc-scroller{scrollbar-width:thin;scrollbar-color:var(--line) transparent}.fc .fc-scrollgrid-section-header .fc-scroller{scrollbar-color:transparent transparent}.fc .fc-toolbar.fc-header-toolbar{justify-content:center;align-items:center;min-height:44px;display:flex;position:relative;margin-bottom:6px!important}.fc .fc-toolbar-chunk:first-child,.fc .fc-toolbar-chunk:last-child{align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.fc .fc-toolbar-chunk:first-child{left:0}.fc .fc-toolbar-chunk:last-child{right:0}.fc .fc-toolbar-chunk:nth-child(2){justify-content:center;align-items:center;gap:2px;display:flex}.fc .fc-toolbar-title{letter-spacing:-.02em;white-space:nowrap;text-align:center;font-variant-numeric:tabular-nums;min-width:128px;color:var(--ink)!important;margin:0!important;font-size:21px!important;font-weight:700!important}.fc .fc-button{font-family:inherit;transition:background-color .2s;box-shadow:none!important}.fc .fc-prev-button,.fc .fc-next-button{justify-content:center;align-items:center;display:flex;color:var(--ink)!important;background-color:#0000!important;border:none!important;border-radius:50%!important;width:40px!important;height:40px!important;margin:0!important;padding:0!important}.fc .fc-today-button,.fc .fc-meal-button,.fc .fc-salad-button{white-space:nowrap;justify-content:center;align-items:center;display:flex;background-color:var(--surface)!important;border:1px solid var(--line)!important;height:36px!important;color:var(--ink)!important;border-radius:999px!important;padding:0 14px!important;font-size:13px!important;font-weight:600!important}.fc .fc-meal-button{border-right:none!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;margin:0!important;padding:0 12px 0 14px!important}.fc .fc-salad-button{border-top-left-radius:0!important;border-bottom-left-radius:0!important;margin:0!important;padding:0 14px 0 12px!important}.fc .fc-prev-button:hover,.fc .fc-next-button:hover,.fc .fc-meal-button:hover,.fc .fc-salad-button:hover,.fc .fc-today-button:hover{background-color:var(--line-soft)!important}.fc .fc-prev-button:active,.fc .fc-next-button:active,.fc .fc-meal-button:active,.fc .fc-salad-button:active,.fc .fc-today-button:active{background-color:var(--line)!important}.fc .fc-today-button:disabled{opacity:1;cursor:default;color:var(--ink-faint)!important}.fc .fc-icon{vertical-align:middle}.fc .fc-meal-button:before,.fc .fc-salad-button:before{content:"";width:15px;height:15px;-webkit-mask:var(--btn-icon) center / contain no-repeat;-webkit-mask:var(--btn-icon) center / contain no-repeat;mask:var(--btn-icon) center / contain no-repeat;background-color:currentColor;flex-shrink:0;margin-right:6px}.fc .fc-meal-button{--btn-icon:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2.2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M2%203h6a4%204%200%200%201%204%204v14a3%203%200%200%200-3-3H2z'/%3E%3Cpath%20d='M22%203h-6a4%204%200%200%200-4%204v14a3%203%200%200%201%203-3h7z'/%3E%3C/svg%3E")}.fc .fc-salad-button{--btn-icon:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='black'%20stroke-width='2.2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M7%2021h10'/%3E%3Cpath%20d='M12%2021a9%209%200%200%200%209-9H3a9%209%200%200%200%209%209Z'/%3E%3Cpath%20d='M11.38%2012a2.4%202.4%200%200%201-.4-4.77%202.4%202.4%200%200%201%203.2-2.77%202.4%202.4%200%200%201%203.47-.63%202.4%202.4%200%200%201%203.37%203.37%202.4%202.4%200%200%201-1.1%203.7%202.51%202.51%200%200%201%20.03%201.1'/%3E%3Cpath%20d='m13%2012%204-4'/%3E%3Cpath%20d='M10.9%207.25A3.99%203.99%200%200%200%204%2010c0%20.73.2%201.41.54%202'/%3E%3C/svg%3E")}.fc-view-harness{will-change:transform}.smooth-transition{transition:transform .3s cubic-bezier(.2,.8,.2,1)}.swipe-next-anm{animation:.4s cubic-bezier(.165,.84,.44,1) slideInNext}.swipe-prev-anm{animation:.4s cubic-bezier(.165,.84,.44,1) slideInPrev}@keyframes slideInNext{0%{opacity:0;transform:translate(50px)}to{opacity:1;transform:translate(0)}}@keyframes slideInPrev{0%{opacity:0;transform:translate(-50px)}to{opacity:1;transform:translate(0)}}.meal-menu-container{flex-direction:column;gap:10px;padding:6px 2px 4px;display:flex}.meal-btn{--meal:var(--ink-faint);--meal-tint:var(--bg);--meal-deep:var(--ink);border:1.5px solid var(--line);background:var(--surface);width:100%;font:inherit;text-align:left;color:var(--ink);cursor:pointer;border-radius:16px;align-items:center;gap:14px;padding:14px 14px 14px 16px;transition:border-color .2s,background-color .2s,transform .1s;display:flex}.meal-btn.btn-lunch,.meal-btn.meal-lunch{--meal:var(--lunch-color);--meal-tint:#fff1e1;--meal-deep:#9c4a00}.meal-btn.btn-salad,.meal-btn.meal-salad{--meal:var(--salad-color);--meal-tint:#edf6e3;--meal-deep:#3b6a1b}.meal-btn.btn-dinner,.meal-btn.meal-dinner{--meal:var(--dinner-color);--meal-tint:#e1f2f2;--meal-deep:#0a6366}.meal-btn:not(:disabled):hover{border-color:var(--meal)}.meal-btn:not(:disabled):active{transform:scale(.98)}.meal-btn-icon{background:var(--meal-tint);width:44px;height:44px;color:var(--meal);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.meal-btn-icon svg{width:24px;height:24px}.meal-btn-state svg{vertical-align:-2px;stroke-width:3px;width:13px;height:13px;margin-right:3px}.meal-btn-text{flex-direction:column;flex:1;gap:2px;display:flex}.meal-btn-name{font-size:18px;font-weight:700}.meal-btn-state{color:var(--ink-faint);font-size:13px}.meal-btn-rule{color:var(--ink-soft);align-items:center;gap:4px;margin-top:2px;font-size:12px;font-weight:500;display:flex}.meal-btn-rule svg{flex-shrink:0;width:12px;height:12px}.meal-btn-rule.is-closed{color:#c8412d;font-weight:600}.meal-btn-action{background:var(--meal);color:#fff;border-radius:999px;flex-shrink:0;align-items:center;gap:4px;padding:8px 14px;font-size:14px;font-weight:600;display:flex}.meal-btn-action svg{width:14px;height:14px}.meal-btn.is-applied{border-color:var(--meal);background:var(--meal-tint)}.meal-btn.is-applied .meal-btn-icon{background:var(--surface)}.meal-btn.is-applied .meal-btn-state{color:var(--meal-deep);font-weight:600}.meal-btn.is-applied .meal-btn-action{color:var(--meal-deep);background:0 0;box-shadow:inset 0 0 0 1.5px}.meal-btn:disabled{opacity:.5;cursor:not-allowed}@media (height<=760px){.fc .fc-daygrid-day-top{padding-top:3px}.day-num-circle{width:24px;height:24px;font-size:13px}.fc-week-badge{margin-top:2px}.fc .meal-event{margin-bottom:3px!important;padding-top:4px!important;padding-bottom:4px!important}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:4px!important}#calendar{padding-top:4px}}@media (width<=520px){.fc .fc-daygrid-day-frame{min-height:118px}#calendar{padding:4px 8px 8px}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:4px!important}.fc .fc-toolbar-title{min-width:110px;font-size:19px!important}.fc .fc-today-button{padding:0 12px!important}.fc .meal-event{margin:0 3px 3px!important;padding:4px 2px!important}.fc .meal-event .fc-event-main{gap:4px;font-size:12px}.meal-event-icon svg{width:13px;height:13px}}@media (width<=600px){.fc .fc-meal-button,.fc .fc-salad-button{width:40px;position:relative;overflow:hidden;color:#0000!important;padding:0!important;font-size:0!important}.fc .fc-meal-button:before,.fc .fc-salad-button:before{background-color:var(--ink);width:17px;height:17px;margin:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.fc .fc-meal-button:before{left:calc(50% - .5px)}.fc .fc-prev-button,.fc .fc-next-button{width:34px!important;height:34px!important}}@media (width<=360px){.fc .fc-toolbar-title{min-width:0;font-size:17px!important}.fc .fc-prev-button,.fc .fc-next-button{width:30px!important;height:30px!important}.fc .fc-today-button{padding:0 10px!important}.fc .fc-meal-button,.fc .fc-salad-button{width:36px}}@media (width<=440px){.fc .meal-event{border-radius:6px!important;margin:0 2px 3px!important;padding:4px 1px!important}.fc .meal-event .fc-event-main{letter-spacing:-.04em;gap:2px;font-size:11px}.meal-event-icon svg{width:11px;height:11px}}@media (prefers-reduced-motion:reduce){.smooth-transition,.swipe-next-anm,.swipe-prev-anm{transition:none;animation:none}}.history{max-width:720px;margin:0 auto;padding:6px 12px 32px}.history-toolbar{grid-template-columns:1fr auto 1fr;align-items:center;min-height:44px;margin-bottom:6px;display:grid}.history-toolbar .this-month-btn{justify-self:start}.history-month{align-items:center;gap:2px;display:flex}.month-title{text-align:center;letter-spacing:-.02em;font-variant-numeric:tabular-nums;min-width:128px;margin:0;font-size:21px;font-weight:700}.month-nav{width:40px;height:40px;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:50%;place-items:center;transition:background-color .2s;display:grid}.month-nav:hover{background:var(--line-soft)}.month-nav:active{background:var(--line)}.month-nav svg{width:22px;height:22px}.history-summary{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px;display:grid}.summary-card{border:1px solid var(--line);background:var(--surface);border-radius:16px;flex-direction:column;gap:6px;padding:14px;display:flex}.summary-label{color:var(--ink-soft);align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.summary-icon{color:var(--meal);display:grid}.summary-icon svg{width:16px;height:16px}.summary-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--ink);min-height:1.25em;font-size:24px;font-weight:700}.summary-value small{color:var(--ink-faint);margin-left:2px;font-size:13px;font-weight:600}.summary-coffee{--meal:#8a5a32}.history-list{flex-direction:column;gap:8px;display:flex}.history-row{border:1px solid var(--line);background:var(--surface);border-radius:16px;align-items:center;gap:16px;padding:12px 14px;display:flex}.row-date{flex-direction:column;flex-shrink:0;align-items:center;width:44px;display:flex}.row-day{border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;padding-bottom:1px;font-size:19px;font-weight:700;line-height:1;display:flex}.history-row.is-today .row-day{background:var(--brand);color:var(--on-brand)}.row-weekday{color:var(--ink-faint);margin-top:1px;font-size:12px;font-weight:600}.row-meals{flex-wrap:wrap;gap:8px;display:flex}.meal-chip{background:var(--meal-tint);height:36px;color:var(--meal-deep);border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:14px;font-weight:600;display:inline-flex}.chip-icon{color:var(--meal);display:grid}.chip-status{background:#ffffffbf;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:700}.meal-chip.is-missed{border:1px dashed var(--meal);color:var(--ink-soft);background:0 0}.meal-chip.is-missed .chip-status{background:var(--line-soft);color:var(--ink-soft)}.meal-chip.is-unapplied{background:var(--surface);border:1px solid var(--meal)}.meal-chip.is-unapplied .chip-status{background:var(--meal-tint);color:var(--meal-deep)}.snack-tag{color:#6b4424;background:#f5ece4;border-radius:999px;align-items:center;gap:6px;height:36px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.snack-icon{color:#8a5a32;display:grid}.snack-icon svg{width:16px;height:16px}.summary-actual{background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:12px;grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;margin:0;padding:10px 14px;font-size:14px;display:flex}.summary-actual b{font-variant-numeric:tabular-nums}.summary-actual-label{color:var(--ink);align-items:center;gap:6px;font-weight:600;display:inline-flex}.summary-actual-label svg{width:16px;height:16px;color:var(--ink-soft)}.summary-actual-note{color:var(--ink-faint);font-size:13px}.summary-actual.is-empty{color:var(--ink-soft)}.summary-actual-value{color:var(--ink-faint);font-weight:500}.summary-value .summary-actual-value{color:var(--ink-soft);font-size:15px;font-weight:600}.chip-icon svg{width:17px;height:17px}.history-empty{text-align:center;flex-direction:column;align-items:center;padding:48px 16px;display:flex}.empty-icon{background:var(--line-soft);width:64px;height:64px;color:var(--ink-faint);border-radius:50%;place-items:center;margin-bottom:14px;display:grid}.empty-icon svg{width:30px;height:30px}.empty-title{margin:0;font-size:17px;font-weight:700}.empty-text{color:var(--ink-soft);word-break:keep-all;margin:6px 0 0;font-size:14px}.empty-link{background:var(--brand);color:var(--on-brand);border-radius:999px;margin-top:18px;padding:11px 20px;font-size:14px;font-weight:600;text-decoration:none}.empty-link:hover{background:var(--brand-strong)}.swal2-actions{gap:8px}.swal2-styled.swal2-cancel{min-width:110px;height:48px;border:1px solid var(--line)!important;background:var(--surface)!important;color:var(--ink)!important;box-shadow:none!important;border-radius:999px!important;margin:0!important;padding:0 22px!important;font-family:inherit!important;font-size:15px!important;font-weight:600!important}.swal2-styled.swal2-cancel:hover{background:var(--line-soft)!important}@media (width<=520px){.history{padding:4px 8px 24px}.history-toolbar{margin-bottom:4px}.history-summary{grid-template-columns:repeat(2,1fr);gap:8px}.history-row{gap:12px;padding:10px 12px}.month-title{min-width:110px;font-size:19px}}@media (height<=760px){.history{padding-top:4px}.history-toolbar{margin-bottom:4px}}@media (width<=600px){.month-nav{width:34px;height:34px}}@media (width<=360px){.month-title{min-width:0;font-size:17px}.month-nav{width:30px;height:30px}}.guests{flex-direction:column;gap:12px;max-width:880px;margin:0 auto;padding:12px 12px 32px;display:flex}.guest-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px}.guest-meals{gap:8px;display:flex}.guest-meal-btn{border:1px solid var(--line);background:var(--surface);height:44px;color:var(--ink-soft);font:inherit;cursor:pointer;border-radius:12px;flex:1;justify-content:center;align-items:center;gap:6px;font-size:15px;font-weight:600;transition:background-color .2s,border-color .2s,color .2s;display:inline-flex}.guest-meal-icon{color:var(--meal);display:grid}.guest-meal-icon svg{width:18px;height:18px}.guest-meal-btn.is-selected{background:var(--meal-tint);border-color:var(--meal);color:var(--meal-deep)}.guest-panels{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.mini-cal-head{grid-template-columns:1fr auto 1fr;align-items:center;margin-bottom:8px;display:grid}.mini-cal-head .this-month-btn{justify-self:start;height:32px;padding:0 12px}.mini-cal-month{align-items:center;gap:4px;display:flex}.mini-cal-title{text-align:center;min-width:110px;margin:0;font-size:16px;font-weight:700}.mini-cal-nav{width:34px;height:34px;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:50%;place-items:center;display:grid}.mini-cal-nav:hover{background:var(--line-soft)}.mini-cal-nav svg{width:18px;height:18px}.mini-cal{text-align:center;grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.mini-cal-week{color:var(--ink-soft);padding:4px 0;font-size:12px;font-weight:600}.mini-cal-day{aspect-ratio:1;color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:10px;place-items:center;font-size:14px;display:grid}.mini-cal-day:hover:not(:disabled){background:var(--line-soft)}.mini-day-num{border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;padding-bottom:1px;line-height:1;display:flex}.mini-cal-day.is-sun .mini-day-num,.mini-cal-week.is-sun{color:var(--sun-color)}.mini-cal-day.is-sat .mini-day-num,.mini-cal-week.is-sat{color:var(--sat-color)}.mini-cal-day.is-today .mini-day-num{background-color:var(--brand);color:var(--on-brand);font-weight:700}.mini-cal-day.is-selected{background:var(--brand-tint);box-shadow:inset 0 0 0 1.5px var(--brand);color:var(--brand-strong);font-weight:700}.mini-cal-day.is-selected:hover{background:var(--brand-tint)}.mini-cal-day:disabled{color:var(--ink-faint);cursor:default}.guest-hint{color:var(--ink-soft);word-break:keep-all;margin:10px 0 0;font-size:13px}.guest-input{flex-direction:column;gap:10px;display:flex}.guest-label{font-size:14px;font-weight:700}.guest-label small{color:var(--ink-faint);font-weight:500}.guest-names{border:1px solid var(--line);min-height:160px;font:inherit;resize:none;border-radius:10px;flex:1;padding:10px 12px;font-size:14px}.guest-names:focus{outline:2px solid var(--brand);outline-offset:-1px}.guest-add-btn{background:var(--brand);height:44px;color:var(--on-brand);font:inherit;cursor:pointer;border:none;border-radius:12px;font-size:15px;font-weight:700}.guest-add-btn:hover{background:var(--brand-strong)}.guest-list-title{margin:0 0 10px;font-size:15px;font-weight:700}.guest-empty{color:var(--ink-soft);margin:8px 0;font-size:14px}.guest-table{table-layout:fixed;border-collapse:collapse;width:100%;font-size:14px}.guest-table th,.guest-table td{border-bottom:1px solid var(--line-soft);text-align:center;white-space:nowrap;text-overflow:ellipsis;height:40px;padding:0 6px;overflow:hidden}.guest-table th{color:var(--ink-soft);font-size:13px;font-weight:600}.guest-table td:first-child{color:var(--ink-faint);font-variant-numeric:tabular-nums}.guest-name-cell{position:relative;padding-left:64px!important;padding-right:64px!important}.guest-name{text-overflow:ellipsis;display:block;overflow:hidden}.guest-name-cell .guest-delete-btn{position:absolute;top:50%;right:6px;transform:translateY(-50%)}.guest-delete-btn{border:1px solid var(--line);background:var(--surface);height:28px;color:var(--ink-soft);font:inherit;cursor:pointer;border-radius:8px;padding:0 10px;font-size:13px}.guest-delete-btn:hover{color:#b03a2a;background:#fbecea;border-color:#f1c9c2}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=640px){.guest-panels{grid-template-columns:1fr}.guests{padding:8px 8px 24px}.guest-table col:first-child{width:32px!important}.guest-name-cell{text-align:left!important;padding-left:6px!important;padding-right:60px!important}}.settings{max-width:720px;margin:0 auto;padding:16px 12px 32px}.settings-group-title{color:var(--ink-soft);margin:4px 4px 10px;font-size:14px;font-weight:700}.settings-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 18px 6px}.settings-card-title{align-items:center;gap:6px;margin:0 0 4px;font-size:17px;font-weight:700;display:flex}.settings-card-icon{width:18px;height:18px;color:var(--brand);display:inline-flex}.settings-card-icon svg{width:100%;height:100%}.settings-card-desc{color:var(--ink-soft);word-break:keep-all;margin:0 0 8px;font-size:14px}.settings-row{border-top:1px solid var(--line-soft);cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:52px;display:flex}.settings-row-title{font-size:15px;font-weight:600}.settings-error{color:#b03a2a;margin:12px 0 16px;font-size:14px}.settings-switch{appearance:none;background:var(--line);cursor:pointer;border-radius:14px;flex-shrink:0;width:46px;height:28px;margin:0;transition:background-color .2s;position:relative}.settings-switch:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #1d2b3333}.settings-switch:checked{background:var(--brand)}.settings-switch:checked:after{transform:translate(18px)}.settings-switch:disabled{opacity:.6;cursor:default}.settings-switch:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
