:root{--ink:#27233b;--muted:#77728b;--paper:#fbf9f5;--card:#fff;--line:#e8e4ed;--purple:#5b4bdb;--purple-deep:#342b57;--pink:#f05b78;--pink-soft:#fff0f3;--mint:#cfeadf;--mint-deep:#167253;--amber:#f5c463;--shadow:0 18px 50px rgba(54,43,86,.10);--radius:20px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}.hidden{display:none!important}button,input,select,textarea{font:inherit}button{cursor:pointer}.ambient{position:fixed;border-radius:50%;filter:blur(5px);pointer-events:none;z-index:-1}.ambient-one{width:380px;height:380px;background:#f9d6df;top:-180px;right:-130px}.ambient-two{width:260px;height:260px;background:#e1ddff;bottom:-130px;left:25%}
.login-layout{display:grid;grid-template-columns:minmax(420px,1.12fr) minmax(420px,.88fr);min-height:100vh}.login-story{background:linear-gradient(150deg,#28213f 0%,#3d315f 65%,#53325b 100%);color:white;padding:54px clamp(44px,6vw,92px);display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-story:before,.login-story:after{content:"";position:absolute;border:1px solid rgba(255,255,255,.12);border-radius:50%}.login-story:before{width:520px;height:520px;right:-280px;top:10%}.login-story:after{width:290px;height:290px;right:-80px;top:24%}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none}.brand-light{color:white;position:relative;z-index:1}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:linear-gradient(135deg,var(--pink),#e6436a);color:white;font-weight:900;letter-spacing:-1px;box-shadow:0 8px 20px rgba(240,91,120,.25)}.brand strong,.brand small{display:block}.brand strong{font-size:15px}.brand small{opacity:.65;font-size:12px}.story-copy{max-width:670px;position:relative;z-index:1}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:11px;font-weight:800;color:var(--pink);margin:0 0 12px}.story-copy h1{font-size:clamp(48px,5vw,76px);line-height:1.02;letter-spacing:-.055em;margin:0 0 28px}.story-copy h1 em{font-family:Georgia,serif;font-weight:400;color:#f5c7d3}.story-copy>p:last-child{font-size:18px;color:#d8d2e5;max-width:540px}.story-footer{display:flex;gap:24px;color:#c7c0d6;font-size:12px}.story-footer span:first-child{color:#ffc5d0}.story-footer span:nth-child(2){color:#c9c2ff}.login-panel{display:grid;place-items:center;padding:40px}.login-card{width:min(420px,100%)}.mobile-brand{display:none}.login-card h2{font-size:42px;letter-spacing:-.04em;margin:0}.muted{color:var(--muted)}.form-stack{display:grid;gap:18px;margin-top:32px}label{display:grid;gap:7px;font-weight:700;font-size:13px}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px 13px;color:var(--ink);outline:none;transition:.2s}input:focus,select:focus,textarea:focus{border-color:var(--purple);box-shadow:0 0 0 3px rgba(91,75,219,.1)}textarea{min-height:90px;resize:vertical}.password-wrap{position:relative}.password-wrap input{padding-right:84px}.peek{position:absolute;right:8px;top:7px;border:0;background:transparent;color:var(--purple);font-size:12px;font-weight:800}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;border:0;border-radius:12px;padding:11px 16px;font-weight:800;transition:.18s}.button:hover{transform:translateY(-1px)}.button.primary{background:var(--purple);color:white;box-shadow:0 8px 20px rgba(91,75,219,.22)}.button.secondary{background:#f1eef8;color:var(--purple-deep)}.button.danger{background:#fff0f2;color:#a71d38}.button.wide{width:100%;justify-content:space-between;padding:14px 17px}.form-error{color:#a61e3a;min-height:20px;margin:0}.privacy-note{margin-top:34px;color:#9893a5;font-size:12px}.setup-hint{margin-top:20px;background:#fff4d9;border:1px solid #f1d28c;border-radius:14px;padding:14px;display:grid;gap:5px}.setup-hint span{font-size:12px;color:#715c2c}.text-button{padding:0;border:0;background:none;text-align:left;color:var(--purple);font-weight:800;margin-top:5px}
.app-shell{min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:250px;background:white;border-right:1px solid var(--line);padding:26px 18px 18px;display:flex;flex-direction:column;z-index:20}.sidebar .brand{padding:0 10px 28px}.sidebar nav{display:grid;gap:5px}.sidebar nav button,.sidebar-bottom>button{border:0;background:transparent;text-align:left;padding:11px 13px;border-radius:11px;color:#69647c;font-weight:700;display:flex;align-items:center;gap:11px;width:100%}.sidebar nav button:hover,.sidebar nav button.active,.sidebar-bottom>button:hover,.sidebar-bottom>button.active{color:var(--purple-deep);background:#f2effb}.nav-icon{width:21px;text-align:center;font-size:18px}.badge{margin-left:auto;background:var(--pink);color:#fff;border-radius:999px;min-width:20px;height:20px;display:grid;place-items:center;font-size:11px}.sidebar-bottom{margin-top:auto}.profile-chip{margin-top:14px;padding:13px 8px 0;border-top:1px solid var(--line);display:flex;align-items:center;gap:9px}.profile-chip>span:nth-child(2){min-width:0;flex:1}.profile-chip strong,.profile-chip small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-chip small{font-size:11px;color:var(--muted)}.profile-chip>button{border:0;background:transparent;font-size:18px;color:var(--muted)}.avatar{width:36px;height:36px;border-radius:12px;background:var(--pink-soft);color:var(--pink);display:grid;place-items:center;font-weight:900}.content{margin-left:250px;padding:38px clamp(28px,4vw,62px) 70px}.mobile-header{display:none}
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:30px}.page-head h1{font-size:36px;letter-spacing:-.04em;margin:2px 0 4px}.page-head p{margin:0;color:var(--muted)}.head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.month-picker{display:flex;align-items:center;background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.month-picker button{border:0;background:white;padding:11px 13px}.month-picker strong{min-width:145px;text-align:center}.grid{display:grid;gap:18px}.stats-grid{grid-template-columns:repeat(4,1fr);margin-bottom:22px}.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:0 8px 30px rgba(54,43,86,.045);position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;width:55px;height:55px;border-radius:50%;right:-18px;bottom:-18px;background:var(--accent,#ede9ff)}.stat-card small{display:block;color:var(--muted);font-weight:700}.stat-card strong{display:block;font-size:30px;letter-spacing:-.04em;margin:8px 0 2px}.stat-card .trend{font-size:11px;color:var(--mint-deep)}.two-col{grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr)}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:0 8px 30px rgba(54,43,86,.04)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:17px}.panel-head h2{font-size:18px;margin:0}.panel-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.link-button{border:0;background:none;color:var(--purple);font-weight:800}.shift-list{display:grid;gap:9px}.shift-row{display:grid;grid-template-columns:58px 1fr auto;align-items:center;gap:13px;padding:12px;border:1px solid var(--line);border-radius:14px}.date-tile{text-align:center;border-radius:10px;background:#f4f1fa;padding:7px 4px}.date-tile strong,.date-tile small{display:block}.date-tile strong{font-size:17px}.date-tile small{text-transform:uppercase;font-size:9px;color:var(--muted)}.shift-main strong,.shift-main small{display:block}.shift-main small{color:var(--muted);margin-top:2px}.location-pill,.status-pill,.type-pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;background:#f2effb;color:var(--purple-deep)}.location-pill:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--dot,var(--purple))}.status-pill.pending{background:#fff4d9;color:#85600c}.status-pill.approved{background:#e5f6ee;color:#147052}.status-pill.rejected{background:#fff0f2;color:#a51d36}.empty{padding:32px;text-align:center;color:var(--muted);border:1px dashed #d9d4e2;border-radius:14px}.birthday-list{display:grid;gap:12px}.birthday{display:flex;align-items:center;gap:11px}.birthday .avatar{background:#fff0d2;color:#966308}.birthday span:nth-child(2){flex:1}.birthday strong,.birthday small{display:block}.birthday small{color:var(--muted);font-size:11px}
.compact-label{display:flex;align-items:center;gap:9px;color:var(--muted)}.compact-label select{min-width:190px}
.calendar-days{display:grid;gap:12px}.calendar-day{background:white;border:1px solid var(--line);border-radius:17px;overflow:hidden}.day-head{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;background:#faf8fc;border-bottom:1px solid var(--line)}.day-head strong{font-size:14px}.day-head span{font-size:11px;color:var(--muted)}.day-events{padding:9px}.event-row{display:grid;grid-template-columns:84px 1fr 130px auto;align-items:center;gap:12px;padding:10px 8px;border-bottom:1px solid #f1eef4}.event-row:last-child{border:0}.event-time{font-weight:800}.event-person strong,.event-person small{display:block}.event-person small{color:var(--muted);font-size:11px}.event-note{font-size:11px;color:var(--muted)}.warning-box{border-radius:15px;padding:14px 16px;background:#fff8e8;border:1px solid #f2d995;margin-bottom:18px}.warning-box h3{font-size:13px;margin:0 0 7px}.warning-box ul{margin:0;padding-left:18px;font-size:12px;color:#725b24}.warning-box.error{background:#fff1f3;border-color:#f5bdc8}.warning-box.error ul{color:#8b2740}.filter-row{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}.filter-row input,.filter-row select{width:auto;min-width:180px}
.planning-summary{display:grid;grid-template-columns:150px 170px 1fr;gap:12px;margin-bottom:18px}.planning-kpi,.planning-copy{background:white;border:1px solid var(--line);border-radius:16px;padding:15px 17px}.planning-kpi small,.planning-kpi strong,.planning-kpi span,.planning-copy strong,.planning-copy span{display:block}.planning-kpi small{color:var(--muted);font-weight:700}.planning-kpi strong{font-size:28px;line-height:1.15;margin:3px 0}.planning-kpi span,.planning-copy span{color:var(--muted);font-size:11px}.planning-kpi.needs-work{background:#fff8e8;border-color:#f2d995}.planning-kpi.needs-work strong{color:#99660a}.planning-kpi.complete{background:#eaf7f1;border-color:#bfe4d4}.planning-copy{display:flex;flex-direction:column;justify-content:center}.planning-copy strong{margin-bottom:3px}.calendar-day.needs-planning{border-color:#ead29a}.unplanned-row{display:grid;grid-template-columns:84px 1fr auto;align-items:center;gap:12px;padding:11px 8px;background:#fffbf1;border-radius:11px}.open-status{justify-self:start;background:#fff0c7;color:#8c610d;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.unplanned-copy strong,.unplanned-copy small{display:block}.unplanned-copy small{color:var(--muted);font-size:11px}.add-shift-button{color:var(--purple);border-color:#d8d1f2}
.sheet-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 30px rgba(54,43,86,.04)}.schedule-sheet{display:grid;width:max-content;min-width:100%}.schedule-sheet>div{border-right:1px solid #e8e4ed;border-bottom:1px solid #e8e4ed;min-width:0}.sheet-corner,.sheet-person{position:sticky;left:0;z-index:4;background:#fbf9fd}.sheet-corner{padding:11px 13px;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;display:flex;align-items:center}.marker-label{background:#f2effb;color:var(--purple)}.sheet-marker{min-height:52px;padding:4px;display:flex;flex-direction:column;gap:3px;background:#faf8fc}.marker{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:5px;padding:2px 4px;font-size:8px;font-weight:900;background:#eeeaf8;color:#554d70}.marker.school_holiday{background:#e9e4ff;color:#5544c1}.marker.open_sunday{background:#ffe2e8;color:#a92342}.marker.holiday,.marker.closure{background:#fff0c7;color:#815a0a}.marker.birthday{background:#e4f5ed;color:#147052}.marker.internship{background:#dceeff;color:#1c5d91}.sheet-day{padding:7px 4px;text-align:center;background:#f7f5fa;position:sticky;top:0;z-index:3}.sheet-day strong,.sheet-day small{display:block}.sheet-day strong{font-size:15px}.sheet-day small{font-size:9px;color:var(--muted);text-transform:uppercase}.sheet-day.weekend{background:#f1eef6}.sheet-person{min-height:74px;padding:9px 10px;display:flex;align-items:center;gap:8px}.sheet-person .avatar{flex:0 0 auto;width:32px;height:32px;border-radius:9px;font-size:11px}.sheet-person strong,.sheet-person small{display:block}.sheet-person strong{font-size:12px}.sheet-person small{font-size:9px;color:var(--muted)}.sheet-cell{min-height:74px;padding:4px;background:#fff;position:relative;display:flex;flex-direction:column;gap:3px}.sheet-cell.closed{background:repeating-linear-gradient(135deg,#faf9fb,#faf9fb 5px,#f4f2f6 5px,#f4f2f6 10px)}.shift-chip{border:0;border-left:3px solid var(--shift);background:#f3f0fa;border-radius:6px;padding:4px;text-align:left;color:var(--ink)}.shift-chip strong,.shift-chip small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shift-chip strong{font-size:10px}.shift-chip small{font-size:8px;color:var(--muted)}.cell-add{position:absolute;right:3px;bottom:3px;width:20px;height:20px;border:0;border-radius:6px;background:transparent;color:#aaa}.sheet-cell:hover .cell-add{background:#ebe7fa;color:var(--purple)}.employee-link{border:0;background:none;color:var(--purple);font-weight:800;padding:0}.template-list{display:grid;gap:7px}.template-row{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--line);background:#fff;border-radius:11px;padding:9px;text-align:left}.template-row>span:first-child{width:36px;height:36px;display:grid;place-items:center;border-radius:9px;background:color-mix(in srgb,var(--template,#5b4bdb) 15%,white);color:var(--template,#5b4bdb);font-weight:900}.template-row>span:last-child{min-width:0}.template-row strong,.template-row small{display:block}.template-row small{color:var(--muted);font-size:10px}.intern-badge{background:#dceeff!important;color:#1c5d91!important}.print-only{display:none}.worktime-report header{margin-bottom:18px}.worktime-report h1{margin:0}.worktime-report footer{display:flex;justify-content:space-between;margin-top:28px;font-size:12px}
.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;min-width:720px}th,td{text-align:left;padding:13px 15px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:#faf9fc}tr:last-child td{border-bottom:0}.table-actions{display:flex;gap:7px}.mini-button{border:1px solid var(--line);background:white;border-radius:9px;padding:6px 9px;font-size:11px;font-weight:800}.mini-button.ok{color:var(--mint-deep)}.mini-button.no{color:#a51d36}.team-grid{grid-template-columns:repeat(3,1fr)}.person-card{background:white;border:1px solid var(--line);border-radius:18px;padding:18px}.person-top{display:flex;align-items:center;gap:12px}.person-top .avatar{width:44px;height:44px}.person-top>span:nth-child(2){flex:1}.person-top strong,.person-top small{display:block}.person-top small{color:var(--muted)}.person-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.person-meta div{background:#faf8fc;border-radius:10px;padding:9px}.person-meta small,.person-meta strong{display:block}.person-meta small{font-size:10px;color:var(--muted)}.person-meta strong{font-size:13px}.person-card.inactive{opacity:.68}.location-grid{grid-template-columns:1fr 1fr}.hours-row{display:grid;grid-template-columns:95px 1fr 1fr 70px;align-items:center;gap:8px;padding:7px 0}.hours-row input{padding:8px}.event-card{display:flex;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.event-card:last-child{border:0}.event-date{width:48px;text-align:center;color:var(--purple);font-weight:900}.event-card>span:nth-child(2){flex:1}.event-card strong,.event-card small{display:block}.event-card small{color:var(--muted)}
.modal{border:0;padding:0;background:transparent;width:min(650px,calc(100% - 28px));max-height:90vh}.modal::backdrop{background:rgba(30,24,48,.62);backdrop-filter:blur(5px)}.modal-card{background:white;border-radius:22px;padding:0;overflow:hidden;box-shadow:var(--shadow)}.modal-card>header{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 24px 16px;border-bottom:1px solid var(--line)}.modal-card h2{margin:0;font-size:24px;letter-spacing:-.03em}.icon-button{border:0;background:#f3f0f6;width:34px;height:34px;border-radius:10px;font-size:22px;color:var(--muted)}#modal-body{padding:22px 24px 26px;max-height:70vh;overflow:auto}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:21px}.form-note{background:#f5f2fb;color:#625c76;padding:11px 13px;border-radius:11px;font-size:12px}.check-line{display:flex;align-items:center;gap:8px}.check-line input{width:auto}.toast-region{position:fixed;right:24px;bottom:24px;display:grid;gap:8px;z-index:80}.toast{background:#2f2945;color:white;border-radius:12px;padding:12px 15px;box-shadow:var(--shadow);animation:toast-in .2s ease}.toast.error{background:#9d2740}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}}
@media(max-width:1050px){.stats-grid{grid-template-columns:1fr 1fr}.team-grid{grid-template-columns:1fr 1fr}.two-col{grid-template-columns:1fr}.planning-summary{grid-template-columns:1fr 1fr}.planning-copy{grid-column:1/-1}.event-row{grid-template-columns:75px 1fr auto}.event-note{display:none}}
@media(max-width:760px){.login-layout{display:block}.login-story{display:none}.login-panel{min-height:100vh;padding:28px}.mobile-brand{display:block;font-weight:900;color:var(--pink);margin-bottom:60px}.mobile-brand span{color:var(--muted);font-weight:500}.sidebar{transform:translateX(-100%);transition:.2s;box-shadow:var(--shadow)}.sidebar.open{transform:none}.mobile-header{display:flex;position:sticky;top:0;z-index:15;align-items:center;gap:10px;background:rgba(251,249,245,.92);backdrop-filter:blur(12px);padding:10px 17px;border-bottom:1px solid var(--line)}.mobile-header button{border:0;background:transparent;font-size:21px}.mobile-header .brand-mark{width:34px;height:34px;border-radius:10px;font-size:12px}.content{margin:0;padding:24px 17px 60px}.page-head{display:block}.head-actions{margin-top:16px}.page-head h1{font-size:30px}.stats-grid,.team-grid,.location-grid,.planning-summary{grid-template-columns:1fr}.planning-copy{grid-column:auto}.stat-card{padding:17px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.event-row{grid-template-columns:66px 1fr}.event-row>.location-pill{display:none}.unplanned-row{grid-template-columns:58px 1fr}.unplanned-row .add-shift-button{grid-column:1/-1;width:100%}.month-picker strong{min-width:120px}.hours-row{grid-template-columns:80px 1fr 1fr}.hours-row label{grid-column:1/-1}.toast-region{left:17px;right:17px;bottom:17px}}
@media print{@page{size:A4 landscape;margin:10mm}body{background:white}.sidebar,.mobile-header,.head-actions,.warning-box,.no-print,.ambient,.planning-summary{display:none!important}.content{margin:0;padding:0}.page-head{margin-bottom:10px}.page-head h1{font-size:22px}.sheet-wrap{overflow:visible;border:0;box-shadow:none}.schedule-sheet{transform-origin:top left;font-size:8px}.sheet-corner,.sheet-person{position:static}.sheet-day{position:static}.sheet-cell,.sheet-person{min-height:48px}.shift-chip{padding:2px}.print-only{display:none!important}body.print-schedule #worktime-report{display:none!important}body.print-worktime #view>*:not(#worktime-report){display:none!important}body.print-worktime #worktime-report{display:block!important}.worktime-report table{min-width:0}.panel{box-shadow:none}}
