
:root{font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:#eaf4f4;font-synthesis:none;color-scheme:dark;--ink:#102a36;--muted:#9cafb7;--line:#ffffff24;--accent:#c5ede2;--panel:#102b36ed}*{box-sizing:border-box}body{margin:0;background:#0c2130;overflow:hidden}button,input,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0;background:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #9ee9da;outline-offset:4px}button:hover{filter:brightness(1.15)}[hidden]{display:none!important}#scene{position:fixed;inset:0}#scene canvas{display:block;width:100%;height:100%}.vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,#051723cf 0%,#09243266 40%,transparent 75%),linear-gradient(0deg,#05172380,transparent 25%,transparent 70%,#05172388)}body.touring .vignette{background:linear-gradient(0deg,#05172370,transparent 20%,transparent 80%,#05172370)}header{position:fixed;top:0;left:0;right:0;height:112px;display:flex;align-items:center;justify-content:space-between;padding:0 4%;border-bottom:1px solid var(--line);z-index:5;background:linear-gradient(#091f2b99,transparent)}.brand{display:flex;gap:12px;text-decoration:none;color:#fff;align-items:center;font-size:20px;font-weight:700;letter-spacing:2px}.brand small{display:block;font-size:8px;letter-spacing:2.7px;margin-top:5px;color:#bdd0d4}.brand-icon{font-size:42px;color:var(--accent);font-weight:400}nav{display:flex;gap:6px}.tab{padding:15px 20px;color:#abc0c8;border-radius:6px;font-size:14px;letter-spacing:1px;position:relative}.tab span{font-size:9px;margin-left:9px;opacity:.55}.tab.active{color:#efffff;background:#ffffff12}.tab.active:after{content:'';position:absolute;bottom:0;left:20px;right:20px;height:2px;background:#a9e2d9}.pill{border:1px solid #ffffff40;border-radius:24px;padding:10px 18px;white-space:nowrap}.pill span{font-size:12px;margin-left:8px}.welcome{position:fixed;left:7%;top:50%;transform:translateY(-42%);max-width:540px}.eyebrow{letter-spacing:3px;font-size:10px;color:#b3d6d5;display:flex;align-items:center;gap:10px}.eyebrow i,.live-dot{width:6px;height:6px;background:#a2dfc8;border-radius:50%;display:inline-block;box-shadow:0 0 14px #9fdfc8}h1{font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:clamp(36px,4.1vw,64px);font-weight:500;line-height:1.38;letter-spacing:4px;margin:28px 0 18px}p{line-height:2;font-size:14px;color:#c4d2d8;letter-spacing:.7px}.hero-actions{display:flex;gap:25px;align-items:center;margin:30px 0 35px}.primary{background:#d7eee8;color:#193f48;border-radius:3px;padding:16px 24px;min-width:170px;font-weight:600;display:flex;justify-content:space-between;gap:25px}.primary span{font-size:18px}.text-button{font-size:12px;border-bottom:1px solid #a1bfc080;padding:12px 0}.text-button span{margin-left:10px}.hero-meta{display:flex;gap:32px;border-top:1px solid var(--line);padding-top:25px}.hero-meta span{font-size:10px;color:#97b0bc;letter-spacing:1px}.hero-meta b{display:block;color:#dbe9eb;font-size:24px;font-weight:400;margin-bottom:7px;letter-spacing:1px}footer{position:fixed;bottom:22px;left:4%;right:4%;display:flex;justify-content:space-between;color:#aac1ca;font-size:10px;letter-spacing:2px;pointer-events:none}.rail{position:fixed;right:3%;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:10px}.rail button{display:flex;flex-direction:column;align-items:center;gap:9px;padding:15px 12px;border:1px solid var(--line);background:#15323b77;backdrop-filter:blur(12px);border-radius:8px}.rail span{font-size:23px}.rail b{font-size:10px;letter-spacing:1px;font-weight:400}.location{position:fixed;left:4%;top:136px;font-size:13px;letter-spacing:1px;display:flex;align-items:center;gap:10px}.location span:last-child{font-size:11px;color:#a4bec7}.tour-controls{position:fixed;left:50%;bottom:70px;transform:translateX(-50%);display:flex;background:#102b36d9;border:1px solid var(--line);border-radius:30px;padding:7px;backdrop-filter:blur(12px);white-space:nowrap}.tour-controls button{padding:10px 18px;border-radius:25px;font-size:18px}.tour-controls button.active{background:#d5eee3;color:#173c40}.tour-controls span{font-size:12px;margin-left:5px}.guide{position:fixed;bottom:43px;width:100%;text-align:center;font-size:10px;color:#a6bfc7;letter-spacing:1px;pointer-events:none}#load-status{position:fixed;bottom:80px;left:4%;display:flex;gap:10px;align-items:center;font-size:11px;color:#afc7ce;background:#0d2939cc;border-radius:20px;padding:10px 16px;z-index:6}.spinner{width:12px;height:12px;border:1px solid #456b77;border-top-color:#c4f0e1;border-radius:100%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#selection{position:fixed;top:190px;left:4%;padding:24px;background:#102b36dc;border:1px solid var(--line);backdrop-filter:blur(15px);min-width:235px;border-radius:8px}#selection small{font-size:9px;letter-spacing:2px;color:#a7c5cc}#selection h2{margin:12px 0 8px;font-size:27px;font-weight:500}#selection p{font-size:11px;margin:0}.selection-actions{display:flex;gap:12px;margin-top:14px}.selection-actions button{border:1px solid var(--line);border-radius:50%;height:30px;width:30px}#shade{position:fixed;inset:0;background:#020f1880;z-index:10;backdrop-filter:blur(4px)}#drawer{position:fixed;right:0;top:0;bottom:0;width:min(440px,100%);background:#f3f6f3;color:#203b40;z-index:11;display:flex;flex-direction:column;padding:30px}.drawer-head{display:flex;align-items:center;justify-content:space-between}.drawer-head small{font-size:9px;color:#71948d;letter-spacing:3px}.drawer-head h2{font-size:28px;margin:10px 0;font-weight:500}.drawer-head button{font-size:28px;color:#69847f}.drawer-head+p{font-size:12px;color:#69817b;line-height:1.6}.search{display:flex;align-items:center;gap:10px;border-bottom:1px solid #becfca;padding:12px 0;margin:6px 0 15px}.search input{border:0;background:none;width:100%;font:inherit;font-size:13px;color:#25473f;outline:none}#roster{overflow:auto;flex:1;min-height:0}.student-row{width:100%;display:flex;align-items:center;text-align:left;padding:16px 5px;border-bottom:1px solid #dce5e0;color:#27483f;gap:12px}.student-row .no{font-size:10px;color:#849a94;width:22px}.student-row strong{font-size:14px;font-weight:500}.student-row .score{margin-left:auto;font-size:11px;color:#7b948b}.student-row:hover{background:#e3eee6}.drawer-foot{padding-top:16px;font-size:10px;line-height:1.8;color:#82958d}#coming{position:fixed;top:50%;left:12%;transform:translateY(-40%)}#coming h1{font-size:64px}#coming button{margin-top:30px}body.coming #scene{filter:blur(13px);opacity:.32}body.coming .rail{display:none}#error{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);background:#33272cf5;border:1px solid #d59898;z-index:9;border-radius:10px;padding:24px;max-width:90vw}#error p{font-size:12px}#error button{background:#f0e0d9;color:#503333;padding:8px 15px;border-radius:4px}body.day header{background:linear-gradient(#102e3c99,transparent)}@media(max-width:850px){header{height:124px;padding:14px 5%;align-items:flex-start}.brand{font-size:16px}.brand-icon{font-size:30px}.brand small{font-size:7px}.pill{padding:8px 12px}nav{position:absolute;bottom:9px;left:4%;right:4%;justify-content:center}.tab{padding:10px 11px;font-size:12px}.tab span{display:none}.welcome{left:7%;right:8%;top:49%}.welcome h1{font-size:43px}.welcome p{font-size:12px}.rail{right:4%;top:auto;bottom:125px;transform:none;flex-direction:row}.rail button{padding:10px;gap:4px}.rail span{font-size:17px}.rail b{font-size:9px}.hero-meta{gap:25px}.tour-controls{bottom:78px}.tour-controls button{padding:8px 12px}.tour-controls span{font-size:10px}.location{top:145px}.guide{bottom:51px;font-size:9px}footer{font-size:8px;letter-spacing:1px}#selection{top:177px;min-width:180px;padding:18px}#selection h2{font-size:23px}#load-status{bottom:50px;font-size:9px;max-width:92vw}.welcome .hero-actions{gap:18px}.primary{font-size:13px;padding:14px 18px;min-width:160px}.hero-meta span{font-size:9px}#coming{left:8%;right:8%}#coming h1{font-size:48px}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}
#touch-walk{position:fixed;left:5%;bottom:140px;text-align:center;z-index:7;touch-action:none}#touch-walk button{width:42px;height:42px;background:#122e3ddb;border:1px solid #ffffff40;border-radius:10px;margin:3px;font-size:19px;touch-action:none}#touch-walk button:active{background:#d7eee8;color:#102a36}@media(min-width:851px){#touch-walk{display:none!important}}
/* The fifth gallery keeps the same navigation in a warm stone and champagne palette. */
nav{min-width:0}.tab{white-space:nowrap}.location b{font-weight:500}
body.curve{color:#443c31;--line:#73614d38;--accent:#a18a5c;--panel:#f3ece1f0;color-scheme:light;background:#ded5c7}
body.curve header{background:linear-gradient(#f5eee9f0,#f4ede4b0);border-color:#73614d30}
body.curve .brand{color:#483d30}body.curve .brand small{color:#93816b}body.curve .brand-icon{color:#ab8e56}
body.curve .tab{color:#7d705f}body.curve .tab.active{color:#493b28;background:#bb9c5920}body.curve .tab.active:after{background:#b29661}
body.curve .pill{border-color:#9c85654f;background:#f8f1e7a0;color:#66523b}
body.curve .vignette{background:linear-gradient(90deg,#eee7dbee 0%,#efe8da88 39%,transparent 73%),linear-gradient(0deg,#d0c3af40,transparent 30%)}
body.curve.touring .vignette{background:linear-gradient(0deg,#6e573126,transparent 20%,transparent 80%,#f3ece330)}
body.curve .eyebrow{color:#a28a60}body.curve .eyebrow i,body.curve .live-dot{background:#b69b65;box-shadow:0 0 12px #b69b6566}
body.curve h1{color:#4c4135}body.curve p{color:#82715d}body.curve .primary{background:#9b8054;color:#fff8eb}body.curve .text-button{border-color:#ad977680}
body.curve .hero-meta span{color:#91826c}body.curve .hero-meta b{color:#685238}
body.curve .rail button,body.curve .tour-controls,body.curve #selection{background:#f4eddfef;color:#534633;border-color:#baaa8e70}
body.curve .tour-controls button.active{background:#b29a70;color:white}body.curve #selection small,body.curve #selection p{color:#958265}
body.curve .location{background:#f7f0e4de;padding:10px 14px;border:1px solid #c5b69970;border-radius:6px;color:#615139}
body.curve .location span:last-child{color:#91806b}body.curve .guide{color:#5e4b35;text-shadow:0 1px 6px #fff7e8}
body.curve footer{color:#6c5b43}body.curve footer span{background:#f1e7d9cd;padding:5px 8px;border-radius:3px}
body.curve #load-status{background:#f6efdfed;color:#8a7553}body.curve .spinner{border-color:#c5b18e;border-top-color:#705838}
body.curve #drawer{background:#f7f1e7;color:#544733}body.curve .drawer-head small,body.curve .drawer-head+p{color:#a38c65}
body.curve .student-row{color:#665337;border-color:#ddd2bf}body.curve .student-row:hover{background:#eee4d2}body.curve .student-row .no,body.curve .student-row .score{color:#aa987b}
body.curve .search{border-color:#d2bea0}body.curve .search input{color:#725c3b}body.curve .drawer-foot{color:#9c8767}
body.curve #touch-walk button{background:#f2e9d8ed;border-color:#baab8e;color:#7d6340}
@media(min-width:851px) and (max-width:1200px){header{padding:0 3%}.tab{padding:14px 12px;font-size:12px}.tab span{margin-left:5px}.brand{font-size:17px}.brand-icon{font-size:34px}.brand small{font-size:7px}}
@media(max-width:850px){nav{justify-content:flex-start;overflow-x:auto;scrollbar-width:none;gap:3px;padding-bottom:2px}nav::-webkit-scrollbar{display:none}.tab{flex:none;padding:10px 12px}body.curve .welcome h1{font-size:37px;letter-spacing:2px}body.curve .welcome p{font-size:11px}body.curve .location{padding:8px 10px}body.curve .hero-meta{gap:21px}body.curve footer{left:3%;right:3%;font-size:7px}}
header{gap:16px}.brand,#theme{flex-shrink:0}nav{overflow-x:auto;scrollbar-width:none}nav::-webkit-scrollbar{display:none}.tab{flex-shrink:0}
body.basket .primary,body.frog .primary{background:#708364;color:#fffbed}body.basket .brand-icon,body.frog .brand-icon{color:#778c69}
body.basket .tab.active,body.frog .tab.active{color:#47513d;background:#85976c22}body.basket .tab.active:after,body.frog .tab.active:after{background:#82916b}
body.basket .eyebrow,body.frog .eyebrow{color:#798968}body.basket .live-dot,body.frog .live-dot{background:#8a9e77}
@media(max-width:850px){header{gap:8px}}
