:root{color-scheme:dark;--bg:#04131b;--fg:#e9fff6;--muted:#a4c8c9;--accent:#8edecf;--motion:2500ms;--ease:cubic-bezier(.22,1,.30,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.65 system-ui,-apple-system,Segoe UI,Arial,sans-serif}button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}
.laboratory{min-height:100vh;background:radial-gradient(ellipse at 51% 20%,rgba(23,110,114,.19),transparent 56%),linear-gradient(160deg,#06151c,#061e26 56%,#071218);overflow-x:hidden}
.lab-header{max-width:1500px;margin:auto;padding:18px clamp(16px,3vw,40px);display:flex;align-items:center;justify-content:space-between;gap:12px}
.back,.fullscreen{border:1px solid #ffffff30;background:#ffffff09;color:#d6f5e8;padding:10px 15px;border-radius:100px;display:inline-flex;gap:7px;align-items:center}
.lab-brand{font-weight:800;letter-spacing:.025em}.symbol{color:var(--accent);font-size:26px;vertical-align:middle}.dim{color:#86b7b5;font-weight:500}
.lab-switch{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:1000px;margin:8px auto 0;padding:0 15px}
.lab-switch a{border:1px solid #ffffff27;background:#ffffff09;border-radius:100px;padding:9px 18px;font-size:14px;transition:.3s}
.lab-switch a:hover{background:#ffffff20}.lab-switch a.active{color:#072524;background:var(--accent);border-color:var(--accent);font-weight:800}
.intro{text-align:center;margin:32px auto 0;padding:0 15px;max-width:1000px}.eyebrow{font-size:12px;letter-spacing:.17em;font-weight:900;color:var(--accent)}.intro h1{margin:9px auto;font:normal clamp(33px,4.4vw,64px)/1.1 Georgia,serif;letter-spacing:-.035em}.intro p{font-size:clamp(14px,1.2vw,17px);color:#bed8d7;max-width:690px;margin:10px auto 0}
.stage-frame{width:min(1420px,calc(100% - 24px));margin:25px auto 0;min-width:0;border:1px solid rgba(167,233,225,.18);border-radius:36px;background:linear-gradient(180deg,#0a2532b2,#051921d5);box-shadow:0 24px 70px rgba(0,0,0,.28);overflow:hidden;position:relative}
.stage-top{display:flex;justify-content:space-between;gap:9px;padding:19px 28px 0;color:#8db8bb;font-size:11px;letter-spacing:.15em;font-weight:800}
.motion-mark strong{color:#defff0}.canvas{min-height:300px;display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;padding:14px 8px 0;isolation:isolate}
.glow{position:absolute;inset:4% 15%;background:radial-gradient(circle at center,rgba(48,180,162,.11),transparent 60%);filter:blur(28px);pointer-events:none}
.model{width:min(100%,990px);position:relative;aspect-ratio:var(--aspect,1448/1086);isolation:isolate;user-select:none;-webkit-user-select:none}
.model>img{position:absolute;width:100%;height:100%;object-fit:contain;pointer-events:none;-webkit-user-drag:none;transition:opacity var(--motion) var(--ease),transform var(--motion) var(--ease),filter var(--motion) var(--ease)}
.whole{opacity:1;transform:scale(.97);filter:drop-shadow(0 22px 36px #0008)}
.exploded{opacity:0;transform:scale(.72) translateY(7%);filter:blur(7px) drop-shadow(0 18px 35px #0007)}
.model.open .whole{opacity:0;transform:scale(1.11) translateY(-2%);filter:blur(13px)}
.model.open .exploded{opacity:1;transform:scale(.98) translateY(0);filter:blur(0) drop-shadow(0 18px 35px #0006)}
.sprite-layer,.points,.arrow-lines{position:absolute;inset:0;pointer-events:none}
.sprite{position:absolute;opacity:0;pointer-events:none;transform:translate(var(--shift-x,0),var(--shift-y,0)) scale(.72);transition:opacity var(--motion) var(--ease),transform var(--motion) var(--ease),filter 550ms ease;filter:drop-shadow(0 9px 18px #0004)}
.model.open .sprite{transform:translate(0,0) scale(1);opacity:.25}
.model.open .sprite.focused{opacity:1;transform:translate(0,-2%) scale(1.11);filter:drop-shadow(0 0 14px #a6ffe38a);z-index:6}
.points{z-index:10}.node{position:absolute;transform:translate(-50%,-50%) scale(.5);width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:rgba(9,36,42,.9);border:1px solid rgba(209,255,237,.8);box-shadow:0 0 0 5px rgba(142,245,213,.13),0 4px 14px #0008;color:#eafff5;font-size:11px;font-weight:900;opacity:0;pointer-events:none;transition:opacity .65s ease,transform .7s var(--ease),background .3s}
.model.open .node{opacity:.92;transform:translate(-50%,-50%) scale(1);pointer-events:auto;transition-delay:1550ms}
.node:hover,.node.active{background:var(--accent);color:#05251f;box-shadow:0 0 0 8px rgba(142,245,213,.17),0 0 30px var(--accent)}
.arrow-lines{z-index:11;width:100%;height:100%;overflow:visible}.arrow-path{fill:none;stroke:var(--accent);stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 6px #60ecc78a);stroke-dasharray:1400;stroke-dashoffset:1400;transition:stroke-dashoffset 950ms var(--ease)}.arrow-lines.shown .arrow-path{stroke-dashoffset:0}.arrow-dot{fill:#d9fff1;opacity:0;transition:opacity .6s}.arrow-lines.shown .arrow-dot{opacity:1}
.arrow-note{position:absolute;z-index:12;width:clamp(220px,35%,325px);padding:16px 17px;background:linear-gradient(150deg,rgba(4,25,32,.96),rgba(11,48,52,.94));border:1px solid rgba(187,244,227,.6);border-radius:21px;box-shadow:0 16px 50px #0009;backdrop-filter:blur(16px);transition:opacity 500ms ease,transform 650ms var(--ease);animation:note-appear .7s var(--ease) both;pointer-events:auto}
.arrow-note[hidden]{display:none!important}.note-head{display:flex;align-items:baseline;gap:10px}.note-index{font-size:11px;color:var(--accent);font-weight:900}.note-head h2{font:normal clamp(17px,1.7vw,24px)/1.18 Georgia,serif;margin:0}.note-role{font-size:12px;color:var(--accent);margin:7px 0;font-weight:850}.note-desc{font-size:clamp(12px,1vw,14px);line-height:1.55;margin:7px 0 0;color:#e5f4ee}.note-term{border-top:1px solid #ffffff24;margin:10px 0 0;padding-top:9px;font-size:12px;color:#aad6d2;line-height:1.45}
.stage-foot{padding:9px 20px 18px;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.stage-foot button{transition:.3s}.stage-foot button:hover:not(:disabled){transform:translateY(-2px)}
.primary{border:0;background:linear-gradient(125deg,#e6ffe1,var(--accent));color:#07312b;font-weight:900;padding:13px 23px;border-radius:100px;display:inline-flex;gap:20px;align-items:center;box-shadow:0 12px 35px rgba(66,221,196,.17)}.control{background:#ffffff10;border:1px solid #ffffff39;border-radius:50%;width:45px;height:45px;color:#e8fff6}.control:disabled{opacity:.3;cursor:default}.steps{font-size:12px;color:#bad2ce}
.model-notice{font-size:12px;color:#8eacae;max-width:1190px;padding:14px 24px;margin:auto;display:flex;gap:10px;align-items:start}.model-notice span:first-child{color:var(--accent)}
.below{max-width:1010px;margin:25px auto 60px;padding:26px 24px 10px;border-top:1px solid #ffffff24}.below h2{font:normal clamp(24px,2.7vw,36px) Georgia,serif;margin:0 0 10px}.below p{color:#bdd6d4;margin:4px 0 15px}
.secondary{background:#10373f;color:#e6fff7;border:1px solid #5fa9a3;border-radius:99px;padding:11px 18px;font-weight:700}
.quiz{margin-top:22px;padding:22px;border:1px solid #ffffff30;border-radius:25px;background:#092b35}.quiz-head{color:var(--accent);font-size:12px;letter-spacing:.12em;font-weight:800}.quiz-head span{margin-left:12px}.quiz h3{font:normal clamp(20px,2.2vw,27px) Georgia,serif;margin:14px 0}.answers{display:grid;gap:9px}.answers button{background:#ffffff0b;color:#e7fff5;border:1px solid #ffffff27;border-radius:13px;padding:12px;text-align:left}.answers button.correct{border-color:#99f1be;background:#2e795737}.answers button.incorrect{border-color:#ffb8a0;background:#ff65492b}.feedback{min-height:28px}.quiz button:disabled{opacity:.45;cursor:default}
@keyframes note-appear{from{opacity:0;transform:scale(.94) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}
@media(max-width:750px){.lab-header{padding:12px}.lab-brand{font-size:13px}.dim{display:none}.fullscreen span,.back span{display:none}.lab-switch{gap:6px}.lab-switch a{font-size:12px;padding:8px 12px}.intro{margin:25px auto 0}.intro h1{font-size:36px}.stage-frame{width:calc(100% - 10px);border-radius:20px}.stage-top{padding:12px 12px 0;font-size:9px}.canvas{min-height:240px;padding:12px 0}.model{width:100%}.node{width:24px;height:24px;font-size:9px}.arrow-note{width:45%;max-height:73%;overflow:auto;border-radius:13px;padding:9px 11px}.note-role{font-size:10px;margin:4px 0}.note-desc,.note-term{font-size:10px;line-height:1.35;margin:4px 0}.note-term{padding-top:4px}.note-head h2{font-size:15px}.stage-foot{padding:6px 8px 14px;gap:7px}.primary{padding:11px 14px;font-size:12px;gap:8px}.control{width:40px;height:40px}.steps{flex-basis:100%;text-align:center}.below{padding:20px 16px}}
@media(prefers-reduced-motion:reduce){:root{--motion:0ms}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;animation-delay:0ms!important;transition-delay:0ms!important;scroll-behavior:auto!important}.model.open .node{pointer-events:auto}}
