:root{--blue:#008fc9;--ink:#101820;--muted:#65727e;--line:#dce4e9;--bg:#f4f7f9;--ok:#178957;--warn:#c77a00;--bad:#c93d3d}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit}header{height:78px;padding:12px max(24px,calc((100% - 1180px)/2));display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:16px;text-decoration:none;font-weight:800}.brand img{width:155px;height:50px;object-fit:contain}.brand span{padding-left:16px;border-left:1px solid var(--line)}nav{display:flex;gap:18px}nav a{text-decoration:none;font-weight:700}.install-app{max-width:760px;margin:14px auto -18px;padding:12px 14px;display:flex;align-items:center;gap:12px;background:#dff4fc;border:1px solid #a7d8eb;border-radius:14px}.install-app[hidden]{display:none}.install-app span{display:grid;flex:1}.install-app small{color:var(--muted)}.install-app button{padding:9px 13px;background:var(--blue)}.install-app .install-close{background:transparent;color:var(--ink);font-size:22px;padding:4px 8px}main{max-width:1180px;margin:0 auto;padding:42px 24px 70px}.hero{display:flex;align-items:center;justify-content:space-between;gap:40px;margin-bottom:32px}.hero h1{font-size:clamp(34px,5vw,64px);line-height:1.02;max-width:800px;margin:8px 0 18px}.hero p:not(.eyebrow){font-size:18px;max-width:720px;color:var(--muted)}.hero img{width:310px;max-width:30%;height:auto}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--blue);font-weight:900;font-size:13px}.upload-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:26px}.card,.success-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:0 14px 40px rgba(16,24,32,.06)}form h2{margin:8px 0 20px}label{display:grid;gap:8px;font-weight:700;margin-bottom:17px}input,textarea,select{width:100%;border:1px solid #bdc8cf;border-radius:11px;padding:13px 14px;font:inherit;background:#fff}input:focus,textarea:focus,select:focus{outline:3px solid rgba(0,143,201,.18);border-color:var(--blue)}.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}.drop{border:2px dashed #9fcddd;background:#f2fbff;padding:22px;border-radius:14px}.drop input{border:0;padding:8px 0;background:transparent}.drop small,.muted,.privacy{color:var(--muted);font-weight:500}.check{display:flex;grid-template-columns:22px 1fr;align-items:flex-start}.check input{width:20px;height:20px}.button,button{border:0;border-radius:11px;padding:13px 18px;background:var(--ink);color:#fff;font-weight:800;font-size:15px;text-decoration:none;display:inline-block;cursor:pointer}.submit{width:100%;background:var(--blue);font-size:17px;padding:16px}.secondary{background:#e8eef1;color:var(--ink)}aside{padding:24px}.step{display:flex;gap:16px;margin-bottom:26px}.step b{display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:var(--blue);color:#fff}.step span{display:grid;gap:5px;color:var(--muted)}.step strong{color:var(--ink)}aside>img{display:block;width:120px;margin:48px auto 0;opacity:.18}.auth{max-width:540px;margin:40px auto}.auth-logo{width:260px;max-width:80%;display:block;margin:0 auto 28px}.auth details{margin-top:26px;border-top:1px solid var(--line);padding-top:18px}.auth summary{font-weight:800;cursor:pointer;margin-bottom:18px}.flash{padding:15px 18px;border-radius:12px;margin-bottom:20px}.flash.success{background:#dff5e9;color:#0d6b42}.flash.error,.error{background:#ffebeb;color:#842525}.success-card{text-align:center;max-width:650px;margin:55px auto}.success-card img{width:90px}.code{font-size:28px;font-weight:900;letter-spacing:.12em;background:#eef5f8;padding:15px;border-radius:12px;margin:22px auto}.admin-head,.detail-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.admin-head img{width:280px;max-width:35%}.detail-head img{width:95px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.stats a{display:grid;background:#fff;padding:18px;border:1px solid var(--line);border-radius:15px;text-decoration:none}.stats strong{font-size:28px}.filters{display:grid;grid-template-columns:1fr 220px auto;gap:12px;background:#fff;padding:16px;border-radius:14px;margin-bottom:20px}.filters input,.filters select{margin:0}.table-wrap{overflow:auto;background:#fff;border-radius:16px;border:1px solid var(--line)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:15px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#eef3f5;font-size:13px;text-transform:uppercase}.badge{display:inline-block;padding:6px 10px;border-radius:999px;font-weight:800;font-size:12px;background:#e7edf0}.badge.angenommen{background:#ddf4e7;color:#0a7042}.badge.abgelehnt{background:#ffe2e2;color:#9b2626}.badge.rueckfrage{background:#fff0cf;color:#8b5800}.button.small{padding:8px 12px}.back{display:inline-block;margin-bottom:25px;font-weight:800}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}dl{display:grid;grid-template-columns:130px 1fr;gap:10px 18px}dt{color:var(--muted)}dd{margin:0;font-weight:700}.actions{display:flex;gap:8px;flex-wrap:wrap}.accept{background:var(--ok)}.question{background:var(--warn)}.reject{background:var(--bad)}footer{display:flex;justify-content:center;align-items:center;gap:12px;padding:30px;color:var(--muted);border-top:1px solid var(--line);font-size:13px}footer img{width:28px;opacity:.55}@media(max-width:780px){header{height:66px;padding-top:max(10px,env(safe-area-inset-top))}.brand img{width:110px}.brand span{display:none}.install-app{margin:10px 12px -12px}.hero{display:block}.hero img{max-width:70%;width:240px;margin-top:20px}.upload-layout,.detail-grid{grid-template-columns:1fr}aside{order:-1;padding:6px}.two,.stats{grid-template-columns:1fr 1fr}.filters{grid-template-columns:1fr}.admin-head img{display:none}main{padding:28px 15px calc(70px + env(safe-area-inset-bottom))}.card{padding:20px}th:nth-child(1),td:nth-child(1){display:none}}
/* Aplano-inspired ACTP weekly roster */
.roster-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:18px 0}.roster-toolbar h1{margin:.15rem 0}.roster-toolbar img{width:150px;height:70px;object-fit:contain}.roster-controls{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid #d9e2ea;border-radius:14px;padding:10px;margin-bottom:14px;position:sticky;top:8px;z-index:15;box-shadow:0 6px 20px #0b223911}.roster-controls>div{display:flex;flex-direction:column;align-items:center;min-width:130px}.roster-controls input{margin-left:auto;max-width:260px}.roster-shell{min-width:1160px;background:#fff;border:1px solid #dce4eb;border-radius:14px;overflow:hidden;box-shadow:0 8px 28px #172b3a12}.roster-shell::before{content:"";display:block}.roster-head,.roster-open,.roster-person{display:grid;grid-template-columns:230px repeat(7,minmax(132px,1fr))}.roster-head{position:sticky;top:78px;z-index:12;background:#edf7fc;border-bottom:2px solid #9fcfe4}.roster-name-head,.roster-day-head{padding:12px;border-right:1px solid #d7e4eb}.roster-day-head{display:flex;justify-content:center;gap:6px}.roster-day-head b{color:#007db2}.roster-open{background:#fff9e9;border-bottom:2px solid #f0c15b}.roster-person{border-bottom:1px solid #e4eaee;min-height:88px}.roster-person:hover{background:#f9fcfe}.roster-person-label{position:sticky;left:0;z-index:5;background:inherit;padding:12px;border-right:1px solid #d7e4eb;display:flex;flex-direction:column;gap:2px}.roster-person-label strong{font-size:14px}.roster-person-label small,.roster-person-label span{font-size:11px;color:#60717c}.roster-dropzone{min-height:88px;padding:5px;border-right:1px solid #e2e9ed;transition:.15s;background:linear-gradient(#fff,#fbfdfe)}.roster-dropzone.drag-over{background:#dff5ff;box-shadow:inset 0 0 0 3px #008fc9}.roster-dropzone.saved{background:#dff7e7}.shift-card{display:flex;flex-direction:column;gap:2px;margin-bottom:5px;padding:7px 8px;border-radius:7px;background:#d8eef8;border-left:5px solid #168fc2;cursor:grab;box-shadow:0 1px 4px #1638491c;font-size:11px}.shift-card:active{cursor:grabbing}.shift-card.dragging{opacity:.4}.shift-card.confirmed{background:#dff5e6;border-left-color:#2a9b54}.shift-card.draft{background:#f0f1f2;border-left-color:#87939a}.shift-card strong{font-size:12px}.shift-card span{font-weight:800}.shift-card small{white-space:normal;color:#334b58}.shift-card em{font-style:normal;font-weight:800;color:#965d00}.roster-add{width:100%;min-height:22px;border:0;background:transparent;color:#90a6b2;padding:0;font-size:18px;opacity:0}.roster-dropzone:hover .roster-add{opacity:1}.roster-create{margin-top:18px}.roster-create summary{cursor:pointer;font-size:18px}.roster-shell{overflow:auto;max-height:72vh}
@media(max-width:800px){.roster-controls{position:static;flex-wrap:wrap}.roster-controls input{margin-left:0;max-width:none;width:100%}.roster-shell{max-height:68vh}.roster-toolbar img{width:110px}.roster-head,.roster-open,.roster-person{grid-template-columns:170px repeat(7,140px)}}

/* Dienstplan: visuell an der aktuellen Aplano-Schichtplanansicht ausgerichtet */
body:has([data-planning-board]){background:#f7f8fa;color:#3c3f44}
body:has([data-planning-board]) main{max-width:none;padding-left:18px;padding-right:18px}
.roster-toolbar{background:#fff;margin:0 -18px 0;padding:22px 28px 14px;border-bottom:1px solid #e5e7eb;align-items:center}
.roster-toolbar h1{font-size:24px;font-weight:500;color:#41454a;border-left:3px solid #179feb;padding-left:12px}
.roster-toolbar p:not(.eyebrow){display:none}.roster-toolbar .eyebrow{display:none}.roster-toolbar img{width:125px;height:48px}
.roster-controls{position:static;margin:0 -18px;padding:12px 20px;border:0;border-radius:0;box-shadow:none;background:#fff;border-bottom:1px solid #dfe3e7;justify-content:flex-start}
.roster-controls .button{border:0;background:#fff;color:#168fd3;padding:8px 11px;box-shadow:none}
.roster-controls>div{order:-1;min-width:90px;align-items:flex-start}.roster-controls>div strong{font-size:16px;color:#30343a}.roster-controls>div span{font-size:11px;color:#7d858b}
.roster-controls input{height:36px;max-width:210px;border:1px solid #d8dde2;border-radius:3px;margin-left:auto;background:#fff}
body:has([data-planning-board]) .flash.success{border:0;border-radius:0;background:#eef9ff;color:#25789f;margin:0 -18px 8px;padding:8px 20px;font-size:12px}
.roster-shell{border:0;border-radius:0;box-shadow:none;max-height:74vh;background:#fff;min-width:1180px}
.roster-head{position:static;top:auto;background:#fff;border-bottom:1px solid #dfe3e7;z-index:8}
.roster-name-head,.roster-day-head{height:48px;box-sizing:border-box;padding:14px 10px;border-right:1px solid #e5e8eb;font-size:12px}
.roster-name-head{color:#6a7278;font-weight:600}.roster-day-head{background:#f4fbff;color:#42474b;justify-content:center}.roster-day-head b{color:#168fd3}.roster-day-head span{color:#484e53}
.roster-open{background:#fff;border-bottom:1px solid #dfe3e7;min-height:82px}.roster-open>.roster-person-label{background:#fff;border-left:3px solid #179feb}
.roster-person{min-height:82px;background:#fff;border-bottom:1px solid #e5e8eb}.roster-person:hover{background:#fbfdff}
.roster-person-label{padding:10px 12px;background:#fff;border-right:1px solid #e5e8eb;justify-content:center}.roster-person-label strong{font-size:12px;font-weight:600;color:#34383c}.roster-person-label small{font-size:10px;color:#81898f}.roster-person-label span{font-size:10px;color:#5c6368}
.roster-dropzone{min-height:82px;border-right:1px solid #e8ebee;background:#fff;padding:3px}
.roster-dropzone:nth-child(7),.roster-dropzone:nth-child(8){background:#fcfcfd}
.roster-dropzone.drag-over{background:#e5f6ff;box-shadow:inset 0 0 0 2px #189fe9}
.shift-card{border:0;border-radius:2px;background:#d9f0fc;border-left:3px solid #189fe9;box-shadow:none;padding:5px 6px;gap:1px;color:#3d454b;font-size:10px}
.shift-card.planned{background:#d9f0fc;border-left-color:#189fe9}.shift-card.confirmed{background:#dff5e3;border-left-color:#56bf45}.shift-card.draft{background:#eeeeef;border-left-color:#a8adb1}
.shift-card strong{font-size:11px;font-weight:600}.shift-card span{font-size:10px;font-weight:600}.shift-card small{font-size:9px;color:#60686e}.shift-card em{font-size:9px;color:#777;font-weight:600}
.roster-add{font-size:15px;color:#179feb}.roster-create{border-radius:4px;box-shadow:none;border:1px solid #dfe3e7}
.aplano-plan-tabs{display:flex;gap:0;background:#fff;margin:0 -18px;border-bottom:1px solid #e1e5e8;padding-left:18px}.aplano-plan-tabs a,.aplano-plan-tabs span{display:block;padding:13px 18px 10px;font-size:11px;font-weight:600;color:#5f666b;border-bottom:3px solid transparent}.aplano-plan-tabs .active{color:#159ee8;border-bottom-color:#159ee8}

/* ACTP Dienstplanung: ruhige, selbsterklärende Büroansicht */
body:has([data-planning-board]) main{padding-top:20px}.roster-back{margin-bottom:12px;color:#53616b;text-decoration:none}.roster-toolbar{margin:0;padding:18px 22px;border:1px solid #dfe6eb;border-radius:16px 16px 0 0}.roster-toolbar .eyebrow{display:block;margin:0 0 5px}.roster-toolbar h1{border:0;padding:0;font-size:28px;font-weight:800;color:#17212a}.roster-toolbar p:not(.eyebrow){display:block;margin:5px 0 0;color:#65727e}.roster-toolbar img{width:145px;height:54px}.roster-controls{margin:0;padding:12px 14px;border:1px solid #dfe6eb;border-top:0;gap:12px;flex-wrap:wrap}.roster-week{min-width:135px!important;order:0!important}.roster-week-nav{display:flex;gap:5px}.roster-week-nav .button{min-width:38px;text-align:center;border:1px solid #dce4e9;border-radius:9px}.roster-search{display:flex;align-items:center;gap:9px;margin:0 0 0 auto;color:#65727e;font-size:12px}.roster-search input{width:230px;margin:0;border-radius:9px}.roster-new{background:#008fc9;padding:10px 18px}.roster-summary{display:grid;grid-template-columns:150px 150px 210px 1fr;gap:1px;margin:12px 0;background:#dfe6eb;border:1px solid #dfe6eb;border-radius:13px;overflow:hidden}.roster-summary>div{background:#fff;padding:13px 16px;display:flex;align-items:baseline;gap:8px}.roster-summary strong{font-size:24px}.roster-summary span{font-size:12px;color:#65727e}.roster-summary .open strong{color:#b36a00}.roster-summary .legend{justify-content:flex-end;align-items:center;gap:16px}.roster-summary .legend span{display:flex;align-items:center;gap:6px}.roster-summary i{width:10px;height:10px;border-radius:3px;background:#d9f0fc;border-left:3px solid #189fe9}.roster-summary i.confirmed{background:#dff5e3;border-color:#56bf45}.roster-summary i.draft{background:#eeeeef;border-color:#a8adb1}.roster-hint{padding:9px 13px;margin-bottom:8px;border-radius:10px;background:#eef8fd;color:#315c70;font-size:12px}.roster-shell{border:1px solid #dfe6eb;border-radius:13px;max-height:68vh}.roster-head{position:sticky;top:0}.roster-name-head{position:sticky;left:0;z-index:10;background:#f3f7f9}.roster-day-head{font-weight:700}.roster-day-head b{font-size:13px}.roster-person-label{box-shadow:3px 0 8px rgba(18,42,58,.04)}.roster-open>.roster-person-label{background:#fff8e8}.roster-open .open-zone{background:#fffdf7}.roster-person[hidden]{display:none}.roster-dropzone{min-height:90px}.shift-card{border-radius:6px;padding:7px}.shift-card strong{font-size:12px}.shift-card span{font-size:11px}.roster-add{height:28px;border-radius:6px}.roster-dropzone:hover .roster-add{opacity:1;background:#edf8fd}.roster-create{max-width:900px;margin:18px auto 0;border-radius:15px;padding:0}.roster-create summary{display:flex;justify-content:space-between;gap:20px;padding:19px 22px;list-style:none}.roster-create summary span{font-size:12px;color:#65727e;font-weight:500}.roster-create form{padding:0 22px 22px}.roster-form-actions{display:flex;gap:10px}.roster-form-actions .secondary{color:#17212a}.roster-dropzone.saving{background:#fff4cf}.roster-empty-search{padding:18px;text-align:center;color:#65727e}
@media(max-width:900px){.roster-summary{grid-template-columns:repeat(3,1fr)}.roster-summary .legend{grid-column:1/-1;justify-content:flex-start}.roster-search{order:5;margin-left:0;flex:1 1 100%}.roster-search input{flex:1;width:auto}}
.shift-card{position:relative;padding-right:25px}.shift-edit{position:absolute;right:3px;top:3px;padding:2px 4px;border-radius:5px;background:transparent;color:#52636d;font-size:11px;letter-spacing:-1px;opacity:.25}.shift-card:hover .shift-edit,.shift-edit:focus{opacity:1;background:#fff}
