:root{--paper:#efeee3;--ink:#2c4034;--soft:#7a806d;--line:#d9dccd;--gold:#a87c4b;--white:#faf9f2;font-family:'Microsoft YaHei','PingFang SC',system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(ellipse at 65% 37%,#fcf9ed 0,transparent 64%),var(--paper)}button,input,textarea{font:inherit}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button{touch-action:manipulation}a{color:inherit;text-decoration:none}.site-header{height:106px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;position:relative;z-index:3}.brand{display:flex;align-items:center;gap:13px;font-family:Georgia,'Songti SC',SimSun,serif;font-size:24px;letter-spacing:.2em}.brand-mark{font-size:53px;font-weight:400;line-height:1;letter-spacing:0}.brand small{display:block;font:9px/1.8 system-ui,sans-serif;letter-spacing:.2em;margin-top:4px}.site-header nav{display:flex;align-items:center;gap:30px}.site-header button{background:none;border:0;font-size:14px;padding:8px 0}.site-header .student-chip{border:1px solid var(--line);border-radius:28px;padding:8px 16px;display:flex;align-items:center;gap:12px}.avatar{border-radius:50%;width:27px;height:27px;background:#dce2d2;display:grid;place-items:center}.student-chip>span:last-child{margin-left:9px}main{min-height:620px;height:calc(100svh - 235px);max-height:1000px;position:relative}.intro{position:absolute;z-index:2;left:6%;top:19%;width:27%;pointer-events:none}.intro button{pointer-events:auto}.eyebrow{font:10px/1.6 Georgia,serif;letter-spacing:.13em;color:#72795f}.eyebrow span{display:inline-block;width:20px;height:1px;vertical-align:middle;margin-right:10px;background:#929a7a}h1{font-family:Georgia,'Songti SC','STSong','SimSun',serif;font-size:clamp(46px,5.6vw,84px);font-weight:400;line-height:1.35;letter-spacing:.04em;margin:28px 0 24px;position:relative}h1 em{font-style:normal;color:#6a7250}.spark{position:absolute;left:215px;top:0;color:#ae8755;font-size:42px}.intro-copy{line-height:2.1;letter-spacing:.08em;font-size:15px;color:#646d5d}.explore{display:flex;align-items:center;justify-content:space-between;gap:30px;background:#2d4439;border:1px solid #2d4439;color:#f9f7e9;padding:14px 22px;margin-top:28px;font-size:14px;box-shadow:0 3px 10px #2d443914}.explore span{font-size:24px}.explore:hover{background:#48604a}.week{display:flex;align-items:center;gap:12px;margin-top:25px;font-size:13px}.week span{font:italic 20px Georgia,serif;color:#9a8a61}.week i{font-style:normal;font-size:11px;padding-left:10px;border-left:1px solid var(--line);color:#7a806d}#island-view{position:absolute;left:27%;top:-20px;width:73%;height:100%;min-height:540px}#scene{position:absolute;inset:0}#scene canvas{display:block;width:100%;height:100%;touch-action:none;outline:none}#labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.place-label{position:absolute;left:0;top:0;transform:translate(-50%,-100%);border:1px solid #ffffff6b;background:#f7f7e9d9;backdrop-filter:blur(8px);padding:6px 10px 6px 6px;border-radius:30px;white-space:nowrap;font-size:12px;pointer-events:auto;box-shadow:0 4px 15px #28392d12;transition:opacity .25s}.place-label>span{display:inline-grid;place-items:center;border-radius:50%;background:#737e65;color:white;width:22px;height:22px;font:italic 12px Georgia,serif;margin-right:6px}.place-label:hover{background:#fffdf2}.place-label.hidden{opacity:0;pointer-events:none}.view-tools{position:absolute;right:4%;top:32%;display:flex;flex-direction:column;background:#fbfaf0b5;border:1px solid #dbdeceb5;backdrop-filter:blur(10px);border-radius:22px;padding:5px;z-index:2}.view-tools button{border:0;background:none;width:36px;height:39px;font-size:22px;display:grid;place-items:center;border-radius:50%}.view-tools button:hover{background:#dfe5d6}.view-tools button[aria-pressed=true]{background:#d7dfc9}.scene-caption{position:absolute;bottom:8px;left:37%;display:flex;gap:14px;align-items:center;color:#646d4c;pointer-events:none}.scene-caption>span:first-child{font:italic 31px Georgia,serif}.scene-caption div{font-family:'Songti SC',SimSun,serif;font-size:16px;letter-spacing:.08em}.scene-caption small{display:block;font:9px/2.4 Georgia,serif;letter-spacing:.14em}.scene-caption .sun{font-size:34px;margin-left:10px}footer{padding:22px 4% 12px;display:flex;align-items:center;justify-content:space-between;gap:18px;position:relative;z-index:3}.footer-poem{font:9px/1.7 Georgia,serif;letter-spacing:.15em;color:#788066;min-width:110px}.island-nav{display:flex;flex-wrap:wrap;justify-content:center;background:#f7f7eb9c;box-shadow:inset 0 0 14px #ffffff7a,0 8px 26px #68734e06;border:1px solid #fffffe73;border-radius:50px;padding:12px 6px;backdrop-filter:blur(10px)}.island-nav button{padding:3px 15px;border:0;border-right:1px solid #dadecc;background:none;font-size:13px;white-space:nowrap}.island-nav button:last-child{border-right:0}.island-nav button:hover{color:#a07b48}.island-nav i{font:italic 12px Georgia,serif;color:#858b71;margin-right:6px}.gesture{font-size:11px;color:#7a806c;text-align:right;min-width:140px;line-height:1.9}.gesture small{font-size:10px}.demo-note{text-align:center;font-size:11px;color:#929781;padding:3px 15px 14px}.loading,.scene-error{position:absolute;top:40%;left:20%;right:15%;text-align:center;color:#64744d;z-index:5}.loading-note{font:60px Georgia,serif;display:block;animation:wake 2s ease-in-out infinite}.loading p{font-size:14px;letter-spacing:.1em}@keyframes wake{50%{transform:translateY(-10px)}}.scene-error{background:var(--white);border:1px solid var(--line);border-radius:20px;padding:25px}.scene-error button{background:#2d4439;color:white;border:0;padding:12px 22px;border-radius:8px}[hidden]{display:none!important}dialog{margin:0 20px 0 auto;top:110px;width:390px;max-width:calc(100% - 32px);max-height:calc(100svh - 135px);overflow:auto;background:#faf9f2f5;backdrop-filter:blur(20px);color:var(--ink);border:1px solid #dce0d0;border-radius:18px;box-shadow:0 18px 80px #25382125;padding:26px;z-index:10}dialog::backdrop{background:#25382718;backdrop-filter:blur(1px)}.panel-top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.panel-top h2{font-family:'Songti SC',SimSun,serif;font-size:28px;font-weight:400;margin:4px 0 0}.panel-top button{border:1px solid var(--line);background:none;border-radius:50%;width:34px;height:34px;font-size:25px;flex-shrink:0}#panel-body{font-size:14px;line-height:1.8}.muted{color:#78816e;font-size:13px}.lesson{border-bottom:1px solid var(--line);padding:12px 0}.lesson h3{font-size:16px;font-weight:500;margin:0 0 6px}.lesson p{margin:5px 0}.lesson summary{cursor:pointer;padding:4px 0;font-weight:500}.tag{display:inline-block;font-size:12px;background:#e7eddf;padding:3px 9px;border-radius:20px;color:#667356}.action{border:0;background:#2d4439;color:#fffdf2;padding:11px 16px;border-radius:7px;margin-top:12px}.action.secondary{background:#e7eddf;color:#2d4439}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.panel-box{padding:14px;border:1px solid var(--line);background:#f2f3e9;border-radius:10px;margin:12px 0}.panel-box p{margin:4px 0}.panel-input{width:100%;padding:11px 12px;border:1px solid #d3dac5;border-radius:8px;background:#fffff9;color:var(--ink);font-size:16px;margin:7px 0}textarea.panel-input{min-height:100px;resize:vertical}.options{display:grid;gap:9px;margin:16px 0}.options button{background:#fffff7;border:1px solid var(--line);border-radius:8px;padding:12px;text-align:left;font-size:14px}.options button:hover{background:#e9efdf}.options button:disabled{cursor:default}.options .correct{background:#ddebd3;border-color:#80a765}.options .wrong{background:#f1e1d5;border-color:#c09476}.answer{border-left:3px solid #8eab74;padding:10px 13px;background:#eaf0e2}.keys{display:flex;height:110px;margin:15px 0;gap:2px}.keys button{flex:1;min-width:0;border:1px solid #d2d7c3;border-bottom:4px solid #d6dcc9;background:#fffffa;border-radius:0 0 6px 6px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:12px;color:#64744f;font:12px Georgia,serif}.keys button.active{background:#d5e4c1;transform:translateY(2px)}.hz-readout{font:32px Georgia,serif;color:#667a50;margin:12px 0}.hz-readout small{font:14px system-ui}.frequency-slider{width:100%;accent-color:#526b48}.seat-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin:12px 0}.seat-grid button{border:1px solid #dce2cf;border-radius:5px;background:#fffff7;height:36px;padding:0;font-size:12px}.seat-grid button.taken{background:#e1e5d8;color:#919981}.seat-grid button.mine{background:#526d4e;color:#fff}.platform{text-align:center;background:#e4eadb;border-radius:5px;letter-spacing:.4em;font-size:12px;padding:5px}.local-list{padding-left:18px;overflow-wrap:anywhere}.local-list li{margin:9px 0}.empty{padding:12px 0;color:#818b76;font-size:13px}#toast{position:fixed;left:50%;bottom:115px;transform:translate(-50%,10px);opacity:0;pointer-events:none;background:#304737;color:#fffff1;border-radius:8px;padding:11px 18px;max-width:85vw;font-size:13px;transition:.2s;z-index:20}#toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1600px){main{max-height:1100px}.intro{top:22%}}
@media(max-width:1150px){.site-header{padding:0 4%}.intro{left:4%}.spark{left:165px}.island-nav button{padding:3px 10px;font-size:12px}.footer-poem{display:none}.gesture{font-size:10px}.intro-copy{font-size:14px}.scene-caption{left:28%}main{min-height:550px}#island-view{min-height:510px}}
@media(max-width:760px){.site-header{height:80px;padding:0 22px}.brand{font-size:19px;gap:8px}.brand-mark{font-size:40px}.brand small{font-size:7px}.site-header nav{gap:12px}.site-header nav>button:not(.student-chip){display:none}.site-header .student-chip{font-size:12px;padding:5px 10px;gap:6px}.student-chip>span:last-child{margin-left:1px}main{height:auto;min-height:680px;max-height:none}.intro{position:relative;left:0;top:0;width:auto;padding:25px 26px 0;pointer-events:auto}.eyebrow{font-size:8px}h1{font-size:44px;line-height:1.2;margin:10px 0 10px}h1 br{display:none}h1 em{margin-left:12px}.spark{left:auto;right:12%;font-size:27px;top:-8px}.intro-copy{font-size:13px;line-height:1.9;margin:10px 0}.intro-copy br{display:none}.explore{margin-top:18px;padding:8px 15px;font-size:12px;gap:18px}.explore span{font-size:21px}.week{position:absolute;right:26px;bottom:0;margin:0;gap:7px;font-size:11px}.week i{display:none}#island-view{left:0;top:255px;width:100%;height:440px;min-height:0}.scene-caption{bottom:4px;left:23%;gap:10px}.scene-caption div{font-size:13px}.scene-caption>span:first-child{font-size:24px}.scene-caption small{font-size:8px}.view-tools{top:20%;right:12px}.view-tools button{width:28px;height:33px;font-size:19px}.place-label{font-size:10px;padding:4px 7px 4px 4px}.place-label>span{width:17px;height:17px;font-size:10px;margin-right:3px}footer{display:block;padding:15px 12px 10px}.island-nav{display:flex;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;gap:0;border-radius:22px;padding:10px 8px;scrollbar-width:none;-ms-overflow-style:none}.island-nav::-webkit-scrollbar{display:none}.island-nav button{padding:8px 13px;font-size:12px;flex-shrink:0}.gesture{display:block;text-align:center;margin-top:14px;font-size:11px}.gesture br,.gesture small{display:none}.demo-note{font-size:10px}.loading,.scene-error{left:12%;right:12%;top:35%}dialog{top:60px;max-height:calc(100svh - 80px);margin-right:16px;padding:22px;width:calc(100% - 32px)}#toast{bottom:25px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

[hidden]{display:none!important}.teacher-content{white-space:normal;line-height:1.9;margin:16px 0;overflow-wrap:anywhere}.teacher-link{color:inherit;text-decoration:none;font-size:14px}.mail-item{border-top:1px solid #d9ddd0;padding:18px 0}.mail-item small{font-size:12px;color:#617167}.seat-grid{overflow:auto}.seat-grid button{min-width:34px}#entry-error,#message-status{color:#913a31;font-size:14px}#entry-form label,#message-form label{display:block;margin-top:16px}#entry-form .action{margin-top:16px}@media(max-width:760px){.site-header{flex-wrap:wrap;gap:14px}.site-header nav{flex-wrap:wrap}.teacher-link{font-size:12px}.island-nav button{font-size:13px}.intro{padding-top:12px}}

/* Building interiors open as page-sized learning spaces. */
dialog#panel{position:fixed;inset:5svh 0 auto;margin:auto;top:auto;width:min(72vw,900px);height:min(86svh,820px);max-width:calc(100vw - 48px);max-height:90svh;padding:0 34px 34px;overflow:auto;transition:width .22s ease,height .22s ease,inset .22s ease;border-radius:22px}
dialog#panel[data-layout="wide"]{width:min(82vw,1120px);height:min(88svh,900px)}
dialog#panel[data-layout="entry"]{width:min(520px,calc(100vw - 32px));height:auto;min-height:420px;max-height:88svh}
dialog#panel.panel-fullscreen{inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;border:0;border-radius:0}
dialog#panel::backdrop{background:#20372d59;backdrop-filter:blur(5px)}
.panel-top{position:sticky;top:0;z-index:3;margin:0 -34px 28px;padding:24px 34px 18px;background:linear-gradient(#faf9f2 78%,#faf9f200);align-items:flex-start}
.panel-actions{display:flex;align-items:center;gap:8px}
.panel-top .panel-actions button{display:grid;place-items:center;width:38px;height:38px;font-size:21px;background:#f7f7ed}
.panel-top .panel-actions .panel-back{display:flex;width:auto;padding:0 14px;border-radius:22px;font-size:14px;gap:6px}
#panel-body{max-width:980px;width:100%;margin:0 auto;font-size:16px;line-height:1.85}
dialog#panel[data-layout="entry"] #expand-panel{display:none}
dialog#panel[data-layout="entry"] #panel-body{max-width:430px}
dialog#panel[data-place="seats"] .seat-grid{gap:8px;margin:22px auto;max-width:920px}
dialog#panel[data-place="seats"] .seat-grid button{height:52px;font-size:14px}
dialog#panel[data-place="seats"] .seat-grid button{min-width:46px;height:auto;min-height:52px;padding:6px 3px;font-size:12px;line-height:1.2;overflow-wrap:anywhere}
dialog#panel[data-place="seats"] .seat-grid button.picked{outline:3px solid var(--gold);outline-offset:1px;background:var(--white);font-weight:700}
dialog#panel[data-place="interact"] .keys{height:180px;max-width:850px}
dialog#panel[data-place="game"] .options{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){dialog#panel,dialog#panel[data-layout="wide"],dialog#panel[data-layout="entry"]{inset:0;width:100vw;height:100dvh;min-height:100dvh;max-width:none;max-height:none;margin:0;padding:0 20px 28px;border:0;border-radius:0}.panel-top{margin:0 -20px 20px;padding:18px 20px 14px}.panel-top h2{font-size:25px}.panel-top .panel-actions .panel-back{padding:0 10px}.panel-top .panel-actions .panel-back span{display:none}#expand-panel{display:none!important}#panel-body{font-size:16px}.seat-grid{gap:5px}.seat-grid button,dialog#panel[data-place="seats"] .seat-grid button{height:auto;min-height:44px;padding:5px 2px;font-size:12px}.keys,dialog#panel[data-place="interact"] .keys{height:135px}dialog#panel[data-place="game"] .options{grid-template-columns:1fr}}
