:root{
  --fg:#e8eaed;
  --ring-size:62vmin;
  --photo-size:22vmin;
}

/* Grundlayout */
html,body{height:100%;margin:0;overflow:hidden;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--fg)}
body{display:grid;place-items:center;position:relative;transition:background .4s ease}

/* Dynamischer Hintergrund: nur Pseudo-Element bewegt sich */
body::before{
  content:"";
  position:fixed; inset:-6%; z-index:-1;
  background:
    radial-gradient(1200px 800px at 20% 20%, #0d1426, transparent 60%),
    conic-gradient(from 0deg at 50% 50%, #0a1222, #12243d, #0d1426, #0a1222);
  animation:bgDrift 60s linear infinite;
  filter:saturate(1.05);
}
@keyframes bgDrift{
  0%{ transform:translate3d(0,0,0); }
  100%{ transform:translate3d(6%,-4%,0); }
}

/* Seiten-spezifische Varianten */
body[data-page="quiz"]::before{
  background: conic-gradient(from 0deg at 50% 50%, #0b1224, #13243e, #0e1830, #0b1224);
  animation: bgHue 40s linear infinite; /* sanfter Farbwechsel */
}
@keyframes bgHue{
  0%{ filter:hue-rotate(0deg); }
  100%{ filter:hue-rotate(360deg); }
}

body[data-page="todo"]::before{
  background:
    radial-gradient(800px 600px at 80% 20%, #0e1b2e, transparent 60%),
    linear-gradient(135deg,#0a1324,#121b2e 60%,#0a1324);
  animation: bgDrift 70s linear infinite;
}

body[data-page="sudoku"]::before{
  background:
    radial-gradient(900px 700px at 70% 20%, #101b2e, transparent 60%),
    conic-gradient(from 90deg at 50% 50%, #0a1324, #152640, #0b1528, #0a1324);
  animation: bgDrift 65s linear infinite;
}

body[data-page="bier"]::before{
  background:
    radial-gradient(840px 640px at 72% 18%, rgba(255,196,86,.4), transparent 62%),
    linear-gradient(135deg,#0f172a 20%,#111827 60%,#0b1221);
  animation: bgDrift 70s linear infinite;
}

/* STARTSEITE – Ring + Previews */
.stage{position:relative;width:100vw;height:100vh;perspective:1200px;perspective-origin:50% 50%}
.scene{position:absolute;inset:0;display:grid;place-items:center;z-index:10}
.ring-wrapper{position:relative;transform-style:preserve-3d}
.ring{transform-style:preserve-3d}
.photo{
  position:absolute;width:var(--photo-size);height:var(--photo-size);
  border-radius:14px;background:#333 center/cover no-repeat;
  box-shadow:0 10px 30px rgba(0,0,0,.45);cursor:pointer
}

.preview{position:absolute;top:0;bottom:0;width:50%;pointer-events:none;opacity:0;transition:opacity .25s ease;z-index:3;transform-style:preserve-3d}
.preview.show{opacity:1}
.preview.left{left:0;background:linear-gradient(90deg,rgba(0,0,0,.55),rgba(0,0,0,0))}
.preview.right{right:0;background:linear-gradient(270deg,rgba(0,0,0,.55),rgba(0,0,0,0))}
.preview .img{
  position:absolute;top:50%;transform-style:preserve-3d;
  height:min(84vh,900px);width:min(40vw,700px);background:center/cover no-repeat;
  border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.06)
}
.preview.left .img{left:4vw;transform:translateY(-50%) rotateY(28deg) rotateX(2deg) translateZ(-240px) scale(0.96)}
.preview.right .img{right:4vw;transform:translateY(-50%) rotateY(-28deg) rotateX(2deg) translateZ(-240px) scale(0.96)}

.menu{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:10px;z-index:20}
.btn{padding:10px 16px;border:0;border-radius:12px;background:#1f2937;color:var(--fg);cursor:pointer;text-decoration:none}
.btn:hover{background:#2b3444}

/* QUIZ */
.shell{width:min(960px,92vw);background:#0f141c;border:1px solid #223042;border-radius:16px;box-shadow:0 30px 120px rgba(0,0,0,.5);padding:18px}
.head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.chip{border:1px solid #334155;background:#101720;border-radius:999px;padding:6px 10px;cursor:pointer;color:#e8eaed}
.chip.active{border-color:#06b6d4;background:rgba(6,182,212,.12)}
.question{font-size:18px;margin:6px 0 10px}
.answers{display:grid;gap:10px}
.answer{padding:12px 14px;border-radius:12px;border:1px solid #2a3648;background:#0e151d;cursor:pointer;color:#e8eaed}
.answer.correct{border-color:#10b981;background:rgba(16,185,129,.1)}
.answer.wrong{border-color:#ef4444;background:rgba(239,68,68,.08)}
.foot{display:flex;gap:8px;align-items:center;margin-top:10px}
.muted{color:#a3a9b5}

/* Aktives Quiz – dezent andere BG-Töne */
body[data-quiz="Eric Clapton"]::before{
  background: radial-gradient(circle at 50% 50%, #1d1414, #0b0b0b);
}
body[data-quiz="Depeche Mode"]::before{
  background: radial-gradient(circle at 50% 50%, #1a2028, #0d0f18);
}
body[data-quiz="Sting"]::before{
  background: radial-gradient(circle at 50% 50%, #182218, #0b120a);
}
body[data-quiz="The Cure"]::before{
  background: radial-gradient(circle at 50% 50%, #1c1420, #0c0810);
}
body[data-quiz="Jimi Hendrix"]::before{
  background: radial-gradient(circle at 50% 50%, #24160e, #0f0804);
}

/* TODO 1-3-5 */
header.nav{display:flex;gap:10px;align-items:center;justify-content:center;padding:14px 10px}
main.todo{padding:22px;display:grid;gap:16px;place-items:center}
.grid{width:min(1100px,94vw);display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.card{background:#0f141c;border:1px solid #223042;border-radius:16px;box-shadow:0 30px 120px rgba(0,0,0,.3);padding:18px}
.card h3{margin:0 0 6px}
.card small{opacity:.8}
.task-input{display:flex;gap:8px;margin-top:8px}
.task-input input{flex:1;border-radius:10px;border:1px solid #2a3140;background:#0f131a;padding:10px;color:var(--fg)}
.list{margin:10px 0 0;display:grid;gap:8px}
.task{display:flex;align-items:center;gap:10px;background:#0e141b;border:1px solid #243042;border-radius:12px;padding:10px}
.task.done{opacity:.6;text-decoration:line-through}
@media (max-width: 900px){ .grid{grid-template-columns:1fr} }

/* SUDOKU */
.sudoku-shell{width:min(960px,92vw);display:grid;gap:18px;background:#0f141c;border:1px solid #223042;border-radius:20px;box-shadow:0 30px 120px rgba(0,0,0,.45);padding:22px}
.sudoku-head{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.sudoku-head h1{margin:0;font-size:26px;letter-spacing:0.04em}
.sudoku-actions{display:flex;gap:8px}
.sudoku-spacer{flex:1}
.sudoku-grid{display:grid;grid-template-columns:repeat(9,1fr);grid-auto-rows:1fr;gap:0;border:1px solid #314055;border-radius:12px;overflow:hidden;background:#0a1018;width:min(540px,92vw);margin:0 auto}
.sudoku-grid.solved{box-shadow:0 0 0 2px rgba(16,185,129,.4)}
.sudoku-cell{aspect-ratio:1/1;min-height:48px;border:1px solid #1f2a3a;background:#0d151f;color:#e8eaed;font:600 20px/1 "Fira Sans",system-ui,sans-serif;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease,color .15s ease}
.sudoku-cell:nth-child(3n+1){border-left-width:2px}
.sudoku-cell:nth-child(-n+9){border-top-width:2px}
.sudoku-cell:nth-child(9n){border-right-width:2px}
.sudoku-cell:nth-child(n+73){border-bottom-width:2px}
.sudoku-cell[data-row="3"],.sudoku-cell[data-row="6"]{border-top-width:2px}
.sudoku-cell[data-col="3"],.sudoku-cell[data-col="6"]{border-left-width:2px}
.sudoku-cell:focus{outline:none}
.sudoku-cell.active{background:#153047;border-color:#1f4c6b}
.sudoku-cell.locked{background:#131c2a;color:#8ba3c9;cursor:default}
.sudoku-cell.error{background:#3a1d1d;border-color:#c24040}
.sudoku-cell.mistake{animation:mistake 0.25s ease-in-out 2 alternate}
.sudoku-cell.hint{background:#1c3a52;color:#9dd7ff}
@keyframes mistake{0%{transform:translateX(0)}100%{transform:translateX(3px)}}
.sudoku-pad{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:10px}
.sudoku-pad button{padding:12px;border-radius:12px;border:1px solid #29384a;background:#121a27;color:#e8eaed;font-size:16px;cursor:pointer;transition:background .15s ease,border .15s ease}
.sudoku-pad button:hover{background:#1d293a;border-color:#2f4258}
.sudoku-pad button[data-val="clear"]{grid-column:span 2;justify-self:center;width:100%}

/* CELEBRATION */
.celebration-overlay{position:fixed;inset:0;pointer-events:none;z-index:5000;opacity:0;transition:opacity .4s ease;overflow:hidden}
.celebration-overlay.show{opacity:1}
.celebration-overlay.fade{opacity:0}
.celebration-overlay.reduced{display:flex;align-items:center;justify-content:center;background:rgba(5,9,18,.65);backdrop-filter:blur(2px)}
.celebration-message{padding:24px 32px;border-radius:18px;background:rgba(15,20,28,.92);border:1px solid rgba(60,82,110,.6);box-shadow:0 18px 60px rgba(0,0,0,.55);font-size:1.3rem;text-align:center;letter-spacing:.04em;color:#e8eaed}
.celebration-message div{margin-top:8px;font-size:1rem;font-weight:500;opacity:.85}
.firework{position:absolute;width:6px;height:6px;border-radius:50%;background:hsl(var(--h,210),88%,68%);opacity:0;animation:fireworkBoom 1.4s ease-out forwards}
.firework::before,.firework::after{content:"";position:absolute;inset:0;border-radius:inherit;background:inherit;box-shadow:0 -24px 0 2px currentColor,0 24px 0 2px currentColor,24px 0 2px currentColor,-24px 0 2px currentColor,17px 17px 0 2px currentColor,-17px 17px 0 2px currentColor,17px -17px 0 2px currentColor,-17px -17px 0 2px currentColor;opacity:.9}
.firework::after{transform:rotate(45deg)}
@keyframes fireworkBoom{
  0%{opacity:0;transform:scale(0.2)}
  30%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(1.6)}
}
.spark{position:absolute;bottom:-30px;width:4px;height:4px;border-radius:50%;background:hsl(var(--spark-h,220),90%,72%);opacity:0;animation:sparkRise 2.2s ease-out forwards}
.spark::before{content:"";position:absolute;left:-1px;bottom:6px;width:6px;height:50px;background:linear-gradient(180deg,rgba(255,255,255,.75),transparent);border-radius:50% 50% 0 0;opacity:.7}
@keyframes sparkRise{
  0%{opacity:0;transform:translate3d(var(--spark-x,0),4vh,0) scale(.6)}
  15%{opacity:1}
  60%{opacity:.9}
  100%{opacity:0;transform:translate3d(calc(var(--spark-x,0) + 1vw),-68vh,0) scale(1.4)}
}
.plane{position:absolute;top:var(--plane-top,22%);left:0;display:flex;align-items:center;gap:34px;flex-direction:row-reverse;transform:translate3d(-140vw,0,0);animation:planeFlight var(--plane-duration,12s) ease-in-out forwards;filter:drop-shadow(0 18px 30px rgba(0,0,0,.45));pointer-events:none;will-change:transform}
.plane-body{width:114px;height:40px;position:relative;background:linear-gradient(90deg,#60a5fa,#1d4ed8);border-radius:26px 78px 78px 26px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.18),0 16px 26px rgba(0,0,0,.35)}
.plane-tail{position:absolute;left:-34px;top:6px;width:38px;height:26px;background:linear-gradient(120deg,#3b82f6,#bfdbfe);border-radius:18px 8px 52px 18px;transform:skewX(-12deg);box-shadow:0 4px 8px rgba(0,0,0,.28);z-index:-1}
.plane-wing{position:absolute;display:block;width:78px;height:20px;background:linear-gradient(90deg,rgba(255,255,255,.95),rgba(59,130,246,.85));left:22px;border-radius:20px;box-shadow:0 8px 14px rgba(0,0,0,.25)}
.plane-wing-top{top:-20px;transform:skewX(-8deg)}
.plane-wing-bottom{bottom:-20px;transform:skewX(-6deg)}
.plane-cockpit{position:absolute;right:-34px;top:-4px;width:52px;height:36px;background:linear-gradient(180deg,#e0f2fe 10%,#38bdf8);border-radius:70% 70% 65% 55%;border:2px solid rgba(255,255,255,.7);box-shadow:inset -5px -7px 0 rgba(0,0,0,.18),0 6px 10px rgba(0,0,0,.18);display:flex;align-items:flex-end;justify-content:center;overflow:hidden}
.plane-pilot{position:relative;width:30px;height:30px;margin-bottom:-2px;background:linear-gradient(180deg,#f9c74f,#f59e0b);border-radius:50%;border:2px solid rgba(0,0,0,.15);box-shadow:0 2px 5px rgba(0,0,0,.25)}
.plane-pilot::before,.plane-pilot::after{content:"";position:absolute;top:-10px;width:14px;height:14px;background:linear-gradient(180deg,#f9c74f,#f59e0b);border-radius:50% 50% 0 0;border:2px solid rgba(0,0,0,.15);border-bottom:0}
.plane-pilot::before{left:0;transform:rotate(-18deg)}
.plane-pilot::after{right:0;transform:rotate(18deg)}
.plane-pilot-face{position:absolute;left:50%;top:54%;width:20px;height:12px;transform:translate(-50%,-50%);border-radius:50%;background:rgba(0,0,0,.08)}
.plane-pilot-face::before{content:"";position:absolute;left:3px;top:0;width:6px;height:6px;border-radius:50%;background:#1f2937;box-shadow:8px 0 0 0 #1f2937}
.plane-pilot-face::after{content:"";position:absolute;left:50%;top:6px;width:6px;height:4px;border-radius:50% 50% 60% 60%;background:#ec4899;transform:translateX(-50%);box-shadow:0 1px 0 rgba(255,255,255,.4)}
.plane-window-strip{position:absolute;left:40px;top:12px;width:64px;height:20px;border-radius:18px;background:rgba(255,255,255,.24);border:1px solid rgba(255,255,255,.5);overflow:hidden;box-shadow:inset 0 2px 4px rgba(0,0,0,.12)}
.plane-window-strip::before{content:"";position:absolute;inset:2px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.92) 0 12px,rgba(148,197,255,.55) 12px 20px);border-radius:inherit;opacity:.95}
.plane-prop{position:absolute;left:-34px;top:50%;width:36px;height:36px;margin-top:-18px;border-radius:50%;border:4px solid rgba(255,255,255,.78);box-sizing:border-box;background:linear-gradient(135deg,rgba(255,255,255,.3),rgba(255,255,255,.6));animation:propSpin .45s linear infinite}
.plane-prop::before,.plane-prop::after{content:"";position:absolute;left:50%;top:50%;width:32px;height:6px;margin-left:-16px;margin-top:-3px;background:rgba(255,255,255,.88);border-radius:4px;box-shadow:0 0 6px rgba(255,255,255,.45)}
.plane-prop::after{transform:rotate(90deg)}
@keyframes propSpin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
.plane-banner{position:relative;display:flex;align-items:center;justify-content:center;min-width:220px;padding:14px 32px;border-radius:16px;background:rgba(15,20,28,.9);border:1px solid rgba(51,72,99,.78);color:#e8eaed;font-size:17px;letter-spacing:.04em;animation:bannerWave 2.8s ease-in-out infinite alternate;box-shadow:0 16px 40px rgba(0,0,0,.35)}
.plane-banner::before{content:"";position:absolute;right:-26px;width:0;height:0;border-top:18px solid transparent;border-bottom:18px solid transparent;border-left:26px solid rgba(15,20,28,.9)}
.plane-banner::after{content:"";position:absolute;left:0;right:0;top:100%;height:12px;background:linear-gradient(90deg,rgba(255,255,255,.08) 0 12px,transparent 12px 24px);opacity:.4;mix-blend-mode:screen}
.plane-banner span{display:block;animation:bannerText 3.4s ease-in-out infinite alternate}
@keyframes bannerWave{
  0%{transform:rotate(-6deg)}
  100%{transform:rotate(5deg)}
}
@keyframes bannerText{
  0%{transform:translateY(-3px)}
  100%{transform:translateY(3px)}
}
@keyframes planeFlight{
  0%{transform:translate3d(-140vw,-10px,0) rotate(-4deg)}
  25%{transform:translate3d(-60vw,6px,0) rotate(3deg)}
  50%{transform:translate3d(10vw,-4px,0) rotate(-1deg)}
  80%{transform:translate3d(90vw,4px,0) rotate(1deg)}
  100%{transform:translate3d(150vw,-3px,0) rotate(0deg)}
}
.plane-rope{position:relative;width:84px;height:6px;border-radius:12px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.75) 0 12px,rgba(255,255,255,.32) 12px 18px);box-shadow:0 6px 10px rgba(0,0,0,.2);transform:skewY(-4deg)}
.plane-rope::before{content:"";position:absolute;right:-10px;top:-6px;width:18px;height:18px;border-radius:50%;border:3px solid rgba(255,255,255,.75);background:radial-gradient(circle at 40% 40%,rgba(255,255,255,.85),rgba(15,20,28,.9));box-shadow:0 4px 8px rgba(0,0,0,.28)}
.plane-rope::after{content:"";position:absolute;left:-16px;top:50%;width:16px;height:6px;margin-top:-3px;border-radius:6px;background:rgba(255,255,255,.6);box-shadow:0 2px 4px rgba(0,0,0,.18)}
.plane-secondary .plane-body{background:linear-gradient(90deg,#fbbf24,#f97316)}
.plane-secondary .plane-tail{background:linear-gradient(120deg,#fb923c,#fde68a)}
.plane-secondary .plane-wing{background:linear-gradient(90deg,rgba(255,255,255,.92),rgba(251,191,36,.9))}
.plane-secondary .plane-cockpit{background:linear-gradient(180deg,#fff7ed,#fb923c);border-color:rgba(255,255,255,.7)}
.plane-secondary .plane-window-strip::before{background:repeating-linear-gradient(90deg,rgba(255,255,255,.92) 0 12px,rgba(255,194,115,.65) 12px 20px)}
.plane-secondary .plane-prop{border-color:rgba(255,247,235,.85);background:linear-gradient(135deg,rgba(255,255,255,.4),rgba(255,255,255,.7))}
.plane-secondary .plane-banner{background:rgba(38,28,18,.9);border-color:rgba(96,72,44,.7)}
.plane-secondary .plane-banner::before{border-left-color:rgba(38,28,18,.9)}
.plane-secondary .plane-banner span{animation-duration:3.8s}
.plane-secondary .plane-pilot{background:linear-gradient(180deg,#fda4af,#f973a2);border-color:rgba(0,0,0,.12)}
.plane-secondary .plane-pilot::before,.plane-secondary .plane-pilot::after{background:linear-gradient(180deg,#fda4af,#f973a2)}
.plane-secondary .plane-rope{background:repeating-linear-gradient(90deg,rgba(255,223,186,.8) 0 12px,rgba(255,195,134,.45) 12px 18px)}
.plane-main .plane-banner span{animation-duration:3.3s}
@media (max-width: 900px){
  .plane{gap:20px}
  .plane-banner{min-width:190px;font-size:15px;padding:12px 24px}
}
@media (max-width: 700px){
  .plane{top:calc(var(--plane-top,22%) + 6%)}
  .plane-banner{min-width:160px;font-size:14px;padding:10px 20px}
}
@media (prefers-reduced-motion: reduce){
  .celebration-overlay,
  .celebration-overlay *{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
  }
}

/* GPT LANDING */
.gpt-shell{width:min(920px,94vw);margin:40px auto;background:rgba(10,15,24,.88);border:1px solid rgba(60,82,110,.6);border-radius:24px;box-shadow:0 40px 140px rgba(0,0,0,.45);padding:28px 32px;display:grid;gap:26px}
.gpt-head h1{margin:8px 0 10px;font-size:36px;letter-spacing:.04em}
.gpt-head p{margin:0;color:#cbd5f5;max-width:640px}
.gpt-badge{display:inline-block;padding:6px 12px;border-radius:999px;background:rgba(34,197,94,.18);color:#34d399;border:1px solid rgba(52,211,153,.35);font-size:14px;letter-spacing:.12em;text-transform:uppercase}
.gpt-preview{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.gpt-preview-card{background:rgba(15,22,34,.82);border:1px solid rgba(73,99,128,.55);border-radius:18px;padding:22px 24px;box-shadow:0 22px 60px rgba(0,0,0,.3);display:grid;gap:12px}
.gpt-preview-card h2{margin:0;font-size:22px}
.gpt-preview-card p{margin:0;color:#d1d6ed}
.gpt-preview-card ul{margin:0;padding-left:20px;display:grid;gap:8px;color:#c6cde6}
.gpt-preview-card li{line-height:1.5}
.gpt-icon{font-size:42px;line-height:1}
.gpt-foot{display:flex;justify-content:flex-end}
.gpt-foot .btn{min-width:160px;text-align:center}
.btn.primary{background:#2563eb;color:#e8eaed;border:1px solid transparent}
.btn.primary:hover{background:#1d4ed8}
@media (max-width:600px){
  .gpt-shell{padding:22px}
  .gpt-head h1{font-size:30px}
}
