:root{color:#192225;font-synthesis:none;--primary:#2058ed;--primary-hover:#1d4ed8;--primary-soft:#e8efff;--canvas:#eaf0f3;--shell:#f3f6f7;--surface:#fcfdfd;--muted:#626e76;--line:#e1e8ec;--ink:#192225;--danger:#ad2a2a;--surface-muted:#f3f6f8;--danger-surface:#fff7f7;--success-ink:#216141;--success-surface:#e8f5ee;--radius:16px;--control:10px;--panel-shadow:0 8px 24px #2b414b0b;background:#eaf0f3;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;font-size:14px;line-height:1.65}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}::selection{color:var(--primary);background:var(--primary-soft)}button,.button{border:1px solid var(--line);border-radius:var(--control);background:var(--surface);min-height:42px;color:var(--ink);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:9px 15px;text-decoration:none;transition:background .15s ease-out,border-color .15s ease-out;display:inline-flex}button:hover,.button:hover{background:var(--primary-soft);border-color:var(--primary)}button:disabled{cursor:not-allowed;color:var(--muted);background:#f3f6f8;border-color:#e1e8ec}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:3px;outline:3px solid #2058ed}.primary,.weeknav .active{background:var(--primary);border-color:var(--primary);color:#fff}.primary:hover,.weeknav .active:hover{background:var(--primary-hover)}.primary:disabled{background:var(--primary-soft);color:var(--muted);border-color:var(--primary-soft)}.quiet{color:var(--muted);background:0 0;border-color:#0000;padding:7px 10px}svg{flex:none;width:20px;height:20px}.app{min-height:100vh;padding:20px}.app-header{background:var(--shell);border-radius:22px 22px 0 0;justify-content:space-between;align-items:center;gap:24px;max-width:1800px;min-height:80px;margin:auto;padding:16px 26px;display:flex}.brand{white-space:nowrap;background:0 0;border:0;gap:16px;padding:0;font-size:18px;font-weight:650}.brand:hover{background:0 0}.brand-divider{background:var(--line);width:1px;height:20px}.identity{color:var(--muted);align-items:center;gap:12px;font-size:13px;display:flex}.role{color:var(--primary);background:#e8efff;border-radius:5px;padding:2px 9px;font-size:12px}.app-body{background:var(--shell);border-radius:0 0 22px 22px;max-width:1800px;min-height:calc(100vh - 120px);margin:auto}.with-sidebar{grid-template-columns:248px minmax(0,1fr);display:grid}.sidebar{border-right:1px solid var(--line);padding:20px 18px 36px}.home-link{width:100%;color:var(--muted);background:0 0;border:0;justify-content:flex-start;padding:11px 12px}.nav-group{margin-top:28px}.nav-group>p{color:var(--muted);margin:0 12px 10px;font-size:12px;font-weight:600}.nav-group nav{gap:5px;display:grid}.nav-group nav button{background:0 0;border:0;justify-content:flex-start;width:100%;min-height:44px;padding:11px 14px;font-size:13px}.nav-group nav button:hover{background:var(--primary-soft);color:var(--primary)}.nav-group nav button[aria-current=page]{background:var(--primary);color:#fff;font-weight:600}.workspace{width:100%;min-width:0;max-width:1600px;margin:auto;padding:22px 28px 0}.home-workspace{max-width:1270px;padding:28px 36px 0}.demo-banner{color:var(--muted);align-items:center;gap:8px;margin-bottom:24px;font-size:12px;display:flex}.demo-banner:before{content:"";background:var(--muted);border-radius:50%;width:6px;height:6px}.breadcrumb{color:var(--muted);align-items:center;gap:9px;margin-bottom:18px;font-size:12px;display:flex}.breadcrumb button{min-height:30px;color:var(--primary);background:0 0;border:0;padding:0 4px;font-size:12px}.pagehead{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:28px;display:flex}h1{letter-spacing:-.02em;margin:0 0 8px;font-size:28px;font-weight:650;line-height:1.4}h2{margin:0 0 18px;font-size:18px;font-weight:650;line-height:1.45}h3{margin:12px 0;font-size:14px}p{color:var(--muted);margin:8px 0 20px}.pagehead p{margin:0;font-size:13px}.period-note{margin-top:5px;display:block}.weeknav{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.history-label{margin-left:10px;font-size:11px}.history-label input{min-height:38px;padding:6px 9px;font-size:12px}.home-groups{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:20px;margin:36px 0 32px;display:grid}.home-groups:has(.task-group:nth-child(2):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}.task-group{background:var(--surface);border-radius:var(--radius);box-shadow:var(--panel-shadow);padding:24px}.task-group h2{color:var(--muted);margin:0 0 16px;font-size:14px;font-weight:600}.task-entry{white-space:nowrap;background:0 0;border:0;border-radius:10px;justify-content:flex-start;gap:15px;width:100%;min-height:72px;padding:17px 10px;font-size:16px}.task-entry+.task-entry{border-top:1px solid var(--line);border-top-left-radius:0;border-top-right-radius:0}.task-entry:hover{background:var(--primary-soft);color:var(--primary)}.task-icon{background:var(--primary-soft);width:36px;height:36px;color:var(--primary);border-radius:10px;place-items:center;display:grid}.task-entry>svg{width:16px;color:var(--muted);margin-left:auto}.deadline-note{color:var(--muted);align-items:flex-start;gap:10px;padding:0 8px;display:flex}.deadline-note p{margin:0;font-size:13px}.deadline-note>svg{width:18px}.section{background:var(--surface);border-radius:var(--radius);box-shadow:var(--panel-shadow);margin:0 0 20px;padding:24px}.section-head{justify-content:space-between;align-items:start;gap:16px;margin-bottom:20px;display:flex}.section-head h2{margin-bottom:6px}.section-head p{margin:0;font-size:12px}.login{max-width:660px;margin:32px 0 48px;padding:32px}.empty{flex-direction:column;justify-content:center;align-items:flex-start;min-height:220px;display:flex}.actions{flex-wrap:wrap;align-items:end;gap:10px;margin:16px 0;display:flex}.actions>span{color:var(--muted);align-self:center;font-size:12px}label{flex-direction:column;gap:6px;min-width:0;font-size:13px;display:flex}input,select,textarea{border:1px solid var(--line);border-radius:var(--control);background:var(--surface);min-width:0;max-width:100%;min-height:42px;color:var(--ink);caret-color:var(--primary);padding:9px 12px}input:hover,select:hover,textarea:hover{border-color:var(--primary)}input:disabled,select:disabled,textarea:disabled{background:var(--surface-muted);color:var(--muted)}input[type=checkbox]{width:16px;height:16px;min-height:0;accent-color:var(--primary)}textarea{resize:vertical;width:100%;line-height:1.75}small,.muted{color:var(--muted)}small{font-size:12px}.check{flex-direction:row;align-items:center;gap:8px;font-size:12px}.confirm{margin:24px 0}.message{border-radius:10px;margin:0 0 20px;padding:12px 16px;font-size:13px}.error{color:var(--danger);background:var(--danger-surface)}.success{color:var(--success-ink);background:var(--success-surface)}.booking-toolbar{justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;display:flex}.booking-toolbar>div:first-child{flex-direction:column;gap:5px;display:flex}.booking-toolbar .actions{margin:0}.booking-toolbar .muted{font-size:12px}.booking-toolbar select{min-width:190px}.daygrid,.menugrid,.guestgrid{grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;min-width:0;display:grid}.day{background:var(--surface);min-width:0;box-shadow:var(--panel-shadow);border-radius:12px;padding:17px 13px}.dayhead{justify-content:space-between;gap:5px;margin-bottom:18px;display:flex}.dayhead h2{margin:0;font-size:16px}.dayhead h2 span{color:var(--muted);margin-top:5px;font-size:12px;font-weight:400;display:block}.status{color:var(--muted);white-space:nowrap;font-size:11px}.meal{vertical-align:top;text-align:left;border:1px solid #e1e8ec;border-radius:10px;width:100%;min-height:210px;margin-bottom:10px;padding:14px 11px;display:block}.mealname{justify-content:space-between;align-items:center;gap:5px;margin-bottom:12px;font-size:14px;font-weight:600;display:flex}.mealname>span{font-size:11px;font-weight:400}.dishes{color:var(--muted);overflow-wrap:anywhere;font-size:13px;line-height:1.9;display:block}.meal.chosen,.none.chosen{border-color:var(--primary);background:var(--primary-soft);color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.meal.chosen .dishes{color:var(--primary)}.meal:disabled .dishes{color:var(--muted)}.menu-change{color:#626e76;margin-top:10px;font-size:11px;display:block}.none{width:100%;min-height:38px;font-size:13px}.cutoff{color:#626e76;margin:14px 0 0;font-size:11px;line-height:1.85}.savebar{z-index:5;background:#f3f6f7;justify-content:flex-end;align-items:center;gap:16px;min-height:78px;margin-bottom:12px;padding:16px 8px;display:flex;position:sticky;bottom:0}.savebar>span{color:var(--muted);margin-right:auto;font-size:12px}.savebar label{font-size:11px}.savebar input{min-height:38px}.guestgrid{margin:24px 0}.guestgrid>div,.menugrid>div{border-top:1px solid var(--line);min-width:0;padding-top:16px}.guestgrid label{margin-top:12px}.guestgrid input{width:100%}.split{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.split label{min-width:0}.guestgrid small{margin-top:9px;display:block}.menugrid label{margin-bottom:14px}.menugrid h3{font-size:14px}.headingdate{color:var(--muted);font-size:14px;font-weight:400}details{padding:10px 0}summary{cursor:pointer;min-height:32px;padding:4px 0;font-size:13px}.source{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:12px 0;display:flex}.source strong{overflow-wrap:anywhere;font-size:12px}.sourceimage{object-fit:contain;max-width:100%;max-height:500px;margin-top:16px;display:block}pre{white-space:pre-wrap;max-height:350px;font-size:12px;overflow:auto}.tablewrap{background:var(--surface);border:1px solid var(--line);scrollbar-color:var(--line) #f3f6f7;border-radius:10px;max-height:70vh;overflow:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;white-space:nowrap;width:100%}th,td{border-bottom:1px solid var(--line);text-align:center;padding:13px 14px;font-size:13px}th:first-child{text-align:left;background:var(--surface);z-index:1;min-width:170px;position:sticky;left:0}thead th{color:var(--muted);z-index:2;background:#f3f6f8;font-size:12px;font-weight:600;position:sticky;top:0}thead th:first-child{z-index:3;background:#f3f6f8}tbody th{font-weight:500}tbody tr:hover td{background:var(--primary-soft)}th small{margin-top:4px;font-weight:400;display:block}tfoot td,tfoot th{background:var(--primary-soft);font-weight:600}tfoot th:first-child{background:var(--primary-soft)}.boardnote{color:var(--muted);margin:0 0 18px;font-size:12px}.overview>p{margin-bottom:0;font-size:13px}.sharelogin{align-items:end;gap:12px;display:flex}.sharelogin input{width:260px}.boot{max-width:900px;margin:auto;padding:40px}footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;gap:16px;margin-top:40px;padding:30px 0 22px;font-size:11px;display:flex}a{color:var(--primary);text-underline-offset:3px}@media (width<=1250px){.with-sidebar{grid-template-columns:215px minmax(0,1fr)}.daygrid,.guestgrid,.menugrid{grid-template-columns:repeat(3,minmax(0,1fr))}.home-groups{gap:14px}.task-group{padding:20px}.task-entry{gap:10px;font-size:14px}.workspace{padding:20px}.pagehead{flex-wrap:wrap}}@media (width<=900px){.with-sidebar{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding:16px 10px}.nav-group nav button{gap:8px;padding:10px;font-size:12px}:is(.home-groups,.home-groups:has(.task-group:nth-child(2):last-child)){grid-template-columns:1fr 1fr}.home-groups .task-group:last-child:nth-child(3){grid-column:1/-1}.home-groups .task-group:last-child:nth-child(3) .task-entry{max-width:100%}.daygrid{grid-template-columns:repeat(2,minmax(0,1fr))}.booking-toolbar{flex-wrap:wrap}.menugrid,.guestgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.app{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.app-header{border-radius:0;gap:12px;min-height:72px;padding:16px 18px}.brand{gap:10px;font-size:16px}.brand-divider{height:16px}.identity{gap:6px;font-size:11px}.identity .role{display:none}.identity .quiet{min-height:36px;padding:6px}.app-body,.with-sidebar{border-radius:0;min-height:calc(100vh - 72px);display:block}.sidebar{display:none}.workspace,.home-workspace{padding:18px 16px 0}.demo-banner{align-items:flex-start;margin-bottom:22px;font-size:11px}.demo-banner:before{flex:none;margin-top:6px}.breadcrumb{margin-bottom:16px}.breadcrumb button{min-height:34px}h1{font-size:25px}.pagehead{gap:16px;margin-bottom:22px}.pagehead p{font-size:12px}.period-note{margin-top:5px}:is(.home-groups,.home-groups:has(.task-group:nth-child(2):last-child)){grid-template-columns:1fr;gap:16px;margin:26px 0}.home-groups .task-group:last-child:nth-child(3){grid-column:auto}.task-group{padding:20px}.task-group h2{margin-bottom:8px;font-size:13px}.task-entry{min-height:66px;padding:14px 4px;font-size:16px}.task-icon{width:34px;height:34px}.deadline-note{padding:0 2px}.deadline-note p{font-size:12px}.section{margin-bottom:16px;padding:20px}.login{padding:24px 20px}.weeknav{gap:6px}.history-label{margin-left:5px;font-size:11px}.weeknav button{min-height:40px;padding:7px 13px}.daygrid,.guestgrid,.menugrid{grid-template-columns:1fr;gap:16px}.day{padding:20px}.dayhead h2{font-size:16px}.dayhead h2 span{margin-left:12px;display:inline}.dayhead{margin-bottom:18px}.meal{min-height:0;margin-bottom:12px;padding:16px}.mealname{font-size:14px}.dishes{font-size:14px;line-height:1.85}.status{font-size:12px}.none{min-height:44px}.booking-toolbar{padding:18px}.booking-toolbar .actions{gap:7px}.booking-toolbar button{min-height:40px;padding:8px 10px;font-size:12px}.booking-toolbar select{min-width:240px;max-width:100%}.savebar{flex-wrap:wrap;gap:10px;padding:14px 0}.savebar label{order:-1;width:100%}.savebar input{width:100%}.savebar>span{font-size:11px}.guestgrid{gap:24px}.guestgrid>div{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 16px;display:grid}.guestgrid strong,.guestgrid small{grid-column:1/-1}.guestgrid label{margin:0}.split{gap:8px}.menugrid textarea{min-height:145px}.actions{gap:10px}.actions>input{width:100%}.section-head,.sharelogin{flex-wrap:wrap}.sharelogin label,.sharelogin input{width:100%}.sharelogin button{min-height:44px}.tablewrap{max-height:65vh}th,td{padding:12px;font-size:12px}th:first-child{min-width:150px}.source button{min-height:44px}footer{gap:10px;margin-top:28px;padding:24px 0;font-size:11px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.meal-field{margin-bottom:16px}.meal-field>label:first-child{margin-bottom:8px}.meal-field>.check{margin-bottom:10px}.file-picker{cursor:pointer;min-height:44px;position:relative;overflow:hidden}.file-picker input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.file-picker:focus-within{outline:3px solid var(--primary);outline-offset:3px}.menu-file-actions{margin-right:10px;display:inline-flex}.publish-dialog{background:var(--surface);color:var(--ink);border:0;border-radius:16px;width:min(440px,100% - 32px);padding:28px;box-shadow:0 12px 42px #19222533}.publish-dialog::backdrop{background:#19222561}.publish-dialog h2{margin-bottom:14px}.publish-dialog .actions{justify-content:flex-end;margin-bottom:0}.publish-dialog p{font-size:14px}.booking-toolbar>div:first-child{flex-flow:wrap;align-items:end;gap:16px}.booking-toolbar input[type=search]{width:240px}.excel-preview{border:1px solid var(--line);color:#000;background:#fff;border-radius:12px;overflow:hidden}.excel-toolbar{border-bottom:1px solid var(--line);background:#f6f8fa;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex}.excel-toolbar p{margin:4px 0 0;font-size:12px}.excel-toolbar .actions{margin:0}.excel-canvas{scrollbar-color:#abb7c1 #e8ecef;background:#e8ecef;max-height:78vh;padding:18px;overflow:auto}.excel-canvas:focus-visible{outline:3px solid var(--primary);outline-offset:-3px}.xlsx-table{table-layout:fixed;border-collapse:collapse;white-space:normal;background:#fff;box-shadow:0 3px 12px #0000000f}.xlsx-table td,.xlsx-table th{overflow-wrap:break-word;min-width:0;padding:3px 5px;line-height:1.35;position:static}.xlsx-table .sheet-index{color:#52616d;text-align:center;background:#eef1f3;border:1px solid #d6dce2;font:11px ui-sans-serif,system-ui}.xlsx-table thead.sheet-index th{color:#52616d;background:#eef1f3;min-width:0;height:22px;font:11px ui-sans-serif,system-ui;position:static}.sheet-tab{border-top:1px solid var(--line);color:#256541;background:#f5f7f8;padding:8px 20px;font-size:12px}.excel-preview>.message,.excel-preview>p{margin:12px 18px}.no-print{-webkit-print-color-adjust:exact;print-color-adjust:exact}.excel-preview .xlsx-table td{font-variant-numeric:tabular-nums}@media (width<=640px){.excel-toolbar{flex-direction:column;align-items:flex-start;gap:12px;padding:14px}.excel-toolbar .actions{width:100%}.excel-toolbar .actions>*{flex:1}.excel-canvas{padding:10px}.booking-toolbar>div:first-child{flex-direction:column;align-items:stretch;width:100%}.booking-toolbar input[type=search],.booking-toolbar select{width:100%;min-width:0}.publish-dialog{padding:22px}.publish-dialog .actions button{flex:1}}@media print{@page{size:A4 landscape;margin:10mm}html,body,:root,.app,.app-body,.workspace{color:#000!important;background:#fff!important;width:auto!important;max-width:none!important;min-height:0!important;margin:0!important;padding:0!important;display:block!important}.app-header,.sidebar,.demo-banner,.pagehead,.breadcrumb,.sharelogin,footer,.workspace>.message,.workspace>.actions,.no-print{display:none!important}.excel-preview{border:0!important;border-radius:0!important;overflow:visible!important}.excel-canvas{background:#fff!important;max-height:none!important;padding:0!important;overflow:visible!important}.xlsx-table{table-layout:fixed;-webkit-print-color-adjust:exact;print-color-adjust:exact;width:100%!important;box-shadow:none!important}.xlsx-table .sheet-index,.xlsx-table col.sheet-index{display:none!important}.xlsx-table tr{break-inside:avoid;height:auto!important}.xlsx-table td{white-space:pre-wrap!important;padding:3px 4px!important;font-size:9pt!important;line-height:1.2!important}.xlsx-table tr:first-child td{padding:0 0 5px!important;font-size:16pt!important}.xlsx-table col{width:auto!important}.xlsx-table col:nth-child(2){width:6%!important}.xlsx-table col:nth-child(3){width:24%!important}}
