*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--yellow:#ffb800;--yellow-light:#fff3c4;--yellow-dark:#e0a000;--purple:#6c3fc8;--purple-light:#ede5ff;--purple-dark:#4f2c9a;--white:#fff;--bg:#f8f6ff;--border:#e0d8f5;--text:#1a1a2e;--text-muted:#6b6b8a;--red:#ff3b30;--red-light:#ffe8e6;--success:#34c759;--radius:12px;--shadow:0 2px 12px #6c3fc81a}html,body{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5}#root{flex-direction:column;min-height:100vh;display:flex}.beta-banner{background:var(--purple);color:#fff;text-align:center;padding:8px 16px;font-size:12px;line-height:1.4}.app-header{background:var(--yellow);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex;box-shadow:0 2px 8px #0000001a}.header-left,.header-right,.logo{align-items:center;gap:10px;display:flex}.logo-icon{font-size:32px;line-height:1}.logo-title{color:var(--purple);font-size:20px;font-weight:800;line-height:1.1}.logo-sub{color:var(--purple-dark);text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:600}.location-select{border:2px solid var(--purple);color:var(--purple);cursor:pointer;background:#fff;border-radius:8px;outline:none;padding:6px 10px;font-size:13px;font-weight:600}.export-btn{background:var(--purple);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;transition:background .15s}.export-btn:hover{background:var(--purple-dark)}.tab-nav{border-bottom:2px solid var(--border);background:#fff;padding:0 16px;display:flex}.tab-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;margin-bottom:-2px;padding:12px 18px;font-size:14px;font-weight:600;transition:all .15s}.tab-btn.active{color:var(--purple);border-bottom-color:var(--purple)}.app-main{flex:1;width:100%;max-width:900px;margin:0 auto;padding:16px}.calendar{width:100%}.cal-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.cal-title{color:var(--purple);font-size:20px;font-weight:800}.nav-btn{background:var(--purple-light);color:var(--purple);cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:20px;transition:background .15s;display:flex}.nav-btn:hover{background:var(--purple);color:#fff}.cal-grid{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.cal-day-header{text-align:center;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;padding:6px 0;font-size:11px;font-weight:700}.cal-cell{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;min-height:80px;padding:6px;transition:all .15s;overflow:hidden}.cal-cell:hover{border-color:var(--purple);box-shadow:var(--shadow)}.cal-cell.empty{cursor:default;background:0 0;border-color:#0000}.cal-cell.today{border-color:var(--yellow);background:var(--yellow-light);border-width:2px}.cal-cell.conflict{border-color:var(--red);background:var(--red-light);border-width:2px}.cell-num{color:var(--text);margin-bottom:3px;font-size:13px;font-weight:700}.today .cell-num{background:var(--yellow);color:var(--text);border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.cell-events{flex-wrap:wrap;gap:2px;margin-bottom:3px;display:flex}.event-badge{color:#fff;border-radius:4px;padding:1px 4px;font-size:10px;font-weight:600}.cell-shifts{flex-direction:column;gap:2px;display:flex}.shift-chip{border:1px solid var(--border);background:#fff;border-radius:4px;align-items:center;gap:4px;padding:2px 4px;font-size:10px;display:flex}.conflict-chip{background:var(--red-light);border-color:var(--red)}.chip-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;max-width:50px;font-weight:700;overflow:hidden}.chip-time{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:9px;overflow:hidden}.more-shifts{color:var(--text-muted);font-size:10px;font-style:italic}.timeoff-flag{color:var(--purple);margin-top:3px;font-size:9px;font-weight:600}.cal-legend{border:1px solid var(--border);background:#fff;border-radius:8px;flex-wrap:wrap;gap:12px;margin-top:14px;padding:10px;display:flex}.legend-item{color:var(--text-muted);align-items:center;gap:5px;font-size:11px;display:flex}.legend-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.conflict-dot{background:var(--red)}.today-dot{background:var(--yellow)}.roster{flex-direction:column;gap:20px;display:flex}.add-emp-card{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:16px}.add-emp-card h3{color:var(--purple);margin-bottom:12px;font-size:16px;font-weight:700}.add-emp-form{flex-wrap:wrap;gap:8px;display:flex}.roster-group{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:16px}.roster-group-title{color:var(--purple);align-items:center;gap:8px;margin-bottom:12px;font-size:15px;font-weight:700;display:flex}.count-badge{background:var(--purple-light);color:var(--purple);border-radius:20px;padding:2px 8px;font-size:12px;font-weight:700}.employee-card{border:1px solid var(--border);border-radius:10px;margin-bottom:8px;overflow:hidden}.emp-card-header{cursor:pointer;background:var(--bg);align-items:center;gap:10px;padding:12px;transition:background .15s;display:flex}.emp-card-header:hover{background:var(--purple-light)}.emp-color-dot{border-radius:50%;flex-shrink:0;width:14px;height:14px}.emp-name{flex:1;font-weight:600}.off-count{color:var(--purple);background:var(--purple-light);border-radius:6px;padding:2px 6px;font-size:11px;font-weight:600}.expand-icon{color:var(--text-muted);font-size:11px}.emp-card-body{border-top:1px solid var(--border);flex-direction:column;gap:14px;padding:14px;display:flex}.emp-location-row{align-items:center;gap:10px;font-size:13px;font-weight:600;display:flex}.timeoff-section h4{color:var(--text-muted);margin-bottom:8px;font-size:13px;font-weight:700}.add-timeoff-row{gap:8px;margin-bottom:8px;display:flex}.off-dates{flex-wrap:wrap;gap:6px;display:flex}.off-date-chip{background:var(--purple-light);color:var(--purple);border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:12px;font-weight:600;display:flex}.form-input{border:2px solid var(--border);border-radius:8px;outline:none;flex:1;min-width:0;padding:8px 10px;font-family:inherit;font-size:13px;transition:border-color .15s}.form-input:focus{border-color:var(--purple)}.form-select{border:2px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;outline:none;padding:8px 10px;font-family:inherit;font-size:13px;transition:border-color .15s}.form-select:focus{border-color:var(--purple)}.form-select.small{padding:6px 8px;font-size:12px}.add-btn{background:var(--purple);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:700;transition:background .15s}.add-btn:hover:not(:disabled){background:var(--purple-dark)}.add-btn:disabled{opacity:.4;cursor:not-allowed}.add-btn.small{padding:6px 12px;font-size:12px}.remove-btn{color:var(--red);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:13px;transition:background .15s}.remove-btn:hover{background:var(--red-light)}.remove-btn.small{padding:1px 4px;font-size:11px}.danger-btn{border:2px solid var(--red);color:var(--red);cursor:pointer;background:0 0;border-radius:8px;align-self:flex-start;padding:8px 14px;font-size:13px;font-weight:600;transition:all .15s}.danger-btn:hover{background:var(--red);color:#fff}.empty-state{color:var(--text-muted);padding:8px 0;font-size:13px;font-style:italic}.empty-state.small{font-size:11px}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}@media (width>=600px){.modal-overlay{align-items:center;padding:20px}}.modal{background:#fff;border-radius:20px 20px 0 0;flex-direction:column;width:100%;max-height:92vh;display:flex;overflow-y:auto;box-shadow:0 -4px 30px #0003}@media (width>=600px){.modal{border-radius:16px;max-width:540px;max-height:85vh}}.export-modal{max-width:600px}.modal-header{border-bottom:1px solid var(--border);z-index:1;background:#fff;justify-content:space-between;align-items:center;padding:16px 20px 12px;display:flex;position:sticky;top:0}.modal-title{color:var(--purple);font-size:16px;font-weight:800}.close-btn{background:var(--bg);cursor:pointer;width:30px;height:30px;color:var(--text-muted);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:flex}.close-btn:hover{background:var(--border)}.modal-tabs{border-bottom:1px solid var(--border);padding:0 16px;display:flex}.modal-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;margin-bottom:-1px;padding:10px 14px;font-size:13px;font-weight:600;transition:all .15s}.modal-tab.active{color:var(--purple);border-bottom-color:var(--purple)}.modal-body{flex:1;padding:16px 20px 20px}.tab-desc{color:var(--text-muted);margin-bottom:12px;font-size:13px}.add-shift-form{flex-direction:column;gap:10px;display:flex}.shift-presets{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.preset-btn{background:var(--bg);border:2px solid var(--border);cursor:pointer;text-align:center;border-radius:8px;padding:8px 6px;font-size:11px;transition:all .15s}.preset-btn.active{background:var(--purple-light);border-color:var(--purple)}.preset-btn:hover{border-color:var(--purple)}.preset-name{color:var(--text);font-weight:700}.preset-time{color:var(--text-muted);margin-top:2px;font-size:9px}.shift-list{flex-direction:column;gap:6px;margin-top:16px;display:flex}.shift-row{border:1px solid var(--border);background:var(--bg);border-radius:8px;align-items:center;gap:10px;padding:10px;display:flex}.conflict-row{background:var(--red-light);border-color:var(--red)}.shift-color-bar{border-radius:3px;flex-shrink:0;width:5px;height:36px}.shift-info{flex:1;min-width:0}.shift-emp{font-size:13px;font-weight:700}.shift-time{color:var(--text-muted);font-size:11px}.conflict-label{color:var(--red);margin-top:2px;font-size:11px;font-weight:600}.event-list{flex-direction:column;gap:8px;display:flex}.event-toggle{background:var(--bg);border:2px solid var(--border);cursor:pointer;text-align:left;border-radius:10px;padding:12px 16px;font-size:14px;font-weight:600;transition:all .15s}.event-toggle:hover{border-color:var(--purple)}.timeoff-list{flex-direction:column;gap:8px;display:flex}.timeoff-row{border:1px solid var(--border);background:var(--bg);border-radius:8px;align-items:center;gap:10px;padding:10px;display:flex}.timeoff-row.conflict-row{background:var(--red-light);border-color:var(--red)}.conflict-badge{color:var(--red);flex:1;font-size:11px;font-weight:700}.timeoff-btn{background:var(--bg);border:2px solid var(--border);cursor:pointer;white-space:nowrap;border-radius:7px;flex-shrink:0;padding:6px 10px;font-size:11px;font-weight:600;transition:all .15s}.timeoff-btn.off-active{background:var(--purple-light);border-color:var(--purple);color:var(--purple)}.export-mode-toggle{gap:8px;margin-bottom:12px;display:flex}.mode-btn{background:var(--bg);border:2px solid var(--border);cursor:pointer;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600;transition:all .15s}.mode-btn.active{background:var(--purple-light);border-color:var(--purple);color:var(--purple)}.export-textarea{border:2px solid var(--border);resize:vertical;width:100%;height:260px;color:var(--text);background:var(--bg);border-radius:10px;outline:none;padding:12px;font-family:Courier New,monospace;font-size:12px;line-height:1.6}.copy-btn{background:var(--purple);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:10px;padding:12px;font-size:15px;font-weight:700;transition:background .15s}.copy-btn:hover{background:var(--purple-dark)}.copy-btn.copied{background:var(--success)}.export-hint{text-align:center;color:var(--text-muted);margin-top:8px;font-size:12px}@media (width<=480px){.app-header{padding:10px 12px}.logo-title{font-size:16px}.logo-icon{font-size:24px}.logo-sub{display:none}.location-select{padding:5px 8px;font-size:12px}.export-btn{padding:6px 10px;font-size:12px}.app-main{padding:10px}.cal-grid{gap:2px}.cal-cell{border-radius:5px;min-height:60px;padding:4px}.cell-num{font-size:11px}.shift-chip{padding:1px 3px;font-size:9px}.chip-name{max-width:35px}.chip-time{display:none}.cal-day-header{font-size:9px}.cal-title{font-size:16px}.shift-presets{grid-template-columns:repeat(2,1fr)}.preset-time{display:none}}
