*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#10212c;color:#fff;font-family:Inter,Arial,sans-serif}canvas{width:100%;height:100%;display:block;touch-action:none;outline:none}header,main,footer{position:fixed;z-index:2}header{top:30px;left:38px;right:38px;display:flex;justify-content:space-between;align-items:center}a{color:inherit;text-decoration:none}header a{font-size:11px;letter-spacing:2.6px;font-weight:600;text-shadow:0 1px 12px #0006}header span{opacity:.5;margin:0 13px}button,select{font:inherit;color:inherit;cursor:pointer}button{background:#11212a33;border:1px solid #ffffff36;border-radius:30px;padding:10px 17px;backdrop-filter:blur(14px);font-size:12px}button:hover,button:focus-visible{background:#ffffff28;border-color:#fff}main{top:20%;left:6%;pointer-events:none;text-shadow:0 2px 25px #10212c55}.eyebrow{font-size:10px;letter-spacing:4px;opacity:.85}h1{font-family:Georgia,serif;font-size:clamp(48px,6.5vw,100px);font-weight:400;letter-spacing:-4px;margin:18px 0}main p{font-size:13px;letter-spacing:.3px;color:#ffffffc9}footer{bottom:25px;left:38px;right:38px}.bottom{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#ffffffad}.bottom b{margin:0 10px}.bottom div{display:flex;gap:8px}#panel{position:absolute;bottom:60px;right:0;padding:24px;width:290px;background:#10212ce8;border:1px solid #ffffff25;border-radius:18px;backdrop-filter:blur(25px);font-size:12px}label{display:block;margin-bottom:21px}output{float:right;opacity:.6}input{display:block;width:100%;margin-top:13px;accent-color:#d9e5e3}select{display:block;margin-top:12px;background:#213642;padding:8px;width:100%;border:1px solid #ffffff44;border-radius:6px}#panel a{font-size:11px;opacity:.6}#error{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(500px,calc(100% - 40px));max-height:calc(100vh - 40px);overflow:auto;padding:28px;background:#142a36;z-index:10;border:1px solid #ffffff38;border-radius:15px;box-shadow:0 20px 80px #0008}#error h2{font-size:22px;margin:0 0 12px}#error p{font-size:14px;line-height:1.6;color:#d0e1e8}#error details{margin-top:18px;font-size:12px;color:#afc6d2}#error summary{cursor:pointer}#error pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:160px;overflow:auto}body.render-unavailable canvas{pointer-events:none;visibility:hidden}#restore{position:fixed;bottom:25px;right:30px}body.clean header,body.clean main,body.clean footer{display:none}button:focus-visible,a:focus-visible{outline:2px solid white;outline-offset:4px}@media(max-width:650px){header{left:20px;right:20px;top:20px}header a{font-size:9px;letter-spacing:1px}header button{font-size:10px}main{top:18%}h1{letter-spacing:-2px}footer{left:15px;right:15px;bottom:18px}.bottom>span{display:none}.bottom{justify-content:center}#panel{bottom:65px}main p{max-width:250px;line-height:1.6}}

#panel .camera-toggle{display:flex;align-items:center;gap:10px}#panel .camera-toggle input{width:16px;height:16px;margin:0}

main p{max-width:670px;line-height:1.5}#sea-summary{font-size:11px;color:#ffffffe0;letter-spacing:.5px;margin-top:13px}#panel{max-height:calc(100vh - 165px);overflow:auto}

button:disabled{opacity:.5;cursor:default}
header nav{display:flex;align-items:center;gap:18px}header nav a{font-size:12px;letter-spacing:0;font-weight:400}@media(max-width:650px){header nav{gap:12px}header nav a{font-size:11px}}

/* Start-up progress: indeterminate until the scene reports measured work. */
#loading{margin-top:24px;width:min(300px,70vw);transition:opacity .6s ease}#loading-label{display:block;font-size:10px;letter-spacing:2.4px;text-transform:uppercase;color:#ffffffc9;margin-bottom:9px;font-variant-numeric:tabular-nums}#loading .track{height:2px;background:#ffffff2e;border-radius:2px;overflow:hidden}#loading .fill{height:100%;background:#fff;transform-origin:left;transform:scaleX(0);transition:transform .25s ease-out}#loading:not(.determinate) .fill{width:30%;animation:sea-loading 1.6s ease-in-out infinite}@keyframes sea-loading{from{transform:translateX(-100%)}to{transform:translateX(340%)}}@media(prefers-reduced-motion:reduce){#loading:not(.determinate) .fill{animation:none;transform:scaleX(.08)}}body.sea-ready #loading,body.sea-loading-stopped #loading,body.render-unavailable #loading{opacity:0}
