/* Cockpit 6b — v3.1 Oberfläche. Lädt NACH styles.css; die alten Klassen bleiben für Editor, Jahr, Sport-Doku, Login. */
:root {
  --v3-ground: #f2f2f6; --v3-side: #e9e9ee; --v3-card: #ffffff; --v3-card2: #f4f4f8; --v3-line: #e2e2e8; --v3-line2: #d3d3da;
  --v3-ink: #1b1b1f; --v3-ink2: #5d5d66; --v3-ink3: #9494a0; --v3-accent: #0a7aff; --v3-ok: #2e9e63; --v3-warn: #ff9500; --v3-due: #ff3b30;
  --v3-orga: #8b5cf6; --v3-aufsicht: #e6a817;
  --v3-shadow: 0 1px 2px rgba(20,20,40,.05), 0 6px 18px rgba(20,20,40,.07);
  --v3-tafel: #22302a; --v3-tafelink: #e8f0ea; --v3-tafelhead: #9fc7ad;
}
@media (prefers-color-scheme: dark) {
  :root {
    --v3-ground: #000; --v3-side: #111114; --v3-card: #1c1c1e; --v3-card2: #2a2a2e; --v3-line: #2e2e34; --v3-line2: #3a3a42;
    --v3-ink: #f2f2f7; --v3-ink2: #a9a9b3; --v3-ink3: #6c6c76; --v3-accent: #3a95ff; --v3-ok: #3fbf7a;
    --v3-shadow: 0 1px 2px rgba(0,0,0,.4), 0 8px 22px rgba(0,0,0,.45);
  }
}
html, body { height: 100%; }
body { background: var(--v3-ground); color: var(--v3-ink); padding: 0; overflow: hidden; }
#root { height: 100%; }
.v3app { display: grid; grid-template-columns: 232px 1fr; height: 100vh; height: 100dvh; }
.v3side { background: var(--v3-side); border-right: 1px solid var(--v3-line); display: flex; flex-direction: column; padding: 18px 12px 14px; gap: 4px; padding-top: calc(18px + env(safe-area-inset-top)); }
.v3brand { font-weight: 800; font-size: 17px; letter-spacing: -.01em; padding: 6px 10px 14px; }
.v3brand small { display: block; font-weight: 600; font-size: 11.5px; color: var(--v3-ink3); letter-spacing: .06em; text-transform: uppercase; margin-top: 2px; }
.v3navlist { display: flex; flex-direction: column; gap: 4px; }
.v3nav { border: 0; background: none; text-align: left; display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 10px; font-weight: 600; font-size: 15px; color: var(--v3-ink2); cursor: pointer; min-height: 44px; }
.v3nav svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.v3nav.on { background: var(--v3-card); color: var(--v3-ink); box-shadow: var(--v3-shadow); }
.v3nav:focus-visible { outline: 2px solid var(--v3-accent); }
.v3spacer { flex: 1; }
.v3foot { font-size: 11.5px; color: var(--v3-ink3); padding: 8px 12px; }
.v3side .pk-banner { margin: 0 0 8px; }
.v3main { position: relative; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; }
.v3page { padding: 26px 30px 140px; max-width: 1400px; }

.v3hdr { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 18px; flex-wrap: wrap; }
.v3hdr h1 { font-size: 30px; font-weight: 800; letter-spacing: -.02em; margin: 0; line-height: 1.1; }
.v3sub { font-size: 14px; color: var(--v3-ink2); font-weight: 600; margin-bottom: 6px; }
.v3eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--v3-ink3); margin: 0 0 6px; }
.v3back { border: 0; background: none; color: var(--v3-accent); font-weight: 600; font-size: 16px; display: inline-flex; align-items: center; gap: 2px; padding: 0; margin: -6px 0 10px; cursor: pointer; min-height: 44px; }
.v3back svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.v3sect { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--v3-ink3); margin: 22px 2px 10px; display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.v3stack > .v3sect:first-child, .v3page > .v3sect:first-of-type { margin-top: 0; }
.v3link { text-transform: none; letter-spacing: 0; font-weight: 600; font-size: 13px; color: var(--v3-accent); background: none; border: 0; cursor: pointer; padding: 0; min-height: 28px; }
.v3soft { color: var(--v3-ink2); font-size: 14px; text-transform: none; letter-spacing: 0; font-weight: 500; }
.v3soft.pre { white-space: pre-wrap; }
.v3card { background: var(--v3-card); border-radius: 16px; padding: 16px 18px; box-shadow: var(--v3-shadow); }
.v3card h4 { margin: 0 0 8px; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--v3-ink3); }
.v3empty { color: var(--v3-ink3); font-size: 14px; }
.v3stack { display: flex; flex-direction: column; gap: 14px; }
.v3stack.tight { gap: 8px; }
.v3two { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 24px; align-items: start; }
.v3two.even { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.v3fach { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--fc, var(--v3-ink2)); }
.v3fach i { width: 9px; height: 9px; border-radius: 50%; background: var(--fc, var(--v3-ink3)); }
.v3chip { display: inline-flex; align-items: center; font-size: 11.5px; font-weight: 700; padding: 3px 9px; border-radius: 999px; background: var(--v3-card2); color: var(--v3-ink2); letter-spacing: .02em; white-space: nowrap; border: 0; cursor: default; font-variant-numeric: tabular-nums; }
button.v3chip { cursor: pointer; }
.v3chip.due { color: var(--v3-due); background: rgba(255,59,48,.12); }
.v3chip.soon { color: var(--v3-warn); background: rgba(255,149,0,.15); }
.v3chip.prio { color: var(--v3-warn); background: rgba(255,149,0,.15); }
.v3chip.ok { color: var(--v3-ok); background: rgba(46,158,99,.14); }
.v3btn { min-height: 44px; border-radius: 12px; border: 0; background: var(--v3-card2); color: var(--v3-ink); font-weight: 600; font-size: 14px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; cursor: pointer; padding: 0 16px; }
.v3btn.primary { background: var(--fc, var(--v3-accent)); color: #fff; }
.v3btn:disabled { opacity: .4; cursor: default; }
.v3chk { width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--v3-line2); background: var(--v3-card); display: grid; place-items: center; cursor: pointer; flex: none; padding: 0; }
.v3chk svg { width: 15px; height: 15px; stroke: #fff; fill: none; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.v3chk.on { background: var(--v3-ok); border-color: var(--v3-ok); }
.v3chk.big { width: 44px; height: 44px; }
.v3chk.big svg { width: 22px; height: 22px; }
.v3chk.sm { width: 20px; height: 20px; }
.v3chk.sm svg { width: 12px; height: 12px; }

/* Stundenkarte */
.v3lc { border-left: 6px solid var(--fc); display: grid; grid-template-columns: 1fr auto; gap: 6px 16px; cursor: pointer; }
.v3lc:active { transform: scale(.995); }
.v3lc.held { opacity: .62; }
.v3lc .v3fach { grid-column: 1; }
.v3lc h3 { grid-column: 1; font-size: 21px; font-weight: 800; letter-spacing: -.015em; margin: 2px 0 0; line-height: 1.15; text-wrap: balance; }
.v3ziel { grid-column: 1; color: var(--v3-ink2); font-size: 14px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.v3ziel.big { font-size: 15px; margin: 8px 0 0; max-width: 72ch; }
.v3lc-right { grid-row: 1 / span 3; grid-column: 2; display: flex; flex-direction: column; align-items: flex-end; gap: 8px; }
.v3phasen { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; margin-top: 10px; }
.v3ph { background: var(--v3-card2); border-radius: 10px; padding: 9px 11px; font-size: 13.5px; line-height: 1.3; }
.v3ph b { display: block; color: var(--fc); font-variant-numeric: tabular-nums; font-size: 12.5px; }

/* Stundenplan */
.v3plancard { padding: 14px 14px 12px; }
.v3plancard .v3sect { margin-top: 0; }
.v3weeknav { display: inline-flex; gap: 2px; text-transform: none; letter-spacing: 0; }
.v3weeknav button { border: 0; background: var(--v3-card2); color: var(--v3-ink2); font-weight: 700; font-size: 12px; padding: 4px 9px; border-radius: 7px; cursor: pointer; min-height: 28px; }
.v3weeknav.big { gap: 6px; }
.v3plan { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 13px; font-variant-numeric: tabular-nums; table-layout: fixed; }
.v3plan th { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--v3-ink3); font-weight: 700; padding: 0 4px 8px; text-align: left; }
.v3plan th.today, .v3plan td.today { background: color-mix(in srgb, var(--v3-accent) 8%, transparent); }
.v3plan th:first-child, .v3plan td:first-child { width: 50px; color: var(--v3-ink3); font-size: 11.5px; padding-right: 4px; }
.v3plan td { padding: 3px 3px; height: 38px; vertical-align: middle; border-top: 1px solid var(--v3-line); }
.v3plan td:first-child b { display: block; color: var(--v3-ink2); font-size: 12.5px; }
.v3slot { display: block; width: 100%; text-align: left; border: 0; border-radius: 7px; padding: 4px 7px; font-weight: 700; color: #fff; background: var(--fc); font-size: 12.5px; line-height: 1.2; cursor: pointer; min-height: 32px; }
.v3slot small { display: block; font-weight: 500; opacity: .85; font-size: 10.5px; }
.v3slot.leer { background: color-mix(in srgb, var(--fc) 22%, transparent); color: var(--fc); }
.v3slot.held { opacity: .55; }
.v3slot.none { background: transparent; color: var(--v3-ink3); font-weight: 500; cursor: default; padding-left: 8px; }
.v3plan tr.aufsicht td { border-top: 3px solid var(--v3-aufsicht); height: 20px; padding: 0 4px; }
.v3plan tr.aufsicht td span { font-size: 10.5px; font-weight: 700; color: var(--v3-aufsicht); letter-spacing: .04em; }
.v3legend { display: flex; gap: 14px; font-size: 12px; color: var(--v3-ink3); margin-top: 8px; flex-wrap: wrap; }
.v3legend i { display: inline-block; width: 14px; height: 3px; background: var(--v3-aufsicht); vertical-align: middle; margin-right: 5px; }
.v3plancard .ferien-bar { margin: 10px 0 0; }

/* Aufgaben */
.v3task { display: flex; align-items: flex-start; gap: 10px 12px; padding: 10px 6px; min-height: 48px; flex-wrap: wrap; }
.v3task + .v3task { border-top: 1px solid var(--v3-line); }
.v3task .v3chk { margin-top: 1px; }
.v3task.done .v3txt { text-decoration: line-through; color: var(--v3-ink3); }
.v3txt { flex: 1 1 200px; font-size: 14.5px; min-width: 0; overflow-wrap: anywhere; }
.v3txt a { font-weight: 600; }
.v3chips { display: flex; gap: 6px; flex: 0 1 auto; align-items: center; flex-wrap: wrap; justify-content: flex-end; margin-left: auto; }
.v3more { border: 0; background: none; color: var(--v3-ink3); font-size: 18px; line-height: 1; cursor: pointer; padding: 2px 6px; min-height: 28px; }
.v3tasks { padding: 4px 10px; }
.v3sub { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.v3sub li { display: flex; gap: 10px; align-items: center; font-size: 13.5px; color: var(--v3-ink2); }
.v3sub li.done span { text-decoration: line-through; color: var(--v3-ink3); }
.v3sub li span { flex: 1; }
.v3sub li.add input { flex: 1; min-height: 36px; }
.v3sub li.add .v3btn { min-height: 36px; padding: 0 12px; }
.v3del { border: 0; background: none; color: var(--v3-ink3); cursor: pointer; font-size: 14px; padding: 4px 6px; }
.v3tools { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.v3tools button, .v3tools select { border: 0; background: var(--v3-card2); color: var(--v3-ink2); font-size: 12.5px; font-weight: 600; padding: 7px 10px; border-radius: 8px; cursor: pointer; min-height: 34px; }
.v3tools button.on { color: var(--v3-warn); }
.v3tools button.danger { color: var(--v3-due); }
.v3wdh { width: 100%; display: flex; gap: 6px; flex-wrap: wrap; }
.v3wdh button.on { color: var(--v3-accent); }
.v3date { font: inherit; font-size: 14px; padding: 6px 10px; border-radius: 9px; border: 1px solid var(--v3-line); background: var(--v3-card2); color: var(--v3-ink); margin-top: 8px; }
.v3group { margin-bottom: 2px; }
.v3group-h { display: flex; align-items: center; gap: 10px; padding: 4px 4px 8px; }
.v3group-h b { font-size: 15px; }
.v3n { font-size: 11.5px; font-weight: 700; color: var(--v3-ink3); background: var(--v3-card2); border-radius: 999px; padding: 2px 8px; }
.v3group-h .v3more { margin-left: auto; }
.v3prep { padding: 6px 12px 4px; border-left: 5px solid var(--fc); }
.v3prep-h { border: 0; background: none; text-align: left; display: flex; flex-direction: column; gap: 2px; padding: 8px 2px 6px; cursor: pointer; width: 100%; }
.v3prep-h b { font-size: 14.5px; }
.v3filters { display: flex; gap: 6px; background: var(--v3-card2); border-radius: 11px; padding: 4px; width: max-content; margin-bottom: 16px; }
.v3filters button { border: 0; background: none; padding: 7px 14px; border-radius: 8px; font-weight: 600; color: var(--v3-ink2); cursor: pointer; font-size: 14px; min-height: 40px; }
.v3filters button.on { background: var(--v3-card); color: var(--v3-ink); box-shadow: var(--v3-shadow); }
.v3quick { display: flex; gap: 8px; align-items: center; margin-bottom: 14px; flex-wrap: wrap; }
.v3quick input { flex: 1 1 260px; font-size: 16px; padding: 11px 14px; border-radius: 12px; border: 1px solid var(--v3-line); background: var(--v3-card); color: var(--v3-ink); min-height: 46px; }
.v3sel { font: inherit; font-size: 14px; padding: 0 10px; border-radius: 12px; border: 1px solid var(--v3-line); background: var(--v3-card); color: var(--v3-ink); min-height: 46px; }
.v3mic { width: 46px; height: 46px; border-radius: 50%; background: var(--v3-due); color: #fff; border: 0; display: grid; place-items: center; cursor: pointer; flex: none; padding: 0; }
.v3mic svg { width: 22px; height: 22px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.v3mic.rec { animation: v3pulse 1s infinite; }
@keyframes v3pulse { 50% { box-shadow: 0 0 0 10px rgba(255,59,48,.2); } }
.v3donebox { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
.v3termine { padding: 8px 14px; }
.v3termin { display: flex; gap: 10px; align-items: center; padding: 8px 0; font-size: 14px; }
.v3termin + .v3termin { border-top: 1px solid var(--v3-line); }
.v3fb summary { cursor: pointer; font-size: 13.5px; font-weight: 600; color: var(--v3-ink2); padding: 8px 0; list-style: none; }
.v3fb summary::-webkit-details-marker { display: none; }
.v3fb summary::before { content: "▸ "; color: var(--v3-ink3); }
.v3fb[open] summary::before { content: "▾ "; }
.v3fb p { margin: 0 0 10px; font-size: 14px; white-space: pre-wrap; color: var(--v3-ink2); }
.v3fbcard .lbl { margin-top: 0; }

/* Woche (Kalender) */
.v3calwrap { overflow-x: auto; }
.v3cal { display: grid; grid-template-columns: 64px repeat(var(--cols, 5), minmax(140px, 1fr)); gap: 6px; font-size: 13px; }
.v3cal-h { font-size: 12px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--v3-ink3); padding: 0 6px 6px; }
.v3cal-h.today { color: var(--v3-accent); }
.v3cal-t { color: var(--v3-ink3); font-size: 12px; font-variant-numeric: tabular-nums; padding: 6px 4px 0; text-align: right; }
.v3cal-t b { display: block; color: var(--v3-ink2); }
.v3cell { min-height: 60px; border-radius: 10px; background: color-mix(in srgb, var(--v3-card) 55%, transparent); border: 1px solid var(--v3-line); }
.v3cell.today { border-color: color-mix(in srgb, var(--v3-accent) 45%, var(--v3-line)); }
.v3cell.frei { background: transparent; border-style: dashed; }
.v3ev { display: block; width: calc(100% - 8px); text-align: left; border: 0; border-radius: 8px; padding: 6px 8px; color: #fff; background: var(--fc); font-weight: 700; font-size: 12.5px; line-height: 1.25; cursor: pointer; margin: 4px; }
.v3ev small { display: block; font-weight: 500; opacity: .85; font-size: 11px; }
.v3ev.held { opacity: .55; }
.v3ev.cont { opacity: .35; cursor: default; }
.v3ev.leer { background: color-mix(in srgb, var(--fc) 18%, transparent); color: var(--fc); }
.v3ev.iqsh { background: var(--v3-orga); }
.v3ev.frei { background: var(--v3-card2); color: var(--v3-ink2); cursor: default; }
.v3daytasks { grid-column: 2 / -1; display: grid; grid-template-columns: repeat(var(--cols, 5), minmax(140px, 1fr)); gap: 6px; }
.v3mini { font-size: 12.5px; padding: 8px 8px; border-radius: 10px; background: var(--v3-card); box-shadow: var(--v3-shadow); min-height: 44px; display: flex; flex-direction: column; gap: 4px; }
.v3mini-row { display: flex; gap: 6px; align-items: flex-start; border: 0; background: none; text-align: left; padding: 2px 0; cursor: pointer; color: var(--v3-ink); font-size: 12.5px; }
.v3mini-row i { width: 7px; height: 7px; border-radius: 50%; background: var(--fc, var(--v3-ink3)); flex: none; margin-top: 5px; }
.v3mini-none { color: var(--v3-ink3); }
.v3aufs { grid-column: 2 / -1; display: grid; grid-template-columns: repeat(var(--cols, 5), minmax(140px, 1fr)); gap: 6px; }
.v3aufs div { height: 16px; font-size: 11px; font-weight: 700; color: var(--v3-aufsicht); border-top: 3px solid var(--v3-aufsicht); padding-left: 4px; letter-spacing: .04em; }
.v3aufs div.none { border-top-color: transparent; }

/* Fächer */
.v3tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.v3tile { background: var(--v3-card); border-radius: 18px; padding: 18px; box-shadow: var(--v3-shadow); cursor: pointer; border-top: 6px solid var(--fc); min-height: 150px; display: flex; flex-direction: column; justify-content: space-between; gap: 10px; }
.v3tile.small { min-height: auto; }
.v3tile h3 { margin: 6px 0 2px; font-size: 22px; font-weight: 800; letter-spacing: -.015em; }
.v3tile p { margin: 0; color: var(--v3-ink2); font-size: 14px; }
.v3tile-foot { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.v3tile-foot .v3btn { margin-left: auto; min-height: 38px; }
.v3lrow { display: flex; align-items: center; gap: 14px; padding: 12px 14px; background: var(--v3-card); border-radius: 12px; box-shadow: var(--v3-shadow); cursor: pointer; min-height: 56px; border: 0; width: 100%; text-align: left; }
.v3lrow .v3id { font-variant-numeric: tabular-nums; color: var(--v3-ink3); font-weight: 700; font-size: 12.5px; width: 48px; flex: none; }
.v3lrow .v3tt { flex: 1; font-weight: 600; font-size: 15px; }
.v3lrow .v3tt small { display: block; color: var(--v3-ink3); font-weight: 500; font-size: 12.5px; }
.v3lrow.held { opacity: .6; }
.v3inhalte { margin: 0; padding-left: 20px; color: var(--v3-ink2); font-size: 14px; }

/* Stunde */
.v3lp { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: 22px; align-items: start; }
.v3plist { display: flex; flex-direction: column; gap: 8px; }
.v3pitem { background: var(--v3-card); border-radius: 12px; padding: 12px 14px; box-shadow: var(--v3-shadow); border: 0; border-left: 5px solid var(--v3-line2); cursor: pointer; display: flex; gap: 10px; align-items: baseline; min-height: 50px; text-align: left; width: 100%; }
.v3pitem.on { border-left-color: var(--fc); outline: 2px solid color-mix(in srgb, var(--fc) 40%, transparent); }
.v3pitem b { font-variant-numeric: tabular-nums; color: var(--fc); font-size: 13px; width: 36px; flex: none; }
.v3pitem span { font-weight: 600; font-size: 14.5px; }
.v3pdetail { background: var(--v3-card); border-radius: 18px; padding: 22px 24px; box-shadow: var(--v3-shadow); border-top: 6px solid var(--fc); min-height: 300px; }
.v3pdetail h2 { margin: 0 0 4px; font-size: 26px; font-weight: 800; letter-spacing: -.02em; line-height: 1.1; }
.v3dur { color: var(--fc); font-weight: 700; font-variant-numeric: tabular-nums; font-size: 15px; }
.v3pdetail p { font-size: 16px; line-height: 1.5; margin: 12px 0 0; max-width: 62ch; }
.v3tafel { margin-top: 16px; background: var(--v3-tafel); color: var(--v3-tafelink); border-radius: 12px; padding: 14px 16px; font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace; font-size: 14.5px; line-height: 1.5; white-space: pre-wrap; max-width: 70ch; overflow-x: auto; }
.v3tafel::before { content: "DETAILS · Aufgaben, Lösungen, Tafel-Wortlaut"; display: block; font-size: 10.5px; letter-spacing: .14em; color: var(--v3-tafelhead); margin-bottom: 6px; }
.v3pnav { display: flex; gap: 8px; justify-content: space-between; margin-top: 18px; }
.v3info { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; margin: 22px 0; }
.v3info .v3card p { margin: 0; font-size: 14px; }
.v3mat { display: block; font-weight: 600; padding: 6px 0; }
.v3edited { color: var(--v3-ink3); font-size: 18px; font-weight: 500; }
.v3dock { position: sticky; bottom: 0; margin: 18px -30px -140px; padding: 12px 30px calc(18px + env(safe-area-inset-bottom)); display: flex; gap: 10px; align-items: center; background: color-mix(in srgb, var(--v3-ground) 84%, transparent); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border-top: 1px solid var(--v3-line); }
.v3fill { flex: 1; color: var(--v3-ink3); font-size: 13px; }

/* Alte Bausteine (Editor, Jahr, Sport, Feedback) im neuen Rahmen */
.v3legacy .card, .v3legacy .panel { border-radius: 16px; box-shadow: var(--v3-shadow); }
.v3legacy .later-toggle { margin-top: 8px; }
.v3fbcard { margin-top: 8px; }
.v3fbcard .fb-form textarea { min-height: 70px; }

/* Schnelleingabe (＋) — über der Tab-Leiste */
.qadd { bottom: calc(24px + env(safe-area-inset-bottom)); right: 24px; }
.v3tabbar { display: none; }
.toast { z-index: 60; }


/* ---- v3.1: Home, Vorbereitung je Fach, Fächer/Einheiten, Phasen auf dem Handy ---- */
.v3hdr-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.v3home .v3plancard.wide { padding: 16px 18px 14px; }
.v3plancard.wide .v3plan { font-size: 14px; }
.v3plancard.wide .v3plan th { font-size: 12px; padding-bottom: 10px; }
.v3plancard.wide .v3plan td { height: 54px; padding: 4px 4px; }
.v3plancard.wide .v3plan th:first-child, .v3plancard.wide .v3plan td:first-child { width: 58px; }
.v3plancard.wide .v3slot { min-height: 46px; padding: 6px 10px; font-size: 14px; border-radius: 9px; }
.v3plancard.wide .v3slot small { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v3plancard.wide .v3slot.cont { opacity: .55; }
.v3plancard.wide .v3slot.cont small { font-style: italic; }
.v3prepcols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: start; }
.v3prepcol { display: flex; flex-direction: column; gap: 10px; }
.v3prepcol-h { display: flex; align-items: center; gap: 8px; padding: 2px 4px; }
.v3prepcol-h .v3fach { font-size: 13px; }
.v3n.ok { color: var(--v3-ok); }
.v3prep-when { font-size: 12px; font-weight: 700; color: var(--v3-ink3); letter-spacing: .02em; }
.v3seg { display: flex; gap: 4px; background: var(--v3-card2); border-radius: 12px; padding: 4px; width: max-content; max-width: 100%; margin-bottom: 16px; }
.v3seg button { border: 0; background: none; padding: 9px 16px; border-radius: 9px; font-weight: 700; font-size: 15px; color: var(--v3-ink2); cursor: pointer; min-height: 44px; display: inline-flex; align-items: center; gap: 8px; }
.v3seg button i { width: 10px; height: 10px; border-radius: 50%; background: var(--fc); }
.v3seg button.on { background: var(--v3-card); color: var(--v3-ink); box-shadow: var(--v3-shadow); }
.v3now { border-left: 6px solid var(--fc); cursor: pointer; margin-bottom: 6px; }
.v3now h3 { margin: 4px 0 2px; font-size: 21px; font-weight: 800; letter-spacing: -.015em; }
.v3now p { margin: 0; color: var(--v3-ink2); font-size: 14px; }
.v3erow { display: flex; align-items: center; gap: 14px; padding: 12px 14px; background: var(--v3-card); border-radius: 14px; box-shadow: var(--v3-shadow); cursor: pointer; border: 0; width: 100%; text-align: left; min-height: 64px; border-left: 6px solid var(--fc); }
.v3erow.durch { opacity: .62; }
.v3erow.kommt { border-left-color: color-mix(in srgb, var(--fc) 45%, transparent); }
.v3enr { font-weight: 800; color: var(--fc); font-size: 15px; width: 34px; flex: none; font-variant-numeric: tabular-nums; }
.v3ebody { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.v3ebody b { font-size: 16px; font-weight: 700; }
.v3ebody small { color: var(--v3-ink3); font-size: 12.5px; font-weight: 500; }
.v3bar { display: block; height: 5px; border-radius: 999px; background: var(--v3-card2); overflow: hidden; margin-top: 3px; max-width: 360px; }
.v3bar i { display: block; height: 100%; background: var(--fc); border-radius: 999px; }
.v3eside { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; flex: none; }
.v3chip.soft { color: var(--v3-ink3); }
.v3chip.ln { color: var(--v3-orga); background: rgba(139,92,246,.12); }
.v3lrow .v3id b { display: block; color: var(--v3-ink2); font-size: 13px; }
.v3groups { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 16px; align-items: start; }
.v3phback { display: none; }
.v3plan th .short { display: none; }
.v3prep .v3task { flex-wrap: nowrap; }
.v3prep .v3txt { flex: 1 1 0; }
.v3mini-row span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.v3sub li.hint { font-size: 12.5px; }
.v3subrow { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* ---- iPad Hochformat / kleinere Tablets: schmale Icon-Leiste ---- */
@media (min-width: 744px) and (max-width: 1024px) {
  .v3app { grid-template-columns: 84px 1fr; }
  .v3side { padding: 16px 8px; padding-top: calc(16px + env(safe-area-inset-top)); }
  .v3brand { font-size: 0; padding: 0 0 12px; text-align: center; }
  .v3brand::before { content: "6b"; font-size: 17px; font-weight: 800; display: block; }
  .v3brand small { display: none; }
  .v3nav { flex-direction: column; gap: 4px; font-size: 11px; padding: 10px 4px; justify-content: center; }
  .v3side .pk-banner { display: none; }
  .v3page { padding: 22px 22px 140px; }
  .v3two { grid-template-columns: minmax(0, 1fr) 320px; gap: 18px; }
  .v3two.even { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .v3lp { grid-template-columns: 260px minmax(0, 1fr); gap: 16px; }
  .v3prepcols { gap: 12px; }
  .v3groups { grid-template-columns: 1fr; }
  .v3plan { font-size: 12px; }
  .v3plancard.wide .v3plan { font-size: 13px; }
  .v3plancard.wide .v3slot { font-size: 13px; padding: 5px 8px; }
  .v3plan th:first-child, .v3plan td:first-child { width: 44px; }
  .v3slot { padding: 3px 6px; font-size: 11.5px; }
  .v3slot small { font-size: 10px; }
  .v3phasen { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }
  .v3lc { grid-template-columns: 1fr; }
  .v3lc-right { grid-row: auto; grid-column: 1; flex-direction: row; align-items: center; justify-content: space-between; margin-top: 4px; }
  .v3lc h3 { font-size: 20px; }
  .v3hdr h1 { font-size: 26px; }
  .v3dock { margin-left: -22px; margin-right: -22px; padding-left: 22px; padding-right: 22px; }
}

/* ---- Handy ---- */
@media (max-width: 743px) {
  .v3app { grid-template-columns: 1fr; }
  .v3side { display: none; }
  .v3page { padding: 18px 16px 150px; padding-top: calc(18px + env(safe-area-inset-top)); }
  .v3two, .v3two.even { grid-template-columns: 1fr; }
  .v3lp { grid-template-columns: 1fr; }
  .v3lp.list .v3pdetail { display: none; }
  .v3lp.detail .v3plist { display: none; }
  .v3phback { display: inline-flex; align-items: center; gap: 2px; border: 0; background: none; color: var(--v3-accent); font-weight: 600; font-size: 15px; padding: 0; margin: -6px 0 10px; min-height: 40px; cursor: pointer; }
  .v3phback svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
  .v3pdetail { min-height: 0; padding: 18px 18px 20px; }
  .v3pdetail h2 { font-size: 23px; }
  .v3pitem { min-height: 56px; }
  .v3prepcols { grid-template-columns: 1fr; }
  .v3groups { grid-template-columns: 1fr; }
  .v3seg { width: 100%; }
  .v3seg button { flex: 1; justify-content: center; padding: 9px 6px; }
  .v3plancard.wide .v3plan { font-size: 11.5px; }
  .v3plancard.wide .v3plan th { font-size: 10px; padding-bottom: 6px; }
  .v3plancard.wide .v3plan td { height: 40px; padding: 2px; }
  .v3plancard.wide .v3plan th:first-child, .v3plancard.wide .v3plan td:first-child { width: 36px; }
  .v3plancard.wide .v3slot { min-height: 36px; padding: 3px 5px; font-size: 11.5px; }
  .v3plancard.wide .v3slot small { display: none; }
  .v3erow { padding: 10px 12px; gap: 8px 10px; flex-wrap: wrap; }
  .v3eside { flex-direction: row; flex-wrap: wrap; justify-content: flex-start; width: 100%; padding-left: 44px; box-sizing: border-box; }
  .v3eside .v3chip { white-space: normal; text-align: left; }
  .v3plan th .long { display: none; }
  .v3plan th .short { display: inline; }
  .v3stunde.detail .v3ziel, .v3stunde.detail .v3hdr .v3btn, .v3stunde.detail .v3back, .v3stunde.detail .v3info.top { display: none; }
  .v3stunde.detail .v3hdr { margin-bottom: 10px; }
  .v3stunde.detail .v3hdr h1 { font-size: 19px; }
  .v3hdr h1 { font-size: 25px; }
  .v3lc { grid-template-columns: 1fr; }
  .v3lc-right { grid-row: auto; grid-column: 1; flex-direction: row; align-items: center; justify-content: space-between; }
  .v3chips { max-width: 40%; }
  .v3tabbar { display: flex; position: fixed; left: 0; right: 0; bottom: 0; height: calc(58px + env(safe-area-inset-bottom)); padding: 6px 6px calc(4px + env(safe-area-inset-bottom)); justify-content: space-around; background: color-mix(in srgb, var(--v3-ground) 86%, transparent); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border-top: 1px solid var(--v3-line); z-index: 40; }
  .v3tabbar .v3nav { flex-direction: column; gap: 2px; font-size: 10.5px; padding: 4px 8px; min-width: 64px; min-height: 44px; border-radius: 10px; }
  .v3tabbar .v3nav svg { width: 24px; height: 24px; }
  .v3tabbar .v3nav.on { background: none; box-shadow: none; color: var(--v3-accent); }
  .qadd { bottom: calc(72px + env(safe-area-inset-bottom)); }
  .v3dock { margin: 18px -16px -150px; padding: 10px 16px calc(66px + env(safe-area-inset-bottom)); }
  .v3fill { display: none; }
  .v3dock .v3btn { flex: 1; }
  .v3cal { grid-template-columns: 44px repeat(var(--cols, 5), minmax(120px, 1fr)); }
  .v3daytasks, .v3aufs { grid-template-columns: repeat(var(--cols, 5), minmax(120px, 1fr)); }
}

/* ---- v3.2 (05.09.2026): Home nur Stundenplan · Vorbereitung als Kachel · Phasen-Blöcke ---- */
.v3slot { position: relative; }
.v3dot { position: absolute; top: 6px; right: 7px; width: 8px; height: 8px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 2px var(--fc); }
.v3plancard.wide .v3slot { padding-right: 20px; }
.v3prepcard h4 { display: flex; align-items: center; gap: 8px; }
.v3prepcard.open { border-left: 5px solid var(--fc); }
.v3info.top { margin: 0 0 16px; grid-template-columns: minmax(0, 1fr); }
.v3info.top .v3prepcard { padding: 10px 16px 6px; }
.v3info.top .v3prepcard h4 { margin-bottom: 2px; }
.v3info.top .v3task { padding: 6px 4px; min-height: 40px; }
.v3prepcard .v3task { flex-wrap: nowrap; align-items: center; }
.v3prepcard .v3txt { flex: 1 1 0; }
.v3prepcard .v3chip { cursor: pointer; flex: none; }
.v3prepcard .v3blocks { margin-top: 10px; }
.v3chip.lesson { color: var(--fc); background: color-mix(in srgb, var(--fc) 14%, transparent); cursor: pointer; }
/* Blöcke */
.v3blocks { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; max-width: 76ch; }
.v3blk { border-radius: 12px; padding: 12px 14px; font-size: 15px; line-height: 1.5; background: var(--v3-card2); color: var(--v3-ink); }
.v3blk .v3bh { font-size: 10.5px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--v3-ink3); margin-bottom: 6px; display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.v3blk .v3bh span { font-weight: 600; letter-spacing: 0; text-transform: none; font-size: 12px; }
.v3blk .v3bl { white-space: pre-wrap; overflow-wrap: anywhere; }
.v3blk .v3bl.sprech { font-style: italic; color: var(--v3-ink2); padding-left: 10px; border-left: 3px solid var(--v3-line2); margin: 2px 0; }
.v3blk .v3bgap { height: 8px; }
.v3blk.plain { background: transparent; padding: 0 2px; }
.v3blk.tafel { background: var(--v3-tafel); color: var(--v3-tafelink); font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace; font-size: 14.5px; }
.v3blk.tafel .v3bh { color: var(--v3-tafelhead); }
.v3blk.tafel .v3bl.sprech { color: var(--v3-tafelink); border-left-color: var(--v3-tafelhead); font-style: normal; }
.v3blk.heft { background: repeating-linear-gradient(transparent 0 26px, color-mix(in srgb, var(--v3-accent) 22%, transparent) 26px 27px), var(--v3-card); border: 1px solid var(--v3-line); line-height: 27px; font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace; font-size: 14.5px; padding-top: 8px; padding-bottom: 8px; }
.v3blk.heft .v3bh { line-height: 27px; margin-bottom: 0; color: var(--v3-accent); }
.v3blk.loesung { background: color-mix(in srgb, var(--v3-ok) 9%, var(--v3-card)); border: 1px solid color-mix(in srgb, var(--v3-ok) 30%, transparent); }
.v3blk.loesung .v3bh { color: var(--v3-ok); }
.v3blk.ansage { background: transparent; border: 1.5px dashed var(--v3-line2); }
.v3blk.ansage .v3bl { font-style: italic; color: var(--v3-ink); }
.v3blk.ansage .v3bl.sprech { border: 0; padding-left: 0; font-style: italic; }
.v3blk.warn { background: color-mix(in srgb, var(--v3-warn) 12%, var(--v3-card)); border: 1px solid color-mix(in srgb, var(--v3-warn) 35%, transparent); }
.v3blk.warn .v3bh { color: var(--v3-warn); }
.v3blk.note .v3bh { color: var(--fc, var(--v3-ink3)); }
.v3bt { border-collapse: collapse; width: 100%; margin: 2px 0 4px; font-variant-numeric: tabular-nums; }
.v3bt td { padding: 5px 10px 5px 0; border-bottom: 1px solid color-mix(in srgb, currentColor 14%, transparent); vertical-align: top; }
.v3bt td.last { font-weight: 700; white-space: nowrap; }
.v3bt tr:last-child td { border-bottom: 0; }
.v3blk.tafel .v3bt td { border-bottom-color: rgba(255,255,255,.14); }
.v3blk.tafel .v3bt td.last { color: #fff; }
.v3vorher .v3blk { font-size: 14px; }
@media (max-width: 743px) {
  .v3blocks { max-width: none; }
  .v3blk { padding: 10px 12px; font-size: 14.5px; }
  .v3blk.tafel, .v3blk.heft { font-size: 13.5px; }
  .v3plancard.wide .v3slot { padding-right: 14px; }
  .v3dot { top: 4px; right: 4px; width: 7px; height: 7px; }
}

/* ---- v3.3 (05.09.2026 abends): Termine auf Home · Stundenplan ohne Aufsichtszeilen/Legende · Freitag = IQSH ---- */
.v3aufsnote { font-size: 12px; color: var(--v3-ink3); margin-top: 8px; padding-left: 2px; }
.v3plan td.iqsh { vertical-align: top; padding-top: 3px; }
.v3slot.ganz { display: flex; flex-direction: column; justify-content: flex-start; height: 100%; min-height: 100%; background: color-mix(in srgb, var(--v3-orga) 16%, transparent); color: var(--v3-orga); cursor: default; }
.v3plancard.wide .v3slot.ganz { min-height: 100%; }
.v3slot.ganz small { opacity: .8; }
.v3termine { margin-top: 16px; padding: 12px 16px 12px; }
.v3termine .v3sect { margin: 0 0 4px; }
.v3termine .v3termin { padding: 9px 0; gap: 12px; }
.v3termine .v3tt { flex: 1; font-weight: 600; font-size: 14.5px; min-width: 0; }
.v3termine .v3tt small { display: block; font-weight: 500; color: var(--v3-ink3); font-size: 12px; }
.v3termine .v3chip { font-variant-numeric: tabular-nums; min-width: 88px; justify-content: center; }
.v3terminadd { margin: 10px 0 0; padding-top: 10px; border-top: 1px solid var(--v3-line); }
.v3terminadd .v3date { margin-top: 0; min-height: 44px; }
.v3terminadd input:not(.v3date) { flex: 1 1 200px; }
@media (max-width: 743px) {
  .v3termine .v3chip { min-width: 0; }
  .v3plancard.wide .v3slot.ganz small { display: block; font-size: 9.5px; }
}
