:root{
  --paper:#f3f0e8;--paper-hi:#fbfaf6;--ink:#0b1e35;--muted:#69737c;--hair:#c6cbc9;
  --blue:#1165ec;--blue-d:#084fc8;--blue-soft:#e5efff;--lime:#a2ed2e;--coral:#ff6845;
  --shadow:0 24px 60px rgba(19,35,52,.18);--font:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace
}
*{box-sizing:border-box}html,body,#app{margin:0;min-width:320px;height:100%}body{overflow:hidden;background:var(--paper);color:var(--ink);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button{font:inherit;color:inherit;cursor:pointer}.icon{width:24px;height:24px;display:block}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}
button:focus-visible,[role=button]:focus-visible{outline:3px solid rgba(17,101,236,.32);outline-offset:3px}.brand{display:inline-flex;align-items:center;gap:14px;white-space:nowrap}.brand .blogo{width:36px;height:36px;color:var(--blue)}.brand b{font-size:26px;line-height:1;letter-spacing:-.04em;font-weight:820}.brand i{padding-left:17px;border-left:1px solid #99a1a3;color:var(--ink);font-size:18px;font-style:normal;font-weight:720;letter-spacing:.05em}.btn{min-height:44px;padding:0 20px;border:1px solid #bfc5c5;border-radius:7px;background:#fff;font-weight:760;transition:transform .18s,box-shadow .18s,background .18s}.btn:hover{transform:translateY(-1px);box-shadow:0 10px 28px rgba(17,38,70,.14)}.btn-primary{border-color:var(--blue);color:#fff;background:linear-gradient(180deg,#2a79ef,#0f5fdf);box-shadow:0 10px 24px rgba(17,101,236,.22),inset 0 1px rgba(255,255,255,.28)}.btn-primary:hover{background:linear-gradient(180deg,#347ff4,#084fc8)}

/* 注册表与关卡清单启动态 */
.catalog-state{height:100%;display:grid;place-items:center;padding:36px;background:radial-gradient(circle at 72% 18%,rgba(255,255,255,.92),transparent 30%),repeating-linear-gradient(0deg,rgba(24,39,52,.018) 0 1px,transparent 1px 6px),var(--paper)}.catalog-state>.brand{position:absolute;left:42px;top:28px}.catalog-state section{width:min(520px,100%);padding:44px;border:1px solid #b9c1c1;border-radius:18px;background:rgba(251,250,246,.96);box-shadow:var(--shadow);text-align:center}.catalog-state h1{margin:14px 0 5px;font-size:28px}.catalog-state p{margin:0 auto 22px;color:var(--muted)}.catalog-state small{display:block;margin-top:14px;color:#8b4a3d;font:11px/1.5 var(--mono);overflow-wrap:anywhere}.catalog-mark{width:44px;height:44px;display:grid;place-items:center;margin:auto;border:2px solid var(--blue);border-radius:50%;color:var(--blue);font:800 22px var(--mono);animation:catalog-spin 1.1s linear infinite}.catalog-state.error .catalog-mark{border-color:var(--coral);color:#a53f2c;animation:none}.catalog-state.error section{border-color:#e2b1a6}@keyframes catalog-spin{to{transform:rotate(360deg)}}

/* 登录 · 纸上起飞简报 */
.login{position:relative;height:100%;overflow:hidden;padding:0 54px 30px;background:radial-gradient(circle at 74% 14%,rgba(255,255,255,.93),transparent 27%),repeating-linear-gradient(0deg,rgba(24,39,52,.017) 0 1px,transparent 1px 6px),#f3f0e8}
.login:before{content:"";position:absolute;z-index:0;left:0;right:0;top:95px;bottom:25px;border:1px solid rgba(25,43,58,.13);border-width:1px 0;pointer-events:none}.login:after{content:"";position:absolute;z-index:0;inset:0;pointer-events:none;background:linear-gradient(77deg,transparent 49.8%,rgba(30,47,59,.045) 50%,transparent 50.2%),linear-gradient(164deg,transparent 72%,rgba(30,47,59,.035) 72.1%,transparent 72.3%)}
.login-top{height:65px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #899397;position:relative;z-index:5}.login-top .brand .blogo{color:#101f32}.workshop-title{font-size:20px;font-weight:780;letter-spacing:.04em}.workshop-title:after{content:"///";margin-left:18px;color:var(--blue);font:19px var(--mono);letter-spacing:.08em}
.login-index{position:absolute;z-index:4;left:54px;top:130px;bottom:38px;width:112px;display:flex;flex-direction:column;color:#223248}.index-block{font-size:15px;font-weight:650}.index-block .icon{width:26px;height:26px;margin:0 0 8px}.index-block b{display:block}.index-rule{display:block;width:22px;height:1px;margin:13px 0 55px;background:#24364a}.index-block .icon-seat{margin-top:0}.index-foot{margin-top:auto;font:12px/1.5 var(--mono);letter-spacing:.04em}.index-foot>b{font-size:14px}.index-foot small{display:block;margin-top:43px;white-space:nowrap}.index-dashes{display:flex;gap:5px;margin-top:10px}.index-dashes i{width:20px;height:3px;background:#c8cbc8}.index-dashes i:first-child{background:var(--blue)}
.login-notebook{position:absolute;z-index:1;right:-48px;top:56px;width:356px;height:284px;border:1px solid #bbbcb6;border-radius:0 0 9px 9px;background:repeating-radial-gradient(ellipse at 66% 54%,transparent 0 14px,rgba(49,66,73,.065) 15px 16px),#efede5;box-shadow:0 16px 34px rgba(36,38,35,.16);transform:rotate(-7deg);overflow:hidden}.login-notebook:before{content:"";position:absolute;inset:20px;border-top:1px solid #c6c5bd}.login-notebook i{position:absolute;left:62px;top:46px;width:13px;height:13px;border:1px solid var(--blue);transform:rotate(45deg)}.login-notebook span{position:absolute;left:70px;bottom:55px;font:12px var(--mono);letter-spacing:.05em;transform:rotate(2deg)}
.login-ruler{position:absolute;z-index:7;right:-8px;bottom:-7px;width:262px;height:70px;border:1px solid #8e9594;background:repeating-linear-gradient(90deg,transparent 0 13px,#49555c 14px 15px),linear-gradient(180deg,rgba(255,255,255,.9),rgba(211,215,212,.8));opacity:.78;transform:rotate(-13deg);box-shadow:0 8px 18px rgba(22,33,42,.18)}
.preflight{position:relative;z-index:2;height:calc(100% - 65px);max-width:1240px;margin:auto;padding:36px 0 23px 110px}.preflight-copy{position:relative;z-index:4}.preflight-copy h1{margin:0;font-size:52px;line-height:1.08;letter-spacing:-.055em;font-weight:850}.preflight-copy h1:after{content:"";display:block;width:39px;height:3px;margin-top:14px;background:var(--blue)}.preflight-copy p{margin:10px 0 0;color:#70767b;font-size:16px;letter-spacing:.11em}
.flight-window{position:absolute;z-index:1;left:7%;right:19%;top:184px;bottom:31px;border:10px solid #fbfaf5;background:#071019 url("assets/login-flight-bg.png") center/cover no-repeat;box-shadow:0 2px 0 #53616a,0 28px 58px rgba(17,31,42,.24);transform:rotate(-3.15deg);overflow:hidden}.flight-window:before{content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.25);box-shadow:inset 0 0 70px rgba(0,0,0,.23);pointer-events:none}.flight-hud{position:absolute;inset:0;color:#d9e5ea;font:10px var(--mono)}
.lock-badge{position:absolute;left:24px;top:21px;min-width:220px;padding:12px 17px 11px 49px;border:1px solid rgba(164,239,48,.35);background:rgba(3,12,18,.78);box-shadow:0 9px 23px rgba(0,0,0,.2);font-family:var(--font)}.lock-badge b{display:block;color:#b8f341;font-size:14px}.lock-badge small{display:block;margin-top:2px;color:#d7e3e7;font:10px var(--mono)}.lock-dot{position:absolute;left:20px;top:19px;width:18px;height:18px;border:3px solid #b8f341;border-radius:50%;box-shadow:0 0 12px rgba(184,243,65,.45)}.lock-dot:after{content:"";position:absolute;left:4px;top:4px;width:4px;height:4px;border-radius:50%;background:#b8f341}.north{position:absolute;right:35px;top:28px;text-align:center}.north i{color:#b6e8ff;font-style:normal;font-size:17px}.axis{position:absolute;color:rgba(224,237,241,.75);line-height:8.5}.axis-y{left:9px;top:92px}.axis-y i{display:block;margin:32px 0;font-style:normal}.axis-x{left:13%;right:8%;bottom:4px;text-align:center;white-space:nowrap}
.identity-ticket{position:absolute;z-index:6;right:-17px;bottom:55px;width:443px;padding:33px 34px 36px;border:1px solid #aeb5b4;background:linear-gradient(145deg,rgba(255,255,252,.985),rgba(246,244,237,.985));box-shadow:0 31px 66px rgba(21,34,50,.24),inset 0 1px #fff;transform:rotate(-3.25deg)}.ticket-star{position:absolute;right:28px;top:24px;color:var(--blue);font:28px/1 var(--mono)}.ticket-head{display:flex;align-items:center;gap:20px;font-size:15px;font-weight:760}.ticket-head .icon{width:29px;height:29px;fill:#12263a;stroke-width:1.5}.ticket-head span i{display:block;width:31px;height:2px;margin-top:8px;background:var(--blue)}.identity{display:flex;align-items:center;gap:18px;margin:26px 0 20px;padding-bottom:23px;border-bottom:1px dashed #b9bfbd}.identity .avatar{width:67px;height:67px;display:grid;place-items:center;border-radius:50%;background:linear-gradient(145deg,#2781ff,#0754cf);color:#fff;font-size:28px;box-shadow:0 8px 18px rgba(20,100,232,.22)}.identity b{font-size:21px}.identity small{display:block;margin-top:2px;color:#727a80;font:15px var(--mono);letter-spacing:.05em}.role{margin-left:auto;padding:4px 15px;border-radius:99px;color:var(--blue);background:#dfeaff;font-size:12px;font-weight:760}.identity-ticket .btn{width:100%;min-height:63px;font-size:17px}.identity-ticket .btn span{float:right;font-size:23px}.ticket-perf{position:absolute;left:16px;right:16px;bottom:-10px;height:10px;background:repeating-linear-gradient(90deg,transparent 0 8px,#b5b9b5 8px 10px)}

/* 通用外壳 */
.topbar{height:54px;display:flex;align-items:center;gap:22px;padding:0 26px;border-bottom:1px solid #c5cac8;background:rgba(251,250,246,.98);position:relative;z-index:20;box-shadow:0 4px 15px rgba(23,42,59,.035)}.topbar .brand .blogo{width:34px;height:34px}.topbar .brand b{font-size:22px}.topbar .brand i{font-size:16px}.crumb{font-size:12px;font-weight:650;color:#69727a}.right{margin-left:auto;display:flex;align-items:center;gap:14px}.term,.account{font-size:13px}.right>.icon-user{width:26px;height:26px}.top-divider{width:1px;height:23px;background:#aeb4b4;margin:0 16px}.live{display:flex;align-items:center;gap:8px;color:#64746a;font-size:12px}.live:before{content:"";width:7px;height:7px;border-radius:50%;background:#43bd25}.avatar-photo{width:35px;height:35px;display:grid;place-items:center;border:1px solid #9aa8b1;border-radius:50%;color:white;background:linear-gradient(145deg,#2c465d,#0a1b2c);font-weight:800}.top-back{width:38px;height:38px;display:grid;place-items:center;margin-left:-12px;border:1px solid #cbd0ce;border-radius:50%;background:#fbfaf6}.top-back .icon{width:22px;height:22px}
.shell{height:calc(100% - 54px);display:grid;grid-template-columns:86px minmax(0,1fr)}.rail{z-index:9;border-right:1px solid #d0d4d1;background:rgba(248,247,242,.95);display:flex;flex-direction:column;align-items:stretch;padding:29px 0 14px}.rail-btn{min-height:90px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:0;border-left:3px solid transparent;background:transparent;color:#26364a;font-size:12px;font-weight:700;transition:color .18s,background .18s,border-color .18s}.rail-btn:hover{color:var(--blue);background:rgba(229,239,255,.55)}.rail-btn .icon{width:28px;height:28px}.rail-btn.on{border-left-color:var(--blue);color:var(--blue);background:linear-gradient(90deg,#e7f0ff,rgba(231,240,255,.1))}.rail-spacer{flex:1}

/* 任务航图 */
.map-page{position:relative;min-width:0;overflow:hidden;background:#eeeae0 url("assets/mission-map-bg.png") center/cover no-repeat}.map-page:after{content:"";position:absolute;z-index:0;inset:0;pointer-events:none;background:linear-gradient(100deg,rgba(250,249,244,.23),transparent 34%),linear-gradient(0deg,rgba(246,244,237,.1),rgba(255,255,255,.08))}
.map-title{position:absolute;z-index:5;left:27px;top:31px}.map-title h1{margin:0;font-size:45px;line-height:1;letter-spacing:-.06em;font-weight:860}.map-title h1:after{content:"";display:block;width:348px;height:1px;margin-top:10px;background:linear-gradient(90deg,#77848b,transparent)}.map-title p{margin:4px 0;font-size:22px;letter-spacing:.01em}.map-scale{position:absolute;z-index:5;right:40px;top:23px;display:flex;align-items:center;gap:18px;color:#23364a}.compass{width:31px;height:40px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid rgba(49,70,82,.28);border-radius:50%;font:8px var(--mono)}.compass i{font-size:19px;font-style:normal;line-height:1}.scale-bar{position:relative;width:174px;padding-top:14px;font:8px var(--mono)}.scale-bar i{position:absolute;left:0;right:0;top:8px;height:7px;border:1px solid #50616c;border-top:0;background:linear-gradient(90deg,#50616c 1px,transparent 1px);background-size:25% 100%}.scale-bar b{font-weight:500;white-space:nowrap}.coordinates{position:absolute;z-index:2;color:#8f999b;font:11px/1.45 var(--mono)}.coordinates.c1{left:44%;top:39px}.coordinates.c2{right:4%;bottom:145px}.route-svg{position:absolute;z-index:2;inset:0;width:100%;height:100%;filter:drop-shadow(0 3px 4px rgba(17,101,236,.12))}.route-wash{fill:none;stroke:rgba(255,255,255,.92);stroke-width:8;stroke-linecap:round}.route-line{fill:none;stroke:#1165ec;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:7 7}.route-line.route-done{stroke-dasharray:0}.route-arrow{fill:none;stroke:#1165ec;stroke-width:2}.waypoint circle,.waypoint path{vector-effect:non-scaling-stroke}.waypoint circle{fill:#fbfaf5;stroke:#1165ec;stroke-width:2.2}.waypoint path{fill:none;stroke:#fff;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}.waypoint.wp1{transform:translate(97px,660px)}.waypoint.wp1 circle:first-child{fill:rgba(163,238,46,.22);stroke:#75af18;stroke-width:3}.waypoint.wp1 circle:nth-child(2){fill:#fff;stroke:#7db217}.waypoint.wp1 circle:last-child{fill:#10223a;stroke:#10223a}.waypoint.wp2 circle{fill:#91d718;stroke:#fff}.waypoint.wp2 .pulse{fill:rgba(156,232,38,.18);stroke:#85c421}.waypoint.wp5 path{fill:#fff;stroke:var(--coral);stroke-width:2.5}
.route-node{position:absolute;z-index:7;min-width:225px;display:flex;align-items:center;gap:14px;padding:12px 16px;border:1px solid #d1d7d5;border-radius:16px;background:rgba(255,255,255,.95);box-shadow:0 12px 27px rgba(28,49,63,.13);text-align:left;backdrop-filter:blur(6px)}.route-node:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgba(28,49,63,.18)}.route-node>span{display:block}.route-node b{display:block;font-size:16px;font-weight:820;white-space:nowrap}.route-node small{display:block;color:#4f5c65;font-size:11px;white-space:nowrap}.node-shape{position:relative;width:24px;height:24px;flex:0 0 24px;border:3px solid #0c2541}.node-shape.diamond{transform:rotate(45deg)}.node-shape.triangle{width:0;height:0;border:0;border-left:13px solid transparent;border-right:13px solid transparent;border-bottom:23px solid #0c2541}.node-shape.triangle:after{content:"";position:absolute;left:-8px;top:5px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:14px solid #fff}.node-shape.hex{border:0;background:var(--coral);clip-path:polygon(25% 5%,75% 5%,100% 50%,75% 95%,25% 95%,0 50%)}.node-shape.hex:after{content:"";position:absolute;inset:3px;background:#fff;clip-path:inherit}.route-node.n2{left:37%;top:47%}.route-node.n3{left:52%;top:31%}.route-node.n4{left:70%;top:23%}.route-node.n5{right:1.2%;top:14%;border-color:#ecd8d0}.route-node.n5 b{font-size:15px}
.route-node.coming{opacity:.66;border-style:dashed;background:rgba(246,245,240,.9)}.route-node.coming .node-shape{border-color:#9aa3ab}.route-node.coming .node-shape.triangle{border-bottom-color:#9aa3ab}.route-node.coming .node-shape.hex{background:#b7bec4}.route-node .node-coming{position:absolute;top:-9px;right:10px;padding:2px 9px;border-radius:99px;font-size:11px;font-weight:760;color:#5a6670;background:#e7eae6;border:1px solid #c9cfca;white-space:nowrap}
.current-station{position:absolute;z-index:8;left:9%;top:41%;width:308px;padding:17px 16px 16px;border:1px solid #76a8ee;border-radius:17px;background:rgba(252,253,255,.98);box-shadow:0 24px 50px rgba(22,77,158,.21),0 0 0 4px rgba(255,255,255,.65);cursor:pointer}.current-station h2{margin:0;color:#0f5dd7;font-size:24px;line-height:1.1}.current-station h2 em{font-style:normal;font:850 27px var(--mono)}.current-station .hook{margin:3px 0 10px;color:#273848}.station-preview{height:112px;position:relative;overflow:hidden;border:1px solid #152c3d;border-radius:7px;background:#08121c url("assets/login-flight-bg.png") 42% 48%/cover no-repeat;box-shadow:inset 0 0 24px rgba(0,0,0,.45)}.station-preview:after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(41,143,213,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(41,143,213,.12) 1px,transparent 1px);background-size:22px 22px}.station-preview span,.station-preview i{position:absolute;z-index:2;right:7px;color:#54d9ff;font:8px var(--mono)}.station-preview span{top:6px}.station-preview i{bottom:6px;font-style:normal}.station-status{display:flex;justify-content:space-between;align-items:center;margin:9px 0 6px;padding-bottom:6px;border-bottom:1px solid #d5dcdf;color:#507228;font-size:12px;font-weight:730}.station-status span i{display:inline-block;width:11px;height:11px;margin-right:5px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 2px rgba(126,180,33,.18);vertical-align:-1px}.station-status>b{font:800 12px var(--mono);color:#52616b}.station-pid{display:flex;justify-content:space-between;margin-bottom:9px;color:#1b304a;font:11px var(--mono)}.station-pid span{flex:1;border-right:1px solid #d7dddf;text-align:center}.station-pid span:last-child{border:0}.station-pid b{font-size:13px}.current-station .btn{width:100%;min-height:38px}
.takeoff-drone{position:absolute;z-index:6;left:5.1%;bottom:133px;width:76px;height:38px;filter:drop-shadow(0 5px 5px rgba(8,23,37,.22))}.takeoff-drone span{position:absolute;left:28px;top:12px;width:21px;height:14px;border-radius:7px;background:#f4f7f7;border:2px solid #163550}.takeoff-drone:before,.takeoff-drone:after{content:"";position:absolute;top:1px;width:30px;height:14px;border:3px solid #183d5c;border-radius:50%}.takeoff-drone:before{left:0;box-shadow:46px 0 0 -3px #f3f2eb,46px 0 0 0 #183d5c}.takeoff-drone i{position:absolute;left:12px;top:8px;width:53px;border-top:3px solid #173a57;transform:rotate(-11deg)}.route-chip{position:absolute;z-index:6;padding:3px 11px;border-radius:7px;color:#1261d7;background:rgba(229,239,255,.94);font-size:11px;font-weight:700}.chip1{left:9.5%;bottom:121px}.chip2{left:45%;top:58%}.chip3{left:59%;top:45%}.chip4{left:75%;top:35%}.chip5{right:2.4%;top:24%;color:#70452f;background:#f5e8df}
.map-toast{position:absolute;z-index:30;left:50%;top:70px;padding:9px 16px;border:1px solid #bed1ea;border-radius:99px;background:rgba(255,255,255,.96);box-shadow:0 10px 28px rgba(20,43,63,.15);opacity:0;transform:translate(-50%,-8px);transition:.2s;pointer-events:none}.map-toast.show{opacity:1;transform:translate(-50%,0)}
.route-progress{position:absolute;z-index:10;left:0;right:0;bottom:0;height:107px;display:grid;grid-template-columns:355px 1fr 250px;align-items:center;padding:0 29px;border:1px solid #98a2a3;border-radius:14px 14px 0 0;background:rgba(251,250,246,.96);box-shadow:0 -12px 32px rgba(25,43,56,.08);backdrop-filter:blur(9px)}.route-summary{display:flex;align-items:center;gap:18px;font-size:15px;font-weight:740}.route-summary>.icon{width:34px;height:34px}.route-summary b{color:#0a2a55;font:850 22px var(--mono)}.route-steps{height:63px;display:flex;align-items:center;justify-content:space-around;padding:0 18px;border-left:1px solid #aeb5b4;border-right:1px solid #aeb5b4}.route-step{position:relative;min-width:92px;text-align:center;font-size:10px}.route-step i{position:relative;z-index:2;width:18px;height:18px;display:grid;place-items:center;margin:0 auto 9px;border:2px solid var(--blue);border-radius:50%;background:#fff;color:white;font-style:normal}.route-step:not(:last-child):after{content:"";position:absolute;z-index:1;left:58%;right:-42%;top:9px;border-top:2px dashed var(--blue)}.route-step.done i{background:var(--lime);border-color:#76ae1a;box-shadow:0 0 0 4px rgba(155,234,35,.18)}.route-step.end i{border-radius:4px;border-color:var(--coral)}.route-count{display:flex;align-items:center;justify-content:center;gap:16px}.route-count>.icon{width:29px;height:29px}.route-count b{font:850 24px var(--mono);color:#0c2c5c}.route-count span{display:block;color:#606b73}.route-count strong{font:800 18px var(--mono);color:#0c2c5c}

/* 学习记录与复盘室 */
.content-shell{background:var(--paper)}
.content-page{min-width:0;overflow:auto;padding:42px clamp(28px,4vw,68px) 64px;background:radial-gradient(circle at 92% 4%,rgba(255,255,255,.92),transparent 24%),repeating-linear-gradient(0deg,rgba(24,39,52,.018) 0 1px,transparent 1px 6px),var(--paper);scrollbar-gutter:stable}
.content-page>*{width:min(1180px,100%);margin-left:auto;margin-right:auto}
.content-heading{display:flex;align-items:flex-end;justify-content:space-between;padding-bottom:25px;border-bottom:1px solid #9da6a7}
.eyebrow{display:block;margin-bottom:8px;color:var(--blue);font:700 12px/1.3 var(--mono);letter-spacing:.09em}
.content-heading h1{margin:0;font-size:46px;line-height:1.05;letter-spacing:-.055em;font-weight:860}
.content-heading p{margin:8px 0 0;color:var(--muted);font-size:15px}
.page-index{color:#7b858a;font:700 12px var(--mono);letter-spacing:.08em}
.overview-card{display:grid;grid-template-columns:minmax(300px,1fr) 250px 220px;margin-top:28px;border:1px solid #b7bfbe;border-radius:16px;background:rgba(251,250,246,.95);box-shadow:0 18px 44px rgba(26,44,58,.08);overflow:hidden}
.overview-main{padding:24px 28px}.overview-main>span{font-size:14px;font-weight:760}.overview-main strong{display:block;margin:3px 0 10px;color:#0a2d5b;font:850 38px/1 var(--mono)}.overview-main strong small{color:#73808a;font-size:18px}.overview-main p{margin:8px 0 0;color:var(--muted);font-size:12px}
.overview-track{height:8px;overflow:hidden;border-radius:99px;background:#dfe3df}.overview-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),#6ea3f5);box-shadow:0 0 12px rgba(17,101,236,.25)}
.overview-stat{display:flex;align-items:center;gap:15px;padding:20px 24px;border-left:1px solid #cbd0ce}.overview-stat>span{width:42px;height:42px;display:grid;place-items:center;border-radius:50%;color:#0d5fdc;background:var(--blue-soft)}.overview-stat .icon{width:22px;height:22px}.overview-stat small{display:block;color:var(--muted);font-size:12px}.overview-stat b{display:block;margin-top:3px;font-size:18px;font-weight:820}
.friendly-empty{display:flex;align-items:center;gap:18px;margin-top:22px;padding:20px 24px;border:1px dashed #aeb8b8;border-radius:13px;background:rgba(255,255,255,.48)}.friendly-empty>span{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #9fb7d8;border-radius:50%;color:var(--blue);font:700 24px var(--mono)}.friendly-empty h2{margin:0 0 3px;font-size:17px}.friendly-empty p{margin:0;color:var(--muted);font-size:14px}.friendly-empty .btn{margin-left:auto;white-space:nowrap}
.course-list{display:grid;gap:20px;margin-top:28px}
.course-block{border:1px solid #bdc4c2;border-radius:15px;background:rgba(251,250,246,.92);box-shadow:0 12px 32px rgba(24,43,57,.055);overflow:hidden}
.course-block>header{min-height:92px;display:flex;align-items:center;gap:18px;padding:18px 24px;border-bottom:1px solid #d2d6d3;background:linear-gradient(90deg,rgba(229,239,255,.48),rgba(255,255,255,.25))}.course-number{width:46px;height:46px;display:grid;place-items:center;flex:0 0 auto;border:1px solid #8fabd1;border-radius:50%;color:#0d5fdc;background:#fff;font:800 15px var(--mono)}.course-block header h2{margin:0;font-size:19px}.course-block header p{margin:2px 0 0;color:var(--muted);font-size:13px}.course-count{margin-left:auto;padding:5px 11px;border:1px solid #b7c8dc;border-radius:99px;color:#315b8e;background:#f4f8ff;font-size:12px;font-weight:740;white-space:nowrap}
.level-records{display:grid}.level-record{min-height:106px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 24px}.level-record+.level-record{border-top:1px dashed #cbd0ce}.level-record-copy{min-width:0}.level-kicker{color:#55728f;font:700 12px var(--mono);letter-spacing:.04em}.level-record h3{margin:3px 0 2px;font-size:17px}.level-record p{max-width:720px;margin:0;color:var(--muted);font-size:14px}.level-result{display:flex;align-items:center;gap:16px;flex:0 0 auto}.record-stars{white-space:nowrap;font-size:19px;letter-spacing:.08em}.record-stars b{color:#79af1e}.record-stars i{color:#cfd4d1;font-style:normal}.pass-state{min-width:68px;padding:5px 10px;border-radius:99px;text-align:center;font-size:12px;font-weight:760}.pass-state.passed{color:#496d12;background:#e5f6c9}.pass-state.pending{color:#70787c;background:#e7e9e6}
.course-empty{padding:25px;color:var(--muted);font-size:14px;text-align:center}
.archive-overview{position:relative;margin-top:28px;padding:24px 28px 20px;border:1px solid #aab7b9;border-radius:16px;color:#eff7ff;background:linear-gradient(135deg,#102940,#071725);box-shadow:0 18px 44px rgba(11,31,48,.16);overflow:hidden}.archive-overview:after{content:"";position:absolute;right:-45px;top:-65px;width:220px;height:220px;border:1px solid rgba(100,188,255,.16);border-radius:50%;box-shadow:0 0 0 34px rgba(100,188,255,.045),0 0 0 68px rgba(100,188,255,.025)}.archive-overview>div:first-child{display:flex;align-items:center;gap:15px}.archive-symbol{width:45px;height:45px;display:grid;place-items:center;border:1px solid rgba(135,199,255,.55);border-radius:50%;color:#9cd3ff;font-size:22px}.archive-overview small{display:block;color:#9eb0bd;font-size:12px}.archive-overview strong{display:block;font:850 30px var(--mono)}.archive-overview strong i{color:#95a5af;font-size:16px;font-style:normal}.archive-progress{height:7px;margin-top:17px;overflow:hidden;border-radius:99px;background:#304456}.archive-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#64baff,var(--lime))}.archive-overview p{margin:8px 0 0;color:#b9c7d0;font-size:12px}
.accident-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px}.accident-card{position:relative;min-height:142px;display:grid;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:17px;padding:20px;border:1px solid #bcc6c5;border-radius:12px;background:#fff;overflow:hidden}.accident-icon{width:60px;height:60px;display:grid;place-items:center;border:1px solid #a8b8bd;border-radius:13px;background:#edf4f6;font-size:30px}.accident-state{color:#49729a;font-size:12px;font-weight:750}.accident-card h3{margin:3px 0 3px;font-size:18px}.accident-card p{margin:0;color:var(--muted);font-size:13px}.card-mark{position:absolute;right:12px;top:10px;color:#8a9699;font:700 12px var(--mono);letter-spacing:.08em}.accident-card.unlocked{border-color:#9ab9d7;box-shadow:inset 3px 0 var(--blue)}.accident-card.locked{border-style:dashed;color:#7e8688;background:repeating-linear-gradient(135deg,rgba(93,105,106,.025) 0 8px,transparent 8px 16px),#f0f0eb}.accident-card.locked .accident-icon{color:#8e9697;background:#e2e4e0;font:800 25px var(--mono);filter:grayscale(1)}.accident-card.locked h3{letter-spacing:.15em}.accident-card.locked p,.accident-card.locked .accident-state{color:#8a9192}

/* 工作台外壳 */
.workbench-shell{height:calc(100% - 54px);display:grid;grid-template-columns:78px minmax(0,1fr);background:#07101a}.workbench-shell .rail{padding-top:13px;color:#1c2c40;background:#f6f5f0}.workbench-shell .rail-btn{min-height:82px}.workbench-main{position:relative;min-width:0}.level-frame{position:absolute;inset:0;width:100%;height:100%;border:0}.acc-toast{position:absolute;z-index:30;top:16px;left:50%;padding:9px 15px;border:1px solid var(--coral);border-radius:99px;color:#8f3526;background:#fff;box-shadow:var(--shadow);opacity:0;transform:translate(-50%,-8px);transition:.2s;pointer-events:none}.acc-toast.show{opacity:1;transform:translate(-50%,0)}.pass-banner{position:absolute;z-index:31;right:22px;bottom:22px;width:320px;padding:18px;border-left:4px solid var(--lime);border-radius:12px;background:#fff;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);transition:.2s;pointer-events:none}.pass-banner.show{opacity:1;transform:none;pointer-events:auto}.pass-banner .head{display:flex;justify-content:space-between}.pass-banner .score{font:800 25px var(--mono)}.pass-banner .stars{color:#6fa816}.pass-banner .off{color:#d7dbd8}.pass-banner p{color:var(--muted)}.pass-banner .head{align-items:center}.pass-dismiss{margin-left:auto;width:26px;height:26px;flex:0 0 auto;display:grid;place-items:center;border:1px solid #d7dbd8;border-radius:50%;background:#fff;color:#70787c;font-size:18px;line-height:1;cursor:pointer}.pass-dismiss:hover{color:#1c2c40;border-color:#9aa0a2;background:#f4f5f2}
@media(max-width:1180px){.identity-ticket{right:0}.flight-window{right:13%}.route-node{min-width:205px}.route-node.n3{left:50%}.route-node.n4{left:68%}.route-progress{grid-template-columns:280px minmax(570px,1fr) 210px}.route-summary{font-size:12px}.route-summary b{font-size:18px}}
@media(max-width:1050px){.overview-card{grid-template-columns:minmax(280px,1fr) 220px}.overview-stat:last-child{grid-column:1/-1;border-top:1px solid #cbd0ce;border-left:0}.accident-grid{grid-template-columns:1fr}}
@media(max-width:820px){.brand i,.workshop-title,.crumb{display:none}.login-index{display:none}.preflight{padding-left:0}.flight-window{left:3%;right:3%;top:180px}.identity-ticket{right:3%;width:410px}.shell,.workbench-shell{grid-template-columns:64px minmax(1120px,1fr)}.rail-btn{font-size:10px}.topbar{padding:0 15px}}
@media(max-width:820px){.content-shell{grid-template-columns:64px minmax(0,1fr)}.content-page{padding:30px 22px 52px}.content-heading h1{font-size:38px}.overview-card{grid-template-columns:1fr}.overview-stat,.overview-stat:last-child{grid-column:auto;border-left:0;border-top:1px solid #cbd0ce}.course-block>header{align-items:flex-start}.course-count{margin-left:auto}.level-record{align-items:flex-start;flex-direction:column}.level-result{width:100%;justify-content:space-between}.friendly-empty{align-items:flex-start;flex-wrap:wrap}.friendly-empty .btn{margin-left:60px}.accident-card{grid-template-columns:52px minmax(0,1fr);padding:17px}.accident-icon{width:50px;height:50px;font-size:25px}}
@media(max-width:560px){.content-heading{align-items:flex-start}.page-index{display:none}.course-block>header{flex-wrap:wrap}.course-count{margin-left:64px}.friendly-empty .btn{width:100%;margin-left:0}.accident-grid{padding:12px}.accident-card{grid-template-columns:1fr}.card-mark{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
