/* WortWende – Vokabelkarten */
:root{
 --bg:#0f2554; --bg2:#0a1a3e; --ink:#0b1a3f; --card:#fffdf8; --cream:#fbf1e2;
 --or:#ff8a1f; --or2:#ffb066; --ok:#1fae5b; --bad:#e23b3b; --mute:#93a3c4; --line:rgba(255,255,255,.12);
 --de1:#111; --de2:#dd0000; --de3:#ffce00; --en1:#d81e2c; --en2:#ffffff; --en3:#1f4aa8;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{background:radial-gradient(120% 80% at 50% 30%,#14306a 0%,var(--bg) 55%,var(--bg2) 100%) fixed;background-color:var(--bg);
 color:#fff;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:16px;line-height:1.4;
 overscroll-behavior:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
a{color:var(--or2)}
.hide{display:none!important}
#app{max-width:640px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;
 padding:max(10px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}

/* Kopfzeile */
.top{display:flex;align-items:center;gap:10px;min-height:52px}
.top .logo{height:40px;width:auto;border-radius:8px}
.top h1{font-size:22px;font-weight:800;letter-spacing:.01em;flex:1}
.top h1 span{color:var(--or)}
.ibtn{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:rgba(255,255,255,.08);border:1px solid var(--line)}
.ibtn:active{transform:scale(.95)}
.ibtn svg{width:24px;height:24px}

/* Zähler und Richtungsschalter */
.bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:6px 0 10px}
.count{font-size:15px;color:#dfe6f7;display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.count b{font-size:18px}
.count .r b{color:#6be39a}.count .f b{color:#ff8a8a}.count .s{color:var(--mute)}
.dir{display:flex;flex-direction:column;gap:4px;margin-left:auto}
.dir button{display:flex;align-items:center;gap:6px;padding:5px 10px;border-radius:10px;font-weight:800;font-size:14px;letter-spacing:.04em;
 background:rgba(255,255,255,.07);border:1px solid var(--line);color:#c9d3ea}
.dir button.on{background:var(--or);border-color:var(--or);color:#2a1300}
.dir button svg{width:22px;height:14px}
.mixtag{font-size:12px;color:var(--or2);text-align:right;margin-top:2px}

/* Karte */
.stage{position:relative;perspective:1400px;margin:6px 0 4px}
.card{position:relative;width:100%;height:clamp(230px,40vh,380px);transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.card.leave{transform:translateX(-115%) rotate(-10deg);opacity:0;transition:transform .26s ease-in,opacity .26s}
.card.enter{transform:translateX(115%) rotate(10deg);opacity:0;transition:none}
.inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.3,.9,.3,1)}
.card.flip .inner{transform:rotateY(180deg)}
.face{position:absolute;inset:0;border-radius:22px;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;
 background:var(--card);color:var(--ink);box-shadow:0 18px 40px rgba(0,0,0,.35),0 2px 0 rgba(255,255,255,.6) inset;
 display:flex;flex-direction:column;align-items:center;justify-content:center;padding:26px 22px 22px;text-align:center}
.face.back{transform:rotateY(180deg)}
.face.de{background:var(--cream)}
.stripe{position:absolute;left:-30px;top:-30px;width:150px;height:150px;transform:rotate(-45deg);transform-origin:center;pointer-events:none}
.stripe i{position:absolute;left:0;right:0;height:13px}
.de .stripe i:nth-child(1){top:72px;background:var(--de1)}.de .stripe i:nth-child(2){top:85px;background:var(--de2)}.de .stripe i:nth-child(3){top:98px;background:var(--de3)}
.en .stripe i:nth-child(1){top:72px;background:var(--en1)}.en .stripe i:nth-child(2){top:85px;background:#fff}.en .stripe i:nth-child(3){top:98px;background:var(--en3)}
.lang{position:absolute;top:14px;right:18px;font-weight:900;font-size:15px;letter-spacing:.12em;color:#55617d}
.word{font-size:clamp(28px,8.5vw,50px);font-weight:900;line-height:1.12;word-break:break-word;hyphens:auto}
.alt{font-size:clamp(17px,4.6vw,24px);font-weight:700;color:#4b5876;margin-top:8px}
.say{position:absolute;bottom:14px;right:14px;width:46px;height:46px;border-radius:50%;background:rgba(15,37,84,.08);display:grid;place-items:center;color:var(--ink)}
.say svg{width:24px;height:24px}
.verdict{font-weight:900;font-size:20px;margin-bottom:8px;letter-spacing:.02em}
.verdict.ok{color:var(--ok)}.verdict.bad{color:var(--bad)}
.yours{margin-top:10px;font-size:16px;color:#69738a}
.yours s{color:var(--bad)}
.q{font-size:15px;color:#6b7690;margin-bottom:6px}

/* Countdown */
.clock{position:absolute;left:50%;top:-6px;transform:translate(-50%,-50%);width:76px;height:76px;border-radius:50%;z-index:3;
 background:var(--bg);border:4px solid var(--or);display:grid;place-items:center;font-size:44px;font-weight:900;color:#fff;
 box-shadow:0 6px 18px rgba(0,0,0,.4)}
.clock.low{border-color:var(--bad);color:#ffd2d2;animation:pulse .5s infinite alternate}
@keyframes pulse{to{transform:translate(-50%,-50%) scale(1.08)}}

/* Eingabe */
.answer{display:flex;gap:8px;margin-top:14px;align-items:stretch}
.answer input{flex:1;min-width:0;font-size:22px;padding:14px 16px;border-radius:16px;border:2px solid transparent;background:#fff;color:var(--ink);outline:none}
.answer input:focus{border-color:var(--or)}
.btn{padding:0 18px;border-radius:16px;background:var(--or);color:#2a1300;font-weight:900;font-size:18px;min-height:56px}
.btn:active{transform:scale(.97)}
.btn.ghost{background:rgba(255,255,255,.1);color:#fff;border:1px solid var(--line)}
.btn.wide{width:100%;margin-top:14px;font-size:20px}
.mic{width:60px;border-radius:16px;background:#1d3f8f;border:2px solid #3a63c4;display:grid;place-items:center;user-select:none;-webkit-user-select:none;touch-action:none;-webkit-touch-callout:none}
.mic svg{width:28px;height:28px;pointer-events:none}
.mic.rec{background:var(--bad);border-color:#ff9a9a;animation:rec 1s infinite}
@keyframes rec{50%{box-shadow:0 0 0 10px rgba(226,59,59,.25)}}
.hint{font-size:14px;color:var(--mute);margin-top:8px;min-height:20px;text-align:center}

/* Werbung für das Spiel */
.promo{margin-top:auto;padding-top:18px}
.promo a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:16px;background:linear-gradient(90deg,rgba(182,240,0,.14),rgba(255,255,255,.05));
 border:1px solid rgba(182,240,0,.35);color:#fff;text-decoration:none}
.promo img{width:48px;height:48px;border-radius:12px}
.promo b{display:block;color:#c9f55a}
.promo small{color:#cfd8ea}
.promo .go{margin-left:auto;background:#B6F000;color:#0b0f02;font-weight:900;border-radius:99px;padding:8px 14px;white-space:nowrap}
.foot{display:flex;justify-content:center;gap:16px;font-size:13px;color:var(--mute);padding:12px 0 2px}
.foot a,.foot button{color:var(--mute);text-decoration:underline;font-size:13px}

/* Seiten (Einstellungen, Wörter) */
.page{position:fixed;inset:0;z-index:20;background:var(--bg);overflow:auto;-webkit-overflow-scrolling:touch;
 padding:max(10px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}
.page .wrap{max-width:640px;margin:0 auto}
.page h2{font-size:24px;font-weight:900;flex:1}
.sec{background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:18px;padding:14px;margin-top:12px}
.sec h3{font-size:16px;margin-bottom:4px}
.sec p{font-size:14px;color:#c4cee6;margin-bottom:10px}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.08);border:1px solid var(--line);font-weight:700;min-width:48px}
.seg button.on{background:var(--or);border-color:var(--or);color:#2a1300}
.tg{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}
.tg+.tg{border-top:1px solid var(--line)}
.tg span small{display:block;color:var(--mute);font-size:13px}
.sw{width:56px;height:32px;border-radius:99px;background:#3a4a6e;position:relative;flex:none;transition:background .2s}
.sw::after{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:#fff;transition:left .2s}
.sw.on{background:var(--ok)}.sw.on::after{left:28px}
.links button,.links a{display:block;width:100%;text-align:left;padding:12px 4px;font-weight:700;color:#fff;text-decoration:none}
.links button+button,.links a{border-top:1px solid var(--line)}

/* Wörter verwalten */
.field{display:block;margin-top:10px}
.field span{display:block;font-size:13px;color:var(--mute);margin-bottom:4px}
.field input{width:100%;font-size:18px;padding:12px 14px;border-radius:12px;border:2px solid transparent;background:#fff;color:var(--ink);outline:none}
.field input:focus{border-color:var(--or)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:420px){.grid2{grid-template-columns:1fr}}
.msg{margin-top:10px;font-weight:700;min-height:20px}
.msg.ok{color:#6be39a}.msg.bad{color:#ff9a9a}
.wl{margin-top:10px}
.wl .row{display:flex;align-items:center;gap:8px;padding:9px 4px;border-top:1px solid var(--line)}
.wl .row div{flex:1;min-width:0}
.wl .row b{display:block;overflow-wrap:anywhere}
.wl .row small{color:#c4cee6;overflow-wrap:anywhere}
.wl .row button{width:40px;height:40px;border-radius:10px;background:rgba(255,255,255,.08)}

/* Overlays */
.ov{position:fixed;inset:0;z-index:40;background:rgba(4,10,26,.78);display:grid;place-items:center;padding:20px}
.box{background:var(--card);color:var(--ink);border-radius:22px;max-width:420px;width:100%;padding:24px;text-align:center;box-shadow:0 20px 50px rgba(0,0,0,.5)}
.box h3{font-size:24px;font-weight:900;margin-bottom:8px}
.box p{color:#43506d;margin-bottom:14px}
.box img{width:84px;height:84px;border-radius:18px;margin-bottom:10px}
.box .btn{width:100%;margin-top:8px}
.box .btn.ghost{color:var(--ink);background:#eef1f7;border:0}
#intro{position:fixed;inset:0;z-index:60;background:#06132f;display:flex;align-items:center;justify-content:center}
#intro video{width:100%;max-height:100%;object-fit:contain}
#intro .ibar{position:absolute;left:0;right:0;bottom:max(18px,env(safe-area-inset-bottom));display:flex;justify-content:center;gap:10px}
#fx{position:fixed;inset:0;pointer-events:none;z-index:30}
.stamp{position:fixed;left:50%;top:38%;z-index:31;pointer-events:none;font-weight:900;font-size:clamp(40px,12vw,72px);letter-spacing:.06em;
 padding:6px 18px;border:6px solid currentColor;border-radius:14px;transform:translate(-50%,-50%) rotate(-12deg);background:rgba(255,255,255,.85)}

/* kleine Karten-Effekte */
.card.shake .inner{animation:shake .45s}
@keyframes shake{20%{transform:rotateY(180deg) translateX(-14px)}40%{transform:rotateY(180deg) translateX(12px)}60%{transform:rotateY(180deg) translateX(-8px)}80%{transform:rotateY(180deg) translateX(5px)}}
.card.droop{animation:droop .7s}
@keyframes droop{30%{transform:translateY(16px) rotate(3deg)}60%{transform:translateY(6px) rotate(-1deg)}}
.card.glow .face.back{box-shadow:0 0 0 4px #ffd34d,0 0 40px 10px rgba(255,211,77,.7)}
.card.bounce{animation:bounce .55s}
@keyframes bounce{30%{transform:scale(1.06)}60%{transform:scale(.98)}}
.card.redglow .face.back{box-shadow:0 0 0 4px var(--bad),0 0 36px 8px rgba(226,59,59,.55)}
.flash{position:fixed;inset:0;z-index:29;pointer-events:none;animation:flash .5s forwards}
@keyframes flash{from{opacity:1}to{opacity:0}}

/* großer Bildschirm */
@media (min-width:700px){
 .card{height:340px}
 .word{font-size:54px}
}
