:root,:root[data-theme=light]{--fg: #1a1a1a;--muted: #6b7280;--border: #d1d5db;--accent: #2563eb;--bg: #f9fafb;--surface: #ffffff;--surface-alt: #f3f4f6;--fill-vacation: #fff100;--fill-bereavement: #ddd6fe;--fill-jury: #e7d2b3;--fill-military: #bfdbfe;--fill-compday: #fed7aa;--fill-wfh: #fbcfe8;--fill-pl: #bbf7d0;--fill-offshift: #5eead4;--toggle-arrow: #000000}:root[data-theme=dark]{--fg: #e5e7eb;--muted: #9ca3af;--border: #374151;--accent: #3b82f6;--bg: #111827;--surface: #1f2937;--surface-alt: #273244;--fill-vacation: #d4d400;--fill-bereavement: #6d28d9;--fill-jury: #7c5a32;--fill-military: #1d4ed8;--fill-compday: #c2620e;--fill-wfh: #9d4b6c;--fill-pl: #15803d;--fill-offshift: #0f766e;--toggle-arrow: #ffffff}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--fg);background:var(--bg)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--border)}.app-header h1{font-size:1.1rem;margin:0}.app-logo{display:block;height:2rem;width:auto}.tenant-switcher{position:relative;display:inline-flex}.tenant-switcher-trigger{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .4rem;background:transparent;border:1px solid transparent;border-radius:.375rem;cursor:pointer;color:var(--fg)}.tenant-switcher-trigger:hover,.tenant-switcher-trigger[aria-expanded=true]{border-color:var(--border);background:var(--surface-alt)}.tenant-switcher-current{font-weight:600;font-size:.95rem}.tenant-switcher-caret{font-size:.7rem;color:var(--muted)}.tenant-switcher-menu{position:absolute;top:calc(100% + .25rem);left:0;z-index:20;margin:0;padding:.25rem;list-style:none;min-width:8rem;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;box-shadow:0 6px 16px #00000026}.tenant-switcher-menu button{display:block;width:100%;text-align:left;padding:.4rem .6rem;background:transparent;border:none;border-radius:.375rem;cursor:pointer;color:var(--fg);font-size:.95rem}.tenant-switcher-menu button:hover{background:var(--surface-alt)}.tenant-switcher-menu button.active{font-weight:700;color:var(--accent)}.header-left{display:flex;align-items:center;gap:.75rem}.month-controls{display:flex;align-items:center;gap:.3rem}.month-controls select,.month-controls input{font:inherit;font-size:.85rem;padding:.3rem .4rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--fg)}.nav{display:flex;gap:.5rem}.nav button,.identity select{font:inherit;padding:.4rem .75rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--fg);cursor:pointer}.nav button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.identity{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--muted)}main{padding:.5rem 1.25rem}.toolbar{display:flex;gap:.75rem;align-items:center;margin-bottom:1rem}.grid-wrap{background:var(--surface);border:1px solid var(--border);border-radius:8px}.month-block{margin-bottom:.6rem}.month-title{margin:0 0 .25rem;font-size:.85rem;display:flex;align-items:center;gap:.5rem}.legend-button-wrap{position:relative;display:inline-flex;align-items:center}.collapse-toggle{font-size:.8rem;line-height:1;padding:.1rem .35rem;color:var(--toggle-arrow)}.legend-button{font:inherit;font-size:.7rem;padding:.15rem .5rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--fg);cursor:pointer}.legend-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}.legend-popup{position:absolute;top:50%;left:100%;transform:translateY(-50%);margin-left:.5rem;z-index:1001;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.6rem;box-shadow:0 4px 16px #0003;max-width:none;width:max-content}.legend-popup .legend{margin-top:0;flex-wrap:nowrap;white-space:nowrap}table.schedule{border-collapse:collapse;font-size:.78rem;table-layout:fixed;width:100%}table.schedule th,table.schedule td{border:1px solid var(--border);padding:.05rem 0;text-align:center;overflow:hidden;overflow-wrap:anywhere;line-height:1.05}table.schedule th.name,table.schedule td.name{text-align:left;width:8.5rem;padding-left:.3rem;overflow-wrap:anywhere}table.schedule td.name.name-offshift-flag{color:#16a34a;font-weight:700}td.cell.editable{cursor:pointer}td.cell.off-shift{background:var(--fill-offshift)}tr.tally td{font-weight:600;color:var(--muted);background:var(--surface-alt)}tr.tally td.tally-zero{background:#dc2626;color:#fff}.legend{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem;font-size:.7rem;color:var(--muted)}.legend span{border:1px solid var(--border);border-radius:4px;padding:.15rem .4rem;background:var(--surface)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:1rem;max-width:36rem}.panel h2{margin-top:0}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.field label{font-size:.8rem;color:var(--muted)}.field input,.field select{font:inherit;padding:.4rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--fg)}.modal-hint{margin:0 0 .75rem;font-size:.85rem;color:var(--muted)}.field-inline{flex-direction:row;align-items:center;gap:.5rem}.field-inline input{width:auto}.schedule tr.manager-row .name{font-weight:700;border-left:3px solid var(--accent)}.schedule tr.manager-row td{background:var(--surface-alt)}.schedule tr.lod-row .name{font-weight:800;text-transform:uppercase;letter-spacing:.02em;border-left:5px solid var(--accent)}.schedule tr.lod-row td{background:var(--accent);color:#fff}button.primary{font:inherit;padding:.5rem 1rem;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer}button.danger{font:inherit;padding:.5rem 1rem;background:#dc2626;color:#fff;border:none;border-radius:6px;cursor:pointer}button.danger:disabled{opacity:.6;cursor:default}.banner{padding:.6rem .9rem;border-radius:6px;margin-bottom:1rem;font-size:.85rem}.banner.error{background:#fee2e2;color:#991b1b}.banner.success{background:#dcfce7;color:#166534}table.list{border-collapse:collapse;width:100%;font-size:.85rem}table.list th,table.list td{border-bottom:1px solid var(--border);padding:.4rem;text-align:left}.theme-toggle{display:inline-flex;align-items:center;gap:.4rem;font:inherit;font-size:.8rem;color:var(--muted);padding:.3rem .5rem;border:1px solid var(--border);border-radius:999px;background:var(--surface);cursor:pointer}.theme-toggle-icon{font-size:.9rem;line-height:1}.theme-toggle-track{position:relative;width:2.1rem;height:1.1rem;border-radius:999px;background:var(--surface-alt);border:1px solid var(--border);transition:background .15s ease}.theme-toggle[aria-checked=true] .theme-toggle-track{background:var(--accent);border-color:var(--accent)}.theme-toggle-thumb{position:absolute;top:1px;left:1px;width:.85rem;height:.85rem;border-radius:50%;background:#fff;transition:transform .15s ease}.theme-toggle[aria-checked=true] .theme-toggle-thumb{transform:translate(1rem)}.theme-toggle-label{min-width:2.4rem;text-align:left}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:10px;padding:1.25rem 1.5rem;width:24rem;max-width:calc(100vw - 2rem);box-shadow:0 10px 40px #0000004d}.modal h2{margin-top:0}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.modal-actions button{font:inherit;padding:.5rem 1rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--fg);cursor:pointer}.modal-actions button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.modal-actions button:disabled{opacity:.6;cursor:default}.icon-button{font-size:1rem;background:none;border:none;cursor:pointer;padding:.1rem .3rem;border-radius:4px}.icon-button:hover{background:var(--surface-alt)}.tree-name{display:inline-flex;align-items:center;gap:.35rem}.tree-caret{font-size:.7rem;line-height:1;background:none;border:none;cursor:pointer;padding:.1rem .2rem;border-radius:4px;color:var(--text)}.tree-caret:hover{background:var(--surface-alt)}.tree-caret-spacer{display:inline-block;width:1.1rem}td.tree-section{font-weight:600;color:var(--muted, inherit);padding-top:.6rem}.calendar-area{position:relative}.calendar-area:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:var(--calendar-watermark);background-repeat:no-repeat;background-position:center;background-size:contain;opacity:.06;pointer-events:none;z-index:0}.calendar-area>*{position:relative;z-index:1}.weekday-row{display:flex;flex-wrap:wrap;gap:.5rem}.weekday-check{display:inline-flex;align-items:center;gap:.2rem;font-size:.8rem;color:var(--fg)}.shift-row{display:flex;gap:.25rem}.icon-groups{display:flex;gap:1.5rem}.icon-group{display:inline-flex;flex-direction:column;align-items:center;gap:.25rem}.icon-group-title{font-weight:600;font-size:.85rem}@keyframes flash-orange{0%,to{background:transparent;color:var(--fg)}50%{background:#f59e0b;color:#000}}.flash-unassigned{animation:flash-orange 1s ease-in-out infinite;font-weight:600;border-radius:4px}.shift-edit{display:flex;flex-direction:column;gap:.35rem}.shift-edit select{font:inherit;padding:.3rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--fg)}.tabs{display:flex;gap:.25rem;margin-bottom:.75rem;border-bottom:1px solid var(--border)}.tab{font:inherit;background:none;border:none;border-bottom:2px solid transparent;padding:.4rem .75rem;cursor:pointer;color:var(--fg)}.tab.active{border-bottom-color:var(--accent, #2563eb);font-weight:600}.muted{color:var(--muted, #6b7280);font-style:italic}td.actions{white-space:nowrap;text-align:right}.row-actions{display:flex;gap:.5rem;margin-top:.5rem}.all-toggle{display:inline-flex;align-items:center;gap:.2rem;font-weight:400;font-size:.8rem}.closed-group{margin-bottom:.5rem}td.cell.has-comment{position:relative}.comment-flag{position:absolute;top:0;right:0;width:0;height:0;border-top:7px solid #dc2626;border-left:7px solid transparent;cursor:help}.comment-tip{display:none;position:absolute;top:8px;right:0;z-index:20;width:max-content;max-width:16rem;padding:.4rem .6rem;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 12px #00000040;white-space:normal;text-align:left;font-weight:400}.comment-flag:hover .comment-tip{display:block}
