:root{--bg:#08121f;--panel:#101f31;--panel2:#13263a;--line:#294459;--ink:#ecf3f7;--muted:#b0c4d2;--blue:#66d3e8;--accent:#8ee4d5;--good:#42e39a;--bad:#ff6e81;--radius:20px;font-family:system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at top right,#163b55 0,transparent 48%),var(--bg);color:var(--ink);font-size:15px;line-height:1.65}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{min-height:42px;padding:9px 15px;background:#182d41;border:1px solid #35576f;border-radius:12px;color:var(--ink);cursor:pointer;transition:background .14s,border .14s,transform .14s}button:hover{background:#214159;border-color:#70c5d4}button:active{transform:translateY(1px)}button:disabled{opacity:.42;cursor:not-allowed}button.primary{background:#2a8c98;border-color:#51bac4;color:#fff;font-weight:700}button.primary:hover{background:#309da9}a{color:var(--blue);text-decoration:none}input,select{min-height:42px;background:#0a1a29;color:var(--ink);border:1px solid #45657b;border-radius:10px;padding:8px 11px;max-width:100%}input[type=checkbox]{min-height:18px;width:18px;height:18px;accent-color:#3ccebc}input:focus,select:focus,button:focus-visible{outline:3px solid #74d1e2;outline-offset:3px}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(32px,4vw,57px);line-height:1.2;letter-spacing:-1.5px}h2{font-size:27px;line-height:1.35;margin-bottom:8px}h3{font-size:20px;margin-bottom:10px}p{color:var(--muted)}.top{max-width:1480px;margin:auto;padding:20px 28px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:13px;color:var(--ink)}.logo{display:grid;place-items:center;width:47px;height:47px;border-radius:14px;background:linear-gradient(130deg,#177480,#354d8c);font-weight:800;font-size:25px;box-shadow:0 5px 25px #2abcb222}.brand b{font-size:20px}.brand i{font-size:16px;font-style:normal;font-weight:500;margin-left:10px;color:#bdcedd}.brand small{display:block;color:#92acbf;font-size:12px}.top nav{display:flex;gap:8px}.top nav button{font-size:13px}main{max-width:1430px;padding:14px 28px 30px;margin:auto}.hero{padding:36px 38px;display:grid;grid-template-columns:1.2fr .8fr;gap:36px;border:1px solid #365c77;background:linear-gradient(130deg,#163f54,#12243e);border-radius:28px;margin:10px 0 36px;overflow:hidden}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--blue);display:block;margin-bottom:13px}.hero h1{margin:8px 0 22px}.hero p{max-width:500px;font-size:17px}.hero-tags{display:flex;flex-wrap:wrap;gap:8px}.hero-tags span{font-size:12px;border:1px solid #54839980;border-radius:8px;padding:5px 10px;background:#14293c}.nickname{display:flex;gap:12px;align-items:center;margin-top:20px;font-size:13px;color:var(--muted)}.nickname input{width:230px}.hero-art{position:relative;min-height:340px;display:flex;justify-content:center;align-items:center;gap:24px}.hero-art>b{font-size:63px;font-family:serif;z-index:1;text-shadow:0 10px 25px #050f2a}.hero-art>b:first-of-type{color:#ecdabb}.hero-art>b:last-of-type{color:#f49486}.hero-art>span{color:#6594a8;font-size:34px}.hero-art small{position:absolute;top:72%;letter-spacing:4px}.orbit{position:absolute;width:250px;height:250px;border:1px solid #6cb6cc5a;border-radius:50%;transform:rotate(-20deg) scaleX(1.4);box-shadow:0 0 50px #47799122,inset 0 0 40px #4ca3b40d}.orbit.second{transform:rotate(40deg) scaleX(1.4);width:230px;height:230px;border-color:#a1d3d823}.legend{display:flex;align-items:center;position:absolute;top:87%;gap:10px;font-size:12px;color:#afc6d7}.good-dot,.bad-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--good)}.bad-dot{background:var(--bad);margin-left:8px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:20px}.section-heading p{font-size:13px;margin-bottom:8px}.chapter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.chapter-card{border-radius:20px;border:1px solid #2d455a;background:linear-gradient(145deg,#13283b,#0e1c2e);padding:22px;position:relative}.chapter-card .num{font-size:12px;color:#87b9ce;letter-spacing:2px}.chapter-card h3{font-size:25px;margin:10px 0}.chapter-card p{font-size:13px;min-height:44px}.chapter-card .counts{font-size:12px;color:#8da8bb;margin:12px 0}.chapter-card .actions{display:flex;gap:9px}.chapter-card .actions button{flex:1}.chapter-card .muscle-button{border-color:#a36968;background:#362733;color:#f5b7ae}.scope-line{font-size:12px;margin:24px 0;color:#90a6b5}.prep-card{max-width:1000px;background:var(--panel);border:1px solid var(--line);padding:36px;border-radius:25px;margin:20px auto}.prep-card h1{font-size:38px;margin-bottom:16px}.segmented{display:flex;gap:10px;margin:25px 0}.segmented button.active{background:#286d80;border-color:#7fd5dc}.difficulty-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.difficulty-grid button{text-align:left;padding:20px;min-height:140px}.difficulty-grid button b{display:block;color:#e4f4f9;font-size:18px}.difficulty-grid button span{display:block;color:var(--muted);font-size:13px;margin-top:8px}.difficulty-grid button.active{border:2px solid var(--blue);background:#1a3f52;padding:19px}.prep-row{display:flex;gap:22px;margin-top:25px}.prep-row label{display:grid;gap:8px;flex:1;color:var(--muted)}.note{padding:14px 18px;background:#173241;border:1px solid #2b5164;border-radius:12px;margin-top:22px;font-size:14px}.note:empty{display:none}.prep-actions{display:flex;gap:12px;margin:25px 0}.subtle{font-size:12px;color:#98aebe}.game-top{display:flex;align-items:center;gap:18px;margin:9px 0 17px}.game-top h2{font-size:26px;margin:0}.game-top .eyebrow{margin-bottom:3px}.stats{display:flex;gap:23px;margin-left:auto}.stats span{display:block;color:#9cbbcb;font-size:12px}.stats b{display:block;font-size:21px;color:#ecf6f8;font-variant-numeric:tabular-nums}.feedback{padding:12px 18px;border:1px solid #2f5468;border-radius:13px;background:#133042;color:#d5eff5;margin-bottom:15px;min-height:53px}.feedback.good{border-color:#44bf86;background:#123d30;color:#98f5bf}.feedback.bad{border-color:#cf7184;background:#42232d;color:#ffc0c8}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 312px;gap:16px;align-items:start}.stage{position:relative;background:#070f1b;border:1px solid #3b596c;border-radius:20px;overflow:hidden;height:650px}.stage canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.stage canvas.held{cursor:grabbing}.stage:fullscreen{width:100vw;height:100dvh;border-radius:0}.stage-top{position:absolute;inset:12px 14px auto;display:flex;justify-content:space-between;pointer-events:none;font-size:11px;color:#c1d6e5;gap:10px}.stage-top span{background:#11243cdb;padding:6px 10px;border:1px solid #365369;border-radius:8px;max-width:80%}.stage-tools{position:absolute;bottom:41px;left:12px;right:12px;display:flex;gap:5px;flex-wrap:wrap;justify-content:center}.stage-tools button{background:#193346e8;font-size:12px;padding:5px 9px;min-height:35px}.stage-tip{position:absolute;bottom:9px;text-align:center;width:100%;font-size:11px;color:#b1c7d5;pointer-events:none}.label-layer{position:absolute;inset:0;pointer-events:none}.label{position:absolute;transform:translate(-50%,-50%);color:#d7f5fa;background:#102637eb;border:1px solid #579eaf;border-radius:7px;padding:2px 6px;font-size:11px;max-width:140px;white-space:nowrap}.label.slot{border-style:dashed;color:#acc6d5;background:#132d3877}.label.bone{border-color:#c8c0a4;color:#f1e3c9}.label.muscle{border-color:#bc7b75;color:#ffb8a9}.label.done{border-color:#3ee08d;color:#9affc9}.label.side{font-size:12px;background:#19344cdd;border:0;color:#8abbdb}.peek-banner{position:absolute;top:59px;left:50%;transform:translateX(-50%);background:#b88829;color:#fff;padding:7px 14px;border-radius:10px;white-space:nowrap;font-size:13px}.hand{display:none;position:absolute;z-index:8;pointer-events:none;transform:translate(-14px,-18px);font-size:31px;filter:drop-shadow(0 2px 3px #0009)}@media (pointer:fine){.stage .hand.show{display:block}.stage canvas.cursor-custom{cursor:none!important}}.loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;background:#071422f2;color:#beecf8}.spinner{width:38px;height:38px;border:3px solid #3b6379;border-top-color:#76d2df;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tools{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:17px}.tool-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.tool-head .eyebrow{margin-bottom:3px;font-size:10px}.tool-head h3{margin-bottom:5px}.tool-head>span{font-size:12px;color:var(--muted)}.tray{display:grid;grid-template-columns:1fr 1fr;gap:7px;max-height:232px;overflow:auto}.tray button{padding:8px 10px;text-align:left;font-size:13px;line-height:1.4;min-height:55px}.tray button small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.tray button.active{border-color:#75d7e5;background:#20566b}.tray button.locked{border-color:#397557;background:#18392e;color:#97e9b7}.piece-info{font-size:12px;color:var(--muted);padding:10px 0;min-height:76px;border-bottom:1px solid var(--line);margin-bottom:11px}.piece-info strong{font-size:15px;color:var(--ink)}.small-title{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin:9px 0 6px}.small-title select{min-height:29px;font-size:12px;padding:2px 6px}.small-title small{font-size:10px;color:var(--muted)}.rotate-controls{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;align-items:center}.rotate-controls span{font-size:12px;text-align:center;color:#b3cbd7}.rotate-controls button{font-size:21px;min-height:32px;padding:0}.nudge-controls{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.nudge-controls button{min-height:33px;font-size:12px;padding:3px}.wide{width:100%;margin-top:10px}.pair-buttons{display:flex;gap:7px;margin-top:7px}.pair-buttons button{flex:1;font-size:12px;padding:7px;min-height:37px}.small-settings{display:grid;gap:7px;margin:15px 0 8px;font-size:12px;color:var(--muted)}.small-settings label{display:flex;gap:8px;align-items:center}.function-panel{margin-top:20px;padding:25px;border:1px solid #80535a;border-radius:18px;background:linear-gradient(135deg,#271f2d,#111f31)}.function-heading{display:flex;justify-content:space-between}.function-heading .eyebrow{color:#e2a5a1}.function-heading>span{font-size:13px;color:var(--good)}#attachmentText{display:grid;grid-template-columns:1fr 1fr;gap:14px;font-size:14px;color:#cfdae3}#attachmentText p{background:#192735;border-radius:12px;padding:14px;color:#c5d3df}#attachmentText b{display:block;color:#ffb7a9}.function-choices{display:grid;gap:10px}.function-choices button{text-align:left;padding:12px 16px}.correct{border-color:#40dc8e!important;background:#16462f!important;color:#aff9cd!important}.wrong{border-color:#f4657f!important;background:#572532!important;color:#ffd2d9!important}.next-panel{display:flex;align-items:center;justify-content:space-between;padding:25px;background:#12392e;border:1px solid #387e5b;border-radius:18px;margin-top:18px;gap:18px}.next-panel b{font-size:23px;color:#7ef1b2}.next-panel p{margin:6px 0 0;font-size:13px}.result-card{max-width:1000px;padding:35px;margin:20px auto;background:var(--panel);border:1px solid var(--line);border-radius:25px}.result-card h1{font-size:36px}.result-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:25px 0}.result-metrics div{padding:18px;background:#19364a;border-radius:15px;font-size:12px;color:var(--muted)}.result-metrics b{display:block;color:var(--ink);font-size:27px}.result-actions{display:flex;gap:12px}.result-card table{border-collapse:collapse;width:100%;font-size:13px;margin:22px 0}.result-card td,.result-card th{text-align:left;padding:11px;border-bottom:1px solid #284559}footer{max-width:1430px;margin:20px auto;display:flex;align-items:center;gap:20px;justify-content:center;flex-wrap:wrap;color:#849dad;font-size:12px;padding:12px}footer button{font-size:11px;min-height:30px;padding:3px 9px;background:transparent}.modal{position:fixed;inset:0;background:#020917ca;z-index:100;display:grid;place-items:center;padding:20px}.modal-box{width:min(800px,100%);max-height:85dvh;overflow:auto;background:#122337;border:1px solid #467085;border-radius:20px;padding:24px}.modal-box header{display:flex;justify-content:space-between;gap:12px;align-items:center}.modal-box header button{font-size:27px;padding:0 12px}.modal-box p{font-size:14px}.modal-box li{color:var(--muted);margin-bottom:8px}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);max-width:90vw;padding:12px 20px;border:1px solid #5596a9;background:#1a4555;box-shadow:0 5px 20px #0008;border-radius:13px;z-index:120;color:#fff;font-size:14px}.empty{color:var(--muted);padding:18px;text-align:center}@media(max-width:1100px){.hero{padding:30px}.workspace{grid-template-columns:minmax(0,1fr) 284px}.stage{height:610px}.chapter-grid{grid-template-columns:repeat(2,1fr)}.game-top h2{font-size:23px}.stats{gap:13px}}@media(max-width:760px){main{padding:8px 13px 20px}.top{padding:13px;align-items:flex-start}.top nav{flex-wrap:wrap;gap:5px;justify-content:flex-end;max-width:155px}.top nav button{font-size:11px;min-height:30px;padding:4px 7px}.brand i{display:block;margin-left:0;font-size:13px}.brand b{font-size:18px}.brand small{font-size:9px}.logo{width:38px;height:38px;font-size:21px;flex-shrink:0}.hero{grid-template-columns:1fr;padding:24px;gap:8px;margin-bottom:28px}.hero-art{min-height:170px}.orbit{width:140px;height:140px}.orbit.second{width:128px;height:128px}.hero-art>b{font-size:38px}.hero-art small{font-size:10px;top:83%}.hero-art .legend{display:none}.hero p{font-size:15px}.hero h1{font-size:35px}.chapter-grid{grid-template-columns:1fr}.chapter-card{padding:18px}.chapter-card p{min-height:0}.section-heading{display:block}.section-heading h2{font-size:24px}.prep-card{padding:20px}.prep-card h1{font-size:30px}.difficulty-grid{grid-template-columns:1fr}.difficulty-grid button{min-height:92px;padding:16px}.difficulty-grid button.active{padding:15px}.prep-row{display:grid;gap:12px}.game-top{flex-wrap:wrap;gap:11px}.game-top>button{padding:5px 9px;font-size:12px}.game-top h2{font-size:21px}.stats{width:100%;justify-content:space-around;background:#142539;padding:7px 15px;border-radius:13px;gap:8px}.stats b{font-size:18px}.workspace{grid-template-columns:1fr}.stage{height:510px}.stage-top{font-size:10px}.tools{padding:15px}.tray{grid-template-columns:repeat(3,1fr);max-height:210px}.rotate-controls{grid-template-columns:repeat(9,1fr)}.rotate-controls button{min-height:40px}.small-settings{display:flex;flex-wrap:wrap;gap:13px}.piece-info{min-height:0}.stage-tools{bottom:42px}.stage-tools button{font-size:10px;min-height:31px;padding:4px 7px}.function-panel{padding:18px}#attachmentText{grid-template-columns:1fr;gap:0}.next-panel{padding:19px;flex-direction:column;align-items:start}.next-panel button{width:100%}.result-card{padding:22px}.result-metrics{grid-template-columns:1fr 1fr}.result-actions{flex-wrap:wrap}.feedback{font-size:13px}.result-card table{font-size:12px}footer{gap:10px;font-size:10px}.stage-tip{font-size:10px}.label{font-size:10px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}.spinner{animation:none}}

.attach-key{font-size:11px;line-height:1.6;border-top:1px solid #284252;margin-top:10px;padding-top:8px;color:#b4c5d0}.stage-tools{max-width:94%;flex-wrap:wrap;justify-content:center}.stage-tools button{font-size:12px;padding:7px 10px;}
.full-controls{display:none}.stage:fullscreen .full-controls{position:absolute;top:65px;left:15px;right:15px;display:flex;justify-content:center;flex-wrap:wrap;gap:6px;align-items:center}.full-controls button{min-height:35px;padding:4px 9px;background:#173750e8}.full-controls span{font-size:12px;color:#d4e8f4}@media(max-width:760px){.stage-tools button{font-size:10px;padding:4px 6px;min-height:30px}.stage-tools{bottom:35px}.stage-tip{font-size:9px}}
/* 2.1: persistent identity colours, leaders, chapter discovery, skull reference. */
.group-bar,.muscle-bar{display:flex;flex-wrap:wrap;align-items:center;gap:9px;background:#112638;border:1px solid #31546b;border-radius:14px;padding:12px 15px;margin-bottom:12px}.group-bar label{flex:1;display:flex;align-items:center;gap:12px;min-width:0}.group-bar select{flex:1;min-width:0;max-width:720px}.muscle-bar label{display:flex;gap:7px;align-items:center}.muscle-bar small{flex-basis:100%;color:#a9c2d0;font-size:12px}.muscle-bar button.active{background:#27546c;border-color:#87d3e7}.skull-banner{padding:9px 14px;margin-bottom:12px;border-left:3px solid #7abfd9;background:#162d40;color:#bddae8;font-size:13px}.color-dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--piece-color,#9fb2bd);border:1px solid #ffffff50;flex-shrink:0;margin-right:6px;vertical-align:middle}.tray button{border-left:3px solid var(--piece-color,#7da2b7)}.tray button b{display:block}.tray button.locked{background:#152c35;border-color:#35566c;border-left-color:var(--piece-color);color:#e0f1ee}.tray button.active{background:#27445a;border-color:var(--piece-color);box-shadow:0 0 0 1px var(--piece-color) inset}.tray button.user-hidden{opacity:.50}.label.callout{transform:none;min-height:25px;line-height:19px;border-radius:7px;padding:2px 6px;background:#081722ed;max-width:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#e5edf2;box-shadow:0 3px 10px #0004}.label.callout.chosen{font-weight:700;background:#153046f2;box-shadow:0 0 0 1px #bfd7e435}.label.callout i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.leader-lines{position:absolute;inset:0;width:100%;height:100%;overflow:hidden}.prep-catalog{margin-top:18px;border:1px solid #32526b;border-radius:14px;padding:12px 16px}.prep-catalog summary,.chapter-drawer summary{cursor:pointer;color:#d4e8f1;font-weight:600}.prep-group{padding-top:13px}.prep-group>b{display:block;font-size:13px;color:#b8d9e4;margin-bottom:5px}.prep-group>div{display:flex;gap:6px;flex-wrap:wrap}.prep-group button{font-size:12px;padding:5px 8px;min-height:33px}.chapter-drawer{margin:8px 0 12px;border-bottom:1px solid #29485c;padding-bottom:10px}.chapter-drawer summary{font-size:13px}.chapter-drawer input{width:100%;margin:9px 0;font-size:12px;min-height:36px}.chapter-list{max-height:210px;overflow:auto;display:grid;gap:4px}.chapter-list button{min-height:33px;padding:5px 8px;text-align:left;font-size:12px;display:flex;align-items:center}.chapter-list button small{margin-left:auto;font-size:10px;color:#89aabe}.stage{height:700px}.stage-tools{padding:4px;border-radius:10px;background:#0b192adb}.stage-tip{background:#091724e6}.tools{max-width:100%}@media(max-width:760px){.group-bar{display:block;padding:10px}.group-bar label{display:grid;font-size:12px;gap:5px}.group-bar select{width:100%;font-size:12px;max-width:100%}.group-bar>button{margin-top:8px;font-size:12px}.muscle-bar{padding:10px;gap:6px}.muscle-bar button{font-size:12px;padding:7px;min-height:36px}.muscle-bar label{font-size:12px}.muscle-bar select{font-size:12px;min-height:36px}.stage{height:560px}.skull-banner{font-size:12px}.prep-group button{font-size:11px}.tray{grid-template-columns:repeat(2,1fr)}.stage-tools button{min-height:33px}}
