html{color:#111;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f4f4f4;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{min-width:320px;min-height:100vh;margin:0}:root{color:#171717;font-synthesis:none;text-rendering:optimizelegibility;background:#f4f4f4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:#f4f4f4;min-width:320px;min-height:100%}body{background:radial-gradient(circle at 0 0,#c8102e14,#0000 28rem),#f4f4f4;min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.62}.app{min-height:100vh}.red-button,.outline-button,.delete-button,.current-week-button,.week-arrow,.close-button{border:0;border-radius:10px;font-weight:750;transition:transform .15s,box-shadow .15s,background .15s,border-color .15s}.red-button{color:#fff;background:#c8102e;min-height:44px;padding:.72rem 1.1rem;box-shadow:0 5px 14px #c8102e38}.red-button:hover:not(:disabled){background:#a90d27;transform:translateY(-1px);box-shadow:0 7px 18px #c8102e4d}.red-button:active:not(:disabled){transform:translateY(0)}.outline-button{color:#222;background:#fff;border:1px solid #d1d1d1;min-height:42px;padding:.65rem 1rem}.outline-button:hover:not(:disabled){color:#c8102e;background:#fff7f8;border-color:#c8102e}.delete-button{color:#a10822;background:#fff2f4;border:1px solid #d34a5f;min-height:42px;padding:.65rem 1rem}.delete-button:hover:not(:disabled){color:#fff;background:#c8102e;border-color:#c8102e}.loading-page{color:#555;place-content:center;justify-items:center;gap:1rem;min-height:100vh;font-weight:650;display:grid}.loading-spinner{border:4px solid #dedede;border-top-color:#c8102e;border-radius:50%;width:42px;height:42px;animation:.75s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-page{background:linear-gradient(135deg,#181818f7,#360810f5),#171717;place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{background:#fff;border-radius:22px;width:min(100%,430px);padding:2rem;box-shadow:0 25px 70px #00000052,0 0 0 1px #ffffff14}.brand-logo{flex-direction:column;align-items:flex-start;line-height:1;display:inline-flex}.brand-main{letter-spacing:-.055em;color:#c8102e;font-size:clamp(1.7rem,4vw,2.4rem);font-weight:950}.brand-sub{letter-spacing:.19em;color:#171717;margin-top:.25rem;font-size:.66rem;font-weight:900}.login-title{margin:2rem 0 1.5rem}.login-title>span,.red-label{color:#c8102e;letter-spacing:.12em;text-transform:uppercase;margin-bottom:.35rem;font-size:.74rem;font-weight:900;display:inline-block}.login-title h1{letter-spacing:-.04em;margin:0;font-size:clamp(1.8rem,6vw,2.5rem);line-height:1.05}.login-title p{color:#666;margin:.8rem 0 0;line-height:1.55}.login-card form{gap:1rem;display:grid}.login-card label,.modal label{color:#353535;gap:.45rem;font-size:.9rem;font-weight:750;display:grid}.login-card input,.modal input,.modal select,.modal textarea{color:#171717;background:#fff;border:1px solid #d5d5d5;border-radius:10px;outline:none;width:100%;transition:border-color .15s,box-shadow .15s}.login-card input,.modal input,.modal select{min-height:46px;padding:0 .85rem}.modal textarea{resize:vertical;min-height:95px;padding:.8rem}.login-card input:focus,.modal input:focus,.modal select:focus,.modal textarea:focus{border-color:#c8102e;box-shadow:0 0 0 3px #c8102e1f}.login-error{color:#9c0d25;background:#fff0f3;border:1px solid #f0a0ae;border-radius:10px;margin:0;padding:.8rem .9rem;font-size:.88rem;line-height:1.4}.login-button{width:100%;margin-top:.25rem}.topbar{z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff5;border-bottom:1px solid #e1e1e1;justify-content:space-between;align-items:center;gap:1rem;min-height:76px;padding:.85rem clamp(1rem,4vw,2.5rem);display:flex;position:sticky;top:0;box-shadow:0 3px 18px #0000000d}.brand-logo-small .brand-main{font-size:1.45rem}.brand-logo-small .brand-sub{font-size:.53rem}.user-section{justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.user-information{text-align:right;line-height:1.15;display:grid}.user-information span{color:#777;font-size:.73rem}.user-information strong{font-size:.95rem}.role-badge{color:#fff;background:#171717;border-radius:999px;padding:.42rem .7rem;font-size:.76rem;font-weight:850}.content{width:min(100%,1500px);margin:0 auto;padding:2rem clamp(.8rem,3vw,2rem) 3rem}.page-heading{justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.4rem;display:flex}.page-heading h1{letter-spacing:-.055em;margin:0;font-size:clamp(2rem,5vw,3.15rem);line-height:1}.week-navigation{background:#fff;border:1px solid #dedede;border-radius:16px;justify-content:center;align-items:center;gap:.8rem;margin-bottom:1rem;padding:.9rem;display:flex;box-shadow:0 8px 26px #0000000d}.week-arrow{color:#fff;background:#171717;flex:none;place-items:center;width:44px;height:44px;font-size:1.8rem;line-height:1;display:grid}.week-arrow:hover{background:#c8102e;transform:translateY(-1px)}.week-title{text-align:center;justify-items:center;gap:.18rem;min-width:220px;display:grid}.week-title span{color:#777;text-transform:uppercase;letter-spacing:.08em;font-size:.76rem;font-weight:750}.week-title strong{font-size:1rem}.current-week-button{color:#333;background:#f8f8f8;border:1px solid #d8d8d8;min-height:38px;padding:.5rem .85rem}.current-week-button:hover{color:#c8102e;background:#fff4f6;border-color:#c8102e}.drag-hint{color:#65202d;background:#fff5f7;border-left:4px solid #c8102e;border-radius:8px;margin:0 0 1rem;padding:.72rem .9rem;font-size:.86rem;line-height:1.45}.page-error{color:#921128;background:#fff0f3;border:1px solid #e892a1;border-radius:12px;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;padding:.85rem 1rem;display:flex}.page-error button{color:#921128;background:0 0;border:0;flex:none;font-weight:850;text-decoration:underline}.schedule-container{-webkit-overflow-scrolling:touch;background:#fff;border:1px solid #dcdcdc;border-radius:18px;position:relative;overflow-x:auto;box-shadow:0 12px 34px #00000012}.schedule-grid{grid-template-columns:minmax(150px,1.1fr) repeat(7,minmax(120px,1fr));min-width:1080px;display:grid}.employee-header,.day-header{color:#fff;background:#171717;border-bottom:1px solid #dfdfdf;border-right:1px solid #dfdfdf;flex-direction:column;justify-content:center;min-height:78px;padding:.75rem;display:flex}.employee-header{z-index:12;letter-spacing:.04em;align-items:flex-start;font-size:.88rem;font-weight:900;position:sticky;left:0}.day-header{text-align:center;align-items:center}.day-header strong{font-size:.9rem}.day-header span{color:#cfcfcf;margin-top:.3rem;font-size:.73rem}.weekday-short{display:none}.employee-row{display:contents}.employee-name{z-index:10;background:#fff;border-bottom:1px solid #dfdfdf;border-right:1px solid #dfdfdf;align-items:center;gap:.7rem;min-height:112px;padding:.8rem;display:flex;position:sticky;left:0}.employee-avatar{color:#fff;background:#171717;border-radius:50%;flex:none;place-items:center;width:35px;height:35px;font-size:.87rem;font-weight:900;display:grid}.employee-name strong{text-overflow:ellipsis;font-size:.9rem;overflow:hidden}.current-employee{background:#fff1f4;border-left:5px solid #c8102e}.current-employee .employee-avatar{background:#c8102e;box-shadow:0 0 0 4px #c8102e21}.shift-cell{background:#fcfcfc;border-bottom:1px solid #e2e2e2;border-right:1px solid #e2e2e2;min-height:112px;padding:.45rem;transition:background .15s,box-shadow .15s;position:relative}.shift-cell:hover{background:#fff6f7;box-shadow:inset 0 0 0 2px #c8102e1a}.current-user-cell{background:linear-gradient(#c8102e12,#c8102e06),#fff}.empty-cell{color:#c5c5c5;border:2px dashed #0000;border-radius:10px;place-items:center;width:100%;min-height:98px;font-size:1.65rem;font-weight:500;transition:border-color .15s,background .15s,color .15s;display:grid}.shift-cell:hover .empty-cell{color:#c8102e;background:#c8102e09;border-color:#e7a0ac}.shift-card{-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:11px;flex-direction:column;justify-content:center;gap:.13rem;min-height:98px;padding:.65rem;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.shift-card[draggable=true]{cursor:grab}.shift-card[draggable=true]:active{cursor:grabbing}.shift-card:hover{transform:translateY(-1px);box-shadow:0 7px 16px #0000001f}.shift-label{width:fit-content;color:inherit;letter-spacing:.06em;text-transform:uppercase;background:#ffffffbf;border-radius:999px;padding:.18rem .42rem;font-size:.62rem;font-weight:900}.shift-card strong{margin-top:.15rem;font-size:1rem;line-height:1.1}.shift-card small{font-size:.72rem;line-height:1.25}.shift-note{opacity:.86;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.2rem;display:-webkit-box;overflow:hidden}.early-shift{color:#5f4800;background:#fff4c9;border-color:#d4a925}.late-shift{color:#fff;background:#25283c;border-color:#565a78}.late-shift .shift-label{background:#ffffff29}.double-shift{color:#fff;background:linear-gradient(135deg,#171717 0% 47%,#c8102e 47% 53%,#171717 53% 100%);border:2px solid #c8102e}.double-shift .shift-label{background:#ffffff2b}.sick-entry{color:#fff;background:repeating-linear-gradient(-45deg,#6c1926,#6c1926 8px,#781d2b 8px 16px);border:2px solid #e24159}.sick-entry .shift-label{background:#ffffff29}.free-entry{color:#252525;background:#e9e9e9;border:2px dashed #969696}.available-entry{color:#155d2c;background:#e4f7ea;border:2px solid #39a95d}.status-text{font-size:.98rem;font-weight:900}.current-user-shift{transform:scale(1.025);box-shadow:0 0 0 3px #c8102e33,0 7px 18px #c8102e4f;color:#fff!important;background:#c8102e!important;border:3px solid #ff8a9c!important}.current-user-shift:hover{transform:scale(1.025)translateY(-1px)}.current-user-shift .shift-label{color:#fff!important;background:#fff3!important}.current-user-shift strong,.current-user-shift small{color:#fff!important}.schedule-loading{color:#555;text-align:center;background:#fffffff0;border-top:1px solid #e0e0e0;width:100%;padding:.8rem 1rem;font-size:.85rem;font-weight:750;position:sticky;left:0}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0000009e;place-items:center;padding:1rem;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{background:#fff;border-radius:20px;gap:1rem;width:min(100%,550px);padding:1.4rem;display:grid;box-shadow:0 25px 80px #00000061}.modal-header{border-bottom:1px solid #eee;justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:.8rem;display:flex}.modal-header h2{letter-spacing:-.035em;margin:0;font-size:1.55rem}.close-button{color:#222;background:#f1f1f1;flex:none;place-items:center;width:40px;height:40px;font-size:1.55rem;line-height:1;display:grid}.close-button:hover{color:#fff;background:#c8102e}.time-fields{grid-template-columns:1fr 1fr;gap:.85rem;display:grid}.modal-actions{border-top:1px solid #eee;justify-content:flex-end;align-items:center;gap:.7rem;padding-top:.5rem;display:flex}.modal-actions .delete-button{margin-right:auto}@media (width<=900px){.content{padding-top:1.35rem}.topbar{min-height:68px}.user-information{display:none}.schedule-grid{grid-template-columns:125px repeat(7,minmax(110px,1fr));min-width:920px}.employee-name,.shift-cell{min-height:104px}.shift-card,.empty-cell{min-height:90px}.weekday-long{display:none}.weekday-short{display:block}.current-user-shift,.current-user-shift:hover{transform:none}}@media (width<=620px){.topbar{align-items:center;padding:.7rem .8rem}.brand-logo-small .brand-main{font-size:1.2rem}.brand-logo-small .brand-sub{font-size:.43rem}.user-section{gap:.42rem}.role-badge{display:none}.user-section .outline-button{min-height:38px;padding:.48rem .68rem;font-size:.78rem}.content{padding-left:.6rem;padding-right:.6rem}.page-heading{align-items:center}.page-heading h1{font-size:2rem}.page-heading .red-button{min-height:40px;padding:.55rem .75rem;font-size:.82rem}.week-navigation{gap:.4rem;padding:.65rem}.week-arrow{width:38px;height:38px}.week-title{flex:1;min-width:0}.week-title strong{font-size:.81rem}.week-title span{font-size:.64rem}.current-week-button{display:none}.schedule-container{border-radius:13px}.schedule-grid{grid-template-columns:112px repeat(7,minmax(104px,1fr));min-width:850px}.employee-header,.day-header{min-height:66px;padding:.5rem}.employee-name{gap:.45rem;min-height:98px;padding:.55rem}.employee-avatar{width:29px;height:29px;font-size:.75rem}.employee-name strong{font-size:.77rem}.shift-cell{min-height:98px;padding:.32rem}.shift-card,.empty-cell{min-height:88px}.shift-card{padding:.52rem}.shift-card strong{font-size:.88rem}.shift-card small{font-size:.66rem}.shift-label{font-size:.55rem}.modal-backdrop{align-items:end;padding:0}.modal{border-radius:20px 20px 0 0;width:100%;max-height:94vh;padding:1.15rem;overflow-y:auto}.time-fields{grid-template-columns:1fr}.modal-actions{flex-wrap:wrap}.modal-actions button{flex:1}.modal-actions .delete-button{flex-basis:100%;margin-right:0}.login-page{padding:1rem}.login-card{border-radius:18px;padding:1.4rem}}@media (width<=380px){.brand-logo-small .brand-sub{display:none}.page-heading h1{font-size:1.75rem}.week-title strong{font-size:.73rem}}.shift-cell{min-width:0;overflow:hidden}.shift-card{width:100%;min-width:0;max-width:100%;overflow:hidden;transform:none}.shift-card:hover{transform:none}.shift-label{text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%;max-width:100%;padding:.2rem .3rem;font-size:.57rem;line-height:1.15;display:block;overflow:hidden}.status-text{text-align:center;overflow-wrap:anywhere;word-break:break-word;width:100%;min-width:0;max-width:100%;font-size:clamp(.68rem,1vw,.9rem);line-height:1.15;display:block;overflow:hidden}.status-text .shift-card strong,.status-text .shift-card small,.status-text .shift-note{text-overflow:ellipsis;max-width:100%;overflow:hidden}.status-text .shift-note{overflow-wrap:anywhere;word-break:break-word}.status-text .current-user-shift,.status-text .current-user-shift:hover{transform:none}.status-text .available-entry .shift-label,.status-text .available-entry .status-text{font-size:.65rem}@media (width<=900px){.status-text .shift-label{font-size:.52rem}.status-text .status-text{font-size:.7rem}}
