:root{color:#111;background:#f6f7fb;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{margin:0}#root{width:100%;max-width:none;margin:0 auto}.app{--bg-page:#f3f6fc;--bg-surface:#fff;--bg-surface-soft:#f7f9ff;--border:#e4e8f2;--text-primary:#1c2a4a;--text-secondary:#4d5b78;--accent-a:#eff5ff;--accent-b:#dde9ff;--accent-border:#adc5fa;--table-head:#eef2fb;--table-line:#d0d8ea;--shadow:0 10px 26px #19305614;gap:14px;width:100%;max-width:1280px;margin:0 auto;padding:14px;display:grid}.theme-pastel{--bg-page:#f7f4ff;--bg-surface:#fffdfd;--bg-surface-soft:#fff9f2;--border:#eadcf8;--text-primary:#493266;--text-secondary:#6f5a87;--accent-a:#f5ecff;--accent-b:#efe2ff;--accent-border:#cfb2f7;--table-head:#f2ebff;--table-line:#e5d8f7;--shadow:0 12px 28px #53297a1a}.theme-minimal{--bg-page:#f5f5f5;--bg-surface:#fff;--bg-surface-soft:#fafafa;--border:#e5e5e5;--text-primary:#1f2937;--text-secondary:#4b5563;--accent-a:#f3f4f6;--accent-b:#e5e7eb;--accent-border:#d1d5db;--table-head:#f3f4f6;--table-line:#e5e7eb;--shadow:0 8px 18px #1f293714}.dark-mode{--bg-page:#111827;--bg-surface:#1f2937;--bg-surface-soft:#273549;--border:#334155;--text-primary:#e5e7eb;--text-secondary:#cbd5e1;--accent-a:#31436a;--accent-b:#2a3b5f;--accent-border:#4a6fb0;--table-head:#283548;--table-line:#3d4b63;--shadow:0 10px 26px #00000059}.title{background:linear-gradient(135deg, var(--bg-surface) 0%, var(--bg-surface-soft) 100%);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;padding:14px 16px;animation:.3s ease-out riseIn}.app-title{letter-spacing:-.045em;max-width:min(100%,28rem);color:var(--text-primary);isolation:isolate;text-rendering:geometricprecision;margin:0;padding:.1em .15em .55em .1em;font-family:Outfit,Segoe UI,system-ui,sans-serif;font-size:clamp(1.8rem,2.6vw,2.4rem);font-weight:700;line-height:1.08;position:relative}@supports ((-webkit-background-clip:text) or (background-clip:text)){.app-title{color:#0000;background:linear-gradient(115deg,#0f1c33 0%,#2a4a8a 38%,#1c5c44 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.theme-pastel .app-title{background:linear-gradient(115deg,#3a2250 0%,#5c3d7a 36%,#25604a 100%);-webkit-background-clip:text;background-clip:text}.theme-minimal .app-title{background:linear-gradient(115deg,#111827 0%,#3f3f46 50%,#3f6212 100%);-webkit-background-clip:text;background-clip:text}.dark-mode .app-title{background:linear-gradient(120deg,#f8fafc 0%,#a5b4fc 40%,#4ade80 100%);-webkit-background-clip:text;background-clip:text}}.app-title:before{content:"";z-index:-1;pointer-events:none;opacity:.9;background:radial-gradient(100% 90% at 8% 45%,#6366f11c 0%,#0000 58%);border-radius:.4em;height:1.35em;position:absolute;top:-.15em;left:-.1em;right:.2em}.theme-pastel .app-title:before{background:radial-gradient(100% 90% at 8% 45%,#a855f71a 0%,#0000 55%)}.dark-mode .app-title:before{background:radial-gradient(100% 90% at 8% 45%,#818cf833 0%,#0000 55%)}.app-title:after{content:"";background:linear-gradient(90deg,#4f46e5 0%,#22c55e 50%,#22c55e40 100%);border-radius:3px;width:3.5rem;height:4px;position:absolute;bottom:.08em;left:.1em;box-shadow:0 1px #0f172a0f}.theme-pastel .app-title:after{background:linear-gradient(90deg,#7c3aed 0%,#2dd4bf 55%,#2dd4bf33 100%);box-shadow:0 0 0 1px #7c3aed1f}.theme-minimal .app-title:after{box-shadow:none;background:linear-gradient(90deg,#52525b 0%,#4ade80 70%,#4ade8026 100%)}.dark-mode .app-title:after{background:linear-gradient(90deg,#a5b4fc 0%,#34d399 55%,#34d39940 100%);box-shadow:0 0 12px #34d39933}.title-end{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:6px;display:flex}.title-start{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.app-version-discrete{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);opacity:.68;-webkit-user-select:none;user-select:none;font-size:.65rem;font-weight:500}.release-channel-badge{color:#92400e;letter-spacing:.06em;text-transform:uppercase;background:#fffbeb;border:1px solid #f59e0b;border-radius:999px;justify-content:center;align-items:center;padding:2px 8px;font-size:.62rem;font-weight:700;display:inline-flex}.cloud-pill{letter-spacing:.04em;text-transform:none;color:var(--text-secondary);border:1px solid var(--border);background:var(--bg-surface-soft);text-align:right;opacity:.9;border-radius:999px;max-width:14rem;padding:3px 8px;font-size:.62rem;font-weight:600;line-height:1.2}.cloud-pill--ok{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.cloud-pill--err{color:#9f1239;background:#fff1f2;border-color:#fecdd3}.cloud-pill--loading{opacity:.8}.layout{--sidebar-width:220px;grid-template-columns:var(--sidebar-width) minmax(0, 1fr);align-items:start;gap:14px;width:100%;display:grid;position:relative}.layout.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)}.layout.layout-readonly{grid-template-columns:minmax(0,1fr)}.main-column{align-content:start;gap:14px;min-width:0;display:grid}.panel{background:var(--bg-surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;min-width:0;padding:12px;animation:.35s ease-out riseIn;overflow:hidden}.settings-panel{opacity:1;transition:transform .28s,opacity .22s,padding .28s,border-color .22s,box-shadow .22s;transform:translate(0)}.settings-panel.collapsed{opacity:0;pointer-events:none;box-shadow:none;border-color:#0000;padding:0;transform:translate(-120%)}.sidebar-toggle{top:10px;left:calc(var(--sidebar-width) - 16px);z-index:8;border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;padding:0;font-size:.95rem;display:flex;position:absolute}.layout.sidebar-collapsed .sidebar-toggle{left:0}.panel h2{color:var(--text-primary);letter-spacing:.02em;margin:0 0 10px;font-size:1rem}label{color:var(--text-secondary);gap:6px;margin-bottom:8px;font-size:.84rem;font-weight:600;display:grid}input,textarea,select,button{font:inherit;border:1px solid var(--table-line);background:var(--bg-surface);color:var(--text-primary);border-radius:8px;padding:8px 10px;transition:border-color .2s,box-shadow .2s}input:focus,textarea:focus,select:focus{border-color:#7aa2ff;outline:none;box-shadow:0 0 0 3px #7aa2ff33}textarea{resize:vertical}button{background:linear-gradient(135deg, var(--accent-a) 0%, var(--accent-b) 100%);border-color:var(--accent-border);color:var(--text-primary);cursor:pointer;white-space:normal;text-align:center;width:100%;font-weight:500;line-height:1.25;transition:transform .16s,box-shadow .16s,background .16s}button:hover{background:linear-gradient(135deg, var(--accent-b) 0%, var(--accent-a) 100%);transform:translateY(-1px);box-shadow:0 6px 14px #1e3a8a2e}button:active{transform:translateY(0)}.stats p{color:var(--text-secondary);margin:4px 0}.stats{gap:8px;min-width:0;display:grid}.roster-textarea{min-height:104px;max-height:170px}.compact-note{color:var(--text-secondary);margin:2px 0 0;font-size:.78rem}.collapsible-box{border:1px solid var(--border);background:var(--bg-surface-soft);border-radius:8px;margin-top:4px;padding:6px 8px}.collapsible-box summary{cursor:pointer;color:var(--text-primary);font-size:.82rem;font-weight:700;list-style:none}.collapsible-box summary::-webkit-details-marker{display:none}.collapsible-box summary:before{content:"▾";margin-right:8px;transition:transform .2s;display:inline-block}.collapsible-box[open] summary:before{transform:rotate(180deg)}.collapsible-box label{margin-top:8px}.date-picker-row{align-items:center;gap:8px;display:flex}.date-picker-row input{flex:auto;min-width:0}.date-picker-row .action-button{width:auto;min-width:112px}.date-picker-row .action-button.extra-off-day-add{border-radius:8px;width:32px;min-width:32px;height:32px;padding:0;font-size:1.05rem;font-weight:700;line-height:1}.extra-off-days-list{gap:6px;margin:4px 0 0;padding:0;list-style:none;display:grid}.extra-off-days-list li{background:var(--bg-surface);border:1px solid var(--border);border-radius:6px;justify-content:space-between;align-items:center;gap:10px;padding:6px 8px;font-size:.82rem;display:flex}.extra-off-day-remove{border-radius:6px;width:28px;min-width:28px;height:28px;padding:0;font-size:1rem;font-weight:700;line-height:1}.extra-off-day-remove:hover:not(:disabled){color:#a61b39;background:#ffe9ec;border-color:#f5b7c2;box-shadow:0 4px 10px #a61b3929}.extra-off-day-remove:focus-visible{border-color:#f08aa0;outline:none;box-shadow:0 0 0 3px #f08aa03d}.image-preview{background:var(--bg-surface-soft);border:1px solid var(--border);border-radius:10px;margin-top:4px;padding:10px}.image-preview p{color:var(--text-secondary);margin:0 0 8px;font-size:.85rem}.image-preview img{object-fit:contain;background:var(--bg-surface);border:1px solid var(--table-line);border-radius:8px;width:100%;max-height:170px;padding:6px}table{border-collapse:collapse;border-radius:12px;width:100%;overflow:hidden}.calendar-panel{min-width:0;overflow-x:auto}.child-filter-panel{border:1px solid var(--border);background:var(--bg-surface-soft);border-radius:10px;margin-bottom:12px;padding:10px}.child-filter-header{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.child-filter-header h3{color:var(--text-primary);margin:0;font-size:.92rem}.child-filter-row{align-items:flex-end;gap:16px;margin-bottom:8px;display:flex}.child-filter-label{min-width:260px;max-width:360px;margin:0}.child-filter-clear{white-space:nowrap;align-self:flex-end;width:auto;min-width:130px;height:36px;margin:0;padding:0 10px;font-size:.78rem;position:relative;top:2px}.child-filter-results{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.child-filter-month-card{border:1px solid var(--border);background:var(--bg-surface);border-radius:8px;padding:8px}.child-filter-month-title{color:var(--text-primary);margin:0 0 6px;font-size:.84rem;font-weight:700}.child-filter-dates,.child-filter-empty{color:var(--text-secondary);margin:0;font-size:.8rem;line-height:1.35}.calendar-heading{justify-content:flex-start;align-items:center;gap:10px;margin-bottom:8px;display:flex}.calendar-nav-button{border-radius:999px;justify-content:center;align-items:center;width:34px;min-width:34px;height:34px;padding:0;font-size:.95rem;display:inline-flex}.calendar-title-button{border:1px dashed var(--accent-border);background:var(--bg-surface-soft);width:auto;color:var(--text-primary);letter-spacing:.02em;cursor:pointer;align-items:center;gap:8px;margin:0;padding:6px 12px;font-size:1rem;font-weight:700;display:inline-flex}.calendar-title-button:hover{transform:translateY(-1px);box-shadow:0 4px 10px #1e3a8a1f}.calendar-title-button:active{transform:none}.calendar-title-hint{opacity:.85;font-size:.9rem}.calendar-month-picker-input-hidden{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.calendar-panel table{table-layout:auto;min-width:920px}.calendar-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.calendar-actions .action-button{flex:0 auto;width:auto;min-width:170px;padding:7px 10px;font-size:.84rem}.calendar-actions .action-button-save{color:#14532d;background:linear-gradient(135deg,#e8f9ef 0%,#d8f3e3 100%);border-color:#8fd3a7}.calendar-actions .action-button-save:hover:not(:disabled){background:linear-gradient(135deg,#d8f3e3 0%,#c6ecd6 100%);box-shadow:0 6px 14px #16653433}.calendar-actions .action-button-save-right{margin-left:auto}.calendar-actions .action-button-restore{color:#4c1d95;background:linear-gradient(135deg,#f3eeff 0%,#e8e0ff 100%);border-color:#c8b6ff}.calendar-actions .action-button-restore:hover:not(:disabled){background:linear-gradient(135deg,#e8e0ff 0%,#ddd2ff 100%);box-shadow:0 6px 14px #4c1d9533}.inline-info{border:1px solid var(--border);background:var(--bg-surface-soft);border-radius:10px;margin-top:10px;padding:8px 10px}.inline-info h3{color:var(--text-primary);margin:0 0 8px;font-size:.98rem}.inline-info p{color:var(--text-secondary);margin:4px 0;font-size:.84rem}th,td{border:1px solid var(--table-line);vertical-align:top;padding:4px}th{background:var(--table-head);color:var(--text-primary);font-weight:700}.week-label{white-space:nowrap;color:var(--text-secondary);background:#eef3fb;border-right:1px solid #d9e4f6;font-size:.76rem;font-weight:600}.theme-pastel .week-label{background:#f6f0ff;border-right-color:#e8dafc}.theme-minimal .week-label{background:#f3f5f8;border-right-color:#e3e7ee}.dark-mode .week-label{background:#2b3547;border-right-color:#3d4d67}.day{color:var(--text-primary);margin-bottom:4px;font-weight:700}td select{width:100%;min-width:104px;padding:5px 6px;font-size:.8rem}.dark-mode .calendar-panel td{color:#e5e7eb;background:#1b2637}.dark-mode .calendar-panel td.empty{background:#253349}.dark-mode .calendar-panel td select{color:#f8fafc;background:#0f172a;border-color:#4b5f7a}.dark-mode .calendar-panel td select option{color:#f8fafc;background:#0f172a}.dark-mode .calendar-panel td>div:not(.day){color:#e5e7eb}.empty{background:var(--bg-surface-soft)}.preview-panel p{color:var(--text-secondary);margin:0 0 12px}.print-preview-frame{border:1px solid var(--table-line);background:var(--bg-surface);border-radius:10px;width:100%;height:640px}.title-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px 16px;display:flex}.ui-controls{place-items:start end;gap:6px;min-width:150px;display:grid}.inline-control{margin:0;font-size:.76rem}.compact-control{min-width:150px}.appearance-control{margin:0}.appearance-control-web{align-self:flex-end;margin-top:4px;display:inline-grid}.appearance-control-mobile{display:none}.inline-control select{min-width:150px;padding:6px 8px;font-size:.75rem}.toggle-button{white-space:nowrap}.login-button-compact{opacity:.86;border-radius:999px;width:auto;min-width:0;margin-left:auto;padding:3px 8px;font-size:.72rem;line-height:1.2}.group-name{letter-spacing:.01em;color:var(--text-secondary);opacity:1;white-space:nowrap;font-size:.64em;font-weight:700}.action-button{overflow-wrap:anywhere;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-width:0;display:flex}.action-button.secondary{background:var(--bg-surface-soft)}.stats p,label{overflow-wrap:anywhere}input[type=file]{width:100%;min-width:0}@keyframes riseIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.print-only{display:none}@media print{body{background:#fff}.title,.layout,.test-panel{display:none}.app{padding:0;display:block}.print-only{display:block}.print-title{text-align:center;margin:0 0 14px;font-size:34px}.print-table{border-collapse:collapse;table-layout:fixed;width:100%}.print-table th,.print-table td{border:1px solid #555;padding:6px 8px}.print-table th{text-align:center;background:#e4e4e4;font-size:18px}.print-week-label{color:#0057a3;vertical-align:middle;width:19%;font-weight:700}.print-day-number{text-align:center;background:#ececec;min-height:36px;font-weight:700}.print-child-name{text-align:center;background:#f4e9dd;min-height:54px;font-weight:700}}@media (width<=1100px){.app{gap:14px;padding:14px}.layout,.layout.sidebar-collapsed{grid-template-columns:1fr}.sidebar-toggle{display:none}.settings-panel.collapsed{opacity:1;pointer-events:auto;border-color:var(--border);box-shadow:var(--shadow);padding:14px;transform:none}.title,.panel{border-radius:12px;padding:14px}.title-row{flex-direction:column;align-items:stretch}.title-end{align-items:flex-start;width:100%}.app-title{max-width:none}.title-start{align-items:stretch;width:100%}.ui-controls{width:100%}}@media (width<=1280px){.layout{--sidebar-width:220px}.calendar-panel table{min-width:840px}}@media (width<=1024px){.layout{grid-template-columns:1fr}}@media (width<=760px){.app{gap:10px;padding:10px}.title,.panel{border-radius:10px;padding:10px}.title-row{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px 10px;display:grid}.title-start{flex-direction:column;align-items:flex-start;min-width:0}.title-end{justify-self:end;align-items:flex-end;gap:6px;width:auto}.cloud-pill{text-align:right;align-self:flex-end;width:auto;max-width:max-content}.ui-controls{justify-items:start;gap:6px;width:100%}.appearance-control-mobile{display:inline-grid}.appearance-control-web{display:none}.compact-control,.inline-control select{width:auto;min-width:140px;max-width:220px}.login-button-compact{width:auto;min-width:120px;max-width:200px}.calendar-panel{padding:8px}.inline-control select,.toggle-button{width:100%}.calendar-heading{gap:6px;margin-bottom:6px}.calendar-nav-button{width:30px;min-width:30px;height:30px;font-size:.85rem}.calendar-title-button{gap:6px;padding:5px 8px;font-size:.9rem}.calendar-panel table{table-layout:fixed;width:100%;min-width:0}th,td{padding:4px 3px;overflow:hidden}th{letter-spacing:.01em;font-size:.74rem}.week-label{white-space:normal;overflow-wrap:anywhere;word-break:break-word;width:18%;font-size:.68rem;line-height:1.2}.day{margin-bottom:1px;font-size:.72rem}td select{text-overflow:clip;white-space:normal;width:100%;min-width:0;min-height:24px;padding:2px;font-family:Outfit,Segoe UI,system-ui,sans-serif;font-size:.56rem;line-height:1.15;overflow:hidden}.calendar-panel td>div:not(.day){white-space:normal;overflow-wrap:anywhere;word-break:break-word;font-family:Outfit,Segoe UI,system-ui,sans-serif;font-size:.62rem;line-height:1.15}.child-filter-results{grid-template-columns:1fr}.child-filter-row{flex-direction:column;align-items:stretch}.child-filter-clear{width:auto;min-width:120px;height:auto;margin-bottom:0;padding:8px 10px}.calendar-actions .action-button{flex:0 auto;width:auto;min-width:140px}.calendar-actions .action-button-save-right{margin-left:0}.calendar-actions{justify-content:center}}@media (width<=480px){.app-title{font-size:clamp(1.55rem,7vw,1.9rem)}.group-name{margin-top:2px;font-size:.62em;display:block}.calendar-title-button{font-size:.84rem}.child-filter-header h3{font-size:.86rem}.print-preview-frame{height:360px}.calendar-actions .action-button{min-width:120px;padding:7px 8px;font-size:.8rem}}
