:root{
  --ink:#15213c;
  --muted:#62708a;
  --blue:#243e9b;
  --blue2:#4e6be8;
  --navy:#172b78;
  --sky:#eef3ff;
  --card:#ffffff;
  --line:#dce4f4;
  --green:#14824d;
  --amber:#b86b00;
  --red:#b73535;
  --shadow:0 16px 40px rgba(29,50,110,.12);
  --radius:22px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:linear-gradient(180deg,#f5f8ff 0,#fff 40%,#f6f8fc 100%);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);min-height:100vh}
a{color:inherit}
button,input,select,textarea{font:inherit}
.shell{max-width:1180px;margin:0 auto;padding:28px 22px 70px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:22px}
.brand{display:flex;align-items:center;gap:14px;font-weight:900;letter-spacing:.01em}
.brand-mark{width:50px;height:50px;border-radius:16px;background:linear-gradient(145deg,var(--blue),var(--blue2));display:grid;place-items:center;color:#fff;font-size:25px;box-shadow:0 10px 26px rgba(36,62,155,.25)}
.brand small{display:block;color:var(--muted);font-weight:700;margin-top:2px}
.progress{display:flex;gap:8px;align-items:center}
.dot{width:11px;height:11px;border-radius:999px;background:#dbe2f2}.dot.active{background:var(--blue2)}.dot.done{background:var(--green)}
.hero{position:relative;overflow:hidden;border-radius:30px;padding:44px;background:linear-gradient(135deg,#14286f,#2f49b6 62%,#536fed);color:#fff;box-shadow:var(--shadow);margin-bottom:22px}
.hero:after{content:"";position:absolute;right:-95px;top:-95px;width:330px;height:330px;border-radius:50%;border:50px solid rgba(255,255,255,.07)}
.hero-kicker{text-transform:uppercase;letter-spacing:.18em;font-size:.78rem;font-weight:900;opacity:.8}
.hero h1{font-size:clamp(2.1rem,5vw,4rem);line-height:.98;margin:.45rem 0 1rem;max-width:800px}
.hero p{font-size:1.08rem;line-height:1.65;max-width:760px;color:#e8edff;margin:0}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:0 10px 30px rgba(27,47,98,.07)}
.screen{display:none;animation:fade .22s ease}.screen.active{display:block}@keyframes fade{from{opacity:.3;transform:translateY(8px)}to{opacity:1;transform:none}}
.grid2{display:grid;grid-template-columns:1.05fr .95fr;gap:22px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:850px){.grid2,.grid3{grid-template-columns:1fr}.hero{padding:30px}.topbar{align-items:flex-start}.progress{display:none}}
h2{font-size:1.75rem;margin:0 0 10px}h3{margin:.15rem 0 .6rem}.lede{color:var(--muted);font-size:1.03rem;line-height:1.65;margin-top:0}
.field{margin:18px 0}.field label{display:block;font-weight:850;margin-bottom:8px}.field input,.field select,.field textarea{width:100%;border:1px solid #cdd7ec;border-radius:14px;padding:13px 14px;background:#fbfcff;color:var(--ink);outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue2);box-shadow:0 0 0 4px rgba(78,107,232,.12)}
.btnrow{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}.btn{appearance:none;border:0;border-radius:14px;padding:13px 18px;font-weight:900;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:.15s ease}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--blue);color:#fff;box-shadow:0 9px 22px rgba(36,62,155,.2)}.btn.secondary{background:#eef2ff;color:var(--blue)}.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn.warn{background:#fff4e5;color:#8b5200;border:1px solid #f0d4a9}.btn.danger{background:#a93232;color:#fff}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.note{border-left:5px solid var(--blue2);background:#f1f5ff;padding:15px 17px;border-radius:12px;line-height:1.55}.note strong{color:var(--navy)}
.venturea-lines{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}@media(max-width:700px){.venturea-lines{grid-template-columns:1fr}}
.product-card{border:1px solid var(--line);border-radius:18px;padding:18px;background:linear-gradient(180deg,#fff,#f8faff)}.product-card .icon{font-size:2rem}.product-card h3{font-size:1.02rem;margin-top:8px}.product-card p{color:var(--muted);font-size:.9rem;line-height:1.45;margin-bottom:0}
.assignment{padding:28px;border-radius:24px;background:linear-gradient(145deg,#eef3ff,#fff);border:1px solid #cad6ff;text-align:center}.flag{font-size:4.2rem;line-height:1}.country{font-size:clamp(2.2rem,6vw,4rem);font-weight:950;color:var(--navy);margin:8px 0}.code{display:inline-block;padding:9px 14px;border-radius:999px;background:#172b78;color:#fff;font-weight:900;letter-spacing:.08em}.lockline{font-size:.9rem;color:var(--muted);margin-top:12px}.assignment-guidance{margin-top:18px;padding:16px 17px;background:#e7edff;border:1px solid #c8d4ff;border-radius:15px;text-align:left;color:#24345f;font-size:.92rem;line-height:1.5}.assignment-guidance strong{color:#172b78}.assignment-starter{margin-top:11px;padding-top:11px;border-top:1px solid #c4d0f5;font-size:.86rem;line-height:1.5;color:#44547b}.assignment-starter strong{color:#172b78}
.infographic-wrap{background:#eef2ff;border:1px solid #d8e0ff;border-radius:22px;padding:14px;text-align:center;position:relative;overflow:visible;z-index:2}.infographic-link{display:block;position:relative;z-index:3}.infographic{max-width:100%;height:auto;max-height:740px;cursor:pointer;border-radius:12px;box-shadow:0 12px 30px rgba(24,42,96,.15);transition:transform .22s ease,box-shadow .22s ease;transform-origin:center center;position:relative;z-index:4}.infographic-wrap:hover .infographic{transform:scale(1.48);box-shadow:0 24px 65px rgba(20,38,90,.32);z-index:20}@media(max-width:850px){.infographic-wrap:hover .infographic{transform:scale(1.08)}}
.mode-tip{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px}@media(max-width:650px){.mode-tip{grid-template-columns:1fr}}.mode-chip{padding:13px 14px;border-radius:13px;background:#f8faff;border:1px solid var(--line);font-size:.92rem}.mode-chip b{color:var(--navy)}
.promptbox{background:#131e42;color:#edf2ff;border-radius:18px;padding:20px;font-size:1.02rem;line-height:1.55}.promptbox code{font-family:inherit;color:#fff;font-weight:850}.checklist{display:grid;gap:10px;margin:18px 0}.checkitem{display:flex;gap:10px;align-items:flex-start;background:#f8faff;border:1px solid var(--line);border-radius:13px;padding:12px 14px}.checkicon{width:24px;height:24px;flex:0 0 24px;border-radius:50%;display:grid;place-items:center;background:#e7edff;color:var(--blue);font-weight:900}
.status{display:none;margin-top:15px;padding:15px;border-radius:14px;font-weight:750}.status.show{display:block}.status.ok{background:#e9f8f0;color:#11683f;border:1px solid #bee8d0}.status.wait{background:#fff6e9;color:#875300;border:1px solid #efd6aa}.status.bad{background:#fff0f0;color:#8e2e2e;border:1px solid #efc5c5}
.fallback{display:none;margin-top:22px;padding-top:22px;border-top:1px dashed #cbd5e8}.fallback.show{display:block}
.mini{font-size:.88rem;color:var(--muted);line-height:1.5}.muted{color:var(--muted)}
.modal{position:fixed;inset:0;background:rgba(10,18,46,.84);z-index:50;display:none;align-items:center;justify-content:center;padding:24px}.modal.show{display:flex}.modal img{max-width:min(1100px,94vw);max-height:92vh;border-radius:14px;box-shadow:0 25px 80px rgba(0,0,0,.45)}.modal-close{position:absolute;right:24px;top:20px;border:0;background:#fff;color:#17213c;width:44px;height:44px;border-radius:50%;font-size:1.5rem;cursor:pointer}
.results-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:18px}.metricrow{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 24px}@media(max-width:780px){.metricrow{grid-template-columns:repeat(2,1fr)}}.metric{background:#fff;border:1px solid var(--line);border-radius:17px;padding:17px}.metric .value{font-size:1.7rem;font-weight:950;color:var(--navy)}.metric .label{font-size:.83rem;color:var(--muted);font-weight:800;margin-top:3px}
.tablewrap{overflow:auto;border:1px solid var(--line);border-radius:18px;background:#fff}table{width:100%;border-collapse:collapse;min-width:850px}th,td{padding:13px 14px;border-bottom:1px solid #e7ecf5;text-align:left;vertical-align:top}th{font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:#60708d;background:#f7f9fd;position:sticky;top:0}tbody tr:hover{background:#fafbff}.score{font-weight:950;color:var(--navy);font-size:1.05rem}.badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;background:#eef2ff;color:#314ca7;font-size:.78rem;font-weight:850}.badge.pending{background:#fff2d9;color:#895500}.badge.ok{background:#e8f7ef;color:#167447}
.login-card{max-width:520px;margin:60px auto}.adminbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.admin-actions{display:flex;gap:10px;flex-wrap:wrap}
footer{margin-top:32px;text-align:center;color:#7a869d;font-size:.85rem}

.launch-note{margin-top:18px}


/* Cross-device / iOS hardening */
body{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
.shell{
  padding-left:max(22px, env(safe-area-inset-left));
  padding-right:max(22px, env(safe-area-inset-right));
  padding-bottom:calc(70px + env(safe-area-inset-bottom));
}
button,.btn,input,select,textarea{
  font-size:16px;
}
button,.btn{
  min-height:46px;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
.field input,.field select,.field textarea{
  min-height:46px;
}
input[type="file"]{
  min-height:48px;
}
.promptbox{
  -webkit-user-select:text;
  user-select:text;
  overflow-wrap:anywhere;
}
.assignment-starter,.code,.country{
  overflow-wrap:anywhere;
}
@media (hover:none), (pointer:coarse){
  .btn:hover{transform:none}
  .infographic-wrap:hover .infographic{transform:none}
  .infographic{cursor:pointer}
}
@media(max-width:600px){
  .shell{
    padding-left:max(14px, env(safe-area-inset-left));
    padding-right:max(14px, env(safe-area-inset-right));
  }
  .hero{padding:26px 22px;border-radius:22px}
  .panel{padding:20px;border-radius:18px}
  .btnrow{display:grid;grid-template-columns:1fr}
  .btnrow .btn{width:100%}
  .assignment{padding:22px 16px}
  .country{font-size:2.3rem}
  .code{font-size:.92rem;letter-spacing:.05em}
  .promptbox{font-size:1rem;padding:16px}
}
