/* Carbohidratos – ch.css | Lab. Biosensores UNAM FM */
:root{
  --ch-primary:#8b1a1a;
  --ch-deep:#5a0f0f;
  --ch-light:#fdecea;
  --ch-accent:#2e7d32;
  --ch-accent-bg:#e8f5e9;
  --ch-accent-border:#66bb6a;
  --ch-easy:#1b6b3a;
  --ch-medium:#8a6200;
  --ch-hard:#9b1c1c;
  --ch-radius:10px;
  --ch-shadow:0 2px 12px rgba(0,0,0,.12);
}
#ch-wrap *{box-sizing:border-box;margin:0;padding:0;}
#ch-wrap{font-family:'Segoe UI',Arial,sans-serif;max-width:860px;margin:0 auto;padding:16px;color:#1a1a2e;}

/* SCREENS */
.ch-screen{width:100%;}
.ch-hidden{display:none!important;}

/* HERO */
.ch-hero{text-align:center;padding:32px 16px 24px;background:linear-gradient(135deg,var(--ch-deep) 0%,var(--ch-primary) 100%);border-radius:var(--ch-radius);color:#fff;margin-bottom:20px;}
.ch-hero-icon{font-size:3rem;margin-bottom:8px;}
.ch-hero-title{font-size:2.2rem;font-weight:800;letter-spacing:1px;}
.ch-hero-sub{font-size:1rem;opacity:.85;margin-top:4px;}
.ch-hero-desc{font-size:.93rem;opacity:.8;margin-top:10px;max-width:600px;margin-left:auto;margin-right:auto;line-height:1.5;}

/* SETUP */
.ch-setup-box{background:#fff;border-radius:var(--ch-radius);padding:24px;box-shadow:var(--ch-shadow);margin-bottom:20px;}
.ch-label{display:block;font-weight:600;margin-bottom:6px;color:var(--ch-deep);}
.ch-input{width:100%;padding:10px 14px;border:2px solid #ccc;border-radius:6px;font-size:1rem;transition:border .2s;}
.ch-input:focus{outline:none;border-color:var(--ch-primary);}
.ch-input-sm{width:90px;padding:8px 10px;}
.ch-btn{display:inline-block;padding:11px 28px;border:none;border-radius:6px;font-size:1rem;font-weight:700;cursor:pointer;transition:transform .15s,box-shadow .15s;}
.ch-btn:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(0,0,0,.18);}
.ch-btn-primary{background:var(--ch-primary);color:#fff;margin-top:14px;width:100%;}
.ch-btn-accent{background:var(--ch-accent);color:#fff;}
.ch-btn-outline{background:#fff;color:var(--ch-primary);border:2px solid var(--ch-primary);}
.ch-rules{background:var(--ch-light);border-left:4px solid var(--ch-primary);border-radius:0 var(--ch-radius) var(--ch-radius) 0;padding:16px 20px;}
.ch-rules h3{color:var(--ch-deep);margin-bottom:8px;font-size:1rem;}
.ch-rules ul{list-style:none;display:flex;flex-direction:column;gap:6px;}
.ch-rules li{font-size:.9rem;color:#333;}

/* TOPBAR */
.ch-topbar{display:flex;align-items:center;gap:10px;background:var(--ch-deep);color:#fff;border-radius:var(--ch-radius);padding:10px 16px;margin-bottom:8px;flex-wrap:wrap;}
.ch-topbar-team{flex:1;font-weight:700;font-size:1rem;}
.ch-topbar-score,.ch-topbar-timer{text-align:center;min-width:80px;}
.ch-lbl{display:block;font-size:.7rem;opacity:.75;text-transform:uppercase;}
#ch-disp-score,#ch-disp-timer{font-size:1.3rem;font-weight:800;}
#ch-disp-timer.ch-urgent{color:#ff6b6b;}

/* PROGRESS */
#ch-progress-bar{height:6px;background:#ddd;border-radius:3px;margin-bottom:14px;overflow:hidden;}
#ch-progress-fill{height:100%;width:0%;background:var(--ch-primary);transition:width .4s;}

/* MISSION GRID */
#ch-missions{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media(max-width:600px){#ch-missions{grid-template-columns:1fr;}}

/* MISSION CARD */
.ch-card{border-radius:var(--ch-radius);overflow:hidden;box-shadow:var(--ch-shadow);background:#fff;border:2px solid transparent;transition:border .2s;}
.ch-card.ch-card-easy{border-top:4px solid var(--ch-easy);}
.ch-card.ch-card-medium{border-top:4px solid var(--ch-medium);}
.ch-card.ch-card-hard{border-top:4px solid var(--ch-hard);}
.ch-card.ch-card-active,.ch-card.ch-card-done{grid-column:span 2;}
@media(max-width:600px){.ch-card.ch-card-active,.ch-card.ch-card-done{grid-column:span 1;}}
.ch-card.ch-card-locked{opacity:.55;pointer-events:none;}
.ch-card-header{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;user-select:none;}
.ch-card-badge{font-size:.72rem;font-weight:700;padding:3px 8px;border-radius:12px;color:#fff;white-space:nowrap;}
.ch-badge-easy{background:var(--ch-easy);}
.ch-badge-medium{background:var(--ch-medium);}
.ch-badge-hard{background:var(--ch-hard);}
.ch-badge-locked{background:#999;}
.ch-card-title{flex:1;font-weight:700;font-size:.9rem;}
.ch-card-pts{font-size:.82rem;color:#555;}
.ch-card-body{padding:14px 16px;border-top:1px solid #eee;display:none;}
.ch-card.ch-card-active .ch-card-body{display:block;}
.ch-clue{font-size:.95rem;line-height:1.55;margin-bottom:12px;color:#222;}
.ch-hints{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.ch-hint-btn{font-size:.8rem;padding:5px 11px;border:2px solid var(--ch-primary);border-radius:5px;background:#fff;color:var(--ch-primary);cursor:pointer;font-weight:600;transition:background .15s;}
.ch-hint-btn:hover:not(.ch-hint-used){background:var(--ch-light);}
.ch-hint-btn.ch-hint-used{background:#ddd;border-color:#bbb;color:#888;cursor:default;}
.ch-hint-box{background:var(--ch-light);border-left:3px solid var(--ch-primary);border-radius:0 6px 6px 0;padding:9px 12px;font-size:.88rem;margin-bottom:12px;display:none;}
.ch-answer-row{display:flex;gap:8px;flex-wrap:wrap;}
.ch-answer-input{flex:1;min-width:160px;padding:9px 12px;border:2px solid #ccc;border-radius:6px;font-size:.95rem;}
.ch-answer-input:focus{outline:none;border-color:var(--ch-primary);}
.ch-btn-check{padding:9px 20px;background:var(--ch-primary);color:#fff;border:none;border-radius:6px;font-weight:700;cursor:pointer;font-size:.95rem;}
.ch-feedback{margin-top:10px;padding:9px 13px;border-radius:6px;font-weight:600;font-size:.9rem;}
.ch-feedback-ok{background:#d4edda;color:#155724;}
.ch-feedback-fail{background:#f8d7da;color:#721c24;}
.ch-feedback-partial{background:#fff3cd;color:#856404;}

/* CARD DONE */
.ch-card-done-body{padding:12px 16px;display:flex;align-items:center;gap:10px;background:#f0fdf4;}
.ch-done-icon{font-size:1.4rem;}
.ch-done-text{font-size:.88rem;color:#155724;}

/* BONUS */
.ch-bonus-card{background:#fff;border-radius:var(--ch-radius);padding:24px;box-shadow:var(--ch-shadow);border:2px solid var(--ch-accent-border);margin-top:16px;}
.ch-bonus-card h2{color:var(--ch-accent);margin-bottom:14px;}
.ch-bonus-body p{margin-bottom:10px;font-size:.93rem;line-height:1.55;}
.ch-bonus-body ol{padding-left:20px;margin-bottom:14px;}
.ch-bonus-body li{margin-bottom:8px;font-size:.93rem;line-height:1.5;}
.ch-bonus-note{font-style:italic;color:#666;font-size:.85rem!important;}
.ch-textarea{width:100%;padding:10px 14px;border:2px solid #ccc;border-radius:6px;font-size:.93rem;resize:vertical;margin:8px 0 14px;}
.ch-textarea:focus{outline:none;border-color:var(--ch-accent);}
.ch-bonus-self{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}

/* CERTIFICATE */
#ch-cert{text-align:center;}
.ch-cert-paper{background:#fff;border:3px solid var(--ch-primary);border-radius:var(--ch-radius);padding:32px;max-width:620px;margin:0 auto 20px;box-shadow:var(--ch-shadow);}
.ch-cert-header{margin-bottom:18px;}
.ch-cert-logo{font-size:2.8rem;margin-bottom:6px;}
.ch-cert-header h2{font-size:1.7rem;color:var(--ch-deep);font-weight:800;}
.ch-cert-header h3{font-size:1.1rem;color:var(--ch-primary);margin-top:4px;}
.ch-cert-sub{font-size:.82rem;color:#666;margin-top:4px;}
.ch-cert-awarded{font-size:.9rem;color:#555;margin-bottom:4px;}
.ch-cert-team{font-size:1.8rem;font-weight:800;color:var(--ch-deep);margin-bottom:16px;word-break:break-word;}
.ch-cert-scores{background:var(--ch-light);border-radius:8px;padding:14px;margin-bottom:14px;text-align:left;}
.ch-cert-scores h4{color:var(--ch-deep);margin-bottom:8px;}
.ch-cert-scores .ch-score-row{display:flex;justify-content:space-between;font-size:.88rem;padding:3px 0;border-bottom:1px solid #f0c8c8;}
.ch-cert-hints{font-size:.82rem;color:#666;margin-bottom:14px;text-align:left;}
.ch-cert-footer{font-size:.78rem;color:#999;border-top:1px solid #eee;padding-top:10px;}
.ch-cert-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}
@media print{
  #ch-wrap>*:not(#ch-cert){display:none!important;}
  #ch-cert{display:block!important;}
  .ch-cert-actions{display:none!important;}
  .ch-cert-paper{border:2px solid #333;box-shadow:none;}
}
