:root{
  --blau:#123e6d; --blau2:#1f5fa0; --blau3:#2a74bd;
  --fons:#f4f6f8; --text:#222; --muted:#6b7785;
  --vora:#d9e2ee; --blanc:#fff;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:Arial,Helvetica,sans-serif;background:var(--fons);color:var(--text);min-height:100vh;display:flex;flex-direction:column}

/* Barra superior */
.topbar{background:var(--blau);color:#fff;position:sticky;top:0;z-index:20;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.menu{display:flex;align-items:center;gap:6px;padding:10px 18px;flex-wrap:wrap;max-width:1200px;margin:0 auto}
.menu .marca{font-size:18px;font-weight:bold;color:#fff;text-decoration:none;margin-right:14px;letter-spacing:.5px}
.menu a{color:#dce8f6;text-decoration:none;padding:8px 12px;border-radius:8px;font-size:14px}
.menu a:hover{background:rgba(255,255,255,.12);color:#fff}
.menu a.actiu{background:var(--blau2);color:#fff}
.menu .spacer{flex:1}
.menu .usuari{color:#c7d7ea;font-size:13px;padding:0 6px}
.menu a.sortir{background:var(--blau2)}
.menu a.sortir:hover{background:var(--blau3)}

/* Contingut */
.contingut{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:22px 18px}
.capcalera{margin-bottom:18px}
.capcalera h2{margin:0 0 4px;color:var(--blau);font-size:22px}
.capcalera .sub{margin:0;color:var(--muted);font-size:14px}

/* Targetes / graella */
.graella{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.targeta{position:relative;display:block;background:var(--blanc);border:2px solid var(--vora);border-radius:12px;padding:18px 18px 16px;text-decoration:none;color:var(--blau);transition:border-color .15s,box-shadow .15s,transform .15s}
.targeta:hover{border-color:var(--blau);box-shadow:0 6px 18px rgba(18,62,109,.15);transform:translateY(-2px)}
.targeta .titol{font-size:17px;font-weight:bold;margin-bottom:6px}
.targeta .desc{color:var(--muted);font-size:13px;min-height:18px}
.targeta .id{color:#b7c2d0;font-size:11px;margin-top:10px;word-break:break-all}
.targeta .cobrir{position:absolute;inset:0;z-index:1;border-radius:12px}
.targeta .eines{position:absolute;top:10px;right:10px;display:flex;gap:6px;z-index:2}
.targeta .eines a{background:#eef3f9;border-radius:6px;padding:4px 8px;font-size:12px;color:var(--blau2);text-decoration:none}
.targeta .eines a:hover{background:#dbe6f3}

/* Botons */
.btn{display:inline-block;background:var(--blau2);color:#fff;border:0;border-radius:8px;padding:10px 16px;font-size:14px;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--blau3)}
.btn.gris{background:#e5eaf0;color:var(--blau)}
.btn.gris:hover{background:#d5dde7}
.btn.perill{background:#c0392b}
.btn.perill:hover{background:#a83226}

/* Taules */
.taula{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.taula th,.taula td{padding:10px 12px;text-align:left;border-bottom:1px solid #eef1f5;font-size:14px}
.taula th{background:#eef3f9;color:var(--blau)}

/* Targeta de formulari */
.card{background:#fff;border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.10);padding:22px;max-width:820px}
.camp{margin-bottom:16px}
.camp label{display:block;font-size:13px;font-weight:bold;color:var(--blau);margin-bottom:5px}
.camp .ajut{font-size:12px;color:var(--muted);margin-top:4px}
.camp input[type=text],.camp input[type=password],.camp input[type=number],.camp textarea{
  width:100%;padding:9px 11px;border:1px solid var(--vora);border-radius:8px;font-size:14px;font-family:inherit}
.camp input:focus,.camp textarea:focus{outline:none;border-color:var(--blau2);box-shadow:0 0 0 2px rgba(31,95,160,.15)}
.camp.destacat{background:#eef4fc;border:1px solid #cfe0f5;border-left:4px solid var(--blau2);border-radius:10px;padding:12px 14px}
.camp.destacat label{color:var(--blau2)}
.desbloqueig{margin:18px 0 0}
.modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center}
.modal[hidden]{display:none}
.modal-fons{position:absolute;inset:0;background:rgba(10,25,45,.55)}
.modal-caixa{position:relative;background:#fff;border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.35);padding:24px;width:100%;max-width:400px;margin:16px}
.modal-caixa h3{margin:0 0 6px;color:var(--blau)}
.modal-caixa .ajut{margin:0 0 16px}
.files{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.accions{display:flex;gap:10px;align-items:center;margin-top:8px}

/* Missatges */
.avis{background:#fff3cd;border:1px solid #ffe08a;color:#7a5b00;border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:14px}
.ok{background:#e7f6ec;border:1px solid #b7e2c5;color:#1e7a43;border-radius:8px;padding:10px 14px;margin-bottom:14px;font-size:14px}
.err{background:#fdecea;border:1px solid #f5c6c0;color:#a83232;border-radius:8px;padding:14px;font-size:14px;word-break:break-word}

/* Login */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{background:#fff;border-radius:14px;box-shadow:0 10px 40px rgba(0,0,0,.18);padding:30px;width:100%;max-width:380px}
.login-card h1{color:var(--blau);font-size:20px;text-align:center;margin:0 0 6px}
.login-card p.sub{text-align:center;color:var(--muted);font-size:13px;margin:0 0 20px}

.peu{color:#8a95a3;font-size:12px;text-align:center;padding:18px}

/* Visor a pantalla completa */
body.mode-visor{height:100vh;height:100dvh;overflow:hidden}
.visor-contingut{flex:1;min-height:0;display:flex;flex-direction:column;width:100%;max-width:none;padding:10px 12px 12px}
.visor-wrap{display:flex;flex-direction:column;flex:1;min-height:0}
.visor-barra{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--vora);border-radius:10px;padding:8px 14px;margin-bottom:10px;flex:0 0 auto}
.visor-barra .meta{color:var(--muted);font-size:12px}
.visor-barra .spacer{flex:1}
body.mode-visor #pbi-frame{flex:1;min-height:0;background:#fff;border:1px solid var(--vora);border-radius:10px;overflow:hidden}

@media (max-width:640px){
  .files{grid-template-columns:1fr}
}
