/* Layout: playful mobile-first column on a peach ground with soft yellow blobs; content lives in big rounded white cards. Deliberately one light look. */
:root{
  color-scheme:light;
  --bg:#FBECE4; --surface:#FFFFFF; --ink:#211C3D; --muted:#77718E; --line:#EFE8EE; --soft:#F2EEF8;
  --blob:#FFD65E; --accent:#6C5CE7; --accent-ink:#FFFFFF;
  --im:#1FB39C; --md:#F0647A; --ux:#6C5CE7; --dc:#F2B233;
  --vis:#9A6BF0; --art:#F0647A; --bld:#1FB39C; --pro:#F2B233;
  --good:#1FA67A; --warn:#E08A12;
  --shadow:0 18px 40px -18px rgba(70,40,90,.28);
  --f-display:"Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --f-body:"Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;
  --f-mono:"JetBrains Mono", ui-monospace, Menlo, monospace;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.55}
.bg{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.bg i{position:absolute;display:block}
.bg .b1{width:300px;height:260px;left:-120px;top:-90px;background:var(--blob);border-radius:58% 42% 61% 39% / 47% 55% 45% 53%}
.bg .b2{width:220px;height:240px;right:-110px;top:38%;background:var(--blob);opacity:.55;border-radius:42% 58% 37% 63% / 55% 41% 59% 45%}
.bg .ring{width:420px;height:420px;right:-180px;top:-200px;border:1.5px solid rgba(33,28,61,.08);border-radius:50%}
.bg .ring2{width:300px;height:300px;right:-120px;top:-140px;border:1.5px solid rgba(33,28,61,.06);border-radius:50%}
.bg .dot{width:14px;height:14px;border-radius:50%;background:var(--blob);left:8%;top:300px}
.wrap{position:relative;z-index:1;max-width:760px;margin:0 auto;padding-block:28px 64px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.wrap.wide{max-width:1120px}
h1,h2,h3,h4{font-family:var(--f-display);line-height:1.12;text-wrap:balance;margin:0;font-weight:700}
h1{font-size:clamp(2.2rem,8vw,3.6rem);letter-spacing:-.01em}
h2{font-size:clamp(1.4rem,4.5vw,1.8rem)}
h3{font-size:1.15rem;font-weight:600}
p{margin:0}
.eyebrow{font-family:var(--f-mono);font-weight:500;font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.muted{color:var(--muted)}
.stack{display:flex;flex-direction:column;gap:16px}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
button{font:inherit;cursor:pointer}
.btn{border:0;border-radius:999px;padding:13px 26px;font-weight:700;background:var(--accent);color:var(--accent-ink);box-shadow:0 10px 22px -10px var(--accent)}
.btn:hover{filter:brightness(1.06)}
.btn.ghost{background:var(--surface);color:var(--ink);box-shadow:none;border:1.5px solid var(--line)}
.btn.sm{padding:7px 15px;font-size:.88rem;white-space:nowrap}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn:focus-visible,.opt:focus-visible,.lk button:focus-visible,select:focus-visible,textarea:focus-visible,input:focus-visible,.chip:focus-visible,.link:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.chip{border:0;background:var(--soft);color:var(--ink);border-radius:999px;padding:8px 15px;font-size:.88rem;font-weight:700}
.chip:hover{background:#E7E0F5}
.link{background:none;border:0;padding:0;color:var(--muted);text-decoration:underline;text-underline-offset:3px;font-size:.9rem}

/* intro */
.introcard{background:var(--surface);border-radius:32px;box-shadow:var(--shadow);padding:28px;display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:20px;align-items:center}
.introcard svg{width:100%;height:auto;max-width:190px}
@media (max-width:600px){.introcard{grid-template-columns:1fr;padding:22px}.introcard .mascot{order:-1;justify-self:center;max-width:150px}}
.domains{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.dom{background:var(--surface);border-radius:22px;padding:16px;display:flex;flex-direction:column;gap:8px;min-width:0;box-shadow:0 8px 24px -16px rgba(70,40,90,.25)}
.dom p{font-size:.92rem;color:var(--muted)}
.ico{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;flex:none}
.ico svg{width:20px;height:20px}
.swatch{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}
.parts{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;font-size:.85rem}
.parts div{background:var(--surface);border-radius:16px;padding:10px 12px}
.parts b{display:block;font-family:var(--f-display);font-weight:600;color:var(--accent)}
@media (max-width:640px){.domains{grid-template-columns:1fr}.parts{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* quiz */
.progress{height:10px;background:var(--surface);border-radius:999px;overflow:hidden}
.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--im),var(--accent),var(--md));border-radius:999px;transition:width .3s}
.q{background:var(--surface);border-radius:24px;padding:20px;display:flex;flex-direction:column;gap:14px;box-shadow:0 10px 28px -18px rgba(70,40,90,.3)}
.q .num{font-weight:700;font-size:.75rem;letter-spacing:.06em;color:var(--accent);text-transform:uppercase}
.q .txt{font-weight:700;font-size:1.06rem}
.lk{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.lk button{border:0;background:var(--soft);color:var(--ink);border-radius:16px;padding:10px 4px 9px;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;transition:transform .12s}
.lk button:hover{transform:translateY(-2px)}
.lk button b{font-family:var(--f-display);font-size:1.25rem;font-weight:600}
.lk button span{font-size:.7rem;line-height:1.2;color:var(--muted);text-align:center;font-weight:700}
.lk button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 18px -8px var(--accent)}
.lk button[aria-pressed="true"] span{color:var(--accent-ink)}
.opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.opt{text-align:left;border:0;background:var(--soft);color:var(--ink);border-radius:16px;padding:13px 15px;min-width:0;font-weight:600}
.opt[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
@media (max-width:560px){.opts{grid-template-columns:1fr}}
.gradegrid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 12px;align-items:center}
.gradegrid .code{font-size:.75rem;color:var(--muted);font-weight:700}
select,textarea,input{font:inherit;color:var(--ink);background:var(--soft);border:1.5px solid transparent;border-radius:14px;padding:10px 12px}
select:focus,textarea:focus,input:focus{border-color:var(--accent);background:var(--surface)}
input{width:100%}
textarea{width:100%;min-height:80px;resize:vertical}
label.fl{font-weight:700;display:flex;flex-direction:column;gap:6px}
label.fl span{font-weight:600;font-size:.85rem;color:var(--muted)}
.hint{font-size:.92rem;background:#FFF6D9;border-radius:16px;padding:12px 16px}
.nav{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.err{color:var(--md);font-size:.9rem;min-height:1.4em;font-weight:700}

/* results */
.hero{background:var(--surface);border-radius:32px;box-shadow:var(--shadow);padding:26px;display:flex;flex-direction:column;gap:20px}
.herotop{display:grid;grid-template-columns:230px minmax(0,1fr);gap:22px;align-items:center}
.herotop svg{width:100%;max-width:230px;height:auto}
@media (max-width:600px){.hero{padding:20px}.herotop{grid-template-columns:1fr;justify-items:center;text-align:center}.herotop .row{justify-content:center}}
.overall{font-size:.78rem;font-weight:700;color:var(--accent);letter-spacing:.04em}
.code-chip{display:inline-block;font-weight:700;font-size:.78rem;background:var(--soft);border-radius:999px;padding:4px 11px}
.sec{display:flex;flex-direction:column;gap:14px;padding-top:10px}
.card{background:var(--surface);border-radius:28px;box-shadow:var(--shadow);padding:22px;display:flex;flex-direction:column;gap:14px;min-width:0}
.bar{display:grid;grid-template-columns:38px minmax(0,1fr);gap:12px;align-items:center}
.bar .ico{width:38px;height:38px;border-radius:50%}
.bar .lab{display:flex;justify-content:space-between;gap:8px;font-weight:700;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;min-width:0}
.bar .lab small{font-size:.75rem;color:var(--muted);font-weight:700;letter-spacing:0;white-space:nowrap}
.bar .track{height:10px;background:var(--soft);border-radius:999px;overflow:hidden;margin-top:6px}
.bar .track i{display:block;height:100%;border-radius:999px}
.bar .pct{font-size:.78rem;font-weight:700;margin-top:3px}
.lc{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
@media (max-width:620px){.lc{grid-template-columns:1fr}}
.lcard{background:var(--surface);border-radius:24px;padding:18px;display:flex;flex-direction:column;gap:10px;min-width:0;box-shadow:0 10px 28px -18px rgba(70,40,90,.3)}
.lcard h3{display:flex;align-items:center;gap:10px}
.mini{display:grid;grid-template-columns:58px minmax(0,1fr) 42px;gap:8px;align-items:center;font-size:.85rem;font-weight:700}
.mini .track{height:9px;background:var(--soft);border-radius:999px;overflow:hidden}
.mini .track i{display:block;height:100%;border-radius:999px}
.mini .track i.can{opacity:.5}
.mini b{font-variant-numeric:tabular-nums;text-align:right}
.zone{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;font-weight:700;border-radius:999px;padding:4px 11px;align-self:flex-start;background:var(--soft)}
.zone i{width:8px;height:8px;border-radius:50%}
.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:680px){.two{grid-template-columns:1fr}}
.quad svg{width:100%;height:auto;max-width:340px}
.list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.panel{background:var(--surface);border-radius:24px;padding:20px;display:flex;flex-direction:column;gap:10px;min-width:0;box-shadow:0 10px 28px -18px rgba(70,40,90,.3)}
.careers{display:flex;flex-wrap:wrap;gap:8px}
.careers span{border-radius:999px;padding:6px 13px;font-size:.88rem;font-weight:700;background:var(--surface)}
.banner{background:var(--ink);color:#fff;border-radius:16px;padding:12px 16px;font-size:.9rem}
details{background:var(--surface);border-radius:20px;padding:14px 18px}
summary{cursor:pointer;font-weight:700}
.tbl{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.88rem;font-variant-numeric:tabular-nums}
th,td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
th{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;white-space:nowrap}
.sharerow{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;font-weight:700}
.endart{display:flex;justify-content:center}
.endart svg{width:180px;height:auto}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* type gallery */
.types{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media (max-width:760px){.types{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:460px){.types{grid-template-columns:1fr}}
.types.four{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:760px){.types.four{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:460px){.types.four{grid-template-columns:1fr}}
.tcard{background:var(--surface);border-radius:20px;padding:14px 16px;display:flex;flex-direction:column;gap:6px;min-width:0;border:2px solid transparent}
.tcard.me{border-color:var(--accent);box-shadow:0 10px 24px -14px var(--accent)}
.tcard h4{font-size:1.02rem;font-weight:600;line-height:1.2}
.tcard p{font-size:.85rem;color:var(--muted)}
.dchips{display:flex;gap:4px;flex-wrap:wrap}
.dchip{font-size:.68rem;font-weight:700;border-radius:999px;padding:2px 8px;color:#fff}
.dchip.q{background:var(--soft);color:var(--muted)}

/* dashboard */
.adminbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.lock{font-size:.72rem;font-weight:700;background:#FFF0D6;color:var(--warn);border-radius:999px;padding:4px 11px}
.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
@media (max-width:760px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
.tile{background:var(--surface);border-radius:22px;padding:16px;display:flex;flex-direction:column;gap:4px;min-width:0;box-shadow:0 10px 28px -18px rgba(70,40,90,.3)}
.tile b{font-family:var(--f-display);font-weight:600;font-size:1.8rem;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--accent)}
.tile span{font-size:.85rem;color:var(--muted);font-weight:700}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
@media (max-width:900px){.grid3{grid-template-columns:1fr}}
.flag{display:inline-block;font-size:.75rem;font-weight:700;border-radius:999px;padding:2px 9px;margin:2px 4px 2px 0;background:var(--soft);white-space:nowrap}
.flag.g{color:var(--md)} .flag.e{color:var(--warn)} .flag.n{color:var(--muted)}
.pill{display:inline-block;font-size:.72rem;font-weight:700;border-radius:999px;padding:2px 8px;color:#fff}
.sbar{display:grid;grid-template-columns:minmax(0,1fr) 28px;gap:8px;align-items:center;font-size:.88rem;font-weight:600}
.sbar .track{height:8px;background:var(--soft);border-radius:999px;overflow:hidden;margin-top:4px}
.sbar .track i{display:block;height:100%;border-radius:999px;background:var(--accent)}
.sbar b{text-align:right;font-variant-numeric:tabular-nums}
.toggle{border:0;background:var(--soft);color:var(--ink);border-radius:999px;padding:5px 13px;font-size:.82rem;font-weight:700}
.toggle[aria-pressed="true"]{background:var(--good);color:#fff}

/* website additions */
.adminhead{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.who{font-size:.85rem;color:var(--muted)}
.namein{min-width:0;width:100%;max-width:240px;padding:6px 10px}
.addrow{display:grid;grid-template-columns:120px minmax(0,1fr) 200px auto;gap:8px;align-items:end}
@media (max-width:700px){.addrow{grid-template-columns:1fr}}
.addrow label{display:flex;flex-direction:column;gap:4px;font-size:.8rem;font-weight:700;color:var(--muted)}
.saved{font-size:.85rem;font-weight:700;color:var(--good);min-height:1.3em}
.saved.bad{color:var(--md)}
.btn.danger{background:var(--md);box-shadow:none}
a.btn,a.chip{text-decoration:none;display:inline-block}
.check{display:inline-flex;gap:6px;align-items:center;font-size:.88rem;font-weight:700}
.check input{width:auto}
.loading{display:grid;place-items:center;min-height:40vh;color:var(--muted)}

/* top bar with home logo */
.topbar{position:relative;z-index:2;max-width:760px;margin:0 auto;padding-top:18px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.topbar.wide{max-width:1120px}
.logo{display:inline-flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);font-family:var(--f-display);font-weight:800;font-size:1.2rem;border-radius:12px}
.logo img{width:36px;height:36px;display:block}
.logo:hover img{transform:rotate(-6deg)}
.logo img{transition:transform .2s}
.logo:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.topbar + .wrap{padding-top:14px}

/* the 5 parts as a progress line */
.steps{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:6px 0}
.steps::before{content:"";position:absolute;left:10%;right:10%;top:22px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--im),var(--accent),var(--md))}
.step{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;min-width:0;font-size:.88rem;line-height:1.3}
.sdot{width:36px;height:36px;border-radius:50%;background:var(--surface);border:4px solid var(--accent);display:grid;place-items:center;font-family:var(--f-display);font-weight:800;color:var(--accent);margin-bottom:6px;box-shadow:0 6px 14px -8px var(--accent)}
.step:first-child .sdot{border-color:var(--im);color:var(--im)}
.step:last-child .sdot{border-color:var(--md);color:var(--md)}
.step b{font-family:var(--f-display);color:var(--accent);font-size:.95rem}
@media (max-width:520px){.step{font-size:.74rem}.step b{font-size:.8rem}.sdot{width:30px;height:30px;border-width:3px}.steps::before{top:19px;height:3px}}

/* DMTI logo in place of the mascot */
.introcard{grid-template-columns:minmax(0,1fr) 150px}
.introcard .mascot svg{max-width:150px;filter:drop-shadow(0 14px 22px rgba(108,92,231,.28))}
.endart svg{width:110px;filter:drop-shadow(0 12px 18px rgba(108,92,231,.25))}
@media (max-width:600px){.introcard{grid-template-columns:1fr}.introcard .mascot{max-width:96px}}
