/* ================= app shell: login, lists, account, admin ================= */
body.booting main, body.booting .tabbar, body.booting header > :not(.brand){visibility:hidden}
body.logged-out nav, body.logged-out .search, body.logged-out #search-open, body.logged-out .badges{display:none!important}
.admin-only{display:none!important}
body.is-admin .admin-only{display:revert!important}
body.is-admin .tabbar .admin-only{display:flex!important}
.iconbtn{border:0;background:rgba(255,255,255,.15);color:#fff;width:44px;height:44px;border-radius:50%;font-size:1.15rem;flex:none}
#search-open,.search-close{display:none}
.sm{display:none}
.flag{display:inline-block;animation:flicker 3s ease-in-out infinite}
.cnt{opacity:.65;font-size:.85em;margin-left:2px}
.tabbar{display:none}

.login{max-width:460px;margin:0 auto;text-align:center;padding:30px 0}
.login .logo{width:96px;height:96px;border-radius:26px;box-shadow:var(--shadow);animation:float 4s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-10px) rotate(2deg)}}
.login h1{font-family:Fraunces, Georgia, serif;font-size:3rem;color:var(--azul-d);margin:18px 0 0}
.login .sub{margin:10px 0 4px;font-size:1.25rem}
.login .tin{margin:26px 0 18px;font-size:1.5rem}
.login .tin.code{font-size:2.6rem;letter-spacing:.35em;max-width:320px}
.login .big-btn{width:100%;max-width:560px}

.ropts summary{cursor:pointer;font-weight:800;font-size:1.15rem;color:var(--azul-d);list-style:none;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.ropts summary::-webkit-details-marker{display:none}
.ropts summary::after{content:'▾';margin-left:auto;transition:transform .2s}
.ropts[open] summary::after{transform:rotate(180deg)}
.ropts[open] summary{margin-bottom:10px}

.newlist{display:flex;gap:10px;margin-top:10px}
.newlist input{flex:1;min-width:0;border:2px solid var(--line);border-radius:14px;padding:12px 14px;font-size:1.1rem;background:#fff;outline:none}
.newlist input:focus{border-color:var(--azul)}
.lcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-top:16px}
.lcard{display:flex;align-items:center;gap:12px;background:#fff;border:2px solid var(--line);border-radius:18px;padding:14px 16px;cursor:pointer;transition:transform .15s,border-color .15s;animation:fadeUp .4s both}
.lcard:hover{transform:translateY(-2px);border-color:var(--azul)}
.lmain{flex:1;min-width:0}
.lname{font-weight:800;font-size:1.2rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lgo{width:52px;height:52px;padding:0;font-size:1.2rem;flex:none}
.lgo:disabled,.big-btn:disabled{opacity:.4;animation:none}
.lrows{margin-top:16px}
.lrows.add{margin-top:6px;background:var(--azul-l);border-radius:16px;padding:6px}
.lrow{display:flex;align-items:center;gap:10px;padding:12px;border-radius:12px;cursor:pointer;border-bottom:1px solid var(--line)}
.lrow:hover{background:var(--azul-l)}
.lrow small{color:var(--muted);margin-left:auto;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:45%}
.lrow .xbtn,.lrow .addb{flex:none}
.addb{width:44px;height:44px;padding:0;border-radius:50%}
.picker{margin-top:16px;background:var(--azul-l);border-radius:16px;padding:14px 16px}
.picker h3{margin:0 0 8px}
.pick{display:flex;align-items:center;gap:10px;padding:8px 0;font-weight:700;cursor:pointer}
.pick input{width:22px;height:22px;accent-color:var(--azul)}
.users-box{margin-bottom:22px}
.users-box summary{cursor:pointer;font-weight:800;color:var(--azul-d)}
.urow{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}
.urow b{word-break:break-all}

@media (hover:none){ .keys{display:none} .opt:hover:not(:disabled){transform:none;border-color:var(--line)} }

/* ================= phones ================= */
@media (max-width:760px){
  html{font-size:16px}
  body{padding-bottom:calc(74px + env(safe-area-inset-bottom))}
  body.quizzing,body.logged-out{padding-bottom:env(safe-area-inset-bottom)}
  header{padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));gap:10px;flex-wrap:nowrap;box-shadow:0 3px 0 var(--amarelo)}
  .brand{font-size:1.35rem;white-space:nowrap}
  nav.top{display:none}
  #search-open{display:block;margin-left:auto}
  .badges{gap:6px}
  .badge{padding:6px 10px;font-size:.9rem;white-space:nowrap}
  .lg{display:none}.sm{display:inline}
  .search{display:none;position:fixed;top:0;left:0;right:0;max-width:none;margin:0;z-index:90;background:var(--azul);padding:12px 14px;padding-top:calc(12px + env(safe-area-inset-top))}
  .search.open{display:flex;gap:10px;align-items:center;animation:fadeIn .15s}
  .search.open input{background:#fff;color:var(--ink);font-size:1.1rem;padding:12px 16px}
  .search.open .search-close{display:block}
  .search .sres{position:fixed;top:calc(68px + env(safe-area-inset-top));left:0;right:0;bottom:0;max-height:none;border-radius:0;border:0;padding:8px 10px}
  .sr{padding:14px 10px}
  .sr .tag{display:none}
  body.searching{overflow:hidden}

  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--papel);border-top:2px solid var(--line);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px rgba(22,58,122,.08)}
  .tabbar button{flex:1;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.72rem;font-weight:800;color:var(--muted);padding:4px 0;border-radius:14px;transition:.15s}
  .tabbar button span{font-size:1.35rem;line-height:1.2;transition:transform .2s}
  .tabbar button.active{color:var(--azul);background:var(--azul-l)}
  .tabbar button.active span{transform:translateY(-2px) scale(1.12)}
  body.quizzing .tabbar,body.logged-out .tabbar{display:none!important}

  main{padding:16px 12px 30px}
  .panel{padding:18px 16px;border-radius:18px}
  h2{font-size:1.35rem}
  .hero{padding:12px 0 20px}
  .hero h1{font-size:2.6rem}
  .sub{font-size:1.1rem;margin:6px 0 18px}
  .big-btn{font-size:1.6rem;padding:18px 20px;width:100%}
  .counts{gap:8px}
  .count{flex:1;padding:8px 6px;font-size:.85rem}
  .count b{font-size:1.5rem}
  .row{gap:8px;padding:8px 0}
  .row>label{width:100%;font-size:.8rem}
  .chipb{padding:9px 14px;font-size:.95rem}
  #bm-go{margin-left:0!important;width:100%}

  /* quiz */
  .qtop{gap:10px;margin-bottom:12px}
  .qtop .ghost{padding:8px 12px}
  .combo{min-width:0}
  .qcard{padding:22px 14px;border-radius:22px}
  .prompt{font-size:2.3rem;margin:16px 0 6px;word-break:break-word}
  .hint{font-size:1.15rem}
  .tin{font-size:1.8rem;margin-top:18px;padding:14px}
  .accents{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;padding-bottom:4px;-webkit-overflow-scrolling:touch}
  .acc{flex:none;width:44px;height:44px}
  .btns .primary,.btns .ghost{padding:14px 20px}
  .opts{grid-template-columns:1fr;gap:10px;margin-top:20px}
  .opt{font-size:1.4rem;padding:16px 14px;min-height:64px}
  .answer-big{font-size:2rem}
  table.conj{font-size:1.1rem}
  table.conj td{padding:5px 12px}
  .say{width:46px;height:46px}
  .fb .btns{position:sticky;bottom:0;background:var(--papel);padding:10px 0 4px;margin-top:14px}
  .fb #next{flex:1}
  .combo-pop{font-size:2.6rem}
  .done h1{font-size:2.4rem}
  .score{font-size:4.5rem}
  .miss{flex-direction:column;gap:2px;font-size:1.05rem}

  /* tables */
  .ref{font-size:1.15rem;border-spacing:4px;width:100%}
  .ref th{padding:8px 6px;font-size:1.1rem}
  .ref td{padding:8px}
  .ref td.p{font-size:.95rem;padding:4px}
  .tips{grid-template-columns:1fr}
  .minis{grid-template-columns:1fr 1fr;gap:10px}
  .mini{padding:10px 12px}
  .mini table{font-size:.95rem}
  .drill td{padding:4px 2px}
  .drill td.cell{white-space:nowrap}
  .drill .stem{font-size:1rem}
  .drill td input{font-size:1.15rem;padding:6px;min-width:0}
  .drill .endin{width:54px}
  .fix{font-size:.85rem}
  .tactions .big-btn{font-size:1.3rem}

  /* modal = bottom sheet */
  .modal{place-items:end stretch;padding:0}
  .modal .panel{max-height:92vh;border-radius:24px 24px 0 0;padding-bottom:calc(22px + env(safe-area-inset-bottom));animation:sheet .3s cubic-bezier(.2,.9,.3,1) both}
  @keyframes sheet{from{transform:translateY(100%)}}
  .mhead h2{font-size:1.9rem}
  .vgrid th,.vgrid td{font-size:.9rem}

  /* lists, stats, editor */
  .lcards{grid-template-columns:1fr}
  .sgrid{gap:10px}
  .stat b{font-size:2rem}
  .chart{gap:4px;height:150px}
  .tbar span{width:110px;font-size:.9rem}
  .ai-bar input{font-size:1.15rem;min-width:0}
  .frm{grid-template-columns:1fr;gap:6px}
  .exrow{grid-template-columns:1fr auto}
  .exrow input[type=text]{grid-column:1 / -1}
  .urow{flex-direction:column;align-items:flex-start}
  input, select, textarea{font-size:16px}  /* stops iOS zooming into inputs */
  .tin{font-size:1.8rem}
}
@media (max-width:760px){
  html,body{overflow-x:clip}
  .ref{table-layout:fixed}
  .ref th small{white-space:normal;font-size:.7rem}
  .ref td{white-space:nowrap;overflow:hidden;text-overflow:clip;padding:8px 5px!important;font-size:1.02rem}
  .ref td.p{width:62px;font-size:.85rem!important;white-space:normal}
  .ref th{padding:6px 3px!important;font-size:1rem!important}
  #toast{bottom:calc(88px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(calc(200px + env(safe-area-inset-bottom)));max-width:calc(100vw - 32px);text-align:center}
  body.quizzing #toast,body.logged-out #toast{bottom:calc(20px + env(safe-area-inset-bottom))}
  .modal .tactions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .modal .tactions button{width:100%;padding:14px 10px}
  .modal .vwrap{margin-left:-6px;margin-right:-6px}
  .tpanel{padding:10px 14px!important}
  .tpanel .row{flex-wrap:nowrap;padding:3px 0}
  .tpanel .row>label{width:auto;min-width:84px;font-size:.7rem}
  .tpanel .chips{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:2px 0}
  .tpanel .chipb{padding:7px 12px;flex:none}
  .sr > span:last-child{margin-left:auto!important}
}
@media (max-width:380px){ .minis{grid-template-columns:1fr} .tabbar button{font-size:.66rem} .prompt{font-size:2rem} }

#toast{pointer-events:none}
#toast.show{transform:translateX(-50%) translateY(0)}
