:root{--ink:#14213d;--muted:#6c7892;--line:#dce3ee;--surface:#ffffff;--canvas:#f4f7fb;--blue:#075ee8;--blue-dark:#0046b8;--green:#008a4b;--purple:#7c3aed}*{box-sizing:border-box}body,html{height:100%;overflow:hidden;touch-action:manipulation}body{margin:0;background:var(--canvas);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font:inherit;-webkit-tap-highlight-color:transparent}.app-shell{display:grid;grid-template-rows:auto minmax(0,1fr);width:100%;max-width:540px;height:100dvh;margin:0 auto;background:var(--surface);box-shadow:0 0 40px rgb(26 46 83/10%);padding-top:env(safe-area-inset-top)}.topbar{position:relative;z-index:20;padding:10px 12px;background:rgb(255 255 255/96%);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.date-line{display:grid;grid-template-columns:38px 1fr 38px;align-items:center;gap:8px;text-align:center}.eyebrow{margin:0 0 2px;color:var(--blue);font-size:11px;font-weight:800;letter-spacing:.075em;text-transform:uppercase}.date-center{position:relative;display:block;min-width:0;cursor:pointer}.date-center strong{display:block;font-size:clamp(19px,5vw,24px);line-height:1.15;text-transform:capitalize}.date-picker{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.date-nav{display:grid;width:38px;height:38px;place-items:center;border:1px solid var(--line);border-radius:12px;background:#f7f9fc;color:var(--ink);font-size:28px;line-height:1}.actions{display:grid;grid-template-columns:1.35fr .8fr 1.35fr;gap:6px;margin-top:9px}.action{min-height:38px;padding:6px 8px;border:1px solid transparent;border-radius:11px;font-size:13px;font-weight:760}.action.secondary{border-color:#cbd6e6;background:#fff;color:var(--ink)}.action.print{border-color:#cbd6e6;background:#edf1f6;color:#53627a}.action.print:disabled{cursor:default;opacity:1}.action.primary{background:var(--blue);color:#fff;box-shadow:0 6px 16px rgb(7 94 232/22%)}.notice{margin:8px 2px -1px;color:#08753d;font-size:12px;font-weight:700;text-align:center}.notice.error{color:#b42318}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.table-scroll{min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}thead{position:sticky;top:0;z-index:10}thead th{height:44px;padding:5px 3px;background:#e9eff8;color:#384965;border-right:1px solid #cfd8e6;border-bottom:1px solid #c7d1df;font-size:10px;font-weight:800;line-height:1.05;text-align:center;text-transform:uppercase}thead th:first-child{width:43%;padding-left:12px;text-align:left}thead th:not(:first-child){width:19%}thead th:last-child{border-right:0}tbody th{height:54px;padding:0 8px 0 10px;overflow:hidden;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:15px;font-weight:740;line-height:1;text-align:left;text-overflow:ellipsis;white-space:nowrap}.row-number{display:inline-block;width:22px;color:#99a5b9;font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td{height:54px;padding:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}td:last-child{border-right:0}.empty{height:120px;color:var(--muted);font-size:14px;font-weight:650;text-align:center}.cell-toggle{display:grid;width:100%;height:100%;place-items:center;border:0;border-radius:0;background:transparent;color:transparent;touch-action:manipulation;transition:background-color .12s ease,color .12s ease}.cell-toggle.kind-attendance.is-on{background:var(--blue);color:#fff}.cell-toggle.kind-lunch.is-on{background:var(--green);color:#fff}.cell-toggle.kind-gpd.is-on{background:var(--purple);color:#fff}.cell-toggle span{font-size:25px;font-weight:850;transform:translateY(-1px)}.cell-toggle:active{box-shadow:inset 0 0 0 3px rgb(0 70 184/22%)}.cell-toggle:focus-visible{outline:3px solid #ffb703;outline-offset:-3px}@media (min-width:541px){body{padding:18px}.app-shell{height:calc(100dvh - 36px);border-radius:24px;overflow:hidden}}