:root{--green:#2b503b;--accent:#dce6cf;--paper:#f6f5ef;--ink:#263b2d;--muted:#7c8377;--radius:16px;--gap:22px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.7 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,a{cursor:pointer}button{border:1px solid #dce0d5;background:white;color:var(--ink);padding:10px 18px;border-radius:8px;transition:.2s}button:hover{background:var(--accent);border-color:var(--green)}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #a3b58c;outline-offset:3px}header{height:88px;border-bottom:1px solid #e5e6dc;display:flex;align-items:center;justify-content:space-between;padding:0 4.5%;gap:25px;background:#fbfbf6;position:sticky;top:0;z-index:15}.brand{display:flex;align-items:center;gap:10px;font-family:Georgia,"Songti SC",serif;font-weight:600;font-size:25px;line-height:1.2;white-space:nowrap}.brand small{display:block;font:9px/1.9 sans-serif;letter-spacing:3px}.brandmark{font-size:44px;font-weight:400}nav{display:flex;gap:28px;align-self:stretch;align-items:center}nav a{height:100%;display:flex;align-items:center;font-size:13px;position:relative;color:#6e776c}nav a.active{color:var(--green);font-weight:600}nav a.active:after{content:'';position:absolute;bottom:0;height:3px;left:10%;right:10%;background:var(--green)}.headtools{display:flex;gap:12px}.green{background:var(--green);color:white;border-color:var(--green)}.green:hover{background:#43694e;color:white}.icon{background:none;border:0;padding:7px 12px;font-size:24px}.link{background:none;border:0;padding:0;color:var(--green)}main{max-width:1440px;margin:auto;padding:38px 4.5% 60px}.eyebrow{font-size:10px;letter-spacing:3px;color:#738269;font-weight:600;text-transform:uppercase}.intro{display:flex;justify-content:space-between;align-items:end;margin-bottom:27px}.intro h1{font:400 38px/1.4 Georgia,"Songti SC","SimSun",serif;margin:9px 0}.intro p{color:var(--muted);margin:0}.season{color:#87917d;font-size:12px;letter-spacing:1px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:34px 0 18px}.section-title h2{font:400 24px Georgia,"Songti SC",serif;margin:0}.section-title small{font:10px sans-serif;letter-spacing:2px;color:#92988b;margin-left:13px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:var(--gap)}.stage{border-radius:var(--radius);overflow:hidden;position:relative;background:#1e3824;height:477px}.stage>img{width:100%;height:100%;object-fit:cover;transition:transform .25s;user-select:none;touch-action:none}.stage:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(12,31,15,.2),transparent 48%,rgba(8,24,12,.65));pointer-events:none}.stagetop{position:absolute;z-index:2;top:20px;left:22px;right:20px;display:flex;justify-content:space-between}.glass{color:white;background:#ffffff20;backdrop-filter:blur(12px);border:1px solid #ffffff40;border-radius:30px;padding:5px 13px;font-size:11px}.stagename{position:absolute;bottom:77px;left:27px;color:white;z-index:2}.stagename h2{font:400 29px Georgia,"Songti SC",serif;margin:0 0 3px}.stagename em{font:italic 13px Georgia;color:#e0e6db}.stagebar{position:absolute;bottom:19px;left:23px;right:23px;z-index:3;display:flex;justify-content:space-between;align-items:center}.stagebar button{background:#ffffff20;color:white;border:1px solid #ffffff50;backdrop-filter:blur(12px);padding:7px 12px;border-radius:6px}.stagebar button:hover{background:#ffffff50}.stagebar .white{background:#f5f8ee;color:var(--green);border:0}.zooms{display:flex;gap:6px;align-items:center;color:white;font-size:11px}.pin{position:absolute;left:58%;top:44%;z-index:3;width:26px;height:26px;padding:0;border-radius:50%;background:#ffffffb0;border:5px solid #ffffff55;box-shadow:0 0 0 7px #ffffff20}.pin:after{content:'细节特写 ↗';position:absolute;left:24px;top:-8px;white-space:nowrap;color:white;font-size:11px;background:#173723a6;border-radius:5px;padding:4px 9px}.panel{background:#fffefa;border:1px solid #e5e7dc;border-radius:var(--radius);padding:23px;display:flex;flex-direction:column}.paneltop{display:flex;justify-content:space-between;align-items:center}.tag{font-size:10px;background:#eaf0e2;color:#5d7750;border-radius:4px;padding:3px 8px}.panel h2{font:400 27px Georgia,"Songti SC",serif;margin:15px 0 1px}.latin{font:italic 13px Georgia;color:#939786}.panel p{font-size:12px;line-height:1.9;color:#7d8477}.facts{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:15px 0;border-top:1px solid #eceee6;border-bottom:1px solid #eceee6;margin:8px 0 20px}.facts small{display:block;color:#9b9f91;font-size:10px;margin-bottom:3px}.facts b{font-size:12px;font-weight:500}.panel .more{margin-top:auto;width:100%}.thumbrow{display:flex;gap:9px;margin-top:13px;align-items:center}.thumb{padding:0;overflow:hidden;border:2px solid transparent;width:82px;height:57px;border-radius:8px;position:relative}.thumb img{width:100%;height:100%;object-fit:cover}.thumb.active{border-color:var(--green)}.thumb span{position:absolute;bottom:0;background:#1737238c;color:white;left:0;right:0;font-size:9px}.thumbrow>small{font-size:10px;color:#92988b;margin-left:4px}.observer-tools{display:flex;gap:9px;margin-top:13px;flex-wrap:wrap}.observer-tools button{font-size:12px;padding:8px 15px}.switchline{display:flex;gap:10px;align-items:center;margin-bottom:15px}.switchline .toggle{display:flex;background:#e9ece2;padding:4px;border-radius:8px}.toggle button{border:0;background:none;padding:6px 20px;font-size:12px}.toggle button.active{background:white;box-shadow:0 2px 5px #263b2d0c}.selectspecies{background:transparent;border:1px solid #d9dfd1;padding:8px;border-radius:7px;color:var(--green)}.livehint{margin-left:auto;font-size:11px;color:#88947d}.livehint:before{content:'●';color:#8b9d67;margin-right:7px;font-size:8px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}.card{border:1px solid #e3e7db;background:#fffef9;border-radius:var(--radius);overflow:hidden;transition:transform .25s;cursor:pointer}.card:hover{transform:translateY(-4px)}.card img{width:100%;height:195px;object-fit:cover;display:block}.cardbody{padding:17px 20px}.cardbody h3{font:400 20px Georgia,"Songti SC",serif;margin:5px 0}.cardbody p{font-size:12px;color:#8c9383;margin:7px 0 0}.cardmeta{display:flex;justify-content:space-between;align-items:center}.cardmeta span{font-size:10px;letter-spacing:1px;color:#91a081}.callout{display:grid;grid-template-columns:1fr 1fr;background:#e8eddd;border-radius:var(--radius);overflow:hidden;margin-top:38px}.callout>div{padding:38px}.callout h2{font:400 30px/1.5 Georgia,"Songti SC",serif;margin:13px 0}.callout p{font-size:12px;color:#7d8972}.callout img{height:285px;width:100%;object-fit:cover}.search{display:flex;gap:10px;align-items:center;background:#fffefa;border:1px solid #dce1d4;border-radius:9px;padding:10px 15px;margin:22px 0}.search input{background:none;border:0;outline:0;flex:1;min-width:80px}.chips{display:flex;gap:8px;margin:20px 0}.chips button{font-size:12px}.chips button.active{background:var(--green);color:white}.detailhero{display:grid;grid-template-columns:1.1fr 1fr;gap:45px;margin-top:25px}.detailhero>img{width:100%;height:480px;object-fit:cover;border-radius:var(--radius)}.detailhero h1{font:400 43px Georgia,"Songti SC",serif;margin:13px 0}.detailhero p{color:#78816f}.detailblocks{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);margin:30px 0}.paper{padding:27px;background:#fffefa;border:1px solid #e1e5d8;border-radius:var(--radius)}.paper h3{font:400 21px Georgia,"Songti SC",serif;margin:4px 0 13px}.paper p{color:#7b8374;font-size:13px}.notelist{display:grid;gap:15px}.note{background:#fffef9;padding:22px;border:1px solid #e0e5d7;border-radius:var(--radius);display:flex;gap:20px}.note img{width:120px;height:105px;object-fit:cover;border-radius:8px}.note h3{margin:0 0 8px}.note p{white-space:pre-wrap}.note small{color:#8c9383}.note button{margin-left:auto;align-self:start;padding:4px 10px;font-size:11px}.empty{padding:55px;text-align:center;border:1px dashed #c8d2be;border-radius:15px;color:#859078}.topicbanner{position:relative;border-radius:var(--radius);overflow:hidden;height:360px;color:white;display:flex;align-items:center;padding:50px;background:#243c2b}.topicbanner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}.topicbanner>div{z-index:1}.topicbanner h1{font:400 40px Georgia,"Songti SC",serif}.topicgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:25px 0}footer{border-top:1px solid #e0e4d6;margin:0 4.5%;padding:28px 0 35px;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#929b87}footer .brand{font-size:19px;gap:10px}footer .brand small{font-size:8px}dialog{border:1px solid #e1e6d6;border-radius:18px;background:var(--paper);color:var(--ink);max-width:680px;width:calc(100% - 32px);max-height:90vh;padding:32px;box-shadow:0 20px 100px #15271933}dialog::backdrop{background:#14281e80;backdrop-filter:blur(5px)}dialog h2{font:400 28px Georgia,"Songti SC",serif;margin:8px 0 16px}.close{position:absolute;right:13px;top:9px;font-size:25px;border:0;background:none;padding:0 8px;z-index:2}label{display:block;margin:15px 0 6px;font-size:12px;color:#708064}input[type=text],textarea,select{width:100%;border:1px solid #d4dccb;border-radius:7px;background:#fffefb;color:var(--ink);padding:10px}textarea{resize:vertical;min-height:100px}dialog p{font-size:13px;color:#7f8975}.modalactions{display:flex;gap:10px;margin-top:20px}.upload{border:1px dashed #a8b696;background:#edf1e5;text-align:center;padding:30px;border-radius:12px;cursor:pointer}.upload input{display:block;margin:15px auto;max-width:100%}.upload img{max-width:100%;max-height:180px;border-radius:8px}.chatlog{height:260px;overflow:auto;display:flex;flex-direction:column;gap:12px;padding:15px 0}.bubble{background:#e5ecdc;padding:12px 15px;border-radius:12px;max-width:90%;font-size:13px}.bubble.me{align-self:end;background:var(--green);color:white}.chatform{display:flex;gap:8px}.chatquick{display:flex;gap:5px;flex-wrap:wrap}.chatquick button{font-size:10px;padding:5px 9px}.previewcanvas{width:100%;max-height:60vh;object-fit:contain;border-radius:12px}.creditline{font-size:9px;color:#8e9785;display:block;margin:7px 0}.detailzoom{overflow:hidden;height:330px;border-radius:12px}.detailzoom img{width:100%;height:100%;object-fit:cover;transform:scale(2.2)}.designrow{display:flex;gap:10px}.designrow button{flex:1}.swatch{display:inline-block;width:16px;height:16px;border-radius:50%;vertical-align:middle;margin-right:6px}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(30px);opacity:0;background:#213e2f;color:white;border-radius:8px;padding:12px 24px;font-size:12px;z-index:100;pointer-events:none;transition:.2s}#toast.show{opacity:1;transform:translateX(-50%)}.narrow{max-width:900px;margin:auto}.result{display:flex;align-items:center;gap:15px;padding:13px;border-bottom:1px solid #dfe5d5;cursor:pointer}.result img{width:60px;height:50px;object-fit:cover;border-radius:6px}.result b{display:block}.result small{color:#89947c}.notice{background:#eaf0e2;border-radius:8px;padding:12px;font-size:11px;color:#768269}.result>span{margin-left:auto}.recordbadge{background:#d8e4ca;color:#4b6943;border-radius:30px;padding:2px 8px;font-size:10px}.split{display:flex;gap:15px;align-items:center}.split input{width:50px}body.serif{font-family:Georgia,"Songti SC","SimSun",serif}body.compact{--gap:12px;--radius:8px}body.compact .card img{height:150px}.minibutton{font-size:11px;padding:5px 10px}@media(min-width:1500px){main{padding-left:3%;padding-right:3%}}@media(max-width:1100px){header{gap:15px;padding:0 3%}nav{gap:17px}nav a{font-size:11px}.workspace{grid-template-columns:minmax(0,1fr) 270px}.intro h1{font-size:33px}.panel{padding:18px}.stage{height:460px}}@media(max-width:800px){header{height:auto;min-height:75px;flex-wrap:wrap;padding:13px 5% 0;gap:10px}.brand{font-size:22px}.brandmark{font-size:32px}nav{order:3;overflow:auto;width:100%;gap:23px;height:43px;white-space:nowrap}nav a{font-size:12px}.headtools{margin-left:auto}.headtools .green{padding:7px 11px}.icon{font-size:22px}main{padding:25px 5% 40px}.intro h1{font-size:28px}.intro p{font-size:11px}.season{display:none}.workspace{grid-template-columns:1fr}.stage{height:430px}.panel{display:block}.panel .facts{margin-bottom:15px}.panel p{font-size:13px}.cards{grid-template-columns:repeat(2,1fr)}.card img{height:170px}.callout{grid-template-columns:1fr}.callout>div{padding:25px}.callout img{height:220px}.livehint{display:none}.thumbrow>small{font-size:9px}.detailhero{grid-template-columns:1fr;gap:20px}.detailhero>img{height:330px}.detailblocks,.topicgrid{grid-template-columns:1fr}.topicbanner{height:300px;padding:28px}.topicbanner h1{font-size:32px}footer{gap:20px;flex-wrap:wrap}footer>span{display:none}}@media(max-width:450px){.cards{grid-template-columns:1fr 1fr;gap:12px}.cardbody{padding:12px}.cardbody h3{font-size:18px}.cardbody p{font-size:10px}.card img{height:140px}.stage{height:380px}.stagebar{left:15px;right:15px}.stagebar button{padding:6px 10px}.zooms{gap:3px}.pin:after{left:-25px;top:28px}.intro h1{font-size:25px}.intro .eyebrow{font-size:8px}.observer-tools{gap:6px}.observer-tools button{padding:7px 10px}.selectspecies{max-width:145px}.switchline{gap:6px}.toggle button{padding:6px 14px}dialog{padding:26px 20px}.note{gap:10px}.note img{width:75px;height:75px}}
.selectspecies{width:auto;max-width:230px} .stage>img{cursor:grab}.stage>img:active{cursor:grabbing}
.modelviewport{position:absolute;inset:0}.modelviewport canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.modelviewport canvas:active{cursor:grabbing}.modelstage{background:radial-gradient(#eaf0df,#d4dec6)}.modelstage:after{background:linear-gradient(180deg,#eff4e518,transparent 65%,#d6e0c9a6);pointer-events:none}.modelstage .stagename,.modelstage .stagename em{color:#3b5536}.modelstage .stagename{pointer-events:none;bottom:71px}.modelstage .glass{background:#f7faee99;color:#537247;border-color:#aabb9455}.modelstage .stagebar button{background:#f5f7e8d9;color:#365631;border-color:#acbc99}.modelstage .zooms{color:#48673e}.modebuttons{display:flex;gap:2px;border:1px solid #becdae66;padding:3px;border-radius:8px;background:#f6f8efaf;backdrop-filter:blur(10px)}.modebuttons button{padding:4px 8px;background:none;border:0;font-size:10px}.modebuttons button.active{background:var(--green);color:white}.modelpart{position:absolute;top:68px;left:24px;z-index:3;color:#7b8d6a;font-size:10px;pointer-events:none}.viewpresets{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}.viewpresets button{font-size:11px;padding:6px 11px;background:#fffef6;border:1px solid #d7e0cb}.viewpresets button.active{color:white;background:var(--green)}.viewpresets #autorotate{margin-left:auto}.partstrip{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin-top:10px}.partstrip>span{font-size:10px;color:#8a977d;margin-right:6px}.partstrip button{font-size:10px;border:0;background:#e9eedf;color:#6e815c;padding:4px 9px;border-radius:20px}.partstrip button:hover{background:#d5dfc7}.modelnote{font-size:10px;color:#8b9680;line-height:1.8;margin:9px 0}.detail-model{height:440px;border-radius:var(--radius);overflow:hidden;position:relative;background:#e6ecdc}.detail-model canvas{width:100%;height:100%;display:block;touch-action:none}.modal-model{height:360px}.model-error{display:flex;align-items:center;justify-content:center;height:100%;text-align:center;font-size:13px;color:#6a7e5a;padding:30px;line-height:2}.chips{align-items:center;flex-wrap:wrap}.chips select{width:auto;max-width:170px;font-size:12px}.cards .tag{font-size:9px}.stagetop{pointer-events:none}.stagetop button{pointer-events:auto}.detailhero .detail-model{height:440px}@media(max-width:800px){.detailhero .detail-model{height:350px}.modelstage{height:440px}.modelpart{font-size:9px}.viewpresets button{padding:6px 10px}.viewpresets #autorotate{margin-left:0}}@media(max-width:450px){.modelstage{height:390px}.stagetop{top:14px;left:14px;right:12px}.modelpart{top:59px;left:16px}.modebuttons button{padding:4px 6px}.glass{padding:5px 9px;font-size:10px}.switchline .toggle button{padding:6px 10px}.selectspecies{max-width:155px}.partstrip{gap:4px}.partstrip button{font-size:9px;padding:4px 8px}.viewpresets button{font-size:10px;padding:5px 8px}.detail-model,.modal-model{height:300px}}
/* Forest atmosphere: deep canopy, warm paper, and a shaded observation clearing. */
:root{--green:#234b36;--paper:#f1f2e9;--accent:#d9e3c9;--ink:#273f30}body{background-image:radial-gradient(ellipse at 0 36%,#b8c8a222,transparent 46%),radial-gradient(ellipse at 100% 80%,#829b5c12,transparent 50%)}header{background:linear-gradient(100deg,#163e2c,#28523b 65%,#1b432f);border-bottom:1px solid #78916450;box-shadow:0 8px 30px #153b2315}.brand,header .icon{color:#edf0da}header nav a{color:#c2cdb7}header nav a.active{color:#fff6d6}header nav a.active:after{background:#c2d496}header nav a:hover{color:white}header .green{color:#e8edda;background:#ffffff12;border-color:#a8bb8d66}header .green:hover{background:#ffffff24}.intro{min-height:190px;padding:28px 34px;border-radius:18px;position:relative;overflow:hidden;background:linear-gradient(90deg,#102e24e8 0%,#183b2bc9 42%,#234a2e35),url('assets/forest-canopy.jpg') center 43%/cover;box-shadow:0 12px 36px #1a3e2420;margin-bottom:26px;align-items:center}.intro:after{content:'';position:absolute;right:0;top:0;width:45%;height:100%;pointer-events:none;background:linear-gradient(120deg,transparent 50%,#f7eab412 51%,transparent 75%)}.intro h1{color:#f0eed9;font-size:35px;text-shadow:0 3px 16px #061b11b3}.intro .eyebrow{color:#bdcfa2}.intro p{color:#bdcbb3}.intro .season{color:#d6ddc2;align-self:flex-end;font-size:10px;z-index:1;max-width:210px;line-height:2}.intro .eyebrow:before{content:'✧';margin-right:10px;color:#d1d59a}.panel{background:linear-gradient(145deg,#fcfdf6,#f1f3e8);border:1px solid #d8dfcc;box-shadow:0 8px 24px #2e4b2410}.tag{background:#e3ead5;color:#536e43}.section-title h2{color:#2c4b35}.card{border-color:#d8e0ce;box-shadow:0 5px 22px #213f1f08}.card:hover{box-shadow:0 12px 27px #213f1f18;border-color:#b1c39a}.cardbody{background:linear-gradient(#fcfcf5,#f4f5ea)}.callout{background:#dce5cd;border:1px solid #cbd8ba}.callout h2{color:#2d4b31}.paper{background:linear-gradient(135deg,#fafbf3,#eff2e6)}.modelstage{background:radial-gradient(ellipse at 45% 25%,#65865a,#223d2b)}.modelstage:after{background:linear-gradient(180deg,#18362915,transparent 38%,#0d2b1c9c);pointer-events:none}.modelstage .stagename,.modelstage .stagename em{color:#edf1d8;text-shadow:0 2px 10px #0b2515}.modelstage .glass{background:#173d2b80;color:#e6eccf;border-color:#a8ba8640}.modelstage .modelpart{color:#c8d9b5;text-shadow:0 2px 9px #17351c}.modelstage .modebuttons{background:#173d2bb3;border-color:#a8ba8640}.modelstage .modebuttons button{color:#d5e1c2}.modelstage .modebuttons button.active{background:#dce8c6;color:#254531}.modelstage .zooms{color:#f0f2df}.modelstage .stagebar button{color:#edf1db;background:#173d2b99;border-color:#afc29855}.modelstage .stagebar .white{color:#29492f;background:#e6edcf;border:0;box-shadow:0 4px 18px #142f1b44}.viewpresets button{background:#e9eddf;border-color:#d2dcc5}.modelnote{color:#839474}.partstrip button{background:#e0e8d4;color:#557344}.detail-model{background:radial-gradient(#6a865a,#243e2c)}.model-error{color:#e4ebd1;background:linear-gradient(#254b36b3,#173725e6);font-size:12px}.model-error:before{content:'◈';position:absolute;top:24%;left:48%;font-size:30px;color:#afc48b}footer{border-color:#cfdbc2}footer .brand{color:#3e603d}.topicbanner{box-shadow:0 12px 32px #183a2426}.search{box-shadow:0 4px 18px #2c48210a}dialog{background:#f0f3e7;border:1px solid #c9d8b8}dialog::backdrop{background:#0d2a1cb0;backdrop-filter:blur(7px)}.notice{background:#dfe8d2;color:#677f55}body.compact .intro{border-radius:8px}@media(max-width:1100px){.intro h1{font-size:30px}.intro .season{display:none}}@media(max-width:800px){.intro{padding:26px 23px;min-height:180px;background-position:center}.intro h1{font-size:27px}.intro p{font-size:12px}header{background:#1e4832}.modelstage{height:450px}}@media(max-width:450px){.intro{min-height:185px;padding:22px 20px}.intro h1{font-size:24px;line-height:1.6;max-width:260px}.intro p{font-size:11px;max-width:240px}.intro .eyebrow{font-size:8px}.modelstage{height:405px}.modelpart{font-size:9px}}
.renderbadge{position:absolute;right:15px;bottom:76px;font-size:9px;letter-spacing:1px;color:#c1d3a9;background:#153a27b0;border:1px solid #a5bb8130;border-radius:20px;padding:3px 9px;pointer-events:none}
