.app{min-height:100vh}.app-header{background:var(--color-ink);padding:20px 32px;display:flex;align-items:center;justify-content:space-between;gap:12px}.app-header h1{font-size:20px;font-weight:700;letter-spacing:-.01em;margin:0;color:#fff}.app-header p{font-size:13px;color:#9ca3af;margin:0}main{max-width:1240px;margin:0 auto;padding:32px 24px}.calendar-wrapper{background:var(--color-surface);border-radius:12px;padding:20px;box-shadow:0 1px 2px #1c1e260a,0 8px 24px #1c1e260f;border:1px solid var(--color-border);position:relative}.status-message{padding:60px 40px;text-align:center;font-size:15px;color:var(--color-muted)}.status-message.error{color:#b3432f}.employee-selector{display:flex;align-items:center;gap:8px}.employee-selector label{font-size:12px;color:#9ca3af;font-weight:500}.employee-selector select{background:#2a2d38;color:#fff;border:1px solid #3a3d4a;border-radius:7px;padding:6px 10px;font-size:13px;font-family:inherit;cursor:pointer}.employee-selector select:focus{outline:none;box-shadow:0 0 0 3px #5b7fdb59}.toast{position:absolute;top:-14px;left:50%;transform:translate(-50%);background:var(--color-ink);color:#fff;font-size:13px;font-weight:500;padding:10px 18px;border-radius:8px;box-shadow:0 8px 24px #1c1e2633;z-index:20;animation:toast-in .2s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c1e2673;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--color-surface);border-radius:12px;padding:24px;width:400px;max-width:calc(100vw - 32px);box-shadow:0 24px 48px #1c1e2640}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.modal-header h2{font-size:17px;font-weight:700;margin:0;color:var(--color-ink)}.modal-close{background:none;border:none;font-size:22px;line-height:1;color:var(--color-muted);cursor:pointer;padding:4px}.modal-close:hover{color:var(--color-ink)}.modal-shift-summary{display:flex;align-items:center;gap:8px;margin:12px 0 20px;padding:10px 12px;background:var(--color-bg);border-radius:8px;font-size:13px}.modal-shift-role{font-weight:700;color:var(--color-cashier)}.modal-shift-time{color:var(--color-muted)}.modal label{display:block;font-size:13px;font-weight:500;color:var(--color-ink);margin-bottom:6px}.modal textarea{width:100%;border:1px solid var(--color-border);border-radius:8px;padding:10px 12px;font-family:inherit;font-size:13px;resize:vertical;box-sizing:border-box}.modal textarea:focus{outline:none;border-color:var(--color-cashier);box-shadow:0 0 0 3px #5b7fdb26}.modal-error{margin-top:10px;padding:8px 12px;background:#b3432f14;color:#b3432f;border-radius:6px;font-size:13px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.btn-primary,.btn-secondary{border-radius:7px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent}.btn-primary{background:var(--color-ink);color:#fff}.btn-primary:hover:not(:disabled){background:#2a2d38}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--color-surface);color:var(--color-ink);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg)}.calendar-wrapper .fc{--fc-border-color: var(--color-border);--fc-today-bg-color: rgba(91, 127, 219, .06);--fc-neutral-bg-color: var(--color-bg);font-family:inherit}.calendar-wrapper .fc .fc-toolbar-title{font-size:17px;font-weight:700;color:var(--color-ink);letter-spacing:-.01em}.calendar-wrapper .fc .fc-button{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-ink);font-weight:500;font-size:13px;text-transform:capitalize;box-shadow:none;padding:6px 14px;border-radius:7px;transition:background .12s ease,border-color .12s ease}.calendar-wrapper .fc .fc-button:hover{background:var(--color-bg);border-color:#d1cec5}.calendar-wrapper .fc .fc-button:focus{box-shadow:0 0 0 3px #5b7fdb40}.calendar-wrapper .fc .fc-button-primary:not(:disabled).fc-button-active,.calendar-wrapper .fc .fc-button-primary:not(:disabled):active{background:var(--color-ink);border-color:var(--color-ink);color:#fff}.calendar-wrapper .fc .fc-button-group{gap:2px}.calendar-wrapper .fc .fc-col-header-cell{background:var(--color-bg);padding:10px 0}.calendar-wrapper .fc .fc-col-header-cell-cushion{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-muted);text-decoration:none;padding:4px}.calendar-wrapper .fc .fc-daygrid-day-number,.calendar-wrapper .fc .fc-timegrid-slot-label-cushion{font-size:12px;color:var(--color-muted);text-decoration:none}.calendar-wrapper .fc .fc-day-today .fc-daygrid-day-number{color:var(--color-cashier);font-weight:700}.calendar-wrapper .fc-event{border:none!important;border-left:3px solid var(--fc-event-border-color, var(--color-cashier))!important;background:var(--fc-event-bg-tint, rgba(91, 127, 219, .1))!important;border-radius:6px;padding:3px 6px;margin:1px 2px;box-shadow:0 1px 2px #1c1e260d}.calendar-wrapper .fc-event-mine{outline:2px solid rgba(28,30,38,.55);outline-offset:-1px}.calendar-wrapper .fc-event-dimmed{opacity:.28;filter:saturate(.4);transition:opacity .15s ease,filter .15s ease}.calendar-wrapper .fc-event-mine{outline:2px solid rgba(28,30,38,.55);outline-offset:-1px;opacity:1;transition:outline .15s ease}.calendar-wrapper .fc-event .fc-event-main{color:var(--color-ink);font-size:12px;font-weight:500;line-height:1.4}.calendar-wrapper .fc-event .fc-event-time{font-weight:700;font-size:11px;color:var(--color-ink);opacity:.75}.calendar-wrapper .fc-event-title{white-space:normal!important;overflow:visible!important;word-break:break-word}.calendar-wrapper .fc-timegrid-event,.calendar-wrapper .fc-timegrid-event .fc-event-main-frame{overflow:hidden}.calendar-wrapper .fc-daygrid-event-dot{display:none}.calendar-wrapper .fc-timegrid-slot{height:2.6em}.calendar-wrapper .fc-timegrid-now-indicator-line{border-color:#b3432f}.app-header-brand{display:flex;align-items:center;gap:10px}.app-tabs{display:flex;gap:4px;max-width:1240px;margin:0 auto;padding:16px 24px 0}.app-tab{background:none;border:none;border-bottom:2px solid transparent;padding:10px 4px;margin-right:20px;font-size:14px;font-weight:600;color:var(--color-muted);cursor:pointer}.app-tab:hover{color:var(--color-ink)}.app-tab.active{color:var(--color-ink);border-bottom-color:var(--color-cashier)}.open-swaps-list{display:flex;flex-direction:column;gap:12px}.swap-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:16px 18px;box-shadow:0 1px 2px #1c1e260a}.swap-card-main{display:flex;align-items:center;gap:16px}.swap-card-role-badge{flex-shrink:0;font-size:12px;font-weight:700;padding:6px 12px;border-radius:20px;white-space:nowrap}.swap-card-role-badge[data-role=Cashier]{background:#5b7fdb1f;color:#3d5cad}.swap-card-role-badge[data-role=Barista]{background:#4fa68924;color:#337a63}.swap-card-role-badge[data-role=Cleaner]{background:#d89b4a29;color:#a5701f}.swap-card-details{flex:1;min-width:0}.swap-card-time{font-size:14px;font-weight:600;color:var(--color-ink)}.swap-card-requester{font-size:13px;color:var(--color-muted);margin-top:2px}.swap-card-reason{font-size:13px;color:var(--color-muted);font-style:italic;margin-top:4px}.swap-card-action{flex-shrink:0}.swap-card-tag{font-size:12px;color:var(--color-muted);font-weight:500;white-space:nowrap}.claim-banner{display:flex;align-items:flex-start;gap:12px;margin-top:14px;padding:12px 14px;border-radius:8px}.claim-banner-success{background:#4fa6891a}.claim-banner-failure{background:#b3432f14}.claim-banner-icon{flex-shrink:0;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff}.claim-banner-success .claim-banner-icon{background:#4fa689}.claim-banner-failure .claim-banner-icon{background:#b3432f}.claim-banner-content{flex:1;font-size:13px}.claim-banner-content strong{display:block;margin-bottom:4px;color:var(--color-ink)}.claim-banner-content p{margin:0;color:var(--color-muted)}.claim-banner-content ul{margin:0;padding-left:18px;color:#b3432f}.claim-banner-content li{margin-bottom:2px}.claim-banner-dismiss{background:none;border:none;font-size:18px;line-height:1;color:var(--color-muted);cursor:pointer;padding:0 4px}.claim-banner-dismiss:hover{color:var(--color-ink)}.approval-actions{display:flex;gap:8px}.toast-static{position:static;transform:none;margin-bottom:16px;animation:none;display:inline-block}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg)}.login-card{background:var(--color-surface);border-radius:12px;padding:32px;width:360px;box-shadow:0 1px 2px #1c1e260a,0 8px 24px #1c1e2614;border:1px solid var(--color-border)}.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:4px}.login-brand h1{font-size:20px;margin:0;color:var(--color-ink)}.login-subtitle{font-size:13px;color:var(--color-muted);margin:0 0 24px}.login-card label{display:block;font-size:13px;font-weight:500;color:var(--color-ink);margin-bottom:6px}.login-card input{width:100%;border:1px solid var(--color-border);border-radius:8px;padding:9px 12px;font-size:13px;font-family:inherit;margin-bottom:16px;box-sizing:border-box}.login-card input:focus{outline:none;border-color:var(--color-cashier);box-shadow:0 0 0 3px #5b7fdb26}.login-submit{width:100%;padding:10px;margin-top:4px}.login-hint{margin-top:16px;font-size:12px;color:var(--color-muted);text-align:center}.app-header-user{display:flex;align-items:center;gap:12px}.app-header-username,.app-header-greeting{font-size:13px;color:#d1d5db;font-weight:500}.app-tab{position:relative;display:inline-flex;align-items:center;gap:6px}.app-tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#b3432f;color:#fff;font-size:11px;font-weight:700;line-height:1}*{box-sizing:border-box}:root{--color-ink: #1c1e26;--color-bg: #f7f5f2;--color-surface: #ffffff;--color-border: #e8e5df;--color-muted: #8b8d98;--color-cashier: #5b7fdb;--color-barista: #4fa689;--color-cleaner: #d89b4a}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--color-bg);color:var(--color-ink);-webkit-font-smoothing:antialiased}
