:root{--bg:#eef2f7;--card:#ffffff;--text:#1f2937;--muted:#667085;--primary:#3156d3;--primary-soft:#eef2ff;--border:#dbe2ec;--danger:#b42318;--success:#067647;--shadow:0 10px 24px rgba(15,23,42,0.06);--radius:18px}*{box-sizing:border-box;overflow-wrap:break-word;word-break:break-word}body,html{margin:0;padding:0;overflow-x:hidden}body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:linear-gradient(180deg,#f8fafc,#eef2f7);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.container{width:min(1120px,calc(100% - 2rem));margin:0 auto}.page{padding:1.6rem 0 3rem}.header{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:rgba(255,255,255,.88);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(219,226,236,.9)}.header-inner{min-height:72px;justify-content:space-between;gap:1rem}.brand,.header-inner{display:flex;align-items:center}.brand{gap:.8rem;font-weight:800}.brand-badge{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#ffcf4a,#f59e0b);box-shadow:var(--shadow)}.nav{display:flex;gap:.65rem;flex-wrap:wrap}.nav a,.nav button{border:1px solid var(--border);background:white;padding:.65rem .9rem;border-radius:999px;cursor:pointer}.hero{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:1rem;gap:1rem}.card{background:var(--card);border:1px solid rgba(219,226,236,.95);border-radius:var(--radius);box-shadow:var(--shadow)}.card.pad{padding:1.1rem}.grid{display:grid;grid-gap:1rem;gap:1rem}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.kicker{display:inline-flex;padding:.3rem .55rem;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:.82rem;font-weight:700;margin-bottom:.6rem}h1,h2,h3{margin:0 0 .7rem}h1{font-size:clamp(2rem,4vw,3rem);line-height:1.05}h2{font-size:1.55rem}h3{font-size:1.1rem}p{margin:0 0 .9rem;line-height:1.55}.muted{color:var(--muted)}.actions{display:flex;gap:.75rem;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;border-radius:12px;padding:.8rem 1rem;border:1px solid var(--border);background:white;cursor:pointer}.button.primary{background:var(--primary);border-color:var(--primary);color:white}.button.secondary{background:var(--primary-soft);color:var(--primary);border-color:#c7d2fe}.button.danger{background:#fff1f2;color:var(--danger);border-color:#fecdd3}.stat{padding:1rem;border-radius:16px;border:1px solid #e1e8f1;background:#fafcff}.list{display:grid;grid-gap:.8rem;gap:.8rem}.list-item{padding:1rem;border:1px solid var(--border);border-radius:14px;background:white}.form{display:grid;grid-gap:1rem;gap:1rem}.field{display:grid;grid-gap:.35rem;gap:.35rem}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:12px;padding:.85rem .95rem;background:white;width:100%}.field textarea{min-height:120px;resize:vertical}.checkbox-field{display:flex;align-items:center;gap:.7rem}.checkbox-field input{width:18px;height:18px}.notice{border-radius:14px;padding:.95rem 1rem;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8}.notice.success{background:#ecfdf3;border-color:#a7f3d0;color:var(--success)}.notice.warning{background:#fff7ed;border-color:#fed7aa;color:#b54708}.code-block,.small{font-size:.9rem}.code-block{background:#0f172a;color:#e2e8f0;padding:1rem;border-radius:16px;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.table-like{grid-gap:.75rem}.table-like,.table-row{display:grid;gap:.75rem}.table-row{grid-template-columns:1.4fr 1fr 1fr 1fr;grid-gap:.75rem;border:1px solid var(--border);border-radius:14px;padding:.9rem;background:white}footer{padding:2rem 0 3rem;color:var(--muted)}@media (max-width:900px){.grid.three,.grid.two,.hero,.table-row{grid-template-columns:1fr}}@media (max-width:640px){h1{font-size:clamp(1.4rem,6vw,2rem)}h2{font-size:1.15rem}h3{font-size:1rem}.container{width:calc(100% - 1.25rem)}.card.pad{padding:.85rem}.page{padding:1rem 0 2.5rem}.grid.three,.grid.two{grid-template-columns:1fr}.button{min-height:40px;padding:.6rem .85rem;font-size:.875rem}.actions{gap:.5rem}.field input,.field select,.field textarea{padding:.7rem .8rem;font-size:.9rem}.header-inner{min-height:56px;gap:.5rem}.nav{gap:.35rem}.nav a,.nav button{padding:.45rem .65rem;font-size:.82rem}.admin-link{display:none}.admin-mobile-links{display:grid!important}.kicker{font-size:.75rem}.list-item{padding:.75rem}}.qr-wrap{display:flex;justify-content:center}.qr-image{width:240px;height:240px;border-radius:18px;background:white;padding:.75rem}.qr-image,.token-card{border:1px solid var(--border)}.token-card{border-radius:16px;padding:.9rem;background:#fbfdff;display:grid;grid-gap:.6rem;gap:.6rem}.token-header-row{display:flex;justify-content:space-between;gap:.75rem;align-items:center}.token-badge{display:inline-flex;align-items:center;border-radius:999px;padding:.2rem .55rem;font-size:.78rem;font-weight:700}.token-badge.active{background:#ecfdf3;color:#067647;border:1px solid #a7f3d0}.token-badge.inactive{background:#f8fafc;color:#475467;border:1px solid #d0d5dd}.token-link{font-size:.88rem;line-height:1.45;word-break:break-all;color:var(--primary)}.qr-inline-wrap{display:flex;justify-content:flex-start}.qr-inline-image{width:160px;height:160px;border-radius:14px;border:1px solid var(--border);background:white;padding:.5rem}.small-notice{display:inline-flex;align-items:center;width:-moz-fit-content;width:fit-content;padding:.45rem .7rem;margin:0;font-size:.85rem}.button:disabled{opacity:.55;cursor:not-allowed}.child-parent-row{display:flex;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border:1px solid var(--border);border-radius:14px;background:#fafcff}.timetable-grid{display:grid;grid-template-columns:90px repeat(var(--day-count,5),minmax(0,1fr));grid-gap:.6rem;gap:.6rem;min-width:0}.timetable-cell,.timetable-head,.timetable-period{border:1px solid var(--border);border-radius:12px;background:white;padding:.75rem}.timetable-head{font-weight:700;background:#f8fafc}.timetable-period{font-weight:700;display:grid;place-items:center;background:#f8fafc}.timetable-cell{min-height:82px}.timetable-cell-editable{cursor:pointer;transition:background .15s}.timetable-cell-editable:hover{background:rgba(0,0,0,.03)}.timetable-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1rem;gap:1rem}@media (max-width:900px){.child-parent-row{flex-direction:column}.timetable-grid{grid-template-columns:70px repeat(var(--day-count,5),minmax(140px,1fr));overflow-x:auto}.timetable-editor-grid{grid-template-columns:1fr}}.stundenplan-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:.5rem;margin-bottom:.25rem}.stundenplan-nav{display:flex;gap:.4rem;align-items:center}.stundenplan-nav-btn{font-size:.875rem!important;min-height:38px!important;padding:.45rem .9rem!important}.stundenplan-today{font-weight:700;color:var(--primary)!important;border-color:#c7d2fe!important;background:var(--primary-soft)!important}.stundenplan-edit{position:relative}@media (max-width:640px){.stundenplan-header{flex-direction:column;gap:.65rem}.stundenplan-nav{width:100%;display:grid;grid-template-columns:1fr auto 1fr;grid-gap:.4rem;gap:.4rem}.stundenplan-nav a{text-align:center;justify-content:center;min-height:42px!important;border-radius:14px!important}.stundenplan-nav a:first-child{justify-content:flex-start}.stundenplan-nav a:last-child{justify-content:flex-end}.stundenplan-edit{width:100%}.stundenplan-edit>summary{width:100%;justify-content:center}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.timetable-mobile{display:none}@media (max-width:640px){.timetable-grid.week-view{display:none!important}.timetable-mobile{display:block}.timetable-mobile-tabs{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:.3rem;gap:.3rem;background:#f1f5f9;border-radius:18px;padding:.3rem;margin-bottom:.85rem}.tmt-tab{position:relative;display:flex;flex-direction:column;align-items:center;padding:.55rem .2rem .4rem;border-radius:14px;border:none;background:transparent;cursor:pointer;transition:background .15s,box-shadow .15s;gap:.05rem}.tmt-tab.active{background:white;box-shadow:0 1px 5px rgba(0,0,0,.1)}.tmt-day{font-size:.75rem;font-weight:700;color:var(--text);line-height:1}.tmt-date{font-size:.63rem;color:var(--muted);line-height:1;margin-top:.1rem}.tmt-dot{width:4px;height:4px;border-radius:50%;background:var(--primary);margin-top:.2rem}.tmt-tab.today .tmt-day,.tmt-tab.today.active .tmt-day{color:var(--primary)}.tmt-periods{display:flex;flex-direction:column;gap:.4rem}.tmt-row{display:flex;align-items:center;gap:.75rem;padding:.85rem .9rem;background:white;border-radius:16px;border:1px solid var(--border);min-height:66px;transition:background .12s}.tmt-row.empty{min-height:50px;opacity:.45}.tmt-row.clickable{cursor:pointer}.tmt-row.clickable:active{background:#f8fafc}.tmt-row.selected{border-color:var(--primary);background:var(--primary-soft)}.tmt-period-num{width:30px;height:30px;border-radius:50%;background:#f1f5f9;display:grid;place-items:center;font-size:.78rem;font-weight:700;color:var(--muted);flex-shrink:0}.tmt-row.selected .tmt-period-num{background:var(--primary);color:white}.tmt-content{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:.12rem}.tmt-subject{font-size:.95rem;font-weight:600;color:var(--text)}.tmt-meta,.tmt-subject{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tmt-meta{font-size:.75rem;color:var(--muted)}.tmt-free{font-size:.82rem;color:#cbd5e1}.tmt-exam-chip{background:#fef9c3;color:#854d0e;border:1px solid #fde68a;border-radius:999px;padding:.18rem .5rem;font-size:.68rem;font-weight:700;white-space:nowrap;flex-shrink:0}.tmt-exam-chip.test{background:#dbeafe;color:#1e40af;border-color:#bfdbfe}.tmt-chevron{color:#cbd5e1;font-size:1.3rem;font-weight:300;flex-shrink:0;line-height:1}.tmt-overlay-card{display:flex;align-items:center;gap:1rem;padding:1.4rem 1rem;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:18px;color:#065f46}.tmt-overlay-icon{font-size:2rem;flex-shrink:0}.tmt-overlay-title{font-size:1rem;font-weight:700}.tmt-overlay-meta{font-size:.82rem;opacity:.75;margin-top:.2rem}}.child-details summary{cursor:pointer;list-style:none}.child-details summary::-webkit-details-marker{display:none}.child-summary{display:flex;justify-content:space-between;align-items:center;gap:1rem}.week-view .timetable-head{min-height:72px}.overlay-cell{background:#f8fafc}.overlay-holiday{background:#fff7ed!important;color:#9a3412}.overlay-school_break{background:#ecfeff!important;color:#0f766e}.overlay-class_trip,.overlay-excursion,.overlay-no_school,.overlay-project_day{background:#eef2ff!important;color:#3730a3}.overlay-school_event{background:#f0fdf4!important;color:#166534}.overlay-short_day{background:#fefce8!important;color:#854d0e}.overlay-short_day_extra{background:#f8fafc!important;color:#94a3b8;opacity:.5}.timetable-note-stack{margin-top:.5rem;padding-top:.4rem;border-top:1px dashed var(--border);display:grid;grid-gap:.35rem;gap:.35rem}.helper-box,.helper-event-card{display:grid;grid-gap:.5rem;gap:.5rem}.helper-box{margin-top:.5rem;padding:.75rem;border:1px solid var(--border);border-radius:12px;background:#fafcff}.helper-meta{display:flex;justify-content:space-between;gap:1rem;align-items:center}.helper-signup-list{display:grid;grid-gap:.45rem;gap:.45rem;margin-top:.35rem}.helper-signup-item{border-top:1px dashed var(--border);padding-top:.45rem}.child-details{overflow:hidden}.has-exam{background:#fef3c7;border-left:3px solid #f59e0b}.timetable-cell-clickable{cursor:pointer;transition:background .12s;display:flex;flex-direction:column;gap:.25rem}.timetable-cell-clickable:hover{background:rgba(49,86,211,.05)!important}.timetable-cell-selected{background:var(--primary-soft)!important;border-color:#a5b4fc!important}.timetable-subject{display:block;font-weight:600;font-size:.9rem}.timetable-exam-badge{display:inline-block;font-size:.7rem;background:#fef3c7;color:#92400e;border-radius:4px;padding:.1rem .3rem;font-weight:700}.timetable-ki-btn{background:none;border:none;cursor:pointer;font-size:.68rem;padding:0 1px;opacity:.65;line-height:1;flex-shrink:0}.timetable-ki-btn:hover{opacity:1}.timetable-modal-backdrop{position:fixed;inset:0;z-index:100;background:rgba(15,23,42,.3);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:1rem}.timetable-modal{background:rgba(255,255,255,.97);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 24px 64px rgba(15,23,42,.2);padding:1.5rem;width:min(400px,100%);position:relative;max-height:80vh;overflow-y:auto}.timetable-modal-close{position:absolute;top:.75rem;right:.75rem;background:none;border:none;font-size:1rem;cursor:pointer;color:var(--muted);width:32px;height:32px;display:grid;place-items:center;border-radius:8px}.timetable-modal-close:hover{background:var(--bg)}.timetable-modal-period{font-size:.72rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:.3rem}.timetable-modal-title{font-size:1.3rem;font-weight:700;margin:0 0 .5rem;padding-right:2rem}.timetable-modal-meta{color:var(--muted);font-size:.88rem;margin:0 0 .2rem}.timetable-modal-exam{margin-top:.75rem;padding:.75rem 1rem;background:#fef3c7;border-radius:10px;border-left:3px solid #f59e0b}.timetable-modal-divider{margin:.75rem 0;border:none;border-top:1px solid var(--border)}.between{justify-content:space-between}.between,.row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}@media (max-width:640px){.sm-col{flex-direction:column!important;align-items:stretch!important}.sm-hide{display:none!important}.sm-full{width:100%!important;min-width:0!important;flex:1 1 100%!important}.actions{flex-direction:column;width:100%}.actions .button,.actions a.button,.actions button{width:100%;justify-content:center}.table-row{grid-template-columns:1fr!important;gap:.4rem!important}.timetable-modal{width:min(400px,calc(100vw - 2rem))!important;padding:1rem!important}.timetable-modal .actions{flex-direction:row;width:auto}.timetable-modal .actions .button,.timetable-modal .actions a.button,.timetable-modal .actions button{width:auto}.dropdown-panel{position:fixed!important;left:.75rem!important;right:.75rem!important;top:auto!important;bottom:1rem!important;min-width:0!important;width:auto!important;max-height:80vh!important;overflow-y:auto!important;z-index:50!important}.search-row{flex-direction:column}.search-row input{width:100%}.child-summary,.helper-meta{flex-direction:column;align-items:flex-start}.token-header-row{flex-wrap:wrap}}