:root{--color-bg: #faf5ee;--color-surface: #ffffff;--color-surface-alt: #f4e9db;--color-border: #e4d6c3;--color-border-strong: #d2bc9e;--color-text: #2e2117;--color-text-muted: #7c6a57;--color-text-on-primary: #fff9f2;--color-primary: #b0502e;--color-primary-hover: #944225;--color-primary-soft: #f3e0d4;--color-accent: #c98a2c;--color-accent-soft: #f5e6c8;--color-accent-text: #6b4a12;--color-success: #6c7a3d;--color-success-soft: #e7ecd6;--color-danger: #a63a2b;--color-danger-soft: #f8e1db;--color-focus-ring: rgba(176, 80, 46, .35);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgba(46, 33, 23, .08);--shadow-md: 0 6px 20px rgba(46, 33, 23, .1);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);margin:0;line-height:1.5}h1,h2,h3{font-weight:600;color:var(--color-text);margin:0 0 .6rem}h1{font-size:1.4rem;letter-spacing:-.01em}h2{font-size:1.05rem;margin-top:1.75rem}p{margin:0 0 .75rem}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.app-shell{display:flex;min-height:100vh}.app-header{padding:.85rem 1.75rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:1.5rem;position:sticky;top:0;z-index:20}.app-header h1{margin:0;color:var(--color-primary);white-space:nowrap}.app-header nav{display:flex;flex-wrap:wrap;gap:.25rem;flex:1}.app-header nav a{padding:.4rem .85rem;border-radius:var(--radius-md);color:var(--color-text-muted);font-weight:500;font-size:.92rem}.app-header nav a:hover{background:var(--color-surface-alt);color:var(--color-text);text-decoration:none}.app-header>span{display:flex;align-items:center;gap:.6rem;color:var(--color-text-muted);font-size:.88rem;white-space:nowrap}.sidebar{width:230px;flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-border);padding:1.25rem 1rem}.sidebar h2{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin:1.5rem 0 0}.sidebar h2:first-child{margin-top:0}.sidebar ul{list-style:none;padding:0;margin:.4rem 0 0}.sidebar li{margin:.1rem 0}.sidebar a{display:block;padding:.45rem .65rem;border-radius:var(--radius-md);color:var(--color-text);font-size:.92rem}.sidebar a:hover{background:var(--color-surface-alt);text-decoration:none}.sidebar a.active{background:var(--color-primary-soft);color:var(--color-primary);font-weight:600}.content{flex:1;padding:2rem;max-width:900px}.family-portal-content{max-width:1400px}input,select,textarea{font-family:inherit;font-size:.92rem;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:.45rem .6rem}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus-ring)}textarea{resize:vertical;min-height:4rem}button{font-family:inherit;font-size:.88rem;font-weight:600;cursor:pointer;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);padding:.45rem .9rem;background:var(--color-surface);color:var(--color-text);transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}button:hover{background:var(--color-surface-alt);border-color:var(--color-primary)}button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-focus-ring)}button:disabled{background:var(--color-surface-alt);color:var(--color-text-muted);border-color:var(--color-border);cursor:not-allowed}button[type=submit]{background:var(--color-primary);color:var(--color-text-on-primary);border-color:var(--color-primary)}button[type=submit]:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.form{display:flex;flex-direction:column;gap:1rem;max-width:480px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-sm)}.login-page{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 4rem);padding:1.5rem}.login-page .form{width:100%}.form label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600;color:var(--color-text-muted)}.form-row{display:flex;gap:1rem}.form-row>label{flex:1}.form button[type=submit]{align-self:flex-start}fieldset{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.75rem 1rem 1rem}legend{font-size:.78rem;font-weight:700;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;padding:0 .4rem}.error-text{color:var(--color-danger);background:var(--color-danger-soft);border-radius:var(--radius-sm);padding:.5rem .75rem;font-size:.88rem}.warning-text{color:var(--color-accent-text);background:var(--color-accent-soft);border-radius:var(--radius-sm);padding:.5rem .75rem;font-size:.88rem}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.toolbar a{background:var(--color-primary);color:var(--color-text-on-primary);padding:.5rem 1rem;border-radius:var(--radius-sm);font-weight:600;font-size:.86rem}.toolbar a:hover{background:var(--color-primary-hover);text-decoration:none}table{border-collapse:collapse;width:100%;margin:1rem 0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}th,td{border-bottom:1px solid var(--color-border);padding:.6rem .85rem;text-align:left;font-size:.87rem}th{background:var(--color-surface-alt);color:var(--color-text-muted);font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}tbody tr:hover{background:var(--color-surface-alt)}tbody tr:last-child td{border-bottom:none}.icon-picker{display:flex;flex-wrap:wrap;gap:.5rem}.icon-picker button{font-size:1.5rem;padding:.4rem;border:2px solid var(--color-border);background:var(--color-surface-alt);border-radius:var(--radius-md)}.icon-picker button[aria-pressed=true]{border-color:var(--color-primary);background:var(--color-primary-soft)}.diary-panel{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--color-border)}.diary-entry{border-bottom:1px solid var(--color-border);padding:.75rem 0}.diary-entry .meta{font-size:.8rem;color:var(--color-text-muted)}.staff-picker{position:relative;max-width:480px}.staff-picker-input-row{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:.35rem .5rem;background:var(--color-surface)}.staff-picker-input-row:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-focus-ring)}.staff-picker-input-row input{flex:1;min-width:8rem;border:none;padding:.2rem}.staff-picker-input-row input:focus{box-shadow:none}.staff-picker-chips{display:flex;flex-wrap:wrap;gap:.3rem}.staff-picker-chip{display:inline-flex;align-items:center;gap:.35rem;background:var(--color-accent-soft);color:var(--color-accent-text);border-radius:999px;padding:.2rem .6rem;font-size:.82rem;font-weight:600}.staff-picker-chip button{border:none;background:none;color:inherit;font-weight:400;cursor:pointer;font-size:1rem;line-height:1;padding:0}.staff-picker-chip button:hover{background:none;color:var(--color-danger)}.staff-picker-dropdown{position:absolute;z-index:10;top:100%;left:0;right:0;margin:.3rem 0 0;padding:.3rem 0;list-style:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);max-height:12rem;overflow-y:auto;box-shadow:var(--shadow-md)}.staff-picker-dropdown button{display:block;width:100%;text-align:left;border:none;background:none;color:var(--color-text);font-weight:400;border-radius:0;padding:.4rem .75rem}.staff-picker-dropdown button:hover{background:var(--color-surface-alt)}.discount-chain li{display:flex;align-items:center;gap:.5rem;padding:.3rem 0}.discount-chain li.editing,.discount-chain li.account-row{display:block}.discount-chain li.account-row+li.account-row{border-top:1px dashed var(--color-border);margin-top:.5rem;padding-top:.5rem}.guardian-account{margin-top:.35rem;font-size:.85rem;color:var(--color-text-muted)}.guardian-account .toolbar{margin-bottom:0}.guardian-account .form{max-width:320px;margin-top:.5rem}.discount-chain button{padding:.2rem .55rem;font-size:.8rem}.tab-bar{display:flex;gap:.35rem}.tab-bar button.active{background:var(--color-primary-soft);color:var(--color-primary);border-color:var(--color-primary)}.assignment-backup{font-style:italic;color:var(--color-text-muted)}.calendar-month-nav{display:flex;align-items:center;gap:.75rem;margin:1rem 0}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--color-border);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.calendar-weekday{background:var(--color-surface-alt);padding:.4rem;font-weight:600;font-size:.8rem;text-align:center}.calendar-cell{background:var(--color-surface);min-height:5.5rem;font-size:.8rem}.calendar-cell.empty{background:var(--color-bg)}.calendar-cell a{color:var(--color-text);display:block;height:100%;min-height:5.5rem;padding:.35rem;text-decoration:none}.calendar-cell a:hover{background:var(--color-surface-alt)}.calendar-daynum{font-weight:600;color:var(--color-text-muted);margin-bottom:.2rem}.calendar-cell-content{display:block;height:100%;padding:.35rem}.copy-panel-headers,.copy-panel-tables{display:flex;align-items:flex-start;gap:1.5rem}.copy-panel-headers>.toolbar{flex:1;min-width:0;margin-bottom:0}.copy-panel-source,.copy-panel-target{flex:1;min-width:0;overflow-x:auto}.hint{font-size:.8rem;color:var(--color-text-muted);margin:.35rem 0 1rem}.copy-panel-source tr{cursor:grab}.copy-panel-source tbody tr,.copy-panel-target tbody tr{height:3.625rem}.week-handle{cursor:grab;font-weight:600;font-size:.8rem;color:var(--color-text-muted);background:var(--color-surface-alt);white-space:nowrap;vertical-align:middle}.copy-panel-source table{border-collapse:separate;border-spacing:0}tr.week-start td{border-top:2px solid var(--color-border-strong)}.switch{display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--color-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.form label.switch{flex-direction:row}.switch input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.switch-track{position:relative;display:inline-block;width:2.25rem;height:1.25rem;flex-shrink:0;background:var(--color-border-strong);border-radius:999px;transition:background-color .15s ease}.switch-track:before{content:"";position:absolute;top:2px;left:2px;width:1rem;height:1rem;background:var(--color-surface);border-radius:50%;box-shadow:var(--shadow-sm);transition:transform .15s ease}.switch input:checked+.switch-track{background:var(--color-primary)}.switch input:checked+.switch-track:before{transform:translate(1rem)}.switch input:focus-visible+.switch-track{outline:none;box-shadow:0 0 0 3px var(--color-focus-ring)}.attendance-cell{display:flex;align-items:center;gap:.75rem}.timestamp-editable{display:inline-flex;align-items:center;gap:.3rem}.timestamp-editable input{width:6.5rem}tr.invoice-line-excused td{background:var(--color-danger-soft)}.timestamp-editable button{padding:0 .4rem;line-height:1.4;color:var(--color-text-muted)}.timestamp-editable button:hover{color:var(--color-danger)}.meta{font-size:.85rem;color:var(--color-text-muted)}dialog{border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:0;max-width:32rem;width:90vw}dialog::backdrop{background:#2e211759}.child-detail-dialog{padding:1.5rem}.child-detail-dialog img{margin:.5rem 0}.guardian-contacts{list-style:none;margin:0;padding:0}.guardian-contacts li{padding:.5rem 0;border-bottom:1px solid var(--color-border)}.guardian-contacts li:last-child{border-bottom:none}.guardian-contacts li>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu{position:relative}.user-menu>button{border:none;background:none;padding:0;font:inherit;font-weight:600;color:var(--color-text);cursor:pointer}.user-menu>button:hover{text-decoration:underline}.user-menu-dropdown{position:absolute;z-index:20;top:100%;right:0;margin-top:.4rem;padding:.75rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);width:16rem;text-align:left}.user-menu-dropdown>button{display:block;width:100%;text-align:left;border:none;background:none;color:var(--color-text);font-weight:400;border-radius:var(--radius-sm);padding:.4rem .5rem}.user-menu-dropdown>button:hover{background:var(--color-surface-alt)}.user-menu-dropdown .form{padding:0;border:none;box-shadow:none;max-width:none;gap:.6rem}.user-menu-success{margin:0 0 .5rem;color:var(--color-success);font-size:.85rem}.staff-portal-content{max-width:none}@media (min-width: 1024px){.groups-columns{display:grid;grid-template-columns:1.4fr 1fr;gap:2rem;align-items:start}}@media (min-width: 1024px){.family-columns{display:grid;grid-template-columns:minmax(0,480px) minmax(0,1fr);gap:2rem;align-items:start}}.family-form-content{max-width:none}.bar-chart{display:flex;align-items:flex-end;gap:1.25rem;padding:.5rem 0;overflow-x:auto}.bar-chart-col{display:flex;flex-direction:column;align-items:center;min-width:2.5rem;height:100%}.bar-chart-bars{display:flex;align-items:flex-end;gap:.25rem;flex:1;width:100%;justify-content:center}.bar-chart-bar{width:1.5rem;min-height:2px;border-radius:var(--radius-sm) var(--radius-sm) 0 0;transition:height .15s ease;cursor:default}.bar-chart-bar-a{background:var(--color-primary)}.bar-chart-bar-b{background:var(--color-accent)}.bar-chart-tooltip{position:fixed;transform:translate(-50%,calc(-100% - .5rem));background:var(--color-text);color:var(--color-surface);padding:.3rem .6rem;border-radius:var(--radius-sm);font-size:.78rem;max-width:220px;white-space:normal;text-align:center;pointer-events:none;z-index:1000}.bar-chart-value{font-size:.78rem;color:var(--color-text-muted);margin-top:.35rem}.bar-chart-label{font-size:.78rem;color:var(--color-text-muted);text-align:center;white-space:nowrap}.bar-chart-legend{display:flex;gap:1.25rem;font-size:.85rem;color:var(--color-text-muted);margin-bottom:.5rem}.bar-chart-swatch{display:inline-block;width:.75rem;height:.75rem;border-radius:2px;margin-right:.35rem;vertical-align:middle}.bar-chart-swatch-a{background:var(--color-primary)}.bar-chart-swatch-b{background:var(--color-accent)}
