@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600&display=swap');
:root{color-scheme:dark;--cream:#f4eee0;--gold:#ddc49c;--muted:#b3c3c7;--serif:'Noto Serif SC','Songti SC','SimSun',serif;--sans:'Microsoft YaHei','PingFang SC',sans-serif;--line:#d4e2e52a}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:#0d2939;color:var(--cream);font:13px var(--sans)}button,input,textarea,select{font:inherit}button{border:0;background:none;color:inherit;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:5px}a{color:inherit;text-decoration:none}svg{width:21px;height:21px;flex-shrink:0}[hidden]{display:none!important}#world{position:absolute;inset:0}#world canvas{display:block;width:100%;height:100%;touch-action:none;outline:0}.edge-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#071720a6,transparent 25%,transparent 78%,#091e2b66),linear-gradient(90deg,#0d273022,transparent 45%)}
.topbar{position:absolute;left:4%;right:4%;top:30px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;gap:25px}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:13px}.brand>svg{width:39px;height:37px;color:#e6d6b2}.brand>span{font:25px var(--serif);letter-spacing:3px}.brand small{display:block;font:8px Georgia,serif;letter-spacing:2.4px;margin-top:7px;color:#dfdfd0}.location{font-size:10px;letter-spacing:2px;display:flex;align-items:center;gap:12px;color:#e5e5d5}.live-dot{width:5px;height:5px;border-radius:50%;background:#cbe3cf;display:inline-block;box-shadow:0 0 10px #d7ebbf55}.top-separator{opacity:.35;margin:0 5px}.top-tools{display:flex;align-items:center;gap:10px}.icon-button{width:37px;height:37px;border:1px solid #e0e9e02a;border-radius:50%;display:grid;place-items:center;font:17px Georgia,serif;background:#0b202926;transition:background .2s}.icon-button:hover{background:#d2e0d320}.icon-button[aria-pressed=true]{color:#e9cf91;border-color:#dfc79177}.icon-button svg{width:18px;height:18px}
.intro{position:absolute;left:5.5%;top:22%;pointer-events:none;transition:opacity 1s,transform 1s;max-width:290px;text-shadow:0 2px 22px #051a2d99}.eyebrow{font:9px Georgia,serif;letter-spacing:2.6px;color:#d4d4bf;margin:0 0 20px}.intro h1{font:400 clamp(28px,2.8vw,43px)/1.65 var(--serif);letter-spacing:5px;margin:0 0 22px}.intro>p:not(.eyebrow){font:11px/2.3 var(--serif);letter-spacing:2px;color:#d9ddd3}.intro-line{display:block;width:34px;height:1px;background:#e0d2ab77;margin-top:27px}body.interacted .intro{opacity:0;transform:translateY(-12px)}body:not(.mode-sailing) .intro{opacity:0}.compass{position:absolute;top:115px;left:50%;transform:translateX(-50%);text-align:center;pointer-events:none;opacity:.7}.compass-bearing{font:9px Georgia,serif;letter-spacing:3px}.compass-ticks{font-size:10px;letter-spacing:7px;line-height:2.5;opacity:.6}.compass-ticks b{color:#f1d7a4}
.bottom-ui{position:absolute;bottom:29px;left:4%;right:4%;display:flex;align-items:flex-end;justify-content:space-between;gap:22px;pointer-events:none}.bottom-ui>*{pointer-events:auto}.sea-stats .eyebrow{font-size:8px;margin-bottom:9px;letter-spacing:2px;color:#b8c6c3}.sea-stats p{font-size:11px;letter-spacing:1px;margin:0 0 12px}.sea-stats i,.view-help i{font-style:normal;opacity:.35;margin:0 9px}.gpu-button{display:flex;align-items:center;gap:7px;font:9px Georgia,var(--sans);padding:0;color:#a6bdc3}.gpu-button .live-dot{width:4px;height:4px}#fps{color:#a9bcb4;margin-left:7px}.action-dock{display:flex;gap:11px;align-items:center;margin-bottom:3px}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 22px;letter-spacing:1px;font-size:11px;border-radius:3px;transition:transform .2s,background .2s,box-shadow .2s;white-space:nowrap}.button:hover{transform:translateY(-2px)}.button svg{width:18px;height:18px}.gold{color:#25373c;background:#e4d1ae;border:1px solid #ead8b8;box-shadow:0 4px 30px #00000016}.gold:hover{background:#f1dfbb;box-shadow:0 4px 30px #d3be8c22}.translucent{background:#1234427a;backdrop-filter:blur(12px);border:1px solid #bdced14a;color:#e3e8df}.translucent:hover{background:#264e5ca6}.view-help{text-align:right;color:#c5d1d0}.view-help p{font-size:9px;letter-spacing:.6px;margin:0 0 13px}.view-help p>span{color:#e7e3d5}.view-help>div{display:flex;gap:17px;justify-content:flex-end}.view-help button{font-size:9px;letter-spacing:.5px;padding:3px 0;color:#afc2c7}.view-help button:hover{color:#ecd8b2}.hover-label{position:absolute;pointer-events:none;background:#082332c4;border:1px solid #d9dfc966;backdrop-filter:blur(10px);padding:11px 16px;border-radius:3px;font:11px var(--serif);letter-spacing:1px;white-space:nowrap}.hover-label span{padding-left:15px;color:#e8d2a4}
.inspect-panel{position:absolute;right:8%;top:33%;width:270px}.inspect-panel h2,.throw-panel h2{font:400 28px/1.6 var(--serif);letter-spacing:2px;margin:0 0 16px}.inspect-panel p:not(.eyebrow),.throw-panel p:not(.eyebrow){font:12px/2.2 var(--serif);letter-spacing:1px;color:#c5d8d7}.inspect-panel .button{margin-top:14px;padding:0 17px;min-height:48px;font-size:10px}.text-button{font-size:11px;padding:8px 0;letter-spacing:1px;border-bottom:1px solid #a9c0bb55;color:#cad8cd}.text-button:hover{color:#e9d7aa}.inspect-panel>.text-button{display:block;margin-top:18px}.inspect-panel>small{display:block;color:#9eb5b9;font-size:9px;letter-spacing:1px;margin-top:35px}.throw-panel{position:absolute;left:50%;bottom:145px;transform:translateX(-50%);text-align:center;padding:25px 40px;background:linear-gradient(#0c263000,#0c2630b3);min-width:420px;border-radius:5px}.throw-panel .eyebrow{margin-bottom:11px}.throw-panel h2{font-size:26px;margin-bottom:8px}.throw-panel p:not(.eyebrow){font-size:11px}.throw-panel>div{display:flex;justify-content:center;gap:25px;margin-top:20px}body:not(.mode-sailing) .action-dock{visibility:hidden}body.mode-inspecting .sea-stats,body.mode-opening .sea-stats{opacity:.45}.toast{position:absolute;bottom:120px;left:50%;transform:translate(-50%,10px);padding:14px 23px;border:1px solid #c7d9cd44;background:#0c2a37e8;backdrop-filter:blur(10px);border-radius:3px;font:11px/1.8 var(--serif);letter-spacing:1px;max-width:calc(100% - 35px);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:30}.toast.visible{opacity:1;transform:translate(-50%,0)}
.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#122f3d;z-index:40;transition:opacity .8s}.loading-mark{font:80px Georgia,serif;color:#d4c39f;animation:breathe 2s infinite alternate}.loading p{font:15px var(--serif);letter-spacing:5px;margin:17px 0}.loading small{font-size:9px;color:#91abb7;letter-spacing:3px}.loading.done{opacity:0;pointer-events:none}@keyframes breathe{to{transform:translateY(-8px);opacity:.4}}.fallback{position:absolute;z-index:45;inset:0;background:#122f3de8;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:30px}.fallback h2{font:25px var(--serif)}.fallback p{max-width:460px;line-height:2;color:#b7ccd3}.fallback button{margin-top:20px}
dialog{color:var(--cream);border:1px solid #c5d3c639;border-radius:5px;padding:43px 45px;width:min(530px,calc(100% - 32px));max-height:88svh;overflow:auto;box-shadow:0 30px 160px #00000077;scrollbar-width:thin;scrollbar-color:#748e93 transparent}dialog::backdrop{background:#0314208f;backdrop-filter:blur(7px)}dialog[open]{animation:dialog-enter .3s ease-out}@keyframes dialog-enter{from{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.dark-dialog,.settings-dialog{background:linear-gradient(135deg,#173b48,#0c2836)}.close{position:absolute;right:15px;top:11px;font:28px Georgia,serif;color:#b9c9c2;width:30px;height:33px}.close:hover{color:#f4dbaf}.dialog .eyebrow{font-size:8px;letter-spacing:2.1px;color:#a7bbaa}.dialog h2{font:400 28px/1.6 var(--serif);letter-spacing:2px;margin:0 0 13px}.dialog-subtitle{font:11px/2 var(--serif);color:#aac0c2;letter-spacing:1px;margin:0 0 27px}label{font-size:11px;letter-spacing:1px;color:#c4d4ce;display:block;margin:18px 0 11px}label small{font-size:9px;color:#84a1ac}textarea,input:not([type=range]),select{display:block;width:100%;padding:12px 14px;border:1px solid #a8c3c437;outline:0;border-radius:3px;color:#e1e7d9;background:#08243077;font:12px/2 var(--serif);letter-spacing:1px}textarea:focus,input:focus,select:focus{border-color:#d2c29a}textarea{resize:vertical;min-height:160px;max-height:290px}textarea::placeholder,input::placeholder{color:#7797a4}select{font:11px var(--sans);height:43px}select option{background:#173947}.counter{text-align:right;font:10px Georgia,serif;color:#88a6ae;margin-top:8px;letter-spacing:1px}.form-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:27px}.form-bottom small{font-size:9px;line-height:1.8;color:#8ba9b0}.form-bottom .button{font-size:10px;min-height:44px;padding:0 17px}.paper-dialog{background:#e9e2cf;color:#3b4d4e;background-image:radial-gradient(ellipse at 0 0,#f4ecd7,transparent 75%)}.paper-dialog .close{color:#788580}.paper-dialog .eyebrow{color:#85917e;max-width:340px}.letter-stamp{position:absolute;top:75px;right:43px;transform:rotate(12deg);border:1px solid #80908366;outline:1px solid #80908344;outline-offset:3px;border-radius:50%;width:51px;height:51px;display:grid;place-content:center;font:11px/1.3 Georgia,serif;text-align:center;letter-spacing:2px;color:#8e9b85}.letter-source{font:9px var(--serif);letter-spacing:2px;color:#88917c;margin:47px 0 18px}.paper-dialog h2{font-size:24px}.read-body{white-space:pre-wrap;font:13px/2.4 var(--serif);letter-spacing:1px;margin:25px 0 32px;overflow-wrap:anywhere}.signature{text-align:right;font:12px var(--serif);letter-spacing:1px}.signature small{display:block;font-size:9px;color:#8b9783;margin-top:10px}.paper-footer{border-top:1px solid #82918533;padding-top:20px;margin-top:30px;display:flex;justify-content:space-between;align-items:center;gap:15px}.paper-footer>span{font-size:9px;color:#8b9681}.paper-footer button{font-size:10px;color:#647b6d;border-color:#8d9b8255}.settings-dialog label{margin-top:28px}#wind{width:100%;accent-color:#ddc398;height:20px}#wind-value{float:right;font:13px Georgia,serif;color:#e4cea4}.setting-note{font-size:10px;line-height:2;color:#8daab5;margin:13px 0}.gpu-details{margin-top:23px;border-top:1px solid var(--line);padding-top:16px;font-size:10px;line-height:2;color:#a7c0c8;overflow-wrap:anywhere}.gpu-details strong{color:#d1ddce;font-weight:400}.help-list{padding:0;list-style:none}.help-list li{display:flex;gap:20px;border-bottom:1px solid var(--line);padding:18px 0}.help-list b{font:13px var(--serif);min-width:30px;color:#d6c9aa}.help-list span{font-size:11px;line-height:2;color:#adc5cb}
.inspect-panel:before{content:'';position:absolute;inset:-55px -70px;background:radial-gradient(ellipse,#0a2737a8,transparent 73%);z-index:-1;pointer-events:none}.inspect-panel{isolation:isolate;text-shadow:0 2px 16px #061b29bb}.topbar,.compass{text-shadow:0 1px 14px #0a263477}
@media(max-width:1150px){.bottom-ui{gap:12px}.button{padding:0 16px;font-size:10px}.view-help p{font-size:8px}.view-help>div{gap:10px}.sea-stats p{font-size:10px}.gpu-button{font-size:8px}.intro{top:23%}.intro h1{font-size:32px}.inspect-panel{right:5%;width:250px}}
@media(max-width:760px){.topbar{left:6%;right:6%;top:23px;gap:10px}.brand{gap:9px}.brand>svg{width:29px;height:30px}.brand>span{font-size:22px}.brand small{font-size:6px;letter-spacing:1.6px}.location{position:absolute;top:65px;left:0;font-size:8px;letter-spacing:1px;gap:8px}.top-tools{gap:6px}.icon-button{width:32px;height:32px}.top-tools #help{display:none}.compass{top:97px;left:auto;right:6%;transform:none}.compass-bearing{font-size:8px;letter-spacing:2px}.compass-ticks{font-size:8px;letter-spacing:4px}.intro{left:7%;top:20%;max-width:230px}.intro .eyebrow{font-size:7px;letter-spacing:1.5px;margin-bottom:15px}.intro h1{font-size:29px;letter-spacing:3px;margin-bottom:16px}.intro>p:not(.eyebrow){font-size:10px;letter-spacing:1px}.intro-line{margin-top:20px;width:27px}.bottom-ui{left:6%;right:6%;bottom:22px;display:grid;grid-template-columns:1fr 1fr;gap:16px}.action-dock{grid-row:1;grid-column:1/3;display:grid;grid-template-columns:1.1fr 1fr;gap:9px;margin-bottom:4px}.action-dock .button{font-size:9px;letter-spacing:.3px;min-height:47px;padding:0 10px;gap:7px}.action-dock svg{width:16px;height:16px}.sea-stats{grid-column:1;grid-row:2}.sea-stats .eyebrow{font-size:6px;letter-spacing:1.4px;margin-bottom:7px}.sea-stats p{font-size:9px;margin-bottom:8px}.gpu-button{font-size:7px;gap:5px}#fps{font-size:7px;margin-left:0}.view-help{grid-column:2;grid-row:2}.view-help p{font-size:7px;line-height:1.8;margin-bottom:7px}.view-help i{margin:0 3px}.view-help>div{flex-direction:column;gap:5px;align-items:flex-end}.view-help button{font-size:8px;line-height:1.4}.inspect-panel{left:7%;right:7%;top:auto;bottom:150px;width:auto;background:linear-gradient(#0b293800,#0b293866);padding-top:15px}.inspect-panel .eyebrow{font-size:7px;margin-bottom:8px}.inspect-panel h2{font-size:24px;margin-bottom:8px}.inspect-panel p:not(.eyebrow){font-size:10px;margin:7px 0}.inspect-panel .button{min-height:43px;margin-top:9px}.inspect-panel>.text-button{display:inline-block;margin-left:17px;font-size:10px}.inspect-panel>small{margin-top:15px;font-size:8px}.throw-panel{bottom:140px;min-width:0;width:100%;padding:20px}.throw-panel h2{font-size:23px}.throw-panel p:not(.eyebrow){font-size:10px}.throw-panel .eyebrow{font-size:7px}.throw-panel>div{margin-top:14px}.toast{bottom:155px;font-size:10px;width:max-content;max-width:calc(100% - 30px);padding:12px 17px;text-align:center}dialog{padding:37px 25px;max-height:89svh}.dialog h2{font-size:25px}.dialog .eyebrow{font-size:7px;letter-spacing:1.5px}.dialog-subtitle{font-size:10px}.letter-stamp{right:30px;top:73px;width:44px;height:44px;font-size:9px}.paper-dialog h2{font-size:22px}.read-body{font-size:12px;line-height:2.3}.paper-footer{flex-direction:column;align-items:flex-start;gap:12px}.form-bottom{gap:12px}.form-bottom small{font-size:8px}.form-bottom .button{font-size:9px;padding:0 12px}}
@media(max-height:650px){.intro{top:25%}.intro h1{font-size:28px}.intro>p:not(.eyebrow),.intro-line{display:none}.topbar{top:18px}.bottom-ui{bottom:15px}.inspect-panel{top:25%;bottom:auto}.inspect-panel>small{margin-top:15px}.throw-panel{bottom:115px;padding:10px 30px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
