:root{--bg:#eef1f7;--glass:#ffffff9e;--glass-strong:#ffffffd1;--glass-border:#ffffffbf;--glass-edge:#0f172a0f;--glass-shadow:0 10px 30px -12px #1e294f38, 0 2px 6px -2px #1e294f14;--fill:#7676801f;--fill-strong:#76768033;--blur:saturate(180%) blur(22px);--ink:#0b0c10;--ink-2:#3c3c43ad;--ink-3:#3c3c4373;--line:#3c3c4324;--blue:#007aff;--red:#ff3b30;--orange:#ff9500;--green:#34c759;--indigo:#5856d6;--accent:var(--blue);--accent-ink:#fff;--entfall:var(--red);--vertretung:var(--orange);--raum:var(--blue);--ok:var(--green);--entfall-bg:#ff3b301f;--vertretung-bg:#ff950024;--raum-bg:#007aff1f;--surface:var(--glass);--surface-2:var(--fill);--radius:22px;--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Inter", "Segoe UI Variable", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#07080c;--glass:#2426308c;--glass-strong:#2c2e3ac7;--glass-border:#ffffff17;--glass-edge:#ffffff0a;--glass-shadow:0 12px 34px -14px #000000b3, 0 2px 6px -2px #0006;--fill:#7676803d;--fill-strong:#76768057;--ink:#f5f5f7;--ink-2:#ebebf59e;--ink-3:#ebebf561;--line:#54545880;--blue:#0a84ff;--red:#ff453a;--orange:#ff9f0a;--green:#30d158;--indigo:#5e5ce6;--entfall-bg:#ff453a2e;--vertretung-bg:#ff9f0a2e;--raum-bg:#0a84ff33;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-height:100dvh;color:var(--ink);font-family:var(--font);letter-spacing:-.011em;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-size:16px;line-height:1.42;position:relative;overflow-x:hidden}body:before{content:"";z-index:-1;pointer-events:none;filter:blur(10px);background:radial-gradient(38vmax 38vmax at 12% 8%,#007aff4d,#0000 70%),radial-gradient(34vmax 34vmax at 92% 18%,#af52de42,#0000 70%),radial-gradient(40vmax 40vmax at 78% 92%,#ff950038,#0000 70%),radial-gradient(36vmax 36vmax at 6% 80%,#34c75933,#0000 70%);position:fixed;inset:-20vmax}@media (prefers-color-scheme:dark){body:before{background:radial-gradient(38vmax 38vmax at 12% 8%,#0a84ff57,#0000 70%),radial-gradient(34vmax 34vmax at 92% 18%,#bf5af247,#0000 70%),radial-gradient(40vmax 40vmax at 78% 92%,#ff9f0a29,#0000 70%),radial-gradient(36vmax 36vmax at 6% 80%,#30d15824,#0000 70%)}}button{font:inherit;color:inherit;cursor:pointer;letter-spacing:inherit}button:disabled{cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid color-mix(in srgb, var(--blue) 55%, transparent);outline-offset:2px}.sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.push,.card,.empty,.chip,.code-form,.tabs,.pick,.tag-suggest,.tip,.card-form,.panel,.created,.list,.stat,.code-card,.abholer-status,.notice-warn,.btn-secondary,.kurs-form input,.fchip{background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow), inset 0 0 0 .5px var(--glass-edge)}.shell{max-width:540px;padding:calc(18px + env(safe-area-inset-top)) 16px calc(40px + env(safe-area-inset-bottom));margin:0 auto}.top{margin:2px 0 18px}.top-row{justify-content:space-between;align-items:center;gap:12px;min-height:40px;margin-bottom:4px;display:flex}.top-row .eyebrow{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;overflow:hidden}.eyebrow{color:var(--ink-2);letter-spacing:0;text-transform:none;margin:0 0 2px;font-size:13px;font-weight:600}h1{letter-spacing:-.03em;overflow-wrap:anywhere;margin:0;font-size:clamp(30px,9vw,36px);font-weight:800;line-height:1.08}.chip{border-radius:999px;flex:none;align-items:center;gap:8px;max-width:62%;padding:7px 8px 7px 14px;font-size:15px;font-weight:650;line-height:1.2;display:inline-flex}.chip-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chip-edit{color:#fff;background:var(--blue);border-radius:999px;flex:none;padding:3px 9px;font-size:13px;font-weight:600}.btn-primary{background:linear-gradient(180deg, color-mix(in srgb, var(--blue) 88%, #fff) 0%, var(--blue) 100%);color:#fff;letter-spacing:-.01em;width:100%;box-shadow:0 8px 20px -8px color-mix(in srgb, var(--blue) 70%, transparent), inset 0 1px 0 #ffffff40;border:0;border-radius:14px;padding:15px 18px;font-size:17px;font-weight:650;transition:transform .12s,opacity .15s,filter .15s}.btn-primary:active:not(:disabled){filter:brightness(.95);transform:scale(.98)}.btn-primary:disabled{opacity:.35;box-shadow:none}.btn-secondary{min-height:40px;color:var(--blue);white-space:nowrap;border-radius:12px;justify-content:center;align-items:center;gap:6px;padding:0 15px;font-size:15px;font-weight:600;text-decoration:none;transition:transform .12s;display:inline-flex}.btn-secondary:active:not(:disabled){transform:scale(.97)}.btn-secondary:disabled{opacity:.45}.btn-link{color:var(--blue);background:0 0;border:0;padding:8px 0;font-weight:600}.btn-link.muted{color:var(--ink-2)}.btn-link.danger{color:var(--red)}.btn-small{border-radius:11px;width:auto;min-height:36px;padding:8px 13px;font-size:14px}.btn-primary.btn-small{width:auto;padding:9px 15px;font-size:15px}.btn-danger{background:var(--red);color:#fff;min-height:38px;box-shadow:0 8px 18px -10px var(--red);border:0;border-radius:12px;font-weight:650}.btn-danger:disabled{opacity:.5}.onboarding h1{font-size:32px}.lede{color:var(--ink-2);margin:8px 0 24px;font-size:17px;line-height:1.4}.step{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2);margin:22px 0 9px 4px;font-size:13px;font-weight:600}.grid{gap:9px;display:grid}.grid-grades,.grid-letters{grid-template-columns:repeat(4,1fr)}.pick{border-radius:16px;padding:15px 0;font-size:19px;font-weight:650;transition:transform .12s,background .2s,color .2s}.pick:active{transform:scale(.95)}.pick.on{background:var(--blue);color:#fff;box-shadow:0 10px 22px -10px color-mix(in srgb, var(--blue) 80%, transparent);border-color:#0000}.pick-wide{grid-column:span 2}.hint{color:var(--ink-2);margin:4px 4px 10px;font-size:14px}.tags{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.tag{background:var(--blue);color:#fff;border:0;border-radius:999px;padding:7px 13px;font-size:15px;font-weight:600}.tag.tag-suggest{background:var(--glass);color:var(--blue);border:1px solid var(--glass-border)}.kurs-form{gap:8px;margin-bottom:12px;display:flex}.kurs-form input{min-width:0;color:var(--ink);border-radius:12px;flex:1;padding:12px 14px;font-family:inherit;font-size:17px}.actions{flex-direction:column;align-items:center;gap:4px;margin-top:28px;display:flex}.push{border-radius:var(--radius);margin-bottom:22px;padding:16px 18px}.push p{margin:0}.push-title{font-size:17px;font-weight:700;margin-bottom:4px!important}.push-cta .btn-primary{margin-top:14px}.push-row{align-items:flex-start;gap:11px;font-size:15px;display:flex}.push-dot{background:var(--green);width:10px;height:10px;box-shadow:0 0 0 4px color-mix(in srgb, var(--green) 22%, transparent), 0 0 12px var(--green);border-radius:50%;flex:none;margin-top:6px}.push-actions{gap:22px;margin-top:4px;display:flex}.push-msg{color:var(--ink-2);font-size:14px;margin-top:8px!important}.push-note{color:var(--ink-2);font-size:13px;line-height:1.4;margin:12px 0 0!important}.install-steps{margin:10px 0 8px;padding-left:22px}.install-steps li{margin-bottom:6px}.share-icon{vertical-align:-3px;color:var(--blue)}.switch-row{border-top:.5px solid var(--line);cursor:pointer;justify-content:space-between;align-items:center;gap:14px;margin:14px 0 0;padding:14px 0 0;display:flex}.switch-text{flex-direction:column;font-size:16px;display:flex}.switch-text strong{font-weight:600}.switch-text small{color:var(--ink-2);font-size:13px}.switch{appearance:none;cursor:pointer;background:var(--fill-strong);border:0;border-radius:999px;flex:none;width:51px;height:31px;margin:0;transition:background .22s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:27px;height:27px;transition:transform .22s cubic-bezier(.3,.7,.4,1.2);position:absolute;top:2px;left:2px;box-shadow:0 3px 8px #00000026,0 1px 1px #00000029}.switch:checked{background:var(--green)}.switch:checked:after{transform:translate(20px)}.tabs{scrollbar-width:none;border-radius:16px;gap:4px;margin-bottom:18px;padding:4px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{background:0 0;border:0;border-radius:12px;flex-direction:column;flex:1;align-items:center;min-width:88px;padding:8px 8px 7px;transition:background .2s,box-shadow .2s;display:flex;position:relative}.tab.on{background:var(--glass-strong);box-shadow:0 3px 10px -2px #00000024,0 0 0 .5px #0000000a}.tab-rel{font-size:16px;font-weight:650}.tab-date{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:12px}.tab-dot{background:var(--red);color:#fff;min-width:20px;height:20px;box-shadow:0 4px 10px -3px var(--red);border-radius:999px;place-items:center;padding:0 6px;font-size:12px;font-weight:700;display:grid;position:absolute;top:4px;right:8px}.day-title{letter-spacing:-.02em;color:var(--ink);margin:0 4px 12px;font-size:20px;font-weight:700}.cards{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.card{border-radius:20px;align-items:center;gap:14px;padding:12px 14px;animation:.35s both rise;display:flex}.cards .card:nth-child(2){animation-delay:30ms}.cards .card:nth-child(3){animation-delay:60ms}.cards .card:nth-child(4){animation-delay:90ms}.cards .card:nth-child(n+5){animation-delay:.12s}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.card{animation:none}}.card-std{color:#fff;border-radius:14px;flex-direction:column;flex:none;justify-content:center;align-items:center;width:50px;height:50px;display:flex;box-shadow:inset 0 1px #ffffff4d,0 6px 14px -8px #0006}.card-std .num{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:22px;font-weight:750;line-height:1}.card-std .lbl{text-transform:uppercase;letter-spacing:.08em;opacity:.85;margin-top:2px;font-size:9px;font-weight:700}.kind-entfall .card-std{background:linear-gradient(160deg, #ff6b61, var(--red))}.kind-vertretung .card-std{background:linear-gradient(160deg, #ffb340, var(--orange))}.kind-raum .card-std{background:linear-gradient(160deg, #4aa3ff, var(--blue))}.card-body{flex:1;min-width:0}.card-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.badge{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700}.badge-entfall{background:var(--entfall-bg);color:var(--entfall)}.badge-vertretung{background:var(--vertretung-bg);color:var(--vertretung)}.badge-raum{background:var(--raum-bg);color:var(--raum)}.fach{letter-spacing:-.015em;font-size:17px;font-weight:650}.klasse{color:var(--ink-2);background:var(--fill);border-radius:999px;margin-left:auto;padding:2px 8px;font-size:12px;font-weight:600}.card-detail{color:var(--ink-2);margin:3px 0 0;font-size:15px}.card-detail strong{color:var(--ink);font-weight:600}.empty{text-align:center;border-radius:var(--radius);color:var(--ink-2);padding:30px 18px}.empty p{margin:0}.empty:before{content:"✓";background:linear-gradient(160deg, #5ee07f, var(--green));color:#fff;width:52px;height:52px;box-shadow:0 10px 22px -10px var(--green);border-radius:50%;place-items:center;margin:0 auto 10px;font-size:26px;font-weight:700;display:grid}.empty-big{color:var(--ink);letter-spacing:-.02em;font-size:21px;font-weight:700;margin-bottom:4px!important}.stand{color:var(--ink-3);text-align:center;margin:18px 0 0;font-size:13px;line-height:1.5}.all-toggle{margin:8px auto 12px;display:block}.cards-all .card{padding:10px 12px}.cards-all .card-std{border-radius:12px;width:42px;height:42px}.cards-all .card-std .num{font-size:18px}.notice{color:var(--ink-2);text-align:center;padding:24px 0}.gate{padding-top:6vh}.gate h1{font-size:38px}.gate .lede{margin-bottom:22px}.notice-warn{background:color-mix(in srgb, var(--orange) 14%, var(--glass));border-radius:16px;margin:0 0 16px;padding:13px 15px;font-size:15px}.notice-warn p{margin:0}.notice-sub{color:var(--ink-2);font-size:14px;margin-top:6px!important}.notice-sub .btn-link{padding:0;font-size:14px}.code-form{border-radius:var(--radius);flex-direction:column;gap:12px;padding:18px;display:flex}.code-label{color:var(--ink-2);font-size:15px;font-weight:650}.code-input{background:var(--fill);width:100%;color:var(--ink);text-align:center;text-transform:uppercase;font:700 27px/1.1 var(--mono);letter-spacing:.16em;border:1.5px solid #0000;border-radius:14px;padding:15px 12px;transition:border-color .15s,background .15s}.code-input::placeholder{color:var(--ink-3)}.code-input:focus{border-color:var(--blue);background:var(--glass-strong);outline:none}.code-input.has-error{border-color:var(--red)}.field-error{color:var(--red);margin:0;font-size:14px;font-weight:550}.tip{border-radius:16px;margin-top:14px;padding:13px 15px;font-size:14px}.tip p{margin:0}.tip-title{color:var(--blue);font-weight:700;margin-bottom:2px!important}.perks{gap:10px;margin:22px 4px 0;padding:0;list-style:none;display:grid}.perks li{color:var(--ink);padding-left:30px;font-size:15px;position:relative}.perks li:before{content:"✓";background:var(--green);color:#fff;border-radius:50%;place-items:center;width:20px;height:20px;font-size:12px;font-weight:800;display:grid;position:absolute;top:0;left:0}.buy{border-top:.5px solid var(--line);color:var(--ink-2);margin:22px 4px 0;padding-top:16px;font-size:15px}.buy p{margin:0}.buy-title{color:var(--ink);font-weight:700;margin-bottom:2px!important}.foot{text-align:center;color:var(--ink-3);margin-top:30px;font-size:13px}.foot p{margin:0 0 2px}.foot .btn-link{font-size:13px}.foot-confirm{margin-top:6px!important}.admin{max-width:780px;padding:calc(18px + env(safe-area-inset-top)) 16px calc(60px + env(safe-area-inset-bottom));margin:0 auto}.admin h2{letter-spacing:-.02em;margin:0 0 12px;font-size:20px;font-weight:700}.admin-top{justify-content:space-between;align-items:flex-end;margin:6px 0 18px;display:flex}.admin-login{max-width:440px;padding-top:8vh}.admin-login h1{margin-bottom:18px}.card-form,.panel,.created,.list{border-radius:var(--radius);padding:18px}.card-form{flex-direction:column;gap:12px;display:flex}.panel,.created{margin-bottom:16px}.stats{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px;display:grid}.stat{border-radius:18px;flex-direction:column;min-width:0;padding:13px 15px;display:flex}.stat-num{letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;font-size:24px;font-weight:750;overflow:hidden}.stat-lbl{color:var(--ink-2);font-size:12px;font-weight:500}.abholer-status{border-radius:14px;margin:0 0 16px;padding:11px 15px;font-size:14px}.abholer-status.warn{background:color-mix(in srgb, var(--orange) 16%, var(--glass))}.form-grid{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px;display:grid}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field>span{color:var(--ink-2);margin-left:2px;font-size:13px;font-weight:600}.field-wide{grid-column:1/-1}.field input,.field select,.search{background:var(--fill);width:100%;min-width:0;color:var(--ink);font:inherit;border:1.5px solid #0000;border-radius:12px;min-height:44px;padding:10px 12px;font-size:16px;transition:border-color .15s}.field input:focus,.field select:focus,.search:focus{border-color:var(--blue);outline:none}.field .hint{margin:2px 2px 0;font-size:13px}.created{background:color-mix(in srgb, var(--green) 10%, var(--glass))}.created-head{justify-content:space-between;align-items:center;display:flex}.created-head h2{margin:0}.created-item{border-top:.5px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.created-head+.created-item{margin-top:10px}.created-code{font:750 25px/1.1 var(--mono);letter-spacing:.08em}.created-for{color:var(--ink-2);margin:2px 0 0;font-size:14px}.created-actions{flex-wrap:wrap;gap:8px;display:flex}.list-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.list-head h2{margin:0}.search{max-width:260px}.filters{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.fchip{box-shadow:none;border-radius:999px;padding:6px 13px;font-size:14px;font-weight:600}.fchip.on{background:var(--ink);color:var(--bg);border-color:#0000}.fchip-n{opacity:.55;font-variant-numeric:tabular-nums;margin-left:2px}.list-empty{color:var(--ink-2);text-align:center;margin:0;padding:20px 0}.code-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.code-card{box-shadow:none;border-radius:18px;grid-template-columns:1fr auto;align-items:center;gap:8px 12px;padding:13px 15px;display:grid}.code-card.st-abgelaufen,.code-card.st-gesperrt{opacity:.72}.cc-main{min-width:0}.cc-top{align-items:center;gap:8px;display:flex}.cc-code{font:700 17px/1.2 var(--mono);letter-spacing:.06em}.cc-name{text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-weight:650;overflow:hidden}.cc-meta{color:var(--ink-2);margin:2px 0 0;font-size:13px}.cc-full{color:var(--orange);font-weight:650}.cc-actions{align-items:center;gap:6px;display:flex}.cc-more{border-top:.5px solid var(--line);grid-column:1/-1;margin-top:4px;padding-top:12px}.st-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700}.st-badge.st-aktiv{background:color-mix(in srgb, var(--green) 18%, transparent);color:var(--green)}.st-badge.st-abgelaufen{background:var(--fill);color:var(--ink-2)}.st-badge.st-gesperrt{background:var(--entfall-bg);color:var(--red)}.devices{margin-bottom:12px}.devices-title{color:var(--ink-2);margin:0 0 4px;font-size:13px;font-weight:600}.devices ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.devices li{flex-wrap:wrap;gap:4px 10px;font-size:14px;display:flex}.devices .hint{margin:0;font-size:13px}.row-buttons{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.confirm p{margin:0 0 10px;font-size:14px}.toast{left:50%;bottom:calc(22px + env(safe-area-inset-bottom));color:#fff;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);text-align:center;z-index:10;background:#1c1c1ed1;border-radius:999px;max-width:calc(100% - 32px);padding:11px 18px;font-size:14px;font-weight:600;animation:.25s both rise;position:fixed;transform:translate(-50%);box-shadow:0 12px 30px -10px #00000080}@media (max-width:560px){h1{font-size:32px}.stats{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr 1fr}.list-head{flex-direction:column;align-items:stretch}.search{max-width:none}.code-card{grid-template-columns:1fr}.cc-actions{justify-content:flex-start}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){:root{--glass:#ffffffeb;--glass-strong:#fff}@media (prefers-color-scheme:dark){:root{--glass:#242630f0;--glass-strong:#2c2e3a}}}
