:root{--bg:#f3f6fa;--card:#fff;--txt:#112033;--muted:#667085;--accent:#0089bd;--accent2:#00475c;--side:#0f1e25;--side2:#142a34;--line:#dfe7ef;--soft:#f7fafc}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:var(--bg);color:var(--txt)}a{color:inherit}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#eef8fc,#f7fafc)}.login-card,.card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 10px 28px rgba(15,40,70,.06);padding:24px}.login-card{width:100%;max-width:440px}.logo{font-weight:850;font-size:30px;margin-bottom:6px}.sub{color:var(--muted);margin-bottom:22px}.field{margin:12px 0}.field label{display:block;font-weight:700;margin-bottom:6px}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:15px;background:#fff}.btn{border:0;border-radius:12px;background:var(--accent2);color:#fff;padding:11px 16px;font-weight:800;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px}.btn:hover{filter:brightness(.96)}.btn.secondary{background:#eef4f8;color:#10233f}.btn.danger{background:#b91c1c;color:#fff}.layout{display:flex;min-height:100vh}.sidebar{width:280px;background:var(--side);color:#eaf4f8;padding:18px 14px;position:sticky;top:0;height:100vh;box-shadow:8px 0 22px rgba(15,30,37,.12)}.brand-mark{display:flex;align-items:center;gap:10px;font-weight:850;font-size:18px;padding:10px 10px 18px}.brand-icon{color:#e60028;font-size:22px}.user-mini{display:flex;align-items:center;gap:12px;border-radius:18px;background:rgba(255,255,255,.06);padding:14px;margin:8px 6px 18px}.user-mini .avatar{width:46px;height:46px;border-radius:50%;background:#2e4450;display:grid;place-items:center;font-weight:900;font-size:20px}.user-mini small{display:block;color:#9fb0ba;margin-top:3px;max-width:170px;overflow:hidden;text-overflow:ellipsis}.side-nav a{display:flex;align-items:center;gap:10px;text-decoration:none;padding:13px 14px;border-radius:12px;margin:5px 0;color:#d7e4ea;font-weight:750}.side-nav a span{width:18px;height:18px;border-radius:6px;background:#8ca1ac;opacity:.7}.side-nav a.active,.side-nav a:hover{background:#2b3e47;color:#fff}.side-nav a.active span{background:#00a0d2}.version{font-size:12px;color:#93a5af;margin:22px 10px}.content{flex:1;min-width:0}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:0 26px;position:sticky;top:0;z-index:10}.topbar h1{font-size:28px;margin:0}.hamb{border:0;background:#eef4f8;border-radius:10px;padding:10px 12px;font-size:18px}main.content{padding-bottom:24px}.content>.flash,.content>form,.content>.card,.content>.grid,.content>p,.content>.tabs,.content>.student-profile,.content>details{margin-left:26px;margin-right:26px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;margin-top:22px}.stat{font-size:34px;font-weight:900}.muted{color:var(--muted)}table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}th,td{text-align:left;padding:14px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#f7fafc;color:#42526a;font-size:13px;text-transform:uppercase;letter-spacing:.02em}tr:nth-child(even) td{background:#f8fafc}.actions{display:flex;gap:8px;flex-wrap:wrap}.flash{padding:12px 15px;background:#e8fff1;border:1px solid #b7ebc9;border-radius:14px;margin-bottom:15px}.calendar{display:grid;grid-template-columns:80px repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}.cell{background:#fff;min-height:46px;padding:8px;font-size:13px}.headcell{font-weight:800;background:#f9fbfd}.appointment{background:#e8f4f8;border-left:4px solid var(--accent);border-radius:8px;padding:6px;margin-top:4px}.inline-form{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.inline-form .field{min-width:180px}.pre{white-space:pre-wrap;margin:0;font-family:inherit}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-head h2{margin:0}.badge{display:inline-block;border-radius:999px;padding:5px 10px;background:var(--badge-color,#0b4b66);color:#fff;font-size:12px;font-weight:800;margin:2px 4px 2px 0}.status-active{--badge-color:#16a34a}.status-paused{--badge-color:#f59e0b}.status-archived{--badge-color:#64748b}.status-finished{--badge-color:#2563eb}.status-changed_school,.status-changed_teacher{--badge-color:#991b1b}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.tab{display:inline-flex;align-items:center;gap:6px;padding:10px 14px;border:1px solid #d7e0ea;border-radius:12px;background:#fff;text-decoration:none;color:#10233f;font-weight:700}.tab.active{background:var(--accent2);color:#fff;border-color:var(--accent2)}.label-grid{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0 18px}.label-check{display:inline-flex;gap:6px;align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:8px 10px}.row-link{text-decoration:none;color:#10233f}.row-link:hover{text-decoration:underline}.student-profile{margin-top:22px;background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;box-shadow:0 10px 28px rgba(15,40,70,.05)}.student-cover{display:grid;grid-template-columns:88px 1fr auto;gap:18px;align-items:center;padding:22px 24px;background:linear-gradient(135deg,#f8fbfd,#eef6f9)}.student-avatar{width:76px;height:76px;border-radius:50%;background:#111e25;color:#fff;display:grid;place-items:center;font-size:34px;font-weight:900;box-shadow:0 8px 24px rgba(17,30,37,.25)}.student-title h2{font-size:30px;margin:0 0 8px}.profile-tabs{display:flex;gap:0;border-top:1px solid var(--line);overflow:auto;background:#fff;padding:0 18px}.profile-tabs .tab{border:0;border-radius:0;background:transparent;padding:16px 18px;color:#42526a;border-bottom:3px solid transparent;white-space:nowrap}.profile-tabs .tab.active{background:transparent;color:#00475c;border-bottom-color:#00475c}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.detail{border:1px solid #e1e7ef;border-radius:16px;padding:14px;background:#fbfcfe}.detail span{display:block;color:#6b7788;font-size:13px;margin-bottom:6px}.detail b{font-size:16px;word-break:break-word}.availability-card{padding:0;overflow:hidden}.availability-card>.card-head{padding:22px 24px;border-bottom:1px solid var(--line);background:#fbfdff}.quick-add{display:flex;gap:8px;flex-wrap:wrap;padding:14px 24px;border-bottom:1px solid var(--line)}.chip{border:1px solid #ccd9e5;background:#fff;color:#10233f;border-radius:999px;padding:9px 12px;font-weight:800;cursor:pointer}.chip:hover{background:#eef6fa}.chip.danger{color:#991b1b}.availability-week{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;padding:20px 24px 24px}.day-card{border:1px solid var(--line);border-radius:18px;background:#f8fafc;min-height:118px;overflow:hidden}.day-title{display:flex;justify-content:space-between;align-items:center;background:#fff;border-bottom:1px solid var(--line);padding:12px 14px}.day-title button{width:32px;height:32px;border:0;border-radius:10px;background:#00475c;color:#fff;font-size:18px;cursor:pointer}.day-rows{padding:10px}.avail-pill{display:grid;grid-template-columns:1fr auto 1fr auto 32px;gap:6px;align-items:center;background:#fff;border:1px solid #dce5ee;border-radius:14px;padding:8px;margin-bottom:8px}.avail-pill input{border:1px solid #dce5ee;border-radius:10px;padding:8px;background:#fff;min-width:0}.avail-pill details{position:relative}.avail-pill summary{cursor:pointer;color:#00475c;font-weight:800;font-size:13px}.avail-pill details[open]{grid-column:1/-1;background:#f8fafc;border-radius:12px;padding:8px}.avail-pill details input{margin:4px;width:calc(50% - 12px)}.mini-danger{width:30px;height:30px;border:0;border-radius:10px;background:#fee2e2;color:#991b1b;font-size:18px;cursor:pointer}details.card summary{cursor:pointer;margin-bottom:12px}.student-head{display:none}@media(max-width:900px){.layout{display:block}.sidebar{position:fixed;left:-285px;top:0;transition:.2s;z-index:50}.nav-open .sidebar{left:0}.content>.flash,.content>form,.content>.card,.content>.grid,.content>p,.content>.tabs,.content>.student-profile,.content>details{margin-left:14px;margin-right:14px}.topbar{padding:0 14px}.topbar h1{font-size:23px}.student-cover{grid-template-columns:60px 1fr}.student-avatar{width:56px;height:56px;font-size:24px}.student-cover .actions{grid-column:1/-1}.availability-week{grid-template-columns:1fr;padding:14px}.avail-pill{grid-template-columns:1fr auto 1fr 32px}.avail-pill details{grid-column:1/-1}.avail-pill span{display:none}nav{display:block}.calendar{grid-template-columns:60px repeat(5,180px);overflow:auto}.card{padding:18px}}
/* v0.7 availability calendar */
.availability-builder{max-width:760px;margin-bottom:18px;overflow:hidden}
.month-picker{padding:12px 4px 22px}
.weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;text-align:center}
.weekdays span{font-size:12px;font-weight:800;color:#27415f;letter-spacing:.04em;padding:8px 0}
.month-grid .day{height:48px;border:0;border-radius:999px;background:#f3f7fc;color:#17365a;font-weight:800;cursor:pointer;position:relative;transition:.15s ease;box-shadow:none}
.month-grid .day:hover{background:#e6f0ff;transform:translateY(-1px)}
.month-grid .day.selected{background:#0d6efd;color:#fff;box-shadow:0 10px 20px rgba(13,110,253,.22)}
.month-grid .day.has-availability:not(.selected){background:#eaf6ef;color:#087735}
.month-grid .day.has-availability:after{content:'';width:5px;height:5px;background:currentColor;border-radius:50%;position:absolute;left:50%;bottom:8px;transform:translateX(-50%)}
.month-grid .day.empty{background:transparent;cursor:default;box-shadow:none}
.time-box{border-top:1px solid #dbe6f2;border-bottom:1px solid #dbe6f2;background:#fbfdff;margin:0 -22px;padding:18px 22px}
.time-box-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.time-row{display:flex;align-items:center;gap:10px;margin:8px 0;flex-wrap:wrap}
.time-row select{min-width:115px;border:1px solid #b9cae0;border-radius:8px;padding:10px 12px;background:white;color:#0d223a;font-size:15px}
.icon-btn{border:0;background:#eef5ff;color:#0b4b66;border-radius:999px;width:36px;height:36px;font-size:20px;cursor:pointer;line-height:1}
.icon-btn:hover{background:#dfeeff}
.icon-btn.danger{background:#fff1f1;color:#b42318}
.actions.end{display:flex;justify-content:flex-end;gap:14px;padding-top:18px}
.availability-list{display:grid;gap:10px}
.availability-item{display:grid;grid-template-columns:minmax(160px,1fr) auto auto;align-items:center;gap:10px;border:1px solid #e1ebf5;border-radius:14px;padding:12px 14px;background:#fff}
.availability-item small{display:block;color:#64748b;font-size:12px;margin-top:2px}
.time-pill{background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;border-radius:999px;padding:7px 12px;font-weight:800;white-space:nowrap}
@media(max-width:700px){.availability-builder{max-width:none}.weekdays,.month-grid{gap:6px}.month-grid .day{height:42px}.time-box{margin:0 -16px;padding:16px}.availability-item{grid-template-columns:1fr auto}.availability-item form{grid-column:2}.actions.end{justify-content:stretch}.actions.end .btn{flex:1}.time-row select{min-width:96px}}
.calendar-7{grid-template-columns:80px repeat(7,1fr)}
.availability-builder .card-head b{font-size:18px;color:var(--accent2)}
.month-picker .weekdays span{font-weight:800;color:#32465a}
.day.has-availability span{box-shadow:0 0 0 3px rgba(0,137,189,.18)}
.time-box .field{max-width:320px}
@media(max-width:900px){.calendar-7{grid-template-columns:62px repeat(7,150px);overflow:auto}.calendar-7 .cell{min-width:150px}.calendar-7 .headcell:first-child,.calendar-7 .cell:first-child{min-width:62px}}

/* v1.0 Planungsansicht */
.checkline{display:flex;gap:10px;align-items:center;border:1px solid #d6e1ee;border-radius:14px;padding:10px 12px;background:#f8fafc;font-weight:600}
.planner-week{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:12px;margin-top:14px;overflow-x:auto;padding-bottom:6px}
.planner-day{min-width:160px;background:#f8fafc;border:1px solid #dbe7f3;border-radius:18px;padding:10px}
.planner-day-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:4px 2px 10px;border-bottom:1px solid #e2ebf4;margin-bottom:10px}
.planner-day-head b{color:#0b2239}.planner-day-head small{color:#64748b;font-size:12px;white-space:nowrap}
.suggestion-card{background:#fff;border:1px solid #cfe0f3;border-radius:15px;padding:10px;margin-bottom:9px;box-shadow:0 6px 18px rgba(15,35,60,.06)}
.suggestion-time{font-weight:800;color:#0b4b66;margin-bottom:4px}.suggestion-name{display:block;font-weight:800;color:#0b69ff;text-decoration:none}.suggestion-name:hover{text-decoration:underline}.suggestion-meta{font-size:12px;color:#64748b;margin-top:4px}.empty-slot{font-size:13px;color:#94a3b8;background:#fff;border:1px dashed #cbd5e1;border-radius:14px;padding:12px;text-align:center}
@media(max-width:900px){.planner-week{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media(max-width:560px){.planner-week{display:block}.planner-day{margin-bottom:12px}}

/* v1.1 Übernahme + bessere Verfügbarkeit */
.accept-plan{margin-top:16px;padding-top:14px;border-top:1px solid #e2ebf4;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.availability-list.grouped{gap:12px}
.availability-group{grid-template-columns:minmax(150px,220px) 1fr!important;align-items:flex-start}
.availability-date b{font-size:15px;color:#0b2239}
.availability-times{display:grid;gap:8px;width:100%}
.availability-time-row{display:flex;align-items:center;gap:8px;justify-content:flex-start;flex-wrap:wrap}
.availability-time-row form{display:inline-flex;margin:0}
@media(max-width:700px){.availability-group{grid-template-columns:1fr!important}.availability-times{margin-top:6px}.accept-plan .btn{width:100%}}


/* v1.2 Terminbearbeitung + 30-Minuten-Kalender */
.halfhour-calendar .cell{min-height:54px;padding:6px}.halfhour-calendar .timecell{font-weight:800;color:#0b2239}.halfhour-calendar .timecell span{font-size:12px;color:#64748b}.drop-slot.drag-over{outline:2px solid var(--accent);background:#e9f7ff}.draggable-appointment{cursor:grab}.draggable-appointment:active{cursor:grabbing}.appointment a{font-weight:800;text-decoration:none}.appointment small{display:block;color:#5f7188;margin-top:3px}.appt-actions{margin-top:6px}.appt-actions summary{font-size:12px;color:#0b4b66;cursor:pointer;font-weight:800}.mini-form{display:grid;grid-template-columns:repeat(2,minmax(110px,1fr));gap:8px;margin:8px 0;padding:8px;border:1px solid #dfe7ef;border-radius:12px;background:#fff}.mini-form label{font-size:12px;font-weight:800;color:#43536a}.mini-form input,.mini-form select{width:100%;border:1px solid #dfe7ef;border-radius:9px;padding:7px;margin-top:3px}.mini-form .btn{justify-content:center}.appointment-list{display:grid;gap:10px}.appointment-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border:1px solid #e2e8f0;border-radius:14px;padding:12px;background:#fff}.appointment-row small{display:block;color:#667085;margin-top:4px}.appointment-row details{min-width:260px}@media(max-width:760px){.mini-form{grid-template-columns:1fr}.appointment-row{display:block}.appointment-row details{min-width:0;margin-top:8px}}
/* v1.3 Kalender-Fix */
.calendar{display:grid;border:1px solid var(--line);border-radius:18px;overflow:auto;background:#fff}.calendar .cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:44px;padding:8px;background:#fff}.calendar .headcell{background:#f8fafc;font-weight:800;color:#0b2239}.appointment{background:#eaf6ff;border:1px solid #b7ddff;border-left:4px solid #0b6b8a;border-radius:12px;padding:8px;margin:2px 0;font-size:13px;box-shadow:0 4px 10px rgba(15,35,60,.06)}.appointment details{margin-top:4px}.mini-link{border:0;background:transparent;color:#0b6b8a;font-weight:800;cursor:pointer;padding:7px 0;margin-top:4px}.mini-link.danger{color:#b42318}.planner-day .suggestion-card.removed{display:none}.calendar .drop-slot{background:#fff}.calendar .drop-slot:nth-child(16n),.calendar .drop-slot:nth-child(16n+1),.calendar .drop-slot:nth-child(16n+2),.calendar .drop-slot:nth-child(16n+3),.calendar .drop-slot:nth-child(16n+4),.calendar .drop-slot:nth-child(16n+5),.calendar .drop-slot:nth-child(16n+6),.calendar .drop-slot:nth-child(16n+7),.calendar .drop-slot:nth-child(16n+8){background:#fcfdff}


/* v1.4 neuer Terminkalender */
.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:18px;margin-bottom:0!important}
.week-switch{display:flex;align-items:center;gap:14px}.week-switch b{display:block;font-size:18px}.week-switch small{display:block;color:#64748b;margin-top:2px}.round-btn{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;text-decoration:none;background:#eef4f8;color:#0b4b66;font-size:28px;font-weight:700}.calendar-total{font-weight:700;color:#1f344d}.view-switch{display:flex;gap:8px}.view-switch span{border:1px solid #d8e3ee;background:#fff;border-radius:999px;padding:10px 15px;font-weight:800;color:#42526a}.view-switch span.active{background:#0b4b66;color:#fff;border-color:#0b4b66}.week-summary{display:grid;grid-template-columns:70px repeat(7,1fr);margin:0 26px;background:#fff;border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0;overflow:hidden}.kw-cell,.day-summary{min-height:72px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--line);gap:3px}.day-summary span{color:#8993a0;font-size:13px}.day-summary b{font-size:15px;color:#142033}.day-summary small{color:#8a94a3}.smart-calendar{display:grid;grid-template-columns:70px repeat(7,1fr);height:1200px;margin:0 26px 26px;background:#fff;border:1px solid var(--line);border-radius:0 0 16px 16px;overflow:auto;position:relative}.smart-timecol{border-right:1px solid var(--line);background:#fbfdff}.smart-time{height:120px;border-bottom:1px solid #e6edf5;padding:8px 10px;font-weight:800;color:#334155}.smart-daycol{position:relative;border-right:1px solid var(--line);min-width:150px;background:repeating-linear-gradient(to bottom,#fff 0,#fff 59px,#eef3f8 60px)}.smart-slot{height:60px;border-bottom:1px solid #eef3f8}.smart-slot:nth-child(2n){border-bottom-color:#dfe8f2}.smart-appt{position:absolute;left:6px;right:6px;z-index:2;background:#e6f6ff;border:1px solid #a9dbff;border-left:5px solid #0b6b8a;border-radius:12px;padding:8px;overflow:hidden;box-shadow:0 6px 18px rgba(15,35,60,.12);font-size:13px;cursor:grab}.smart-appt strong{display:block;color:#0b2239}.smart-appt a{font-weight:900;text-decoration:none;color:#044b71}.smart-appt small{display:block;color:#53677c;margin-top:2px}.smart-appt details{margin-top:4px}.smart-appt summary{font-size:12px;color:#0b4b66;font-weight:800;cursor:pointer}.smart-daycol .drag-over{outline:2px solid var(--accent);background:#e9f7ff!important}.content>.calendar-toolbar{margin-left:26px;margin-right:26px}@media(max-width:900px){.week-summary,.smart-calendar{margin-left:14px;margin-right:14px;grid-template-columns:58px repeat(7,170px)}.calendar-toolbar{margin-left:14px!important;margin-right:14px!important}.smart-calendar{height:1100px}.smart-time{height:110px}.smart-slot{height:55px}.smart-appt{left:4px;right:4px}.view-switch{display:none}}
