:root{--bg: #f5f4f1;--surface: #ffffff;--surface-muted: #faf9f7;--line: #e4e1db;--line-strong: #cbc6bd;--text: #1d1b18;--text-muted: #6a655d;--text-subtle: #8f897f;--brand: #a8432a;--brand-strong: #8a3520;--brand-weak: #f7ece8;--ok: #2e7d4f;--ok-weak: #e8f3ec;--warn: #9a6400;--warn-weak: #fbf2df;--off: #6a655d;--off-weak: #efede9;--danger: #b42318;--danger-weak: #fdecea;--info: #2557a7;--radius-sm: 4px;--radius: 6px;--radius-lg: 8px;--shadow: 0 1px 2px rgba(20, 16, 12, .06);--shadow-pop: 0 12px 32px rgba(20, 16, 12, .16);--font: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", sans-serif;--heading: var(--text);--muted: var(--text-muted);--accent: var(--brand);--card: var(--surface);--panel: var(--surface);--pill: var(--brand-weak);--pill-soft: var(--off-weak);--button: var(--surface-muted);--button-hover: var(--off-weak);--card-shadow: var(--shadow);--display: var(--font);--sans: var(--font);color:var(--text);background:var(--bg);font-family:var(--font);font-size:15px;line-height:1.55;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-width:0;overflow-x:clip;min-height:100vh;background:var(--bg);word-break:keep-all}#root{min-height:100vh}h1,h2,h3,strong{color:var(--text)}h1{margin:0;font-size:clamp(1.6rem,3vw,2.1rem);font-weight:700;line-height:1.25;letter-spacing:-.02em}h2{margin:0;font-size:1.2rem;font-weight:700;line-height:1.35;letter-spacing:-.01em}h3{margin:0;font-size:1rem;font-weight:700}p,ul,ol{margin:0}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.site-header{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line);background:#fffffff5}.site-header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1120px;height:60px;margin:0 auto;padding:0 20px}.site-brand{display:inline-flex;align-items:center;gap:10px;color:var(--text);font-size:1.125rem;font-weight:800;letter-spacing:-.02em}.site-brand .brand-mark{color:var(--brand)}.site-brand-name{white-space:nowrap}@media(max-width:480px){.site-brand.has-org .site-brand-name{display:none}.site-brand.has-org .site-org-name{max-width:52vw;padding-left:0;border-left:0;color:var(--text);font-weight:700}}.site-header-info{display:flex;align-items:center;gap:16px;color:var(--text-muted);font-size:.875rem;white-space:nowrap}.site-header-info em{margin-right:4px;color:var(--text-subtle);font-style:normal}.site-header-admin{padding:5px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--text);font-weight:600}.site-main{display:flex;flex-direction:column;gap:20px;width:100%;max-width:1120px;margin:0 auto;padding:24px 20px 8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.today-menu{display:grid;gap:18px;padding:24px;border:1px solid var(--line);border-top:4px solid var(--brand);border-radius:var(--radius-lg);background:var(--surface)}.today-menu-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:8px 12px}.today-menu-kicker{margin-bottom:2px;color:var(--brand);font-size:.875rem;font-weight:700}.today-menu-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.today-menu-note{padding:8px 12px;border-radius:var(--radius);background:var(--surface-muted);color:var(--text-muted);font-size:.875rem}.today-menu-grid{display:grid;grid-template-columns:repeat(var(--slot-count, 2),minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius)}.today-menu-grid.slots-1{--slot-count: 1}.today-menu-grid.slots-3{--slot-count: 3}.today-meal{padding:16px 20px 18px}.today-meal+.today-meal{border-left:1px solid var(--line)}.today-meal h2{margin-bottom:10px;color:var(--text-muted);font-size:.875rem;font-weight:700}.today-meal ul{display:grid;gap:4px;padding:0;list-style:none}.today-meal li{color:var(--text);font-size:1.0625rem}.today-meal li.is-main{font-size:1.1875rem;font-weight:700}.today-menu-empty{padding:28px 16px;border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--text-muted);text-align:center}.today-menu-notices{display:grid;gap:4px;padding:10px 14px;border-left:3px solid var(--warn);background:var(--warn-weak);color:#5c4100;font-size:.9375rem;list-style:none}.weekly-board-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}.weekly-board-nav{display:flex;align-items:center;gap:6px}.weekly-board-empty{padding:28px 16px;border:1px dashed var(--line-strong);border-radius:var(--radius);color:var(--text-muted);text-align:center}.weekly-table-wrap{overflow-x:auto;border:1px solid var(--line-strong);border-radius:var(--radius)}.weekly-table{width:100%;border-collapse:collapse;table-layout:fixed}.weekly-table th,.weekly-table td{padding:10px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:top;text-align:left}.weekly-table tr>:last-child{border-right:0}.weekly-table tbody tr:last-child>*{border-bottom:0}.weekly-table .weekly-corner{width:64px}.weekly-table thead th{padding:0;background:#f1efeb}.weekly-table thead th button{display:flex;align-items:baseline;gap:6px;width:100%;padding:10px 12px;border:0;background:none;color:var(--text);text-align:left;cursor:pointer}.weekly-table thead th button:hover strong{text-decoration:underline}.weekly-table thead span{color:var(--text-muted);font-size:.875rem;font-weight:600}.weekly-table thead em,.weekly-list em{padding:0 5px;border-radius:var(--radius-sm);background:var(--brand);color:#fff;font-size:.6875rem;font-style:normal;font-weight:700}.weekly-table tbody th{background:var(--surface-muted);color:var(--text-muted);font-size:.875rem;font-weight:700}.weekly-table th.is-today,.weekly-table td.is-today{background:var(--brand-weak)}.weekly-table thead th.is-today{box-shadow:inset 0 3px 0 var(--brand)}.weekly-table ul{display:grid;gap:2px;padding:0;list-style:none;font-size:.9375rem}.weekly-table li:first-child{font-weight:700}.weekly-table td.is-holiday{background:repeating-linear-gradient(-45deg,#f6f5f2 0,#f6f5f2 6px,#efede9 6px,#efede9 12px);color:var(--text-muted);text-align:center;vertical-align:middle}.weekly-table td.is-holiday strong{display:block;color:var(--off)}.weekly-table td.is-holiday span{font-size:.8125rem}.weekly-none{color:var(--text-subtle);font-size:.8125rem}.weekly-notice-row td{color:#5c4100;font-size:.8125rem}.weekly-notice-row td p+p{margin-top:4px}.weekly-list{display:none;padding:0;list-style:none}.weekly-list li+li{border-top:1px solid var(--line)}.weekly-list button{display:grid;gap:4px;width:100%;padding:12px 4px;border:0;background:none;color:inherit;text-align:left;cursor:pointer}.weekly-list li.is-today button{margin:0 -4px;padding-inline:8px;border-radius:var(--radius);background:var(--brand-weak)}.weekly-list-head{display:flex;align-items:center;gap:8px}.weekly-list-head .status-chip{margin-left:auto}.weekly-list-line{color:var(--text);font-size:.9375rem}.weekly-list-line b{margin-right:6px;color:var(--text-muted);font-size:.8125rem}.weekly-list-line.is-muted{color:var(--text-subtle)}.weekly-table thead span.is-sunday,.weekly-list span.is-sunday{color:var(--danger)}.weekly-table thead span.is-saturday,.weekly-list span.is-saturday{color:var(--info)}@media(max-width:720px){.site-header-inner{height:54px;padding:0 16px}.site-header-info>span,.site-header-info>a:not(.site-header-admin){display:none}.site-main{gap:16px;padding:16px 16px 4px}.today-menu{padding:18px 16px}.today-menu-grid{grid-template-columns:minmax(0,1fr)}.today-meal+.today-meal{border-top:1px solid var(--line);border-left:0}.weekly-table-wrap{display:none}.weekly-list{display:block}}.weekly-public-holiday{overflow:hidden;color:var(--danger);font-size:.6875rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.origin-info{gap:10px}.origin-info h2{font-size:1rem}.origin-info ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:4px 20px;padding:0;color:var(--text-muted);font-size:.875rem;list-style:none}.origin-info strong{margin-right:4px;color:var(--text);font-weight:600}.push-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border:1px solid var(--line);border-left:3px solid var(--info);border-radius:var(--radius-lg);background:var(--surface)}.push-card>div{display:grid;gap:2px}.push-card strong{font-size:.9375rem}.push-card span{color:var(--text-muted);font-size:.8125rem}.push-card .action-button{flex-shrink:0}.site-org-name{overflow:hidden;max-width:220px;padding-left:10px;border-left:1px solid var(--line-strong);color:var(--text-muted);font-size:.9375rem;font-style:normal;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.org-not-found{justify-items:start;max-width:640px}.landing{gap:28px}.landing-hero{display:flex;align-items:flex-start;gap:20px;padding:36px 32px;border:1px solid var(--line);border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--brand-weak) 0%,transparent 60%),var(--surface);box-shadow:var(--shadow)}.landing-hero .brand-mark{flex-shrink:0;color:var(--brand)}.landing-hero h1{margin:8px 0 10px;font-size:clamp(1.5rem,1.1rem + 1.6vw,2.125rem);line-height:1.3;letter-spacing:-.02em}.landing-badge{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--ok-weak);color:var(--ok);font-size:.8125rem;font-weight:700}.landing-lead{max-width:640px;margin:0;color:var(--text-muted);line-height:1.7}.landing-question{margin:0;font-size:1.25rem}.role-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.role-card{display:flex;flex-direction:column;gap:10px;min-width:0;padding:22px 20px;border:1px solid var(--line);border-top:4px solid var(--brand);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow)}.role-card.is-admin{border-top-color:var(--text)}.role-kicker{color:var(--brand);font-size:.8125rem;font-weight:700}.role-card.is-admin .role-kicker{color:var(--text-muted)}.role-card h3{margin:0;font-size:1.125rem}.role-card p{flex:1;margin:0;color:var(--text-muted);font-size:.9375rem;line-height:1.6}.role-cta{align-self:flex-start}.role-card.is-admin .role-cta{border-color:var(--text);background:var(--text)}.role-org-form{display:flex;gap:8px}.role-org-form input{flex:1;min-width:0;height:36px;padding:0 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);font-size:.9375rem}.feature-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none}.feature-strip li{display:flex;gap:10px;padding:14px;border-radius:var(--radius);background:var(--surface-muted)}.feature-strip div{display:grid;gap:2px}.feature-strip strong{font-size:.9375rem}.feature-strip span{color:var(--text-muted);font-size:.8125rem;line-height:1.5}.feature-icon{flex-shrink:0;color:var(--brand)}@media(max-width:900px){.role-grid{grid-template-columns:minmax(0,1fr)}.feature-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.landing-hero{flex-direction:column;gap:12px;padding:24px 18px}.feature-strip{grid-template-columns:minmax(0,1fr)}}.public-main.is-auth{width:100%;max-width:460px;margin:0 auto;padding-top:32px;padding-bottom:48px}.public-main.is-page{width:100%;max-width:880px;margin:0 auto}.public-back a,.public-back button{padding:0;border:0;background:none;color:var(--text-muted);font-size:.9375rem;font-weight:600;cursor:pointer}.public-back a:hover,.public-back button:hover{color:var(--text)}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:var(--radius);background:var(--surface-muted)}.auth-tabs a{padding:8px 0;border-radius:calc(var(--radius) - 2px);color:var(--text-muted);font-weight:700;text-align:center}.auth-tabs a[aria-current=page]{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.auth-footnote{margin:0;color:var(--text-muted);font-size:.875rem;text-align:center}@media(max-width:720px){.site-org-name{max-width:120px;padding-left:8px;font-size:.8125rem}}.site-header-link{color:var(--text-muted);font-weight:600}.site-header-link:hover{color:var(--text);text-decoration:underline}.member-page{max-width:640px}.member-org-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.member-inline-form{display:flex;align-items:flex-end;gap:8px}.member-inline-form>:first-child{flex:1}.member-inline-form input.live-notice-input{height:40px;padding:0 12px}.member-inline-form .action-button{height:40px}@media(max-width:720px){.site-header-info>.site-header-link,.site-header-info>.site-header-admin{display:inline-flex}}.notification-bell{position:relative;display:inline-flex!important;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius);color:var(--text)}.notification-bell:hover{background:var(--surface-muted)}.notification-bell-count{position:absolute;top:2px;right:0;min-width:18px;height:18px;padding:0 5px;border:2px solid var(--surface);border-radius:9px;background:var(--danger);color:#fff;font-size:.6875rem;font-weight:700;line-height:14px;text-align:center}.notifications-page{max-width:720px}.notification-list{display:grid;gap:8px;padding:0;list-style:none}.notification-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:12px;width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.notification-item:hover{border-color:var(--line-strong)}.notification-item.is-new{border-left:3px solid var(--brand);background:#fffdfb}.notification-body{display:grid;gap:2px}.notification-body span{color:var(--text-muted);font-size:.9375rem}.notification-meta{display:grid;justify-items:end;gap:2px;color:var(--text-subtle);font-size:.75rem;white-space:nowrap}.notification-meta em{color:var(--brand);font-style:normal;font-weight:700}@media(max-width:520px){.notification-item{grid-template-columns:minmax(0,1fr) auto}.notification-item .notification-type{grid-column:1 / -1;justify-self:start}}.push-settings{display:grid;justify-items:start;gap:12px}.push-topic-list{display:grid;gap:8px;width:100%;padding:0;list-style:none}.push-topic-list label{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer}.push-topic-list input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--brand)}.push-topic-list span{display:grid;gap:2px}.push-topic-list small{color:var(--text-muted);font-size:.8125rem}.attendance-card h2{margin:0;font-size:1.0625rem}.attendance-card .helper-text{margin:4px 0 0}.attendance-days{display:grid;gap:8px;margin:0;padding:0;list-style:none}.attendance-days li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding-bottom:8px;border-bottom:1px solid var(--line)}.attendance-days li:last-child{padding-bottom:0;border-bottom:0}.attendance-date{min-width:92px;font-size:.875rem;font-weight:600}.attendance-slots{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.attendance-closed{color:var(--text-subtle);font-size:.75rem}.app-shell{display:flex;flex-direction:column;gap:20px;width:100%;max-width:1120px;margin:0 auto;padding:24px 20px}.auth-shell{min-height:100vh;max-width:480px;justify-content:center}.notice-shell{max-width:860px}.top-utility-bar{display:flex;justify-content:flex-end;gap:8px}.utility-button{display:inline-flex;align-items:center;height:34px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:.875rem;font-weight:600;cursor:pointer}.utility-button:hover{background:var(--surface-muted)}.utility-button.is-primary{border-color:var(--brand);background:var(--brand);color:#fff}.action-button.danger{border-color:var(--danger);background:var(--danger);color:#fff}.action-button.danger:hover:not(:disabled){border-color:var(--danger);background:var(--danger);filter:brightness(.92)}.member-password-alert{margin:0;padding:12px 14px;border-left:3px solid var(--warn);border-radius:var(--radius-sm);background:var(--warn-weak);font-size:.9375rem}.admin-password-alert{margin-bottom:16px}.legal-missing{color:var(--text-subtle);font-style:italic}.admin-account-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:4px;font-size:.875rem}.login-help{margin-top:4px;color:var(--text-muted);font-size:.875rem}.login-help summary{cursor:pointer;color:var(--text);font-weight:600}.login-help p{margin:8px 0 0;line-height:1.6}.panel{display:grid;gap:16px;min-width:0;padding:20px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow)}.panel-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:12px}.panel-head>div:first-child{flex:1 1 200px;min-width:0}.panel-head h2{overflow-wrap:anywhere}.panel-head .helper-text{margin-top:4px}.helper-text{color:var(--text-muted);font-size:.875rem}.helper-text.status-success{color:var(--ok)}.helper-text.status-danger{color:var(--danger)}.empty-copy{color:var(--text-subtle);font-size:.875rem}.text-link{color:var(--brand);font-weight:600;text-decoration:underline;text-underline-offset:2px}.action-button,.confirm-modal-actions button,.detail-head-actions button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;padding:0 14px;border:1px solid var(--brand);border-radius:var(--radius);background:var(--brand);color:#fff;font-size:.9rem;font-weight:600;white-space:nowrap;cursor:pointer}.action-button:hover:not(:disabled),.confirm-modal-actions button:hover:not(:disabled),.detail-head-actions button:hover:not(:disabled){border-color:var(--brand-strong);background:var(--brand-strong)}.action-button.subtle,.confirm-modal-actions button.secondary,.detail-head-actions button{border-color:var(--line-strong);background:var(--surface);color:var(--text)}.action-button.subtle:hover:not(:disabled),.confirm-modal-actions button.secondary:hover:not(:disabled),.detail-head-actions button:hover:not(:disabled){border-color:var(--line-strong);background:var(--surface-muted)}.confirm-modal-actions button.danger{border-color:var(--danger);background:var(--danger);color:#fff}.confirm-modal-actions button.danger:hover:not(:disabled){border-color:#8f1c13;background:#8f1c13}button:disabled{opacity:.45;cursor:not-allowed}.pill{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-sm);background:var(--off-weak);color:var(--text-muted);font-size:.75rem;font-weight:700;white-space:nowrap}.pill-open{background:var(--ok-weak);color:var(--ok)}.pill-limited{background:var(--warn-weak);color:var(--warn)}.pill-holiday{background:var(--off-weak);color:var(--off)}.pill-draft{background:transparent;color:var(--text-subtle);box-shadow:inset 0 0 0 1px var(--line-strong)}.auth-message-box{padding:10px 12px;border-left:3px solid var(--brand);border-radius:var(--radius-sm);background:var(--brand-weak);color:var(--text);font-size:.875rem}.login-form{display:grid;gap:14px}.login-form label{display:grid;gap:6px;color:var(--text);font-size:.875rem;font-weight:600}.login-form input:not([type=checkbox]),.login-form select,.export-range-fields input,.approval-card-controls select{width:100%;height:40px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:.9375rem;font-weight:400}.login-form input:read-only{background:var(--surface-muted);color:var(--text-muted)}.login-form input:focus,.login-form select:focus,.export-range-fields input:focus,.approval-card-controls select:focus{border-color:var(--brand);outline:1px solid var(--brand);outline-offset:0}.login-form>.action-button{height:44px;margin-top:4px;font-size:1rem}.password-field{position:relative}.password-field input{padding-right:44px!important}.password-toggle{position:absolute;top:50%;right:6px;width:32px;height:32px;border:0;background:none;font-size:1rem;cursor:pointer;transform:translateY(-50%)}.auth-inline-row{display:flex;gap:8px}.auth-inline-row input{flex:1}.auth-inline-button{height:40px}.consent-card{display:flex!important;align-items:flex-start;gap:10px!important;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-muted);font-weight:400!important;cursor:pointer}.consent-card input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--brand)}.consent-card>span{display:grid;gap:2px}.consent-line{color:var(--text)}.auth-panel{gap:18px}.auth-panel .panel-head h2{font-size:1.375rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:#14100c73}.confirm-modal{width:min(440px,100%);box-shadow:var(--shadow-pop)}.confirm-modal-actions{display:flex;justify-content:flex-end;gap:8px}.detail-modal{display:grid;gap:14px;width:min(720px,100%);max-height:calc(100vh - 48px);overflow-y:auto;padding:22px;border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-pop)}.detail-head-copy{display:grid;gap:6px}.detail-summary-line{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:.875rem}.detail-summary-line strong{color:var(--text-muted);font-weight:500}.detail-banner{padding:10px 12px;border-radius:var(--radius);background:var(--off-weak)}.detail-banner p{color:var(--text-muted)}.detail-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border:1px solid var(--line);border-radius:var(--radius)}.meal-card{padding:14px 16px}.meal-card+.meal-card{border-left:1px solid var(--line)}.meal-card h3{margin-bottom:8px;color:var(--text-muted);font-size:.8125rem}.meal-card ul{display:grid;gap:3px;padding:0;list-style:none}.meal-card li:first-child{font-weight:700}.notice-board{display:grid;gap:6px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius)}.notice-board h3{font-size:.875rem}.notice-board ul{padding-left:18px;font-size:.9375rem}.inline-actions,.detail-head-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.calendar-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.schedule-switch-buttons{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden}.schedule-switch-buttons button{height:32px;padding:0 14px;border:0;background:var(--surface);color:var(--text-muted);font-size:.875rem;font-weight:600;cursor:pointer}.schedule-switch-buttons button+button{border-left:1px solid var(--line-strong)}.schedule-switch-buttons button.is-active{background:var(--text);color:#fff}.month-toolbar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}.month-toolbar-title{font-size:1.125rem;text-align:center;white-space:pre-line}.month-toolbar-nav{display:flex;gap:6px}.month-toolbar-button{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:.875rem;font-weight:600;cursor:pointer}.month-toolbar-button.nav{padding:0;font-size:.75rem}.month-toolbar-button:hover{background:var(--surface-muted)}.calendar-shell{overflow:hidden;border:1px solid var(--line-strong);border-radius:var(--radius)}.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month-weekday{padding:8px 0;border-bottom:1px solid var(--line-strong);background:#f1efeb;color:var(--text-muted);font-size:.8125rem;font-weight:700;text-align:center}.month-cell{display:flex;flex-direction:column;align-items:flex-start;min-width:0;min-height:84px;padding:8px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.month-cell:nth-child(7n){border-right:0}.month-cell:nth-last-child(-n+7){border-bottom:0}.month-cell:hover{background:var(--surface-muted)}.month-cell.is-outside{background:var(--surface-muted);color:var(--text-subtle)}.month-cell-day{font-size:.875rem;font-weight:700}.month-cell.is-today .month-cell-day{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;margin:-3px 0 0 -4px;border-radius:var(--radius-sm);background:var(--brand);color:#fff}.month-cell.is-selected{box-shadow:inset 0 0 0 2px var(--brand)}.month-weekday.is-sunday,.month-cell.is-sunday:not(.is-outside):not(.is-today) .month-cell-day{color:var(--danger)}.month-weekday.is-saturday,.month-cell.is-saturday:not(.is-outside):not(.is-today) .month-cell-day{color:var(--info)}.range-preview{display:grid;gap:12px}.range-preview .panel-head{display:none}.agenda-grid{display:grid;gap:8px}.agenda-card{display:grid;gap:6px;width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.agenda-card:hover{border-color:var(--line-strong);background:var(--surface-muted)}.agenda-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.agenda-card-lines{display:grid;gap:2px}.agenda-line{overflow:hidden;color:var(--text-muted);font-size:.875rem;text-overflow:ellipsis;white-space:nowrap}.agenda-card small{color:var(--warn)}.notice-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.notice-card{display:grid;align-content:start;gap:4px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.notice-card:hover{border-color:var(--line-strong);background:var(--surface-muted)}.notice-card-date{color:var(--text-subtle);font-size:.8125rem}.notice-card p{color:var(--text-muted);font-size:.875rem}.notice-detail-shell{gap:12px;padding:28px}.notice-detail-head{display:flex;justify-content:space-between;gap:12px;color:var(--text-subtle);font-size:.875rem}.notice-detail-label{color:var(--brand);font-weight:700}.notice-detail-content{padding-top:16px;border-top:1px solid var(--line);line-height:1.8}.legal-panel{grid-template-columns:minmax(0,1fr);padding:28px}.legal-copy{display:grid;gap:10px;overflow-wrap:anywhere;color:var(--text);line-height:1.75}.legal-copy h3{margin-top:12px;font-size:1rem}.legal-copy ul{padding-left:20px}.approval-groups{display:grid;gap:24px}.approval-group{display:grid;gap:10px}.approval-group-head{display:flex;align-items:baseline;gap:8px}.approval-group-head span{color:var(--text-subtle);font-size:.875rem}.approval-list{border:1px solid var(--line);border-radius:var(--radius)}.approval-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px}.approval-card+.approval-card{border-top:1px solid var(--line)}.approval-card-copy{display:grid;gap:1px;min-width:0}.approval-card-copy span{color:var(--text-muted);font-size:.8125rem}.approval-card-controls{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.approval-card-controls label{display:grid;gap:4px;color:var(--text-muted);font-size:.75rem;font-weight:600}.approval-card-controls select{width:130px;height:36px}.approval-toggle{justify-items:center}.approval-toggle input{width:18px;height:18px;margin:8px 0;accent-color:var(--brand)}.install-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border-left:3px solid var(--info)}.install-banner-copy{display:grid;gap:4px}.install-banner-copy h2{font-size:1rem}.install-steps{display:grid;gap:4px;margin-top:6px;font-size:.875rem}.install-steps ol{padding-left:18px;color:var(--text-muted)}.install-banner-actions{display:flex;flex-shrink:0;gap:8px}.export-range-message{font-size:.8125rem}.site-footer{display:grid;gap:6px;max-width:1120px;margin:24px auto 0;padding:20px 20px 32px;border-top:1px solid var(--line);color:var(--text-subtle);font-size:.8125rem;text-align:center}.site-footer-links{display:flex;justify-content:center;gap:16px}.site-footer-links a{color:var(--text-muted)}.site-footer-links a:hover{color:var(--text);text-decoration:underline}@media(max-width:720px){.app-shell,.panel{padding:16px}.legal-panel,.notice-detail-shell{padding:20px 16px}.detail-modal{padding:18px 16px}.meal-card+.meal-card{border-top:1px solid var(--line);border-left:0}.month-cell{min-height:56px;padding:6px 4px;align-items:center}.month-cell.is-today .month-cell-day{margin:-3px 0 0}.approval-card{align-items:flex-start;flex-direction:column}.install-banner{flex-direction:column;align-items:stretch}.install-banner-actions{justify-content:flex-end}.calendar-topbar{flex-wrap:wrap}}.toast{position:fixed;left:50%;bottom:28px;z-index:60;max-width:calc(100vw - 32px);padding:12px 18px;border-radius:var(--radius);background:#23201c;color:#fff;font-weight:600;box-shadow:var(--shadow-pop);transform:translate(-50%);animation:toast-in .16s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th{padding:8px 10px;border-bottom:1px solid var(--line-strong);background:var(--surface-muted);color:var(--text-muted);font-size:.8125rem;font-weight:600;text-align:left;white-space:nowrap}.data-table td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle;overflow-wrap:anywhere}@media(max-width:360px){.data-table th,.data-table td{padding:8px 6px}}.data-table tr.is-today td{background:var(--brand-weak)}.data-table-date{font-weight:600;white-space:nowrap}.data-table-menu{color:var(--text-muted)}.data-table-action{width:1%;text-align:right;white-space:nowrap}.status-chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-sm);font-size:.75rem;font-weight:700;white-space:nowrap}.status-open{background:var(--ok-weak);color:var(--ok)}.status-limited{background:var(--warn-weak);color:var(--warn)}.status-holiday{background:var(--off-weak);color:var(--off)}.status-draft,.status-empty{background:transparent;color:var(--text-subtle);box-shadow:inset 0 0 0 1px var(--line-strong)}.text-button{padding:4px 6px;border:0;background:none;color:var(--brand);font-weight:600;cursor:pointer}.text-button:hover{text-decoration:underline}.month-cell-label{display:block;max-width:100%;margin-top:4px;overflow:hidden;color:var(--text-muted);font-size:.75rem;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.month-cell-label.is-holiday{color:var(--off)}@media(max-width:520px){.month-cell-label{width:6px;height:6px;margin:6px auto 0;border-radius:50%;background:var(--brand);font-size:0}.month-cell-label.is-holiday{background:var(--line-strong)}}.month-cell-label.is-public-holiday{color:var(--danger)}@media(max-width:520px){.month-cell-label.is-public-holiday{background:var(--danger)}}.allergen-codes{margin-left:2px;color:var(--warn);font-size:.625rem;font-weight:600;cursor:help}.allergen-names{margin-left:6px;color:var(--text-subtle);font-size:.75rem;font-weight:400}.allergen-legend{color:var(--text-muted);font-size:.75rem;line-height:1.6}.allergen-legend strong{margin-right:4px;color:var(--warn);font-weight:600}.is-sold-out{color:var(--text-subtle);text-decoration:line-through}.sold-out-badge{margin-left:6px;padding:0 5px;border-radius:var(--radius-sm);background:var(--danger);color:#fff;font-size:.6875rem;font-style:normal;font-weight:700;vertical-align:2px}.today-live-notice{padding:10px 14px;border-left:3px solid var(--danger);background:var(--danger-weak);color:#7a1810;font-weight:600}.today-live-notice strong{margin-right:6px;color:var(--danger)}.sheet-notify-toggle{display:inline-flex;align-items:center;gap:6px;margin-right:4px;color:var(--text-muted);font-size:.875rem;font-weight:600;cursor:pointer}.sheet-notify-toggle input{width:16px;height:16px;accent-color:var(--brand)}.notification-type{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-sm);background:var(--off-weak);color:var(--text-muted);font-size:.75rem;font-weight:700;white-space:nowrap}.notification-type.type-meal-update{background:var(--ok-weak);color:var(--ok)}.notification-type.type-live{background:var(--danger-weak);color:var(--danger)}.notification-type.type-announcement{background:#eef3fb;color:var(--info)}.attendance-toggle{height:32px;padding:0 12px;border:1px solid var(--ok);border-radius:var(--radius);background:var(--ok-weak);color:var(--ok);font-size:.8125rem;font-weight:600;cursor:pointer}.attendance-toggle.is-out{border-color:var(--line-strong);background:var(--surface-muted);color:var(--text-muted);text-decoration:line-through}.attendance-toggle:disabled{cursor:not-allowed;opacity:.6}.table-scroll{max-width:100%;overflow-x:auto}
