
:root{
    --bg:#050d1c;
    --panel:#091a34;
    --panel2:#0d2244;
    --line:rgba(255,255,255,.10);
    --text:#f6fbff;
    --muted:#8ea5c4;
    --cyan:#2bdcff;
    --yellow:#ffd447;
    --purple:#8d6cff;
    --green:#50e7a6;
    --red:#ff6a82;
    --shadow:0 24px 60px rgba(0,0,0,.28);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{
    min-height:100%;
    background:var(--bg);
    color:var(--text);
    font-family:'Nunito',sans-serif
}
body{
    background:
        radial-gradient(circle at 12% 16%,rgba(43,220,255,.12),transparent 28%),
        radial-gradient(circle at 90% 24%,rgba(141,108,255,.13),transparent 28%),
        radial-gradient(circle at 55% 95%,rgba(255,212,71,.08),transparent 30%),
        #050d1c;
    overflow-x:hidden;
}
button,input{font:inherit}
button{cursor:pointer}
a{text-decoration:none;color:inherit}

.app-shell{
    width:min(1420px,100%);
    margin:auto;
    padding:clamp(8px,1.2vw,16px);
}

.topbar{
    min-height:76px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    border:1px solid var(--line);
    border-radius:22px;
    padding:12px 16px;
    background:rgba(7,19,39,.78);
    backdrop-filter:blur(18px);
    box-shadow:var(--shadow)
}
.brand{
    display:flex;
    align-items:center;
    gap:12px;
    min-width:0;
}
.brand img{
    width:50px;
    height:50px;
    object-fit:contain;
    flex-shrink:0;
}
.brand small{
    display:block;
    color:#7890b1;
    font-size:.62rem;
    font-weight:900;
    letter-spacing:1.1px
}
.brand strong{
    display:block;
    font-family:'Fredoka';
    font-size:1.08rem;
    line-height:1.05;
}
.brand strong span{color:var(--yellow)}
.top-actions{
    display:flex;
    flex-wrap:wrap;
    justify-content:flex-end;
    gap:8px;
    align-items:center
}
.top-actions button,.top-actions a{
    min-height:42px;
    padding:0 14px;
    border-radius:13px;
    border:1px solid var(--line);
    background:#0b2143;
    color:white;
    font-weight:900;
    font-size:.78rem
}

.game-frame{
    margin-top:12px;
    border:1px solid var(--line);
    border-radius:28px;
    min-height:760px;
    overflow:hidden;
    background:
        linear-gradient(180deg,rgba(255,255,255,.025),transparent 20%),
        rgba(4,14,31,.74);
    box-shadow:0 30px 90px rgba(0,0,0,.32)
}
.screen{
    display:none;
    min-height:760px;
    padding:clamp(16px,2vw,28px)
}
.screen.active{display:block}

/* INÍCIO */
.screen-start{
    background:
        radial-gradient(circle at 70% 30%,rgba(82,74,255,.22),transparent 25%),
        radial-gradient(circle at 78% 70%,rgba(43,220,255,.17),transparent 26%),
        linear-gradient(135deg,#07162f,#061029 55%,#120c2e);
}
.start-hero{
    min-height:680px;
    display:grid;
    grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);
    align-items:center;
    gap:34px
}
.hero-copy{
    max-width:690px;
    padding-left:clamp(0px,2vw,32px)
}
.eyebrow{
    color:var(--cyan);
    font-size:.72rem;
    font-weight:1000;
    letter-spacing:1.8px
}
.hero-copy h1{
    font-family:'Fredoka';
    font-size:clamp(4rem,7vw,6.8rem);
    line-height:.84;
    letter-spacing:-3px;
    margin:10px 0 18px;
    text-shadow:0 15px 50px rgba(0,0,0,.38)
}
.hero-copy h1 span{
    color:var(--yellow);
    text-shadow:0 0 30px rgba(255,212,71,.18),0 15px 50px rgba(0,0,0,.38)
}
.hero-copy p{
    max-width:640px;
    color:#a9bad1;
    font-size:1rem;
    line-height:1.7
}
.field{
    display:block;
    max-width:520px;
    margin:22px 0
}
.field span{
    display:block;
    margin-bottom:7px;
    color:#8fa4c0;
    font-size:.65rem;
    font-weight:1000;
    letter-spacing:1px
}
.field input{
    width:100%;
    height:54px;
    padding:0 16px;
    border-radius:14px;
    border:1px solid var(--line);
    background:#081c3a;
    color:white;
    outline:none;
    font-weight:900
}
.field input:focus{
    border-color:var(--cyan);
    box-shadow:0 0 0 3px rgba(43,220,255,.08)
}
.difficulty-select{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:10px;
    max-width:760px
}
.difficulty{
    min-height:80px;
    padding:12px;
    border:1px solid var(--line);
    border-radius:16px;
    background:#081a36;
    color:white;
    text-align:left;
    transition:.2s
}
.difficulty:hover{transform:translateY(-2px)}
.difficulty b{
    display:block;
    font-family:'Fredoka';
    font-size:.92rem
}
.difficulty span{
    display:block;
    margin-top:4px;
    color:#7f96b5;
    font-size:.6rem;
    font-weight:900
}
.difficulty.active{
    border-color:var(--yellow);
    background:rgba(255,212,71,.1);
    transform:translateY(-2px)
}
.primary,.secondary{
    min-height:52px;
    padding:0 20px;
    border:none;
    border-radius:15px;
    font-weight:1000;
    letter-spacing:.2px
}
.primary{
    background:linear-gradient(135deg,#ffd447,#ffad2f);
    color:#101526;
    box-shadow:0 15px 35px rgba(255,177,47,.16)
}
.secondary{
    background:#0d2448;
    color:white;
    border:1px solid var(--line)
}
.hero-play{
    margin-top:18px;
    min-height:58px;
    padding:0 25px
}

.hero-board{
    position:relative;
    min-height:590px;
    display:grid;
    place-items:center
}
.memory-core{
    position:relative;
    width:255px;
    height:255px;
    border-radius:50%;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    background:radial-gradient(circle,#142f67,#07152f 70%);
    border:1px solid rgba(255,255,255,.14);
    box-shadow:0 0 90px rgba(95,87,255,.24),inset 0 0 50px rgba(43,220,255,.08)
}
.core-ring{
    position:absolute;
    border:2px solid rgba(106,104,255,.3);
    border-radius:50%;
    animation:spin 12s linear infinite
}
.r1{inset:-34px;border-style:dashed}
.r2{
    inset:-70px;
    border-color:rgba(43,220,255,.16);
    animation-direction:reverse;
    animation-duration:18s
}
.core-icon{
    font-size:5.3rem;
    filter:drop-shadow(0 0 20px rgba(43,220,255,.35))
}
.memory-core b{
    font-family:'Fredoka';
    font-size:1.3rem;
    margin-top:7px;
    color:var(--yellow)
}
.memory-core span{
    color:#8ea6c6;
    font-size:.75rem;
    font-weight:900
}
.floating-card{
    position:absolute;
    width:145px;
    height:180px;
    border-radius:22px;
    display:grid;
    place-items:center;
    background:linear-gradient(145deg,#132e5b,#09172f);
    border:1px solid rgba(255,255,255,.13);
    box-shadow:0 24px 55px rgba(0,0,0,.3),inset 0 0 35px rgba(255,255,255,.025);
    font-family:'Fredoka';
    font-size:1.35rem;
    color:white
}
.floating-card::before{
    content:"✦";
    position:absolute;
    top:12px;
    right:14px;
    color:var(--cyan);
    opacity:.75
}
.c1{left:4%;top:14%;transform:rotate(-11deg);animation:float1 4.2s ease-in-out infinite}
.c2{right:4%;top:12%;transform:rotate(10deg);animation:float2 4.8s ease-in-out infinite}
.c3{left:9%;bottom:10%;transform:rotate(8deg);animation:float2 5s ease-in-out infinite}
.c4{right:8%;bottom:8%;transform:rotate(-9deg);animation:float1 4.5s ease-in-out infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes float1{50%{translate:0 -14px;rotate:3deg}}
@keyframes float2{50%{translate:0 12px;rotate:-3deg}}

/* MAPA */
.screen-map{
    background:
        radial-gradient(circle at 10% 30%,rgba(44,211,151,.17),transparent 18%),
        radial-gradient(circle at 35% 72%,rgba(255,212,71,.12),transparent 18%),
        radial-gradient(circle at 68% 30%,rgba(142,108,255,.16),transparent 20%),
        radial-gradient(circle at 90% 74%,rgba(255,112,138,.13),transparent 18%),
        linear-gradient(180deg,#0b3156,#0b2839 43%,#0d2b27);
}
.map-head{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:20px;
    margin-bottom:16px
}
.map-head small{
    color:#91a9c3;
    font-size:.65rem;
    font-weight:1000;
    letter-spacing:1.5px
}
.map-head h2{
    font-family:'Fredoka';
    font-size:clamp(2rem,3.2vw,2.6rem);
    color:var(--yellow)
}
.map-head p{
    color:#9aafc9;
    font-weight:800
}
.map-stats{
    display:flex;
    gap:10px;
    flex-wrap:wrap
}
.map-stats span{
    padding:10px 15px;
    border-radius:15px;
    background:rgba(3,13,29,.5);
    border:1px solid var(--line);
    font-weight:1000
}
.world-map{
    position:relative;
    min-height:auto;
    margin-top:8px;
    padding:28px;
    border-radius:26px;
    border:1px solid rgba(255,255,255,.1);
    display:grid;
    grid-template-columns:repeat(5,minmax(150px,1fr));
    gap:18px;
    align-items:stretch;
    overflow:hidden;
    background:
        radial-gradient(circle,#fff 1px,transparent 1px) 0 0/54px 54px,
        linear-gradient(180deg,rgba(20,79,108,.65),rgba(10,47,47,.86));
}
.world-map::after{
    content:"";
    position:absolute;
    inset:auto 0 0 0;
    height:120px;
    pointer-events:none;
    background:linear-gradient(to top,rgba(4,26,23,.58),transparent)
}
.path{display:none}
.world-node{
    position:relative;
    left:auto;top:auto;right:auto;bottom:auto;
    width:100%;
    min-height:152px;
    padding:16px;
    border-radius:24px;
    border:2px solid rgba(255,255,255,.1);
    background:linear-gradient(180deg,#122e58,#091933);
    color:white;
    z-index:2;
    box-shadow:0 18px 40px rgba(0,0,0,.25);
    transition:.2s;
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    justify-content:flex-start;
    text-align:left
}
.world-node:hover:not(.locked){transform:translateY(-6px) scale(1.015)}
.world-node.active{
    border-color:var(--yellow);
    box-shadow:0 0 0 4px rgba(255,212,71,.07),0 22px 45px rgba(0,0,0,.32)
}
.world-node.completed{border-color:var(--green)}
.world-node.locked{filter:grayscale(.45);opacity:.58;cursor:not-allowed}
.world-node .world-icon{
    display:block;
    font-size:2.5rem;
    margin-bottom:8px
}
.world-node b{
    display:block;
    font-family:'Fredoka';
    font-size:1rem;
    line-height:1.08
}
.world-node small{
    display:block;
    color:#91a9c7;
    font-size:.66rem;
    margin-top:5px
}
.world-node em{
    display:block;
    margin-top:auto;
    padding-top:10px;
    color:var(--yellow);
    font-size:.56rem;
    font-style:normal;
    font-weight:1000;
    letter-spacing:.6px
}
.n1{align-self:end}
.n2{align-self:start}
.n3{align-self:end}
.n4{align-self:start}
.n5{align-self:end}
.map-bottom{
    margin-top:18px;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:16px;
    align-items:center
}
.selected-world{
    padding:16px 18px;
    border-radius:18px;
    border:1px solid rgba(255,255,255,.1);
    background:rgba(3,15,31,.26)
}
.selected-world small{
    display:block;
    color:#7f98b8;
    font-size:.58rem;
    font-weight:1000
}
.selected-world b{
    display:block;
    font-family:'Fredoka';
    font-size:1.28rem;
    color:var(--yellow)
}
.selected-world span{
    display:block;
    color:#91a6c2;
    font-size:.8rem;
    font-weight:800;
    margin-top:4px
}
#playWorldBtn{
    min-width:290px;
    min-height:58px;
}

/* JOGO */
.screen-game{background:linear-gradient(180deg,#06152d,#071225)}
.hud{
    display:grid;
    grid-template-columns:minmax(240px,1.45fr) repeat(4,minmax(110px,1fr));
    gap:10px;
    align-items:stretch
}
.hud-world,.hud-stat{
    min-height:70px;
    border-radius:18px;
    border:1px solid var(--line);
    background:rgba(10,31,61,.74);
    padding:10px 12px
}
.hud-world{
    display:flex;
    align-items:center;
    gap:10px
}
.hud-world>span{font-size:2rem}
.hud-world small,.hud-stat small{
    display:block;
    color:#7990af;
    font-size:.56rem;
    font-weight:1000;
    letter-spacing:.7px
}
.hud-world b{
    font-family:'Fredoka';
    font-size:1rem
}
.hud-stat{
    display:flex;
    flex-direction:column;
    justify-content:center
}
.hud-stat b{
    font-family:'Fredoka';
    font-size:1.25rem
}
.fever-bar-wrap{
    margin:10px 0 12px;
    padding:10px 12px;
    border:1px solid var(--line);
    border-radius:15px;
    background:#081a34
}
.fever-label{
    display:flex;
    justify-content:space-between;
    gap:10px;
    color:#8ca5c3;
    font-size:.57rem;
    font-weight:1000;
    margin-bottom:5px
}
.fever-label b{color:var(--yellow)}
.fever-bar{
    height:8px;
    border-radius:99px;
    background:#041021;
    overflow:hidden
}
.fever-bar i{
    display:block;
    width:0;
    height:100%;
    background:linear-gradient(90deg,#2bdcff,#8d6cff,#ffd447);
    box-shadow:0 0 15px rgba(97,110,255,.4);
    transition:.25s
}
.game-layout{
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(280px,330px);
    gap:14px;
    align-items:start
}
.board-panel,.side-card{
    border:1px solid var(--line);
    border-radius:22px;
    background:rgba(9,28,57,.72);
    box-shadow:0 18px 50px rgba(0,0,0,.18)
}
.board-panel{
    padding:16px;
    min-height:560px
}
.board-title{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:12px;
    margin-bottom:14px
}
.board-title small{
    color:#7d95b5;
    font-size:.58rem;
    font-weight:1000;
    letter-spacing:1px
}
.board-title h2{
    font-family:'Fredoka';
    font-size:1.45rem
}
.streak{
    padding:8px 12px;
    border-radius:999px;
    background:#0c254c;
    border:1px solid var(--line);
    font-size:.64rem;
    font-weight:1000;
    color:#a8bdd7;
    white-space:nowrap
}
.streak.hot{
    background:rgba(255,113,65,.12);
    border-color:#ff834e;
    color:#ffd4bf;
    animation:pulse .65s infinite alternate
}
@keyframes pulse{to{transform:scale(1.05)}}
.memory-grid{
    --cols:4;
    display:grid;
    grid-template-columns:repeat(var(--cols),minmax(0,1fr));
    gap:10px;
    align-content:start
}
.memory-card{
    position:relative;
    aspect-ratio:4/5;
    min-height:118px;
    border:none;
    background:transparent;
    perspective:900px
}
.card-inner{
    position:absolute;
    inset:0;
    transform-style:preserve-3d;
    transition:transform .45s cubic-bezier(.2,.8,.2,1)
}
.memory-card.flipped .card-inner,.memory-card.matched .card-inner{transform:rotateY(180deg)}
.card-face{
    position:absolute;
    inset:0;
    backface-visibility:hidden;
    border-radius:18px;
    border:1px solid rgba(255,255,255,.1);
    overflow:hidden
}
.card-back{
    display:grid;
    place-items:center;
    background:
      radial-gradient(circle at 50% 30%,rgba(43,220,255,.16),transparent 28%),
      linear-gradient(145deg,#163367,#09182f);
    box-shadow:0 14px 30px rgba(0,0,0,.26),inset 0 0 30px rgba(255,255,255,.02)
}
.card-back::before{
    content:"✦";
    width:50px;
    height:50px;
    display:grid;
    place-items:center;
    border-radius:16px;
    background:linear-gradient(135deg,#8d6cff,#2bdcff);
    color:white;
    font-size:1.7rem;
    box-shadow:0 0 25px rgba(80,100,255,.24)
}
.card-front{
    transform:rotateY(180deg);
    padding:10px;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    background:linear-gradient(160deg,#f9fcff,#dceeff);
    color:#10203a;
    box-shadow:inset 0 0 30px rgba(70,130,210,.1)
}
.card-front .icon{
    font-size:2.05rem;
    line-height:1;
    margin-bottom:6px
}
.card-front b{
    font-family:'Fredoka';
    font-size:clamp(.78rem,1.1vw,1.02rem);
    line-height:1.05;
    max-width:100%;
    word-break:break-word
}
.card-front span{
    margin-top:5px;
    color:#47617f;
    font-size:.62rem;
    font-weight:900;
    line-height:1.2
}
.memory-card.matched .card-face{
    border-color:var(--green);
    box-shadow:0 0 0 3px rgba(80,231,166,.1),0 0 30px rgba(80,231,166,.15)
}
.memory-card.hint .card-face{animation:hintGlow .6s infinite alternate}
.memory-card.wrong{animation:shake .34s}
@keyframes hintGlow{to{box-shadow:0 0 0 4px rgba(255,212,71,.16),0 0 35px rgba(255,212,71,.35)}}
@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}

.side-panel{
    display:flex;
    flex-direction:column;
    gap:10px
}
.side-card{
    padding:13px
}
.side-head{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:8px;
    margin-bottom:9px
}
.side-head h3{
    font-family:'Fredoka';
    font-size:.95rem
}
.side-head span{
    color:#7088a8;
    font-size:.5rem;
    font-weight:1000
}
.power-btn{
    width:100%;
    min-height:65px;
    display:grid;
    grid-template-columns:42px 1fr auto;
    align-items:center;
    gap:8px;
    padding:8px;
    border-radius:14px;
    border:1px solid var(--line);
    background:#0b2143;
    color:white;
    text-align:left;
    margin-top:7px
}
.power-btn:disabled{opacity:.42;cursor:not-allowed}
.power-icon{font-size:1.45rem}
.power-btn b{
    display:block;
    font-size:.74rem
}
.power-btn small{
    display:block;
    color:#778fad;
    font-size:.55rem;
    margin-top:1px
}
.power-btn em{
    font-style:normal;
    color:var(--yellow);
    font-size:.6rem;
    font-weight:1000
}
.mission{
    color:#9cb0c9;
    font-size:.72rem;
    line-height:1.5;
    font-weight:800
}
.learned-card{
    flex:1;
    min-height:220px
}
.learned-list{
    max-height:250px;
    overflow:auto;
    padding-right:4px
}
.learned-list p{
    color:#7086a4;
    font-size:.65rem;
    line-height:1.4
}
.learned-item{
    padding:8px 9px;
    margin-bottom:6px;
    border-radius:11px;
    background:#081a36;
    border-left:3px solid var(--cyan)
}
.learned-item b{
    display:block;
    color:white;
    font-size:.67rem
}
.learned-item span{
    display:block;
    color:#8298b5;
    font-size:.57rem;
    line-height:1.35;
    margin-top:2px
}
.mobile-actionbar{display:none}

/* RESULTADO */
.screen-result{
    display:none;
    place-items:center;
    background:radial-gradient(circle at center,rgba(126,101,255,.17),transparent 35%),linear-gradient(180deg,#07152e,#050e20)
}
.screen-result.active{display:grid}
.result-card{
    width:min(720px,96%);
    padding:34px;
    text-align:center;
    border-radius:30px;
    border:1px solid var(--line);
    background:linear-gradient(180deg,#0d2851,#08172f);
    box-shadow:0 35px 90px rgba(0,0,0,.42)
}
.result-trophy{font-size:5rem}
.result-card>small{
    color:#7f96b5;
    font-weight:1000;
    letter-spacing:1.5px;
    font-size:.64rem
}
.result-card h2{
    font-family:'Fredoka';
    font-size:2.8rem;
    color:var(--yellow);
    margin-top:4px
}
.result-card p{
    color:#9db0c9;
    margin-top:4px;
    font-weight:800
}
.stars-result{
    font-size:2.2rem;
    margin:16px 0
}
.result-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:8px
}
.result-grid div{
    padding:13px;
    border-radius:14px;
    border:1px solid var(--line);
    background:#081b38
}
.result-grid small{
    display:block;
    color:#7188a8;
    font-size:.54rem;
    font-weight:1000
}
.result-grid b{
    display:block;
    font-family:'Fredoka';
    font-size:1.2rem;
    margin-top:2px
}
.result-actions{
    display:flex;
    justify-content:center;
    flex-wrap:wrap;
    gap:9px;
    margin-top:18px
}

/* RANKING */
.modal{
    position:fixed;
    inset:0;
    display:none;
    place-items:center;
    padding:18px;
    background:rgba(2,8,20,.78);
    backdrop-filter:blur(12px);
    z-index:100
}
.modal.open{display:grid}
.modal-card{
    position:relative;
    width:min(650px,96%);
    max-height:85vh;
    overflow:auto;
    padding:25px;
    border-radius:26px;
    border:1px solid var(--line);
    background:linear-gradient(180deg,#0d2851,#07152d);
    box-shadow:0 40px 100px rgba(0,0,0,.55)
}
.modal-card>small{
    color:#7891b3;
    font-size:.6rem;
    font-weight:1000;
    letter-spacing:1.3px
}
.modal-card h2{
    font-family:'Fredoka';
    font-size:2rem;
    color:var(--yellow)
}
.modal-close{
    position:absolute;
    right:14px;
    top:14px;
    width:38px;
    height:38px;
    border-radius:50%;
    border:1px solid var(--line);
    background:#081a34;
    color:white
}
.rank-row{
    display:grid;
    grid-template-columns:38px 1fr auto;
    align-items:center;
    gap:10px;
    padding:10px;
    margin-top:8px;
    border-radius:14px;
    background:#081b38;
    border:1px solid var(--line)
}
.rank-pos{
    width:34px;
    height:34px;
    display:grid;
    place-items:center;
    border-radius:10px;
    background:#102b56;
    font-weight:1000
}
.rank-row b{display:block;font-size:.78rem}
.rank-row small{
    display:block;
    color:#7c93b2;
    font-size:.56rem;
    margin-top:2px
}
.rank-score{
    font-family:'Fredoka';
    color:var(--yellow)
}
.toast{
    position:fixed;
    left:50%;
    top:90px;
    transform:translate(-50%,-15px);
    opacity:0;
    pointer-events:none;
    z-index:150;
    padding:10px 15px;
    border-radius:999px;
    background:#0b2145;
    border:1px solid var(--line);
    font-weight:1000;
    font-size:.75rem;
    box-shadow:0 18px 45px rgba(0,0,0,.35);
    transition:.2s
}
.toast.show{
    opacity:1;
    transform:translate(-50%,0)
}
.confetti-layer{
    position:fixed;
    inset:0;
    pointer-events:none;
    overflow:hidden;
    z-index:120
}
.confetti{
    position:absolute;
    top:-20px;
    width:9px;
    height:16px;
    border-radius:3px;
    animation:fall linear forwards
}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}

/* RESPONSIVO */
@media(max-width:1200px){
    .start-hero{
        grid-template-columns:1fr;
        min-height:auto
    }
    .hero-board{
        min-height:430px;
        max-width:560px;
        width:100%;
        margin:auto
    }
    .game-layout{
        grid-template-columns:1fr;
    }
    .side-panel{
        display:grid;
        grid-template-columns:1fr 1fr;
        align-items:start
    }
    .learned-card{grid-column:1/-1}
    .hud{
        grid-template-columns:1.4fr repeat(4,minmax(90px,1fr));
    }
    .world-map{
        grid-template-columns:repeat(3,minmax(160px,1fr));
    }
    .n1,.n2,.n3,.n4,.n5{align-self:stretch}
    .n5{grid-column:2}
}

@media(max-width:980px){
    .topbar{
        flex-wrap:wrap;
        align-items:flex-start
    }
    .top-actions{
        width:100%;
        justify-content:flex-start
    }
    .difficulty-select{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .world-map{
        grid-template-columns:repeat(2,minmax(150px,1fr));
        padding:18px;
    }
    .n5{
        grid-column:1/-1;
        max-width:320px;
        width:100%;
        justify-self:center;
    }
    .map-bottom{
        grid-template-columns:1fr;
    }
    #playWorldBtn{
        width:100%;
        min-width:0
    }
    .hud{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .hud-world{
        grid-column:1/-1;
    }
}

@media(max-width:780px){
    .app-shell{padding:6px}
    .game-frame{
        border-radius:18px;
        min-height:0
    }
    .screen{
        min-height:0;
        padding:14px
    }
    .topbar{
        min-height:58px;
        border-radius:15px;
        padding:10px 12px
    }
    .brand img{width:38px;height:38px}
    .brand small{display:none}
    .brand strong{font-size:.9rem}
    .top-actions a{display:none}
    .top-actions button{
        min-height:38px;
        padding:0 9px;
        font-size:.68rem
    }

    .hero-copy{padding:8px 0}
    .hero-copy h1{font-size:clamp(3.5rem,16vw,5rem)}
    .hero-copy p{font-size:.95rem}
    .hero-board{display:none}

    .map-head{
        align-items:flex-start;
        flex-direction:column;
    }
    .map-stats{
        width:100%;
    }
    .map-stats span{
        flex:1;
        text-align:center
    }
    .world-map{
        grid-template-columns:1fr 1fr;
        gap:12px;
        padding:14px;
        border-radius:20px;
    }
    .world-node{
        min-height:128px;
        padding:12px;
        border-radius:18px;
    }
    .world-node .world-icon{
        font-size:2rem;
        margin-bottom:6px
    }
    .world-node b{font-size:.86rem}
    .world-node small{font-size:.6rem}
    .world-node em{font-size:.52rem}
    .selected-world{
        padding:14px;
        border-radius:15px;
    }

    .board-panel{
        min-height:0;
        padding:10px;
    }
    .board-title{
        align-items:flex-start;
        flex-direction:column;
        gap:8px;
    }
    .board-title h2{
        font-size:1.05rem
    }
    .streak{
        font-size:.54rem;
        align-self:flex-start;
    }
    .memory-grid{gap:6px}
    .memory-card{min-height:88px}
    .card-face{border-radius:12px}
    .card-front{padding:6px}
    .card-front .icon{font-size:1.45rem}
    .card-front b{font-size:.68rem}
    .card-front span{font-size:.48rem}

    .side-panel{display:none}
    .mobile-actionbar{
        position:sticky;
        bottom:6px;
        z-index:20;
        display:grid;
        grid-template-columns:repeat(3,1fr);
        gap:7px;
        margin-top:10px;
        padding:7px;
        border:1px solid var(--line);
        border-radius:17px;
        background:rgba(5,18,38,.9);
        backdrop-filter:blur(15px)
    }
    .mobile-actionbar button{
        min-height:50px;
        border-radius:12px;
        border:1px solid var(--line);
        background:#0b2143;
        color:white;
        font-size:1.1rem;
        font-weight:1000
    }
    .mobile-actionbar small{
        display:block;
        font-size:.46rem;
        color:#8da4c0
    }
    .result-grid{
        grid-template-columns:1fr 1fr
    }
}

@media(max-width:520px){
    .difficulty-select{
        grid-template-columns:1fr;
    }
    .difficulty{
        min-height:68px
    }
    .screen-start{padding:13px}
    .world-map{
        grid-template-columns:1fr;
    }
    .world-node,
    .n5{
        grid-column:auto;
        max-width:none;
        justify-self:stretch;
        width:100%;
    }
    .hud{
        grid-template-columns:1fr 1fr;
    }
    .hud-world{
        grid-column:1/-1;
    }
    .hud-stat{padding:7px}
    .hud-stat b{font-size:1rem}
    .result-card{
        padding:20px
    }
    .result-card h2{
        font-size:2rem
    }
}

@media(prefers-reduced-motion:reduce){
    *,*::before,*::after{
        animation-duration:.01ms!important;
        transition-duration:.01ms!important
    }
}
