:root {
  --bg:#071421; --panel:#10243a; --panel2:#0b1b2c; --ink:#f5f8fb; --muted:#a9bacb;
  --line:#284864; --blue:#59a9ff; --blue2:#2c8ce9; --teal:#18a2a1;
  --green:#4fd1a4; --orange:#e3922e; --red:#ff7070; color-scheme:dark;
}
* { box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html { background:var(--bg); scroll-behavior:smooth; }
body {
  margin:0; min-height:100vh; color:var(--ink);
  background:radial-gradient(circle at 12% 0,#123254 0,transparent 31%),radial-gradient(circle at 90% 15%,#0b343c 0,transparent 25%),var(--bg);
  font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;
}
button,input,select { font:inherit; }
button { cursor:pointer; }
.topbar {
  height:84px; display:flex; align-items:center; justify-content:space-between; gap:26px;
  padding:0 max(28px,5vw); border-bottom:1px solid rgba(118,165,205,.2);
  background:rgba(5,18,30,.82); backdrop-filter:blur(18px); position:sticky; top:0; z-index:10;
}
.brand { display:flex; gap:14px; align-items:center; color:var(--ink); text-decoration:none; min-width:max-content; }
.brand-mark { width:52px; height:52px; border-radius:15px; background:linear-gradient(145deg,var(--blue),var(--teal)); display:grid; place-items:center; font-size:16px; font-weight:900; }
.brand strong { display:block; font-size:20px; }
.brand small { display:block; color:var(--muted); margin-top:2px; }
.top-nav { display:flex; gap:30px; margin-left:auto; }
.top-nav a { color:var(--muted); text-decoration:none; font-size:14px; font-weight:700; }
.top-nav a:hover { color:var(--ink); }
.top-actions { display:flex; gap:14px; align-items:center; color:var(--muted); }
.page-shell { width:min(1320px,92vw); margin:0 auto; padding:58px 0 70px; }
.eyebrow,.step-tag { color:var(--blue); font-size:13px; letter-spacing:.16em; font-weight:900; }
.platform-hero { display:grid; grid-template-columns:1.05fr .95fr; align-items:center; gap:5vw; min-height:520px; padding:16px 0 68px; }
.platform-hero h1,.login-intro h1 { font-size:clamp(52px,5.9vw,86px); line-height:1.05; margin:20px 0 24px; letter-spacing:-.045em; }
.platform-hero h1 span,.login-intro h1 span { color:#79c2ff; }
.hero-copy>p { font-size:19px; line-height:1.85; color:var(--muted); max-width:690px; }
.hero-metrics { display:flex; gap:12px; margin-top:34px; }
.hero-metrics div { min-width:136px; border:1px solid var(--line); border-radius:17px; padding:15px 18px; background:rgba(10,27,44,.72); }
.hero-metrics strong { display:block; font-size:24px; }
.hero-metrics span { color:var(--muted); font-size:13px; }
.platform-map { height:420px; border:1px solid var(--line); border-radius:30px; position:relative; background:linear-gradient(155deg,rgba(17,39,62,.97),rgba(8,23,38,.98)); box-shadow:0 34px 80px rgba(0,0,0,.36); overflow:hidden; }
.platform-map:before { content:""; position:absolute; inset:0; background:radial-gradient(circle at center,rgba(43,139,227,.13),transparent 48%); }
.platform-map svg { position:absolute; inset:15px; width:calc(100% - 30px); height:calc(100% - 30px); }
.platform-map path { stroke:#2c5778; stroke-width:2; stroke-dasharray:7 7; fill:none; }
.map-center,.map-node { position:absolute; z-index:2; border:1px solid #315573; background:#0a1c2d; box-shadow:0 12px 30px rgba(0,0,0,.2); }
.map-center { width:150px; height:96px; left:50%; top:50%; transform:translate(-50%,-50%); border-radius:48px; display:grid; place-content:center; text-align:center; }
.map-center b { font-size:18px; }.map-center span,.map-node span { display:block; color:var(--muted); font-size:12px; margin-top:5px; }
.map-node { width:154px; padding:15px 16px; border-radius:17px; }
.map-node.active { border-color:rgba(79,209,164,.6); background:linear-gradient(145deg,#0b3a46,#0b2537); }
.map-node.active:after { content:"首个已上线"; display:block; color:var(--green); font-size:10px; margin-top:8px; }
.map-node.n1 { left:7%; top:10%; }.map-node.n2 { right:7%; top:10%; }.map-node.n3 { left:7%; bottom:10%; }.map-node.n4 { right:7%; bottom:10%; }
.card { border:1px solid var(--line); border-radius:24px; background:linear-gradient(155deg,rgba(17,39,62,.97),rgba(8,23,38,.98)); box-shadow:0 22px 55px rgba(0,0,0,.22); }
.setup-card,.phase-section,.recent-card,.login-card { padding:32px; }
.section-heading,.section-title-row { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; }
.card h2,.section-title-row h2 { font-size:30px; margin:7px 0 24px; }
.section-title-row { align-items:end; margin:66px 0 22px; }
.section-title-row p { color:var(--muted); max-width:560px; text-align:right; line-height:1.7; }
.secure-pill { color:var(--green); font-size:13px; border:1px solid rgba(79,209,164,.38); background:rgba(79,209,164,.08); border-radius:999px; padding:8px 12px; }
.setup-form { display:grid; grid-template-columns:1.2fr repeat(3,1fr); gap:16px; }
.setup-form.simple { grid-template-columns:minmax(280px,480px); }
label { display:block; color:var(--muted); font-size:14px; font-weight:700; }
input,select { display:block; width:100%; margin-top:8px; border:1px solid #345574; border-radius:13px; background:#071827; color:var(--ink); padding:14px 15px; outline:none; min-height:52px; }
input:focus,select:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(89,169,255,.15); }
.device-bar { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:24px; margin-top:10px; padding:14px 16px; border-radius:14px; background:#091d30; color:var(--muted); font-size:13px; }
.device-bar>div:first-child { display:flex; align-items:center; gap:8px; color:var(--ink); }
.status-dot { width:9px; height:9px; background:var(--orange); border-radius:50%; box-shadow:0 0 0 4px rgba(227,146,46,.13); }
.status-dot.ok { background:var(--green); box-shadow:0 0 0 4px rgba(79,209,164,.13); }
.checkline { display:flex; align-items:center; gap:9px; color:var(--ink); white-space:nowrap; }
.checkline input { width:20px; height:20px; min-height:0; margin:0; accent-color:var(--blue); }
.form-message { min-height:22px; margin:12px 0 0; color:var(--red); font-size:14px; }
.primary,.secondary,.ghost { border:0; border-radius:13px; font-weight:900; padding:14px 20px; }
.primary { background:linear-gradient(145deg,var(--blue),var(--blue2)); color:white; box-shadow:0 12px 25px rgba(44,140,233,.25); }
.secondary,.ghost { background:#102a43; color:var(--ink); border:1px solid #345574; }
.secondary:disabled { opacity:.46; cursor:not-allowed; }
.primary:disabled { opacity:.55; cursor:wait; }
.small { padding:9px 14px; font-size:13px; }.full { width:100%; min-height:54px; }
.task-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.task-card { min-width:0; border:1px solid var(--line); border-radius:22px; background:linear-gradient(155deg,rgba(17,39,62,.95),rgba(8,23,38,.98)); padding:23px; display:flex; flex-direction:column; }
.task-card.available { border-color:rgba(79,209,164,.48); box-shadow:0 22px 48px rgba(0,0,0,.25),0 0 0 1px rgba(79,209,164,.08); }
.task-top { display:flex; justify-content:space-between; align-items:center; }.task-index { color:#6f8ea9; font-weight:900; font-size:12px; letter-spacing:.1em; }.availability { font-size:11px; color:#7f95aa; border:1px solid #31506b; border-radius:999px; padding:5px 8px; }.availability.ready { color:var(--green); border-color:rgba(79,209,164,.4); background:rgba(79,209,164,.07); }
.task-icon { height:92px; margin:22px 0 12px; border-radius:16px; background:#071827; border:1px solid #24445f; position:relative; overflow:hidden; }
.task-card h3 { font-size:25px; margin:6px 0 2px; }.task-cn { color:#d6e5f3!important; font-weight:800; margin:0 0 14px!important; }.task-card>p { color:var(--muted); font-size:13px; line-height:1.65; min-height:64px; }
.task-card dl { margin:8px 0 22px; font-size:12px; }.task-card dl>div { display:flex; justify-content:space-between; gap:12px; border-top:1px solid rgba(91,132,169,.2); padding:9px 0; }.task-card dt { color:#7890a7; }.task-card dd { margin:0; color:#d8e7f4; text-align:right; }
.mot-icon i,.mit-icon i { position:absolute; width:25px; height:25px; border-radius:50%; background:#8ea2b6; }.mot-icon i:nth-child(1){left:14%;top:23%}.mot-icon i:nth-child(2){left:42%;top:51%;background:#0d7d7d}.mot-icon i:nth-child(3){right:14%;top:22%;background:#0d7d7d}.mot-icon i:nth-child(4){right:29%;bottom:12%}.mit-icon i { display:grid;place-items:center;font-style:normal;font-size:11px;font-weight:900}.mit-icon i:nth-child(1){left:12%;top:22%;background:#0d7d7d}.mit-icon i:nth-child(2){left:38%;top:42%;background:#0d7d7d}.mit-icon i:nth-child(3){right:12%;top:20%;background:#0d7d7d}.mit-icon i:nth-child(4){right:29%;bottom:10%}.mit-icon i:nth-child(5){left:19%;bottom:8%}.flanker-icon { display:flex; align-items:center; justify-content:center; gap:7px; }.flanker-icon b { font-size:22px;color:#8ea2b6}.flanker-icon b:nth-child(3){font-size:29px;color:var(--orange)}.memory-icon { display:grid;grid-template-columns:repeat(3,24px);place-content:center;gap:9px}.memory-icon i{width:24px;height:24px;border-radius:7px}.memory-icon i:nth-child(1){background:#e2645a}.memory-icon i:nth-child(2){background:#4f9ad6}.memory-icon i:nth-child(3){background:#e2b74b}.memory-icon i:nth-child(4){background:#59b881}.memory-icon i:nth-child(5){background:#9d75d4}.memory-icon i:nth-child(6){background:#d883bd}
.phase-section { margin-top:24px; }.phase-flow { display:grid; grid-template-columns:1fr auto 1fr auto 1fr; align-items:center; gap:20px; }.phase-flow>div { padding:18px; border-radius:16px; background:#091d30; }.phase-flow b { color:var(--blue); margin-right:10px; }.phase-flow strong { font-size:17px; }.phase-flow span { display:block; color:var(--muted); font-size:13px; margin-top:7px; }.phase-flow em { color:#52708c; font-style:normal; font-size:24px; }
.recent-card { margin-top:24px; }.table-wrap { overflow:auto; } table { width:100%; border-collapse:collapse; min-width:880px; } th,td { text-align:left; padding:14px 12px; border-bottom:1px solid rgba(91,132,169,.22); font-size:14px; } th { color:var(--muted); font-size:12px; letter-spacing:.08em; } td { color:#dbe7f3; } td small { color:#6f879d; }.status { display:inline-block; border-radius:999px; padding:5px 9px; font-size:12px; font-weight:800; }.status.completed { background:rgba(79,209,164,.12); color:var(--green); }.status.active { background:rgba(89,169,255,.12); color:var(--blue); }.table-actions { display:flex; gap:7px; flex-wrap:wrap; }.table-actions a { color:#bde1ff; text-decoration:none; border:1px solid #345574; border-radius:8px; padding:5px 8px; font-size:12px; }.empty { text-align:center; color:var(--muted); padding:28px; }
footer { text-align:center; color:#6f879d; padding:30px; font-size:13px; }
.login-body { min-height:100vh; display:grid; place-items:center; }.login-shell { width:min(1180px,92vw); display:grid; grid-template-columns:1.1fr .72fr; gap:8vw; align-items:center; }.login-intro p { font-size:18px; line-height:1.8; color:var(--muted); max-width:610px; }.login-card { max-width:480px; width:100%; justify-self:end; }.login-card h2 { font-size:30px; margin:7px 0 26px; }.login-card label { margin-bottom:18px; }.login-modules { display:flex; gap:12px; margin-top:40px; }.login-modules i { min-width:64px; height:42px; padding:0 12px; border-radius:13px; background:#0c3850; border:1px solid #226176; display:grid; place-items:center; font-size:11px; font-style:normal; font-weight:900; }.login-modules i:nth-child(2){background:#0d7d7d}.privacy-note { border-top:1px solid rgba(91,132,169,.24); margin-top:24px; padding-top:18px; color:var(--muted); font-size:13px; line-height:1.6; }.login-secondary { display:block; margin-top:18px; color:#9bcfff; text-align:center; font-size:13px; text-decoration:none; }.login-secondary:hover { color:white; text-decoration:underline; }
@media(max-width:1080px){.task-grid{grid-template-columns:1fr 1fr}.setup-form{grid-template-columns:1fr 1fr}.device-bar{grid-template-columns:1fr 1fr}.checkline{grid-column:1/-1}.top-nav{display:none}}
@media(max-width:900px){.platform-hero,.login-shell{grid-template-columns:1fr}.platform-hero{padding-top:15px}.platform-map{height:390px}.login-shell{padding:40px 0}.login-card{justify-self:stretch;max-width:none}.login-intro h1{font-size:56px}.topbar{padding:0 18px}.page-shell{width:min(94vw,760px)}.section-title-row{display:block}.section-title-row p{text-align:left}}
@media(max-width:640px){.hero-metrics{display:grid;grid-template-columns:1fr 1fr}.platform-hero h1{font-size:48px}.task-grid,.setup-form{grid-template-columns:1fr}.device-bar{display:block}.device-bar>div+div,.device-bar .checkline{margin-top:10px}.phase-flow{grid-template-columns:1fr}.phase-flow em{transform:rotate(90deg);text-align:center}.setup-card,.phase-section,.recent-card,.login-card{padding:22px}.top-actions>span{display:none}.brand strong{font-size:16px}.map-node{width:130px;padding:12px}.map-node.n1,.map-node.n3{left:4%}.map-node.n2,.map-node.n4{right:4%}}

/* V1.2: athlete-facing hub */
.portal-body,.module-body {
  color-scheme:light; color:#17324d; min-height:100vh;
  background:
    radial-gradient(circle at 8% 12%,rgba(255,218,89,.3),transparent 20%),
    radial-gradient(circle at 92% 8%,rgba(98,220,204,.24),transparent 22%),
    linear-gradient(165deg,#f9fcff 0%,#eff8ff 56%,#f8f6ff 100%);
}
.portal-topbar {
  height:76px; padding:0 max(24px,5vw); display:flex; align-items:center; justify-content:space-between;
  background:rgba(255,255,255,.83); border-bottom:1px solid rgba(42,85,125,.1); backdrop-filter:blur(18px);
}
.portal-brand { display:flex; align-items:center; gap:12px; color:#17324d; text-decoration:none; font-size:18px; }
.co-brand { min-width:0; }
.brand-divider { width:1px; height:34px; flex:0 0 auto; background:rgba(53,89,119,.2); }
.ciss-lockup { width:215px; min-width:0; display:flex; flex-direction:column; justify-content:center; line-height:1; }
.ciss-lockup img { width:100%; height:auto; display:block; object-fit:contain; }
.site-brand-title { margin-left:4px; padding-left:14px; border-left:1px solid rgba(53,89,119,.14); white-space:nowrap; }
.portal-logo {
  width:48px; height:48px; padding:5px; display:grid; place-items:center; border-radius:50%;
  background:#fff; border:1px solid rgba(0,93,169,.17); box-shadow:0 9px 22px rgba(20,91,161,.16);
}
.portal-logo img { width:100%; height:100%; display:block; object-fit:contain; }
.portal-actions { display:flex; align-items:center; gap:14px; color:#637990; font-size:14px; font-weight:700; }
.portal-logout { border:0; border-radius:999px; padding:9px 15px; color:#456077; background:#edf4fa; font-weight:800; }
.portal-shell { width:min(1180px,91vw); margin:0 auto; padding:44px 0 72px; }
.portal-welcome {
  min-height:248px; padding:42px 48px; display:flex; align-items:center; justify-content:space-between; overflow:hidden;
  border-radius:34px; color:white; position:relative;
  background:linear-gradient(120deg,#6250e7 0%,#397ce4 49%,#20b8c1 100%);
  box-shadow:0 24px 58px rgba(68,86,193,.22);
}
.portal-welcome:before,.portal-welcome:after { content:""; position:absolute; border-radius:50%; border:1px solid rgba(255,255,255,.22); }
.portal-welcome:before { width:300px; height:300px; right:2%; top:-190px; }
.portal-welcome:after { width:190px; height:190px; right:18%; bottom:-145px; }
.portal-welcome>div:first-child { position:relative; z-index:2; }
.portal-kicker { display:block; color:inherit; font-size:12px; letter-spacing:.18em; font-weight:950; opacity:.82; }
.portal-welcome h1 { font-size:clamp(34px,4.4vw,57px); letter-spacing:-.045em; line-height:1.13; margin:12px 0; }
.portal-welcome p { margin:0; font-size:17px; opacity:.82; }
.portal-ball {
  width:142px; height:142px; margin-right:3%; flex:0 0 auto; position:relative; z-index:2; border-radius:50%;
  background:#fff; box-shadow:0 24px 42px rgba(27,42,107,.25),inset -16px -18px 0 rgba(20,62,111,.08); transform:rotate(-13deg);
}
.portal-ball:before { content:""; position:absolute; width:43px; height:40px; left:49px; top:45px; background:#213955; clip-path:polygon(50% 0,100% 36%,82% 100%,18% 100%,0 36%); }
.portal-ball:after { content:""; position:absolute; inset:14px; border:5px dashed #213955; border-radius:50%; opacity:.72; }
.portal-pitch-marks { position:absolute; inset:0; z-index:1; pointer-events:none; opacity:.68; }
.portal-pitch-marks>i:first-child { position:absolute; left:58%; top:-55px; width:195px; height:195px; border:2px solid rgba(255,255,255,.25); border-radius:50%; }
.portal-pitch-marks>i:nth-child(2) { position:absolute; right:-55px; bottom:-65px; width:230px; height:150px; border:2px solid rgba(255,255,255,.22); border-radius:22px; }
.portal-pitch-marks>b { position:absolute; right:0; top:50%; width:42%; border-top:2px solid rgba(255,255,255,.2); transform:rotate(-8deg); }
.portal-pitch-marks .route-one,.portal-pitch-marks .route-two { position:absolute; display:block; width:95px; height:46px; border-top:3px dashed rgba(255,237,147,.72); border-radius:50%; transform:rotate(-18deg); }
.portal-pitch-marks .route-one { left:51%; bottom:35px; }.portal-pitch-marks .route-two { left:62%; bottom:70px; transform:rotate(17deg); }
.football-ribbon { height:38px; margin:8px 18px -8px; display:flex; align-items:center; justify-content:center; gap:10px; color:#6f86a0; font-size:11px; font-weight:900; letter-spacing:.12em; }
.football-ribbon>span:not(.mini-goal) { width:9px; height:9px; display:grid; place-items:center; color:#20aaa9; font-size:9px; }
.football-ribbon>i { width:43px; border-top:2px dashed #bdcedb; transform:rotate(-4deg); }
.football-ribbon>i:nth-of-type(2) { transform:rotate(5deg); }.football-ribbon>i:nth-of-type(3) { transform:rotate(-3deg); }
.football-ribbon .mini-goal { width:29px; height:18px; border:2px solid #9bb2c4; border-bottom:0; position:relative; }
.football-ribbon .mini-goal:after { content:""; position:absolute; inset:3px; background:repeating-linear-gradient(45deg,transparent 0 4px,#c3d1dc 5px 6px); }
.portal-grid { margin-top:25px; display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.portal-card {
  --accent:#6654e8; min-height:300px; padding:25px 24px; display:flex; flex-direction:column; position:relative; overflow:hidden;
  color:#17324d; text-decoration:none; border:1px solid rgba(36,77,116,.11); border-radius:27px; background:rgba(255,255,255,.9);
  box-shadow:0 18px 42px rgba(50,82,115,.1); transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;
}
.portal-card:after { content:""; position:absolute; right:-40px; bottom:-50px; width:130px; height:130px; border-radius:50%; background:var(--accent); opacity:.08; }
.portal-card:hover { transform:translateY(-7px); border-color:color-mix(in srgb,var(--accent) 48%,white); box-shadow:0 24px 50px rgba(50,82,115,.16); }
.portal-card.profile { --accent:#6b55e8; }.portal-card.questionnaire { --accent:#f279a6; }.portal-card.video { --accent:#f6a12a; }.portal-card.cognition { --accent:#14a8aa; }
.portal-number { font-size:12px; letter-spacing:.15em; color:#8da0b1; font-weight:950; }
.portal-icon {
  width:62px; height:62px; margin:26px 0 20px; display:grid; place-items:center; border-radius:20px;
  color:white; background:var(--accent); font-size:27px; font-weight:900; box-shadow:0 12px 22px color-mix(in srgb,var(--accent) 25%,transparent);
}
.portal-icon>span { display:grid; place-items:center; }
.icon-jersey { width:42px; height:39px; padding-top:5px; color:white; font-size:15px; font-weight:950; clip-path:polygon(20% 0,36% 9%,64% 9%,80% 0,100% 22%,87% 38%,78% 30%,78% 100%,22% 100%,22% 30%,13% 38%,0 22%); background:rgba(255,255,255,.27); }
.icon-board { width:35px; height:42px; border:3px solid white; border-radius:5px; color:white; font-size:20px; position:relative; }
.icon-board:before { content:""; position:absolute; width:15px; height:5px; left:7px; top:-7px; border-radius:4px; background:white; }
.icon-play { width:41px; height:41px; border:2px solid rgba(255,255,255,.65); border-radius:50%; padding-left:3px; font-size:20px; }
.icon-football { width:42px; height:42px; border:4px dashed white; border-radius:50%; font-size:14px; }
.portal-role { width:max-content; margin:-8px 0 8px; padding:4px 8px; border-radius:999px; color:var(--accent); background:color-mix(in srgb,var(--accent) 9%,white); font-size:10px; font-weight:950; letter-spacing:.08em; }
.portal-card h2 { font-size:24px; line-height:1.25; margin:0 0 10px; letter-spacing:-.03em; }
.portal-card p { color:#72879a; font-size:14px; line-height:1.65; margin:0 0 24px; }
.portal-card b { margin-top:auto; color:var(--accent); font-size:14px; }
.portal-card b i { display:inline-grid; place-items:center; width:27px; height:27px; margin-left:5px; border-radius:50%; background:color-mix(in srgb,var(--accent) 11%,white); font-style:normal; }
.portal-ready { position:absolute; right:20px; top:20px; border-radius:999px; padding:6px 10px; color:#098b85; background:#dff8f4; font-size:11px; font-weight:900; }

/* V1.7: stage-led athlete journey */
.assessment-route { margin-top:34px; }
.route-heading { display:flex; align-items:end; justify-content:space-between; gap:30px; margin-bottom:18px; }
.route-kicker { color:#6552e5; font-size:12px; font-weight:950; letter-spacing:.16em; }
.route-heading h2 { margin:5px 0 0; color:#17324d; font-size:31px; letter-spacing:-.03em; }
.route-heading>p { max-width:520px; margin:0; color:#71869a; text-align:right; line-height:1.7; }
.baseline-stage { padding:28px; border:1px solid rgba(36,77,116,.12); border-radius:30px; background:rgba(255,255,255,.91); box-shadow:0 20px 48px rgba(50,82,115,.1); }
.stage-header { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:18px; padding-bottom:23px; border-bottom:1px solid #e4edf3; }
.stage-code { width:64px; height:64px; display:grid; place-items:center; border-radius:21px; color:white; background:linear-gradient(145deg,#6652e5,#3c8fe6); box-shadow:0 13px 26px rgba(92,76,210,.22); font-size:24px; font-weight:950; }
.stage-label { color:#6752e4; font-size:11px; font-weight:950; letter-spacing:.12em; }
.stage-header h3 { margin:4px 0 4px; color:#17324d; font-size:26px; }.stage-header p { margin:0; color:#74899b; font-size:14px; }
.stage-count { padding:8px 12px; border-radius:999px; color:#0b8985; background:#e0f8f4; font-size:12px; font-weight:900; }
.baseline-steps { margin-top:22px; display:grid; grid-template-columns:repeat(4,1fr); gap:13px; }
.route-step { --accent:#6654e8; min-width:0; padding:18px 16px; display:grid; grid-template-columns:auto 1fr; gap:12px; position:relative; color:#17324d; text-decoration:none; border:1px solid #e0eaf1; border-radius:21px; background:#fbfdff; transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease; }
.route-step:hover { transform:translateY(-4px); border-color:color-mix(in srgb,var(--accent) 42%,#e0eaf1); box-shadow:0 15px 30px rgba(50,82,115,.1); }
.route-step.profile{--accent:#6b55e8}.route-step.questionnaire{--accent:#f279a6}.route-step.video{--accent:#f6a12a}.route-step.cognition{--accent:#14a8aa;border-color:rgba(20,168,170,.32);background:#f7fdfd}
.step-order { position:absolute; top:13px; right:14px; color:#9aabba; font-size:10px; font-weight:950; }
.route-step-icon { width:46px; height:46px; display:grid; place-items:center; border-radius:15px; color:white; background:var(--accent); box-shadow:0 9px 17px color-mix(in srgb,var(--accent) 22%,transparent); }
.route-step-icon .icon-jersey { width:31px; height:29px; font-size:11px; }.route-step-icon .icon-board { width:26px; height:31px; border-width:2px; font-size:15px; }.route-step-icon .icon-board:before { width:11px; height:4px; left:6px; top:-5px; }.route-step-icon .icon-play { width:31px; height:31px; font-size:13px; }.route-step-icon .icon-football { width:32px; height:32px; border-width:3px; font-size:10px; }
.route-step>div:nth-of-type(2) { min-width:0; padding-top:2px; }.route-step small { display:block; width:max-content; max-width:100%; color:var(--accent); font-size:10px; font-weight:900; }.route-step small.active,.followup-status.active { color:#6550dc; background:#eeeaff; }.route-step small.done,.followup-status.done { color:#087f7b; background:#dff8f4; }.route-step strong { display:block; margin-top:6px; font-size:17px; }.route-step p { margin:5px 0 18px; color:#7a8e9f; font-size:12px; line-height:1.5; }.step-arrow { position:absolute; right:14px; bottom:13px; color:var(--accent); font-weight:950; }
.followup-heading { margin:24px 8px 13px; display:flex; align-items:center; gap:14px; color:#70869a; font-size:12px; font-weight:850; }.followup-heading i { flex:1; border-top:2px dashed #c8d7e2; }
.followup-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.followup-stage { min-height:185px; padding:24px 25px; display:grid; grid-template-columns:auto 1fr auto; grid-template-rows:1fr auto; align-items:start; gap:8px 18px; position:relative; overflow:hidden; color:#17324d; text-decoration:none; border:1px solid rgba(36,77,116,.11); border-radius:25px; background:rgba(255,255,255,.91); box-shadow:0 15px 34px rgba(50,82,115,.08); transition:transform .2s ease,box-shadow .2s ease; }.followup-stage:hover { transform:translateY(-4px); box-shadow:0 20px 40px rgba(50,82,115,.13); }.followup-stage:after { content:""; position:absolute; width:130px; height:130px; right:-55px; bottom:-65px; border-radius:50%; background:#20b5b8; opacity:.08; }
.followup-code { grid-row:1/3; width:58px; height:58px; display:grid; place-items:center; border-radius:19px; color:white; background:linear-gradient(145deg,#14a8aa,#3e8de4); font-size:20px; font-weight:950; }.followup-stage.t3 .followup-code { background:linear-gradient(145deg,#ee8f37,#e85d91); }
.followup-stage small { color:#788da0; font-size:11px; font-weight:900; letter-spacing:.1em; }.followup-stage h3 { margin:5px 0 3px; font-size:23px; }.followup-stage p { margin:0; color:#778b9c; font-size:13px; }.followup-status { align-self:start; padding:6px 9px; border-radius:999px; color:#687f93; background:#edf3f7; font-size:11px; font-weight:900; }.followup-stage b { grid-column:2/4; align-self:end; color:#0b9997; font-size:13px; }.followup-stage.t3 b { color:#dc6a69; }
.route-policy { margin-top:16px; padding:15px 18px; display:flex; align-items:center; gap:12px; border-radius:17px; color:#61788d; background:#edf7f6; font-size:13px; line-height:1.6; }.route-policy>span { width:27px; height:27px; flex:0 0 auto; display:grid; place-items:center; border-radius:50%; color:white; background:#16a49f; font-weight:950; }.route-policy p { margin:0; }.route-policy b { color:#187c79; }

@media(max-width:900px){
  .route-heading{align-items:start}.route-heading>p{text-align:left}.baseline-steps{grid-template-columns:1fr 1fr}.followup-stage{grid-template-columns:auto 1fr}.followup-status{grid-column:2}.followup-stage b{grid-column:2}
}
@media(max-width:620px){
  .assessment-route{margin-top:26px}.route-heading{display:block}.route-heading>p{margin-top:8px}.baseline-stage{padding:20px 16px}.stage-header{grid-template-columns:auto 1fr}.stage-count{grid-column:2;width:max-content}.stage-header h3{font-size:23px}.baseline-steps{grid-template-columns:1fr}.route-step{min-height:105px}.followup-grid{grid-template-columns:1fr}.followup-stage{min-height:170px;padding:20px}.route-policy{align-items:flex-start}
}

/* Reserved second-level modules */
.module-body { display:grid; place-items:center; }
.module-shell { width:min(760px,90vw); padding:45px 0; }
.module-back { display:inline-block; margin-bottom:18px; color:#526a80; text-decoration:none; font-weight:800; }
.module-card { padding:64px 52px; text-align:center; border:1px solid rgba(36,77,116,.11); border-radius:34px; background:rgba(255,255,255,.9); box-shadow:0 24px 58px rgba(50,82,115,.12); }
.module-card .portal-kicker { color:#6b55e8; }
.module-big-icon { width:88px; height:88px; margin:0 auto 28px; display:grid; place-items:center; border-radius:28px; color:white; background:linear-gradient(145deg,#6951e8,#2ebbc1); font-size:38px; box-shadow:0 16px 28px rgba(90,82,216,.23); }
.module-card h1 { margin:12px 0; color:#17324d; font-size:40px; }
.module-card>p { color:#71869a; font-size:17px; }
.module-notice { margin-top:32px; padding:17px; border-radius:17px; color:#5d7084; background:#eef6fb; font-size:14px; }

/* Livelier participant login */
.login-body {
  color-scheme:light; overflow:hidden; color:#17324d;
  background:
    radial-gradient(circle at 12% 12%,rgba(255,218,78,.53),transparent 20%),
    radial-gradient(circle at 86% 12%,rgba(106,224,199,.4),transparent 22%),
    linear-gradient(135deg,#f8fbff 0%,#eeeaff 52%,#e7fbf8 100%);
}
.login-body:before { content:""; position:fixed; width:580px; height:580px; left:-310px; bottom:-390px; border-radius:50%; background:#6553e8; opacity:.13; }
.login-shell { width:min(1120px,90vw); grid-template-columns:1.05fr .78fr; gap:6vw; position:relative; z-index:1; }
.login-credit { grid-column:1/-1; margin:-18px 0 0; text-align:center; color:#60778c; font-size:13px; font-weight:700; letter-spacing:.02em; line-height:1.65; }
.youth-intro { min-height:590px; display:flex; flex-direction:column; justify-content:center; position:relative; }
.login-institutions { width:max-content; max-width:100%; margin-bottom:24px; padding:10px 15px; display:flex; align-items:center; gap:12px; border:1px solid rgba(255,255,255,.8); border-radius:20px; background:rgba(255,255,255,.78); box-shadow:0 12px 30px rgba(70,63,165,.1); backdrop-filter:blur(16px); }
.login-institutions .portal-logo { width:50px; height:50px; box-shadow:none; }
.login-institutions .ciss-lockup { width:min(275px,56vw); }
.login-institutions.dark-surface { background:rgba(255,255,255,.94); border-color:rgba(255,255,255,.16); }
.youth-badge { width:max-content; padding:10px 15px; border-radius:999px; color:#604bda; background:rgba(255,255,255,.77); box-shadow:0 10px 28px rgba(70,63,165,.12); font-size:12px; font-weight:950; letter-spacing:.14em; }
.youth-intro h1 { color:#18354f; font-size:clamp(52px,6vw,82px); margin:22px 0 0; position:relative; z-index:3; }
.youth-intro h1 span { color:#6652e5; }
.football-scene { width:100%; height:205px; margin-top:22px; position:relative; border-radius:105px 28px 28px 28px; overflow:hidden; background:linear-gradient(165deg,#63d9cf 0%,#21b4a8 53%,#1c9f86 54%,#178a74 100%); box-shadow:0 22px 42px rgba(25,144,132,.2); }
.football-scene:before,.football-scene:after { content:""; position:absolute; border:3px solid rgba(255,255,255,.72); }
.football-scene:before { width:215px; height:110px; left:-56px; bottom:-24px; border-radius:50%; }
.football-scene:after { width:75px; height:112px; right:0; top:45px; border-right:0; }
.football-scene .sun { position:absolute; width:57px; height:57px; right:25%; top:22px; border-radius:50%; background:#ffdd57; box-shadow:0 0 0 12px rgba(255,221,87,.18); }
.football-scene .goal { position:absolute; width:105px; height:78px; right:24px; bottom:22px; border:5px solid rgba(255,255,255,.88); border-bottom:0; background:repeating-linear-gradient(45deg,transparent 0 12px,rgba(255,255,255,.24) 13px 15px); }
.football-scene .football { position:absolute; left:41%; bottom:29px; width:52px; height:52px; display:grid; place-items:center; border-radius:50%; color:#253b54; background:white; border:5px dashed #253b54; font-size:15px; transform:rotate(15deg); box-shadow:0 8px 15px rgba(26,79,69,.22); }
.football-scene .runner { position:absolute; left:25%; top:49px; width:82px; height:82px; display:grid; place-items:center; border-radius:50% 50% 45% 55%; color:#ffdb4e; background:#6753e6; transform:rotate(-12deg); font-size:36px; box-shadow:0 12px 22px rgba(47,43,122,.22); }
.youth-login-card { padding:37px; max-width:450px; color:#17324d; border:1px solid rgba(255,255,255,.72); background:rgba(255,255,255,.9); box-shadow:0 28px 70px rgba(70,63,165,.18); backdrop-filter:blur(18px); }
.youth-login-card .step-tag { color:#e85d91; }
.youth-login-card h2 { color:#17324d; font-size:36px; }
.youth-login-card label { color:#526b80; }
.youth-login-card input { color:#17324d; background:#f4f8fc; border-color:#d5e1eb; }
.youth-login-card input:focus { background:white; border-color:#6854e8; box-shadow:0 0 0 4px rgba(104,84,232,.12); }
.youth-login-card .primary { background:linear-gradient(135deg,#6952e8,#3c8bea); box-shadow:0 14px 28px rgba(89,74,213,.25); }
.youth-login-card .login-secondary { color:#71869a; }
.brand-mark.zju-mark { padding:4px; border-radius:50%; background:white; border:1px solid rgba(89,169,255,.25); }
.brand-mark.zju-mark img { width:100%; height:100%; display:block; object-fit:contain; }

@media(max-width:980px){
  .portal-grid{grid-template-columns:1fr 1fr}.site-brand-title{display:none}.login-shell{grid-template-columns:1fr;max-width:700px;padding:48px 0}.login-credit{margin:-18px 10px 0}.youth-intro{min-height:0}.football-scene{height:180px}.youth-login-card{justify-self:stretch;max-width:none}.login-body{overflow:auto}
}
@media(max-width:620px){
  .portal-topbar{height:68px;padding:0 12px}.portal-logo{width:40px;height:40px}.portal-brand{gap:8px}.portal-brand .brand-divider{height:30px}.portal-brand .ciss-lockup{width:155px}.portal-brand strong{font-size:15px}.portal-actions{gap:6px}.portal-actions>span{display:none}.portal-logout{padding:8px 11px}.portal-shell{padding-top:22px}.portal-welcome{min-height:230px;padding:30px 26px}.portal-welcome p{font-size:15px;max-width:240px}.portal-ball{width:92px;height:92px;margin-right:-23px}.portal-ball:before{width:29px;height:27px;left:31px;top:29px}.portal-ball:after{inset:9px;border-width:3px}.portal-pitch-marks .route-one,.portal-pitch-marks .route-two{display:none}.football-ribbon{margin-left:0;margin-right:0;gap:6px}.football-ribbon>i{width:17px}.portal-grid{grid-template-columns:1fr}.portal-card{min-height:250px}.portal-icon{margin:20px 0 15px}.module-card{padding:44px 24px}.module-card h1{font-size:32px}.login-shell{width:min(92vw,560px)}.login-credit{margin:-20px 8px 0;font-size:12px}.login-institutions{gap:9px;padding:8px 11px}.login-institutions .portal-logo{width:44px;height:44px}.login-institutions .ciss-lockup{width:min(220px,61vw)}.youth-intro h1{font-size:48px}.football-scene{height:145px}.football-scene .runner{width:65px;height:65px;top:38px}.football-scene .goal{width:86px;height:65px}.youth-login-card{padding:27px}
}

/* V1.4: history-led cognitive wave workspace */
.cognition-body {
  color-scheme:light; color:#17324d; min-height:100vh;
  background:linear-gradient(165deg,#f8fcff 0%,#eff8ff 55%,#f8f7ff 100%);
}
.cognition-topbar { height:76px; color:#17324d; background:rgba(255,255,255,.88); border-bottom:1px solid rgba(42,85,125,.1); }
.cognition-topbar .brand { color:#17324d; }.cognition-topbar .brand small { color:#7890a3; }
.cognition-topbar .ciss-lockup { width:195px; }
.cognition-brand-title { margin-left:2px; padding-left:14px; border-left:1px solid rgba(53,89,119,.14); }
.cognition-topbar .top-nav a,.cognition-topbar .top-actions { color:#667f94; }.cognition-topbar .top-nav a:hover { color:#5b4ed6; }
.cognition-topbar .ghost { color:#4e687e; background:#edf4fa; border-color:#d7e4ed; }
.cognition-shell { width:min(1160px,91vw); margin:0 auto; padding:36px 0 70px; }
.cognition-intro {
  min-height:230px; padding:42px 50px; display:flex; align-items:center; justify-content:space-between; position:relative; overflow:hidden;
  color:white; border-radius:32px; background:linear-gradient(120deg,#6250e7,#397ce4 50%,#20b8c1); box-shadow:0 22px 52px rgba(68,86,193,.19);
}
.cognition-intro:before { content:""; position:absolute; width:310px; height:310px; right:11%; top:-225px; border:2px solid rgba(255,255,255,.18); border-radius:50%; }
.cognition-intro>div:first-child { position:relative; z-index:2; }.cognition-intro h1 { margin:12px 0 8px; font-size:clamp(33px,4.1vw,52px); letter-spacing:-.04em; }.cognition-intro p { margin:0; max-width:690px; color:rgba(255,255,255,.82); font-size:16px; line-height:1.75; }
.cognition-ball { width:112px; height:112px; margin-left:35px; flex:0 0 auto; position:relative; border-radius:50%; background:white; box-shadow:0 20px 34px rgba(22,48,116,.22),inset -12px -13px rgba(20,62,111,.08); transform:rotate(-10deg); }
.cognition-ball:before { content:""; position:absolute; inset:11px; border:4px dashed #28435e; border-radius:50%; }.cognition-ball i { position:absolute; width:34px; height:32px; left:39px; top:39px; background:#28435e; clip-path:polygon(50% 0,100% 36%,82% 100%,18% 100%,0 36%); }
.wave-picker-section { padding-top:42px; }.clean-heading { display:flex; justify-content:space-between; align-items:end; gap:30px; margin-bottom:20px; }.clean-heading h2 { margin:5px 0 0; color:#17324d; font-size:30px; }.clean-heading>p { max-width:520px; margin:0; color:#70869a; line-height:1.7; text-align:right; }.section-kicker { color:#6652e5; font-size:12px; font-weight:950; letter-spacing:.14em; }
.wave-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }.wave-loading { grid-column:1/-1; padding:45px; text-align:center; color:#7890a3; border:1px dashed #cbdbe7; border-radius:24px; background:rgba(255,255,255,.72); }.wave-loading.error { color:#ca5365; }
.wave-card {
  min-height:276px; padding:25px; display:flex; flex-direction:column; align-items:flex-start; position:relative; overflow:hidden; text-align:left;
  color:#17324d; border:1px solid rgba(40,83,122,.12); border-radius:26px; background:rgba(255,255,255,.92); box-shadow:0 17px 38px rgba(50,82,115,.09); transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.wave-card:before { content:""; position:absolute; width:120px; height:120px; right:-50px; bottom:-55px; border-radius:50%; background:#6954e8; opacity:.06; }.wave-card:hover { transform:translateY(-5px); border-color:rgba(105,84,232,.38); box-shadow:0 24px 45px rgba(50,82,115,.14); }.wave-card.suggested { border-color:rgba(38,177,180,.48); box-shadow:0 19px 42px rgba(26,151,157,.12); }
.wave-code { color:#8499ab; font-size:12px; font-weight:950; letter-spacing:.15em; }.wave-suggested { position:absolute; top:20px; right:20px; padding:6px 10px; border-radius:999px; color:#087f7b; background:#dff8f4; font-size:11px; font-weight:950; }.wave-status { margin-top:27px; padding:5px 8px; border-radius:7px; font-size:11px; font-weight:900; }.wave-status.new { color:#657d91; background:#edf3f7; }.wave-status.active { color:#5f4cdb; background:#ece9ff; }.wave-status.done { color:#087f7b; background:#dff8f4; }
.wave-card>strong { margin-top:12px; font-size:23px; }.wave-card>b { margin-top:4px; color:#536d82; font-size:14px; }.wave-card>small { margin-top:7px; color:#8a9cac; }.wave-count { margin-top:auto; color:#6d8295; font-size:12px; }.wave-count em { color:#5f4bdc; font-size:19px; font-style:normal; font-weight:950; }.wave-bar { width:100%; height:5px; margin:11px 0 15px; overflow:hidden; border-radius:999px; background:#e8eff4; }.wave-bar i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#6652e5,#24b7b7); }.wave-enter { color:#6250df; font-size:13px; font-weight:950; }
.wave-workspace { margin-top:36px; padding:34px; scroll-margin-top:95px; border:1px solid rgba(40,83,122,.12); border-radius:30px; background:rgba(255,255,255,.94); box-shadow:0 22px 52px rgba(50,82,115,.1); }.wave-workspace[hidden],.modal-backdrop[hidden] { display:none; }.wave-back { margin:0 0 27px; padding:0; border:0; color:#667d91; background:transparent; font-weight:850; }.wave-back:hover { color:#5f4bdc; }
.workspace-head { display:flex; justify-content:space-between; align-items:start; gap:24px; }.workspace-head h2 { margin:6px 0 5px; color:#17324d; font-size:36px; }.workspace-head p { margin:0; color:#7890a3; }.workspace-progress { min-width:108px; padding:15px 18px; text-align:center; border-radius:18px; color:#6350df; background:#f0edff; }.workspace-progress strong { display:block; font-size:26px; }.workspace-progress span { color:#7d72b8; font-size:11px; }.wave-progress-track { width:100%; height:7px; margin:22px 0; overflow:hidden; border-radius:999px; background:#e9f0f5; }.wave-progress-track span { display:block; width:0; height:100%; border-radius:inherit; background:linear-gradient(90deg,#6652e5,#22b7b6); transition:width .25s ease; }
.device-compact { display:flex; align-items:center; justify-content:space-between; gap:22px; margin:0 0 18px; padding:13px 16px; border-radius:15px; background:#f2f7fa; }.device-compact>div { display:grid; grid-template-columns:auto auto; align-items:center; column-gap:9px; }.device-compact small { grid-column:2; color:#8597a7; margin-top:2px; }.device-compact .checkline { color:#536b80; }.device-compact .checkline input { background:white; border-color:#bdceda; }
.wave-task-list { display:grid; gap:11px; }.wave-task { min-height:92px; padding:15px 16px; display:grid; grid-template-columns:36px 48px minmax(220px,1fr) auto minmax(150px,auto); align-items:center; gap:15px; border:1px solid #dfe9f0; border-radius:18px; background:white; }.wave-task.ready { border-color:rgba(101,82,229,.45); box-shadow:0 9px 25px rgba(91,75,204,.08); }.wave-task.done { background:#f8fcfb; border-color:#d8ece8; }.wave-task.planned,.wave-task.locked { background:#f7f9fb; }.task-sequence { color:#91a2b2; font-size:11px; font-weight:950; }.task-letter { width:45px; height:45px; display:grid; place-items:center; border-radius:15px; color:white; background:linear-gradient(145deg,#6652e5,#32abc3); font-weight:950; }.wave-task.planned .task-letter,.wave-task.locked .task-letter { color:#8195a7; background:#e6edf2; }.wave-task.done .task-letter { background:linear-gradient(145deg,#19a89f,#45c69d); }.task-identity { display:flex; flex-direction:column; min-width:0; }.task-identity strong { color:#19364f; font-size:18px; }.task-identity span { color:#72889b; font-size:12px; margin-top:3px; }.task-identity small { color:#9aabba; margin-top:3px; }.task-state { padding:6px 9px; border-radius:999px; white-space:nowrap; font-size:11px; font-weight:900; }.task-state.new,.task-state.locked,.task-state.planned { color:#71879a; background:#edf3f7; }.task-state.ready,.task-state.active { color:#5f4bdc; background:#ece9ff; }.task-state.done { color:#087f7b; background:#dff8f4; }.task-controls { min-width:145px; text-align:right; }.task-action,.task-retest { min-width:140px; padding:11px 13px; border:1px solid #d7e3eb; border-radius:11px; color:#657d91; background:white; font-weight:900; font-size:12px; text-decoration:none; }.task-action.primary { display:inline-block; color:white; border-color:transparent; background:linear-gradient(135deg,#6652e5,#338cde); }.task-action:disabled { cursor:not-allowed; color:#9aacba; background:#edf2f5; }.task-retest { color:#60778b; background:transparent; }.task-retest:hover { color:#5f4bdc; border-color:#a99ff0; }
.wave-message { margin:12px 0 0; }.data-policy { margin-top:20px; padding:15px 17px; display:flex; gap:15px; border-radius:15px; color:#61788d; background:#eef7f6; font-size:13px; }.data-policy b { color:#11827e; white-space:nowrap; }
.wave-history-card { margin-top:26px; padding:30px; scroll-margin-top:95px; border:1px solid rgba(40,83,122,.12); border-radius:27px; background:rgba(255,255,255,.9); box-shadow:0 18px 40px rgba(50,82,115,.08); }.history-heading { align-items:center; }.clean-button { padding:10px 15px; border:1px solid #d6e2eb; border-radius:11px; color:#587086; background:white; font-weight:850; }.clean-table th,.clean-table td { color:#526a7f; border-bottom-color:#e5edf2; }.clean-table th { color:#8a9baa; }.clean-table td b { color:#5d4bd4; }.clean-status { display:inline-block; padding:5px 8px; border-radius:999px; font-size:11px; font-weight:900; }.clean-status.done { color:#087f7b; background:#dff8f4; }.clean-status.active { color:#5f4bdc; background:#ece9ff; }.saved-record { color:#7a8f9f; font-size:12px; }.record-link { color:#5e4bd8; text-decoration:none; font-weight:900; }
.modal-backdrop { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:22px; background:rgba(15,36,57,.52); backdrop-filter:blur(8px); }.retest-modal { width:min(460px,92vw); padding:36px; text-align:center; border-radius:27px; color:#17324d; background:white; box-shadow:0 35px 90px rgba(16,37,68,.28); }.modal-mark { width:62px; height:62px; margin:0 auto 16px; display:grid; place-items:center; border-radius:19px; color:#6551e3; background:#efecff; font-size:31px; font-weight:900; }.retest-modal h2 { margin:0 0 10px; }.retest-modal p { color:#72879a; line-height:1.7; }.modal-actions { margin-top:24px; display:grid; grid-template-columns:1fr 1fr; gap:11px; }.modal-actions button { min-height:48px; }

@media(max-width:900px){
  .cognition-brand-title{display:none}.wave-grid{grid-template-columns:1fr}.wave-card{min-height:220px}.wave-task{grid-template-columns:34px 46px 1fr auto}.task-state{grid-column:3}.task-controls{grid-column:4;grid-row:1/3}.cognition-intro{padding:35px}.clean-heading{align-items:start}.clean-heading>p{text-align:left}.device-compact{align-items:flex-start;flex-direction:column}
}
@media(max-width:640px){
  .cognition-topbar{height:68px;padding:0 12px}.cognition-topbar .brand{gap:8px}.cognition-topbar .brand-mark{width:40px;height:40px}.cognition-topbar .brand-divider{height:30px}.cognition-topbar .ciss-lockup{width:150px}.cognition-topbar .brand strong{font-size:14px}.cognition-topbar .brand small{display:block}.cognition-topbar .top-actions{gap:5px}.cognition-topbar .top-actions>span{display:none}.cognition-topbar .ghost{padding:8px 10px}.cognition-shell{padding-top:22px}.cognition-intro{min-height:220px;padding:28px 24px}.cognition-intro p{font-size:14px;max-width:245px}.cognition-ball{width:78px;height:78px;margin-right:-30px}.cognition-ball:before{inset:8px;border-width:3px}.cognition-ball i{width:24px;height:22px;left:27px;top:27px}.clean-heading{display:block}.clean-heading>p{margin-top:10px}.wave-workspace{padding:22px 17px}.workspace-head h2{font-size:29px}.workspace-progress{min-width:84px;padding:12px}.wave-task{grid-template-columns:28px 42px 1fr;gap:10px}.task-state{grid-column:2/4}.task-controls{grid-column:2/4;grid-row:auto;text-align:left}.task-action,.task-retest{width:100%}.data-policy{display:block}.data-policy b{display:block;margin-bottom:6px}.wave-history-card{padding:23px 18px}
}

/* V1.8: mandatory participant check-in */
.checkin-body {
  color-scheme:light; color:#17324d; min-height:100vh;
  background:
    radial-gradient(circle at 7% 4%,rgba(255,219,102,.28),transparent 19%),
    radial-gradient(circle at 94% 11%,rgba(66,211,201,.22),transparent 23%),
    linear-gradient(155deg,#fbfdff 0%,#eef7ff 58%,#f8f5ff 100%);
}
.checkin-topbar {
  min-height:76px; padding:10px max(22px,5vw); display:flex; align-items:center; justify-content:space-between; gap:24px;
  background:rgba(255,255,255,.86); border-bottom:1px solid rgba(42,85,125,.1); backdrop-filter:blur(18px);
}
.checkin-brand { min-width:0; display:flex; align-items:center; gap:11px; }
.checkin-brand .portal-logo { width:46px; height:46px; box-shadow:none; }
.checkin-brand .ciss-lockup { width:218px; }
.checkin-topbar>strong { color:#2e5574; font-size:15px; letter-spacing:.03em; }
.checkin-shell { width:min(1120px,92vw); margin:0 auto; padding:42px 0 64px; }
.checkin-heading { text-align:center; }
.checkin-step { display:inline-block; padding:8px 13px; border-radius:999px; color:#6551df; background:#eeeaff; font-size:11px; font-weight:950; letter-spacing:.08em; }
.checkin-heading h1 { margin:14px 0 8px; color:#17324d; font-size:clamp(31px,4vw,48px); line-height:1.2; letter-spacing:-.04em; }
.checkin-heading p { margin:0; color:#71869a; font-size:16px; }
.checkin-grid { margin-top:30px; display:grid; grid-template-columns:.82fr 1.18fr; gap:20px; align-items:stretch; }
.checkin-card { padding:27px; position:relative; border:1px solid rgba(36,77,116,.11); border-radius:28px; background:rgba(255,255,255,.92); box-shadow:0 18px 44px rgba(50,82,115,.1); }
.checkin-number { position:absolute; right:23px; top:22px; color:#a3b2bf; font-size:11px; font-weight:950; letter-spacing:.15em; }
.checkin-card-title { display:flex; align-items:center; gap:13px; }
.checkin-card-title small { color:#6752e4; font-size:9px; font-weight:950; letter-spacing:.16em; }
.checkin-card-title h2 { margin:4px 0 0; color:#17324d; font-size:23px; }
.checkin-card-icon { width:48px; height:48px; flex:0 0 auto; position:relative; border-radius:16px; background:linear-gradient(145deg,#6751e7,#4b8ce8); box-shadow:0 10px 20px rgba(93,77,210,.19); }
.identity-icon:before { content:""; position:absolute; width:14px; height:14px; left:17px; top:9px; border-radius:50%; background:white; }
.identity-icon:after { content:""; position:absolute; width:27px; height:15px; left:10px; bottom:8px; border-radius:16px 16px 5px 5px; background:white; }
.camera-icon { background:linear-gradient(145deg,#0da7a5,#35c6bb); box-shadow:0 10px 20px rgba(16,158,154,.18); }
.camera-icon:before { content:""; position:absolute; width:28px; height:21px; left:10px; top:15px; border:3px solid white; border-radius:6px; }
.camera-icon:after { content:""; position:absolute; width:8px; height:8px; left:20px; top:22px; border:2px solid white; border-radius:50%; box-shadow:-7px -11px 0 -3px white; }
.identity-list { margin:28px 0 20px; border:1px solid #e1eaf1; border-radius:18px; overflow:hidden; background:#f8fbfd; }
.identity-list>div { min-height:70px; padding:15px 18px; display:grid; grid-template-columns:78px 1fr; align-items:center; }
.identity-list>div+div { border-top:1px solid #e1eaf1; }
.identity-list dt { color:#8497a7; font-size:12px; font-weight:800; }
.identity-list dd { margin:0; color:#19364f; font-size:18px; font-weight:900; }
.reference-block { margin:0 0 19px; padding:13px; border:1px solid #e1eaf1; border-radius:18px; background:#f8fbfd; }
.reference-heading { padding:0 2px 10px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.reference-heading span { color:#38536b; font-size:12px; font-weight:900; }.reference-heading small { color:#7c91a3; font-size:10px; }
.reference-photo { height:190px; overflow:hidden; position:relative; border-radius:14px; color:white; background:linear-gradient(145deg,#173b56,#102b40); }
.reference-photo>img { width:100%; height:100%; display:block; object-fit:cover; }
.reference-photo>img[hidden],.reference-empty[hidden] { display:none; }
.reference-empty { position:absolute; inset:0; padding:20px; display:grid; place-content:center; justify-items:center; text-align:center; }
.reference-empty>span { width:47px; height:47px; margin-bottom:9px; position:relative; border:2px dashed #6f9daf; border-radius:50%; }
.reference-empty>span:before { content:""; position:absolute; width:12px; height:12px; left:15px; top:8px; border-radius:50%; background:#7ba8b8; }
.reference-empty>span:after { content:""; position:absolute; width:25px; height:13px; left:9px; bottom:7px; border-radius:14px 14px 4px 4px; background:#7ba8b8; }
.reference-empty strong { font-size:13px; }.reference-empty small { margin-top:5px; color:#8eabba; font-size:10px; line-height:1.5; }
.checkin-choice { display:flex; align-items:flex-start; gap:10px; color:#38536b; font-size:13px; line-height:1.55; cursor:pointer; }
.checkin-choice[hidden] { display:none; }
.checkin-choice input { width:20px; height:20px; min-height:0; margin:0; flex:0 0 auto; accent-color:#6552e5; }
.identity-help { margin:17px 0 5px; color:#8598a8; font-size:12px; line-height:1.55; }
.checkin-link { padding:5px 0; color:#6753df; border:0; background:transparent; font-size:12px; font-weight:900; }
.camera-stage { height:310px; margin-top:22px; position:relative; overflow:hidden; border-radius:22px; color:white; background:linear-gradient(145deg,#183b56,#0d273b); }
.camera-stage video,.camera-stage>img { width:100%; height:100%; display:block; object-fit:cover; transform:scaleX(-1); }
.camera-stage>img { transform:none; }
.camera-stage video[hidden],.camera-stage>img[hidden],.camera-placeholder[hidden] { display:none; }
.face-guide { position:absolute; width:150px; height:205px; left:50%; top:50%; z-index:2; transform:translate(-50%,-50%); border:2px solid rgba(255,255,255,.78); border-radius:49% 49% 45% 45%; box-shadow:0 0 0 999px rgba(7,20,32,.14); pointer-events:none; }
.camera-placeholder { position:absolute; inset:0; z-index:3; display:grid; place-content:center; justify-items:center; gap:7px; color:#dce8f1; text-align:center; }
.camera-placeholder strong { font-size:16px; }.camera-placeholder small { color:#8fa9bc; font-size:12px; }
.camera-placeholder-icon { width:52px; height:52px; margin-bottom:5px; position:relative; border:3px solid #70c6d1; border-radius:17px; }
.camera-placeholder-icon:before { content:""; position:absolute; width:18px; height:18px; left:14px; top:13px; border:3px solid #70c6d1; border-radius:50%; }
.camera-placeholder-icon:after { content:""; position:absolute; width:11px; height:4px; left:6px; top:-7px; border-radius:3px; background:#70c6d1; }
.live-badge { position:absolute; left:14px; top:14px; z-index:4; padding:6px 9px 6px 22px; border-radius:999px; color:#c8d6e0; background:rgba(5,20,32,.55); font-size:10px; font-weight:900; backdrop-filter:blur(8px); }
.live-badge:before { content:""; position:absolute; width:7px; height:7px; left:9px; top:9px; border-radius:50%; background:#8699a8; }.live-badge.active:before { background:#ff5e68; box-shadow:0 0 0 4px rgba(255,94,104,.18); }
.camera-tips { margin:13px 0; display:flex; justify-content:center; gap:16px; color:#70869a; font-size:11px; }
.camera-tips span:before { content:"✓"; margin-right:4px; color:#12a39f; font-weight:950; }
.camera-actions { display:grid; grid-template-columns:1fr; gap:9px; }
.checkin-camera-button { min-height:48px; border-radius:14px; font-weight:900; }
.checkin-camera-button.secondary { color:#526d82; background:#eef5f9; border-color:#dbe6ed; }
.photo-match-choice { margin-top:13px; padding:13px 14px; border-radius:13px; color:#1d6867; background:#eaf8f6; }
.checkin-consent { margin-top:20px; padding:22px 25px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:18px; border:1px solid rgba(36,77,116,.1); border-radius:24px; background:rgba(255,255,255,.9); box-shadow:0 14px 36px rgba(50,82,115,.08); }
.privacy-shield { width:51px; height:57px; position:relative; background:linear-gradient(145deg,#18aaa5,#51c9a8); clip-path:polygon(50% 0,91% 16%,85% 70%,50% 100%,15% 70%,9% 16%); }
.privacy-shield:after { content:"✓"; position:absolute; inset:0; display:grid; place-items:center; color:white; font-size:22px; font-weight:950; }
.checkin-consent h2 { margin:0 0 5px; color:#17324d; font-size:18px; }.checkin-consent p { margin:0 0 10px; color:#71869a; font-size:12px; line-height:1.6; }
.checkin-choice.compact { font-size:12px; }.checkin-choice.compact input { width:18px; height:18px; }
.checkin-submit { min-width:210px; min-height:54px; padding:13px 19px; border:0; border-radius:15px; color:white; background:linear-gradient(135deg,#6552e5,#2b9fcf); box-shadow:0 13px 25px rgba(76,85,207,.22); font-weight:950; }
.checkin-submit span { margin-left:7px; }.checkin-submit:disabled { cursor:not-allowed; color:#8da0af; background:#e7eef3; box-shadow:none; }
.checkin-message { min-height:24px; margin:13px 0 0; text-align:center; color:#cf5063; font-size:13px; font-weight:800; }.checkin-message[data-type="success"] { color:#0a8d82; }
.checkin-credit { margin:5px 0 0; text-align:center; color:#70869a; font-size:12px; font-weight:750; }

@media(max-width:850px){
  .checkin-topbar>strong{display:none}.checkin-grid{grid-template-columns:1fr}.camera-stage{height:min(52vw,410px)}.checkin-consent{grid-template-columns:auto 1fr}.checkin-submit{grid-column:1/-1;width:100%}
}
@media(max-width:560px){
  .checkin-topbar{padding:8px 12px}.checkin-brand{gap:8px}.checkin-brand .portal-logo{width:40px;height:40px}.checkin-brand .brand-divider{height:29px}.checkin-brand .ciss-lockup{width:165px}.checkin-shell{padding:28px 0 45px}.checkin-heading h1{font-size:31px}.checkin-heading p{font-size:14px}.checkin-card{padding:22px 18px;border-radius:23px}.camera-stage{height:63vw;min-height:250px}.face-guide{width:118px;height:164px}.camera-tips{gap:8px;flex-wrap:wrap}.checkin-consent{grid-template-columns:1fr;padding:20px}.privacy-shield{width:44px;height:49px}.checkin-submit{grid-column:auto}.identity-list>div{grid-template-columns:65px 1fr}
}
