:root{color-scheme:dark;--ink:#081520;--panel:#102837;--line:#254454;--text:#e3edf0;--muted:#94aeba;--cyan:#69e2dc;--blood:#ff6e82;--font:"Microsoft YaHei UI","PingFang SC","Microsoft YaHei",system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.65}button,input{font:inherit}button,a,input{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}button{border:0}button, a, input{touch-action:manipulation}a{color:inherit;text-decoration:none}a:hover{color:var(--cyan)}[hidden]{display:none!important}button svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.site-header{max-width:1600px;margin:auto;padding:26px 54px;display:flex;align-items:center;gap:30px;border-bottom:1px solid #183241}.brand{display:inline-flex;align-items:center;gap:13px;font-size:17px;font-weight:600;letter-spacing:2px}.brand-symbol{position:relative;width:27px;height:29px;display:flex;align-items:center;gap:4px;transform:skewY(-15deg)}.brand-symbol i{width:4px;background:var(--cyan);height:17px;border-radius:2px}.brand-symbol i:nth-child(2){height:27px}.brand-symbol i:nth-child(3){height:22px}.header-caption{font-size:12px;color:#9ab1bf;border-left:1px solid var(--line);padding-left:28px;letter-spacing:2px}.member-entry{margin-left:auto;background:transparent;border:1px solid var(--line);border-radius:4px;padding:6px 13px;font-size:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-entry:hover{border-color:var(--cyan)}.exhibit{max-width:1600px;margin:auto;padding:37px 54px 0}.exhibit-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;margin-bottom:27px}.exhibit-subtitle{margin:0 0 7px;color:var(--cyan);font-size:12px;letter-spacing:3px}h1{font-size:42px;font-weight:500;letter-spacing:3px;line-height:1.35;margin:0}.exhibit-intro{margin:0 3px 3px 0;color:var(--muted);font-size:12px;line-height:1.9}.exhibit-layout{display:grid;grid-template-columns:minmax(0,1fr) 324px;gap:27px}.stage-panel{position:relative;overflow:hidden;min-width:0;border:1px solid var(--line);background:radial-gradient(ellipse at 46% 54%,#173a49 0%,#0d2432 43%,#0b1d29 78%);border-radius:8px}.stage-topbar{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:20px 22px 0}.segmented{display:flex;background:#071720b8;border:1px solid #294452;border-radius:5px;padding:4px;gap:2px}.segmented button{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:7px 13px;border-radius:3px;background:transparent;color:#92aebc;font-size:12px;white-space:nowrap}.segmented button.is-active{background:#274451;color:#edfafa;box-shadow:inset 0 0 0 1px #3c5c67}.segmented button:hover{color:#fff}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;flex-shrink:0}.dot.blood{background:var(--blood);box-shadow:0 0 8px #ff6e8233}.dot.fluid{background:var(--cyan);box-shadow:0 0 8px #69e2dc33}.principle-tag{color:#89a5b3;font-size:10px;letter-spacing:1px;white-space:nowrap}.scene-wrap{height:540px;position:relative}.scene{height:100%;width:100%;touch-action:none}.scene canvas{display:block;width:100%;height:100%;outline:none}.scene-loading{position:absolute;top:46%;left:50%;transform:translate(-50%,-50%);display:flex;gap:10px;align-items:center;color:var(--muted);pointer-events:none;font-size:12px}.scene-loading>span{width:13px;height:13px;border:1px solid #385d6a;border-top-color:var(--cyan);border-radius:50%;animation:spin 1.2s linear infinite}.scene-caption{position:absolute;bottom:57px;left:25px;display:flex;align-items:center;gap:9px;color:#8aa8b8;font-size:10px;letter-spacing:1px;pointer-events:none}.caption-line{width:19px;height:1px;background:#5d7d8c}.scene-instructions{position:absolute;bottom:20px;left:25px;display:flex;gap:9px;align-items:center;color:#86a3b1;font-size:10px;letter-spacing:.4px;pointer-events:none}.mouse-icon{height:15px;width:10px;border:1px solid #6a899a;border-radius:5px;position:relative}.mouse-icon:before{content:"";position:absolute;height:4px;width:1px;background:#6a899a;top:2px;left:4px}.mobile-instruction{display:none}.stage-toolbar{padding:13px 20px;display:flex;align-items:center;gap:10px;border-top:1px solid #294755;background:#0c202bdb}.tool-button{background:transparent;display:inline-flex;align-items:center;gap:8px;font-size:12px;color:#a8c0cb;padding:8px 10px;border-radius:4px}.tool-button:hover{background:#1a3745;color:var(--text)}.tool-button[aria-pressed=true]{color:var(--cyan)}.tool-button svg{height:18px;width:18px}.toolbar-divider{width:1px;height:19px;background:var(--line);margin:0 2px}.reset-button{margin-left:auto}.inspector{display:flex;flex-direction:column;min-width:0;padding:4px 0 0}.inspector-heading{display:flex;align-items:center;gap:10px;margin-bottom:17px}.tiny-cross{color:var(--cyan);font-size:20px;font-weight:300;line-height:1}h2,h3,p{overflow-wrap:anywhere}.inspector h2{font-size:14px;font-weight:500;letter-spacing:1px;margin:0}.part-list{display:grid;grid-template-columns:1fr 1fr;gap:8px}.part-button{border:1px solid #264250;background:#102634;color:#b0c4ce;font-size:12px;min-height:41px;text-align:left;padding:8px 12px;border-radius:3px;display:flex;align-items:center;gap:9px}.part-button:before{content:"";height:5px;width:5px;flex-shrink:0;border:1px solid #64808d;border-radius:50%}.part-button[data-kind=blood]:before{border-color:#c16475}.part-button[data-kind=fluid]:before{border-color:#5ba7a7}.part-button.is-selected{border-color:#65bcb9;background:#193c46;color:#e9ffff}.part-button.is-selected:before{border-color:var(--cyan);background:var(--cyan)}.part-button:hover{background:#183542}.part-button.mode-muted{opacity:.55}.part-detail{padding:21px 1px 23px;min-height:206px}.detail-heading{display:flex;align-items:center;justify-content:space-between}.part-kind{font-size:10px;letter-spacing:1px;color:var(--cyan)}.part-kind[data-kind=blood]{color:var(--blood)}.focus-button{background:transparent;color:#85a7b7;font-size:11px;padding:3px 0 3px 10px}.focus-button span{font-size:16px;padding-left:4px}.focus-button:hover{color:var(--cyan)}.part-detail h3{font-size:24px;font-weight:500;letter-spacing:1px;margin:9px 0}.part-detail>p{font-size:12px;color:#a4bcc8;line-height:1.95;min-height:48px;margin:0}.membrane-note{display:flex;align-items:center;gap:13px;font-size:10px;color:#87a4b4;margin-top:19px}.membrane-symbol{display:block;width:28px;height:27px;border-left:3px solid #ff6e82;border-right:3px solid var(--cyan);position:relative;flex-shrink:0}.membrane-symbol:before{content:"";position:absolute;left:10px;top:0;height:27px;border-left:1px dashed #81989d}.flow-controls{border-top:1px solid var(--line);padding:17px 0 0;margin-top:auto}.flow-controls h3{font-size:12px;font-weight:500;color:#afc6d0;margin:0 0 8px}.flow-control{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;padding:10px 0;min-height:45px}.flow-control-name{display:flex;align-items:center;gap:8px;font-size:12px;flex:1}.flow-state{margin-left:auto;color:#7e9eae;font-size:10px}.switch-input{position:absolute;right:0;opacity:0;width:35px;height:24px;margin:0;cursor:pointer}.switch{width:34px;height:20px;border-radius:20px;border:1px solid #365563;background:#172e3b;position:relative;flex-shrink:0;pointer-events:none;transition:background .15s}.switch:before{position:absolute;content:"";height:12px;width:12px;border-radius:50%;background:#7c97a4;left:3px;top:3px;transition:transform .15s}.switch-input:checked+.switch{background:#215250;border-color:#3b7774}.switch-input:checked+.switch:before{transform:translateX(14px);background:var(--cyan)}.switch-input:checked+.blood-switch{background:#532f40;border-color:#815068}.switch-input:checked+.blood-switch:before{background:var(--blood)}.switch-input:focus-visible+.switch{outline:2px solid var(--cyan);outline-offset:4px}.simulation-note{font-size:10px;color:#7192a3;line-height:1.9;margin:12px 0 0;max-width:300px}.exhibit-footnote{display:flex;align-items:baseline;gap:10px;font-size:10px;color:#6e8d9f;margin:20px 0 29px;line-height:1.9}.footnote-mark{display:inline-block;height:5px;width:5px;background:#3f7184;transform:rotate(45deg);flex-shrink:0}.site-footer{max-width:1492px;margin:0 auto;border-top:1px solid #1c3543;padding:22px 0;display:flex;align-items:center;gap:26px;color:#71909f;font-size:10px;letter-spacing:.3px}.site-footer>a{margin-left:auto}.portal-entry{display:flex;align-items:center;justify-content:center;width:30px;height:30px;padding:6px;color:#668797;background:transparent;border-radius:4px;margin-right:-5px}.portal-entry:hover{color:var(--cyan);background:#152f3e}.portal-entry svg{height:20px;width:20px;stroke-width:1.2}.portal{width:min(520px,calc(100% - 32px));max-height:calc(100dvh - 48px);padding:0;border:1px solid #345463;border-radius:10px;background:#0e2533;color:var(--text);box-shadow:0 32px 150px #0009;overflow:auto}.portal.is-wide{width:min(960px,calc(100% - 32px))}.portal::backdrop{background:#020c16bc;backdrop-filter:blur(7px)}.portal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:27px 30px 22px;gap:20px}.portal-kicker{font-size:11px;color:var(--cyan);letter-spacing:2px;margin:0 0 5px}.portal-header h2{font-size:27px;font-weight:500;letter-spacing:1px;line-height:1.4;margin:0}.icon-button{background:transparent;color:#90aebb;padding:0;width:30px;height:30px;font-size:28px;line-height:1;flex-shrink:0;border-radius:3px}.icon-button:hover{color:#fff;background:#203c4b}.portal-view{padding:0 30px 30px}.view-intro{font-size:12px;color:#a1bac7;margin:0 0 23px;line-height:1.9}.stack-form{display:flex;flex-direction:column;gap:17px}.stack-form label,.admin-form label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#b1cad5}.stack-form input,.admin-form input,.user-row input[type=password]{width:100%;border:1px solid #365261;background:#071a26;border-radius:4px;color:#e5f3f7;padding:11px 12px;min-height:43px}.stack-form input:hover,.admin-form input:hover,.user-row input[type=password]:hover{border-color:#547682}.stack-form input:focus,.admin-form input:focus,.user-row input[type=password]:focus{border-color:var(--cyan);outline:0;box-shadow:0 0 0 2px #69e2dc1a}.input-help{font-size:10px;color:#7d9baa;line-height:1.85}.primary-button{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:11px 15px;background:var(--cyan);color:#092a30;border:1px solid var(--cyan);border-radius:4px;font-size:12px;font-weight:600;min-height:43px}.primary-button:hover{background:#96eee8;border-color:#96eee8}.primary-button span{font-size:17px}.secondary-button{padding:9px 13px;background:#1b3b49;border:1px solid #426471;border-radius:4px;color:#c6dde5;font-size:11px;min-height:39px}.secondary-button:hover{border-color:var(--cyan);color:var(--cyan)}.form-help{font-size:10px;color:#6e91a3;line-height:1.9;margin:20px 0 0}.form-message{font-size:11px;color:#ff9da8;line-height:1.9;margin:0;min-height:0}.form-message:empty{display:none}.form-message.success{color:var(--cyan)}.workspace-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 30px 23px;padding-bottom:14px;border-bottom:1px solid var(--line)}.workspace-nav button{background:transparent;color:#95b4c3;font-size:11px;padding:5px 8px;border-radius:3px}.workspace-nav button:hover,.workspace-nav button.is-current{color:var(--cyan);background:#1b3a47}.workspace-nav #logout-button{margin-left:auto;color:#7f9eae}.private-empty{padding:38px 10px 43px;display:flex;flex-direction:column;align-items:center;text-align:center;border:1px dashed #2b4959;border-radius:5px;background:#0a202d80}.private-empty h3{font-size:19px;font-weight:500;letter-spacing:2px;margin:14px 0 8px}.private-empty p{font-size:11px;color:#89a7b6;line-height:1.9;margin:0}.empty-orbit{width:45px;height:45px;border:1px solid #416775;border-radius:50%;position:relative;transform:rotate(-30deg)}.empty-orbit:before{position:absolute;content:"";inset:10px -10px;border:1px solid #477784;border-radius:50%;transform:rotate(-10deg)}.empty-orbit:after{content:"";position:absolute;width:5px;height:5px;background:var(--cyan);border-radius:50%;left:6px;top:3px}.text-button{background:transparent;color:#8bb4c4;font-size:11px;padding:6px 0}.text-button:hover{color:var(--cyan)}#change-logout{margin-top:17px}.admin-create-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:24px;margin-top:20px}.admin-form{display:flex;flex-direction:column;gap:13px;padding:20px;border:1px solid #2b4a5a;border-radius:5px;background:#0a202c}.admin-form h3{margin:0 0 1px;font-size:14px;font-weight:500}.admin-form fieldset{padding:0;margin:0;border:0}.admin-form legend,.user-row legend{font-size:11px;color:#9db7c5;margin-bottom:8px;padding:0}.input-action{display:flex;align-items:stretch;gap:7px}.input-action>input{min-width:0;flex:1}.input-action>button{background:#234553;border:1px solid #3c6472;padding:0 12px;border-radius:4px;color:#b3d7df;font-size:11px}.group-checks{display:flex;gap:9px 14px;flex-wrap:wrap}.group-checks label{display:flex;align-items:center;flex-direction:row;gap:5px;font-size:11px;cursor:pointer;color:#a7c1cd}.group-checks input[type=checkbox]{width:14px;height:14px;min-height:auto;margin:0;accent-color:var(--cyan)}.group-checks>p{font-size:10px;color:#789ba9;margin:0}.group-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.group-chip{font-size:10px;color:#a8d5da;padding:4px 8px;border:1px solid #345967;border-radius:3px}.group-create-form{justify-content:flex-start}.user-list-heading{margin:27px 0 13px;display:flex;align-items:center;gap:12px}.user-list-heading h3{margin:0;font-size:15px;font-weight:500}.user-list-heading>span{font-size:10px;color:#8da9b7}.user-list-heading>button{margin-left:auto}.user-list{display:flex;flex-direction:column;gap:10px}.user-row{padding:17px 19px;border:1px solid #2c4b5a;border-radius:4px;background:#0a202d}.user-row.is-disabled{border-style:dashed;opacity:.8}.user-row-top{display:flex;gap:11px;align-items:center;flex-wrap:wrap}.user-name{font-size:13px;font-weight:600;color:#d4e8ed;overflow-wrap:anywhere}.user-meta{font-size:9px;color:#87a8b9;padding:2px 7px;border:1px solid #345260;border-radius:3px}.user-status{font-size:10px;color:var(--cyan);margin-left:auto}.user-row.is-disabled .user-status{color:#e6a3a3}.user-controls{margin-top:14px}.user-row fieldset{padding:0;margin:0;border:0}.user-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:13px}.user-actions input{min-width:120px;flex:1;font-size:11px;max-width:220px;padding:8px 10px!important;min-height:36px!important}.user-actions .secondary-button{min-height:36px;font-size:10px;padding:8px 10px}.user-actions .danger-button{margin-left:auto;color:#d1a6ae;background:transparent;border:1px solid #624a59;border-radius:4px;min-height:35px;font-size:10px;padding:7px 10px}.user-actions .danger-button:hover{border-color:#cb7b8d;color:#ffadba}.user-row-message{margin-top:8px}.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);padding:11px 18px;background:#173c48;border:1px solid #4b777d;border-radius:5px;color:#d9f5f4;font-size:12px;z-index:20;box-shadow:0 6px 30px #0005;white-space:normal}.private-items{display:flex;flex-direction:column;gap:10px}.private-item{display:block;padding:17px;border:1px solid #34515e;border-radius:4px;background:#102c3a;font-size:13px}.private-item:hover{border-color:var(--cyan)}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:1600px){.scene-wrap{height:610px}}@media(max-width:1530px){.site-footer{margin-left:54px;margin-right:54px}}@media(max-width:1150px){.site-header{padding-left:32px;padding-right:32px}.exhibit{padding:30px 32px 0}.exhibit-layout{grid-template-columns:minmax(0,1fr) 283px;gap:21px}.scene-wrap{height:520px}.stage-topbar{padding:16px 16px 0}.segmented button{padding:7px 10px}.principle-tag{font-size:9px}.site-footer{margin-left:32px;margin-right:32px}.part-button{padding:8px;font-size:11px}.exhibit-intro{font-size:11px}h1{font-size:36px}.simulation-note{font-size:9px}.part-detail>p{font-size:11px}}
@media(max-width:850px){.site-header{padding:20px 24px}.exhibit{padding:28px 24px 0}.exhibit-heading{gap:20px;margin-bottom:23px}.exhibit-intro{font-size:10px}.exhibit-layout{grid-template-columns:1fr;gap:25px}.scene-wrap{height:540px}.inspector{display:grid;grid-template-columns:1fr 1fr;gap:0 25px}.inspector-heading{grid-column:1/-1}.part-list{grid-column:1;grid-row:2}.part-detail{grid-column:2;grid-row:2;padding:0;min-height:0}.flow-controls{grid-column:1/-1;margin-top:23px;display:grid;grid-template-columns:1fr 1fr;gap:0 25px}.flow-controls h3{grid-column:1/-1}.flow-controls .simulation-note{grid-column:1/-1;max-width:none;font-size:10px;margin-top:8px}.membrane-note{margin-top:12px}.site-footer{margin-left:24px;margin-right:24px}.exhibit-footnote{margin-bottom:24px}.principle-tag{font-size:10px}}
@media(max-width:560px){.site-header{padding:18px 20px;gap:17px}.brand{font-size:14px;letter-spacing:1px;gap:10px}.brand-symbol{transform:scale(.85) skewY(-15deg);width:23px}.header-caption{font-size:9px;padding-left:16px;letter-spacing:1px}.member-entry{max-width:110px;padding:5px 7px;font-size:9px}.exhibit{padding:26px 16px 0}.exhibit-heading{display:block;padding:0 4px;margin-bottom:23px}.exhibit-subtitle{font-size:10px;letter-spacing:2px;margin-bottom:10px}h1{font-size:31px;letter-spacing:2px}.exhibit-intro{font-size:10px;line-height:1.9;margin:13px 0 0}.exhibit-intro br{display:none}.stage-topbar{padding:13px 12px 0;gap:4px}.segmented{padding:3px;gap:1px}.segmented button{font-size:10px;padding:6px 9px;gap:5px}.principle-tag{font-size:8px;letter-spacing:0}.scene-wrap{height:450px}.scene-caption{left:16px;bottom:48px;font-size:8px}.scene-instructions{left:16px;bottom:17px;font-size:8px;letter-spacing:0}.desktop-instruction{display:none}.mobile-instruction{display:inline}.mouse-icon{height:13px;width:9px}.mouse-icon:before{left:3px}.stage-toolbar{padding:10px 8px;gap:2px}.tool-button{font-size:10px;gap:5px;padding:7px 8px}.tool-button svg{width:17px;height:17px}.toolbar-divider{margin:0 4px}.inspector{display:flex;padding:0 4px}.inspector-heading{margin-bottom:14px}.inspector h2{font-size:13px}.part-list{gap:7px;grid-template-columns:repeat(2,minmax(0,1fr))}.part-button{font-size:11px;min-height:40px;padding:9px 11px}.part-detail{padding:20px 0 0}.part-detail h3{font-size:24px;margin:8px 0}.part-detail>p{font-size:12px;min-height:0}.membrane-note{margin-top:15px}.flow-controls{margin-top:22px;padding-top:16px;display:block}.flow-controls h3{font-size:12px}.flow-control{min-height:48px}.simulation-note{font-size:10px!important;max-width:none}.exhibit-footnote{font-size:9px;padding:0 4px;line-height:1.9;margin-top:24px}.site-footer{margin-left:20px;margin-right:20px;gap:12px;font-size:8px;padding:18px 0}.site-footer>span{display:none}.site-footer>a{margin-left:0}.portal-entry{margin-left:auto;margin-right:-5px}.portal{max-height:calc(100dvh - 28px);border-radius:8px;width:calc(100% - 24px)}.portal.is-wide{width:calc(100% - 24px)}.portal-header{padding:22px 22px 19px}.portal-header h2{font-size:24px}.portal-view{padding:0 22px 24px}.workspace-nav{margin:0 22px 20px;gap:4px}.workspace-nav button{font-size:10px;padding:5px}.workspace-nav #logout-button{margin-left:0}.admin-create-grid{grid-template-columns:1fr;gap:15px}.admin-form{padding:17px}.user-row{padding:15px}.user-actions .danger-button{margin-left:0}.user-actions input{max-width:none}.portal-kicker{font-size:10px}.form-help{font-size:10px}.exhibit-layout{gap:26px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media(max-width:560px){.stack-form input,.admin-form input,.user-row input[type=password]{font-size:16px}}
