/* ══════════════════════════════════════════════════════════
   DamammApps — css/app.css
   Viewport fixe 600×600 — D-pad only
   CSS topbar/body injecté par lib/title.js — ne pas redéfinir
══════════════════════════════════════════════════════════ */

:root {
  --bg:#080c14; --bg-card:#0d1520; --bg-btn:#101828; --border:#1a2a40;
  --cyan:#00d4ff; --cyan-dim:rgba(0,212,255,0.3); --blue:#0055cc;
  --white:#c8d8f0; --green:#00ff99; --orange:#ffaa00; --red:#ff4466; --muted:#556677;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}

body {
  width:600px;
  height:600px;
  overflow:hidden;
  background:var(--bg);
  color:var(--white);
  font-family:'Share Tech Mono',monospace;
  display:flex;
  flex-direction:column;
}

/* Écrans : plus de position absolute, ils s'empilent dans le flux flex */
.screen {
  width:600px;
  display:none;
  flex-direction:column;
  flex:1;
  overflow-y:auto;
  overflow-x:hidden;
}

.screen.active {
  display:flex;
}

/* HUB */
#screen-hub{background:var(--bg);}
#hub-lang-display:focus{border-color:var(--cyan)!important;box-shadow:0 0 14px rgba(0,212,255,0.4);color:var(--cyan);}

/* APPS */
/* .app-btn{background:var(--bg-btn);border:2px solid var(--cyan);border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer;transition:all 100ms;height:100px;min-width:0;width:100%;} */
.app-btn-right{border-radius:0 8px 8px 0;flex:1;}
.app-btn:focus{outline:none;border-color:var(--cyan);border-width:2px;background:rgba(0,85,204,0.4);color:#ffffff;box-shadow:0 0 22px rgba(0,212,255,0.6);}
.app-btn-right:focus{outline:none;border-radius:8px;border:2px solid var(--cyan)!important;background:rgba(0,85,204,0.4);color:#ffffff;box-shadow:0 0 22px rgba(0,212,255,0.6);}
.app-logo{width:40px;height:40px;object-fit:contain;}
.app-btn .app-name{font-family:'Orbitron',monospace;font-size:12px;font-weight:700;color:var(--cyan);letter-spacing:0.5px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;padding:0 6px;box-sizing:border-box;}
.app-btn .app-status{font-size:10px;color:#aabbcc;letter-spacing:0.3px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;padding:0 6px;box-sizing:border-box;}
.app-btn.prompto-ok .app-status{color:var(--green);}
.app-btn.prompto-locked .app-status{color:var(--orange);}
/* Coming soon */
#btn-future{height:100px;opacity:0.5;border-radius:8px!important;}
#btn-future div:first-child{font-size:20px;}
#btn-future .app-name{font-size:10px;}
.prompto-cell{display:flex;flex-direction:row;gap:0;height:100px;}
#btn-prompto{flex:1;height:100px;gap:1px;}
/* Bouton logout Prompto — couleurs/focus via .mode-btn.quit (title.js) */
#btn-prompto-logout{width:44px;height:100px;flex-shrink:0;border-left:none;border-radius:0 8px 8px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;}
#btn-prompto-logout .logout-label{font-size:11px;writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);}

/* CATÉGORIES */
#hub-cats{display:flex;flex-direction:row;align-items:center;gap:0;padding:0 10px;border-bottom:1px solid var(--border);flex-shrink:0;height:34px;background:rgba(0,0,0,0.25);overflow:hidden;}
.cat-tab{font-family:'Share Tech Mono',monospace;font-size:12px;color:var(--white);letter-spacing:0.5px;padding:0 10px;height:34px;display:flex;align-items:center;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;flex-shrink:0;transition:all 100ms;}
.cat-tab.active{color:var(--cyan);border-bottom-color:var(--cyan);background:rgba(0,85,204,0.4);}
.cat-tab:focus{outline:none;color:var(--cyan);border-bottom-color:var(--cyan);background:rgba(0,85,204,0.4);box-shadow:0 0 22px rgba(0,212,255,0.6);}

/* HUB GRID scrollable */
.hub-grid{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 12px;align-content:start;overflow-y:auto;overflow-x:hidden;}
.hub-grid::-webkit-scrollbar{width:4px;}
.hub-grid::-webkit-scrollbar-track{background:transparent;}
.hub-grid::-webkit-scrollbar-thumb{background:var(--cyan-dim);border-radius:2px;}

/* Prompto — layout horizontal logo + texte */
.prompto-inner{display:flex;flex-direction:row;align-items:center;gap:10px;width:100%;padding:0 8px;box-sizing:border-box;}
.prompto-text{display:flex;flex-direction:column;align-items:flex-start;gap:0;min-width:0;flex:1;}
.prompto-text .app-name{text-align:left;line-height:1.1;}
.prompto-subtitle{font-size:10px;color:#ffffff;font-family:'Share Tech Mono',monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;line-height:1.2;}
.prompto-text .app-status{text-align:left;line-height:1.2;}

/* Indicateur de scroll haut/bas */
#hub-grid-wrap{flex:1;display:flex;flex-direction:column;min-height:0;position:relative;}
#hub-grid-wrap::before,
#hub-grid-wrap::after{
  position:absolute;left:50%;transform:translateX(-50%);
  color:#ffffff;font-size:28px;font-weight:bold;pointer-events:none;
  text-shadow:0 0 8px #00d4ff,0 0 20px #00d4ff,0 0 40px #00d4ff;
  z-index:10;opacity:0;transition:opacity 0.3s;
  background:rgba(4,8,15,0.9);padding:2px 20px;border-radius:6px;
  border:2px solid #00d4ff;
}
#hub-grid-wrap::before{content:'▲';top:0;}
#hub-grid-wrap::after {content:'▼';bottom:0;}
#hub-grid-wrap[data-scroll-top="0"]::before   {opacity:1;animation:bounce-indicator 0.8s ease-in-out infinite;}
#hub-grid-wrap[data-scroll-bottom="0"]::after  {opacity:1;animation:bounce-indicator 0.8s ease-in-out infinite;}
@keyframes bounce-indicator{0%,100%{opacity:0.5}50%{opacity:1}}

/* INFO + LOGIN header subtitle */
.hdr-sub-right{font-size:14px;font-weight:1500;color:var(--white);letter-spacing:1px;margin-left:auto;text-align:right;}

/* INFO */
#screen-info{background:var(--bg);}

/* LOGIN */
#screen-login{background:var(--bg);}
.login-body{flex:1;display:flex;flex-direction:column;padding:8px 14px 4px;gap:5px;overflow:hidden;}
.login-field{display:flex;flex-direction:column;gap:2px;}
.login-label{font-size:14px;font-weight:1500;color:var(--white);letter-spacing:1px;text-transform:uppercase;}
.login-value{font-size:15px;color:var(--white);background:var(--bg-card);border:2px solid var(--border);border-radius:4px;padding:3px 8px;min-height:28px;letter-spacing:1px;}
.login-value.active-field{border-color:var(--cyan);box-shadow:0 0 10px rgba(0,212,255,0.3);}
.login-cursor{color:var(--cyan);animation:blink 1s step-end infinite;font-weight:bold;}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
.login-hint{font-size:15px;font-weight:1500;color:var(--white);text-align:center;}
.login-msg{font-size:13px;min-height:14px;text-align:center;}
.login-msg.error{color:var(--red);}
.login-msg.ok{color:var(--green);}

/* ── Champ de saisie ── */
.kb-field-row {
  display: flex;
  align-items: center;
  margin-bottom: 6px;
  flex-shrink: 0;
}
.kb-field {
  flex: 1;
  min-height: 32px;
  background: #0a1828;
  border: 2px solid var(--border);
  border-radius: 6px;
  padding: 3px 8px;
  font-size: 14px;
  color: var(--white);
  font-family: 'Share Tech Mono', monospace;
  display: flex;
  align-items: center;
}
.kb-field.active-field {
  border-color: var(--cyan);
  box-shadow: 0 0 10px rgba(0,212,255,0.25);
}
.cursor {
  display: inline-block;
  width: 2px;
  background: var(--cyan);
  height: 14px;
  margin: 0 1px;
  vertical-align: middle;
  animation: blink 1s step-end infinite;
}
@keyframes blink { 50% { opacity: 0; } }

/* ── Zone clavier (champ + touches) ──────────────────────────────
   ⚠ MAILLON CRITIQUE : flex:1 ici donne une hauteur déterminée
     à #kb-rows, ce qui permet à flex:1 sur .kb-row de fonctionner.
     Sans ce bloc, les 6 lignes du clavier ne sont PAS de hauteur égale.
   ⚠ Adapter le sélecteur au nom réel utilisé dans le HTML de l'app :
     #search-zone, .kb-zone, #login-keyboard, ou autre — la règle doit
     cibler la div englobant #kb-rows dans chaque écran.
   ──────────────────────────────────────────────────────────────── */
#search-zone, .kb-zone, #login-keyboard {
  flex: 1;
  max-height: 200px;  /* plafond universel : clavier jamais trop grand
                         sur écran 600×600, quelle que soit la quantité
                         de contenu au-dessus. No-op si l'espace disponible
                         est déjà inférieur (ex. DamammTube avec #results). */
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-height: 0;
}


/* LOADING */
#screen-loading{align-items:center;justify-content:center;text-align:center;gap:16px;background:var(--bg);}
.spinner{width:44px;height:44px;border:4px solid var(--border);border-top-color:var(--cyan);border-radius:50%;animation:spin 0.8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
#loading-msg{font-size:16px;color:var(--white);}

