:root{--serif:"Noto Serif SC Variable", "Songti SC", "STSong", Georgia, serif;--data:"SF Pro Text", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", system-ui, sans-serif;--gutter:clamp(18px, 3.2vw, 48px);--ease:cubic-bezier(.22, .8, .24, 1);font-family:var(--serif);font-synthesis:none;-webkit-font-smoothing:antialiased}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:#0b0d12;width:100%;height:100%;overflow:hidden}body{overscroll-behavior:none;-webkit-tap-highlight-color:transparent}button,input{color:inherit;font:inherit;background:0 0;border:0}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:1px solid var(--ink);outline-offset:4px}.shore{--ink-rgb:34 33 29;--veil-rgb:240 235 224;--ink:rgb(var(--ink-rgb));--ink-2:rgb(var(--ink-rgb) / .68);--ink-3:rgb(var(--ink-rgb) / .44);--hair:rgb(var(--ink-rgb) / .18);--hair-strong:rgb(var(--ink-rgb) / .36);--veil:rgb(var(--veil-rgb));isolation:isolate;color:var(--ink);position:fixed;inset:0;overflow:hidden}.scene{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.field-label{color:var(--ink-3);letter-spacing:.12em;margin-bottom:10px;font-size:12px;display:block}.opening{z-index:10;padding:var(--gutter);padding-top:max(var(--gutter), env(safe-area-inset-top));padding-bottom:max(var(--gutter), env(safe-area-inset-bottom));background:linear-gradient(90deg, rgb(var(--veil-rgb) / .82), rgb(var(--veil-rgb) / 0) 48%), linear-gradient(270deg, rgb(var(--veil-rgb) / .78), rgb(var(--veil-rgb) / 0) 34%);transition:opacity 1.2s var(--ease), visibility 1.2s step-end;grid-template-columns:auto minmax(0,1fr) minmax(260px,320px);align-items:end;gap:clamp(24px,4vw,72px);display:grid;position:absolute;inset:0}.opening[aria-hidden=true]{visibility:hidden;opacity:0;pointer-events:none}.opening__title{align-self:start;gap:14px;font-weight:400;display:flex}.opening__zh{writing-mode:vertical-rl;letter-spacing:.08em;font-size:clamp(88px,17vh,184px);font-weight:500;line-height:1}.opening__en{writing-mode:vertical-rl;color:var(--ink-2);letter-spacing:.32em;padding-top:.4em;font-size:16px}.opening__intro{justify-items:start;gap:28px;max-width:30em;display:grid}.opening__lead{letter-spacing:.04em;text-wrap:pretty;font-size:clamp(16px,1.35vw,21px);line-height:1.9}.opening__coasts{align-self:end}.shutter{border:1px solid var(--hair-strong);letter-spacing:.2em;height:52px;transition:background-color .28s var(--ease), color .28s var(--ease), border-color .28s var(--ease);border-radius:999px;align-items:center;gap:14px;padding:0 26px 0 20px;font-size:16px;display:inline-flex}.shutter svg{stroke-width:1.4px;width:20px;height:20px;transition:transform .6s var(--ease)}.shutter:not(:disabled):hover{border-color:var(--ink);background:var(--ink);color:var(--veil)}.shutter:not(:disabled):hover svg{transform:translate(3px)}.coasts{display:grid}.coast{border-top:1px solid var(--hair);color:var(--ink-2);text-align:left;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;column-gap:14px;padding:11px 0;transition:color .2s;display:grid;position:relative}.coast:last-child{border-bottom:1px solid var(--hair)}.coast:hover,.coast[aria-checked=true]{color:var(--ink)}.coast[aria-checked=true]:before{background:var(--ink);content:"";border-radius:50%;width:5px;height:5px;position:absolute;top:50%;left:-14px;transform:translateY(-50%)}.coast__name{letter-spacing:.08em;font-size:16px}.coast__range{color:var(--ink-3);font-family:var(--data);font-variant-numeric:tabular-nums;font-size:12px}.coast__note{max-height:0;color:var(--ink-3);opacity:0;transition:max-height .36s var(--ease), opacity .36s var(--ease), margin .36s var(--ease);grid-column:2/4;font-size:12px;line-height:1.6;overflow:hidden}.coast[aria-checked=true] .coast__note{opacity:1;max-height:3.2em;margin-top:4px}.tide-glyph{opacity:.8;width:44px;height:22px}.date-field{border-bottom:1px solid var(--hair-strong);align-items:center;display:inline-flex}.date-field input{width:9.6em;color:var(--ink);font-family:var(--data);font-variant-numeric:tabular-nums;text-align:center;padding:8px 4px;font-size:16px}.date-field__step{width:32px;height:36px;color:var(--ink-2);place-items:center;display:grid}.date-field__step:hover{color:var(--ink)}.date-field__step svg{stroke-width:1.5px;width:16px;height:16px}.hud{z-index:8;pointer-events:none;transition:opacity 1.4s .4s var(--ease), visibility 1.4s .4s step-start;position:absolute;inset:0}.hud[aria-hidden=true]{visibility:hidden;opacity:0;transition:opacity .4s,visibility .4s step-end}.hud>*{pointer-events:auto}.hud:before{background:linear-gradient(180deg, rgb(var(--veil-rgb) / .55), rgb(var(--veil-rgb) / 0) 20%), linear-gradient(0deg, rgb(var(--veil-rgb) / .76), rgb(var(--veil-rgb) / .32) 20%, rgb(var(--veil-rgb) / 0) 36%), linear-gradient(90deg, rgb(var(--veil-rgb) / .45), rgb(var(--veil-rgb) / 0) 16%);content:"";pointer-events:none;transition:opacity .5s var(--ease);position:absolute;inset:0}.masthead{top:max(var(--gutter), env(safe-area-inset-top));left:max(var(--gutter), env(safe-area-inset-left));pointer-events:none;gap:6px;display:flex;position:absolute}.masthead__zh{writing-mode:vertical-rl;letter-spacing:.24em;font-size:28px;font-weight:500;line-height:1}.masthead__en{writing-mode:vertical-rl;color:var(--ink-3);letter-spacing:.3em;font-size:11px}.site-card{top:max(var(--gutter), env(safe-area-inset-top));right:max(var(--gutter), env(safe-area-inset-right));text-align:right;justify-items:end;gap:4px;padding:2px 0 2px 24px;display:grid;position:absolute}.site-card__name{letter-spacing:.12em;margin-bottom:6px;font-size:28px;font-weight:500;line-height:1.2}.site-card__meta{color:var(--ink-2);letter-spacing:.06em;font-size:14px}.site-card__edit{border-bottom:1px solid var(--hair-strong);color:var(--ink-2);letter-spacing:.16em;align-items:center;gap:6px;margin-top:10px;padding-bottom:3px;font-size:12px;transition:color .2s,border-color .2s;display:inline-flex}.site-card__edit svg{stroke-width:1.5px;width:14px;height:14px}.site-card:hover .site-card__edit{border-color:var(--ink);color:var(--ink)}.gauge{top:calc(max(var(--gutter), env(safe-area-inset-top)) + 190px);right:max(var(--gutter), env(safe-area-inset-right));width:40px;height:calc(100dvh - 190px - 330px - var(--gutter));pointer-events:none;min-height:140px;max-height:340px;position:absolute}.gauge svg{width:100%;height:100%;overflow:visible}.gauge__spine{stroke:var(--ink-2);stroke-width:1px;vector-effect:non-scaling-stroke}.gauge__bar{fill:var(--ink-2)}.gauge__bar--under{fill:var(--ink-3)}.gauge__water{fill:rgb(var(--ink-rgb) / .08)}.gauge__level{stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}.gauge__labels span{color:var(--ink-3);font-family:var(--data);font-variant-numeric:tabular-nums;font-size:11px;position:absolute;right:calc(100% + 8px);transform:translateY(-50%)}.gauge__reading{white-space:nowrap;align-items:baseline;gap:4px;transition:top .3s linear;display:flex;position:absolute;right:calc(100% + 26px);transform:translateY(-50%)}.gauge__reading b{font-family:var(--data);font-variant-numeric:tabular-nums;font-size:14px;font-weight:500}.gauge__reading small{color:var(--ink-2);font-size:11px}.verse{top:calc(max(var(--gutter), env(safe-area-inset-top)) + 150px);left:max(var(--gutter), env(safe-area-inset-left));pointer-events:none;max-height:calc(100dvh - 420px);animation:surface 2.6s var(--ease) both;flex-direction:row-reverse;gap:10px;display:flex;position:absolute}.verse__zh{writing-mode:vertical-rl;letter-spacing:.2em;font-size:16px;line-height:1.9}.verse__zh span{display:block}.verse__zh span+span{padding-top:1.6em}.verse__en{writing-mode:vertical-rl;max-inline-size:calc(100dvh - 440px);color:var(--ink-3);letter-spacing:.04em;font-size:11px;line-height:1.6}@keyframes surface{0%{filter:blur(8px);opacity:0}to{filter:blur();opacity:1}}.deck{right:max(var(--gutter), env(safe-area-inset-right));bottom:max(var(--gutter), env(safe-area-inset-bottom));left:max(var(--gutter), env(safe-area-inset-left));pointer-events:none;gap:16px;display:grid;position:absolute}.deck .table__plot,.deck .controls__group{pointer-events:auto}.readouts,.table,.verse,.gauge{transition:opacity .5s var(--ease)}.shore:is([data-tool=pen],[data-tool=text]) :is(.readouts,.table,.verse,.gauge){opacity:0;pointer-events:none}.shore:is([data-tool=pen],[data-tool=text]) .hud:before{opacity:.35}.readouts{flex-wrap:wrap;align-items:flex-end;gap:8px clamp(24px,3.4vw,56px);display:flex}.readout{gap:2px;display:grid}.readout dt{color:var(--ink-3);letter-spacing:.12em;font-size:12px}.readout dd{font-family:var(--data);font-variant-numeric:tabular-nums;font-size:21px;font-weight:300}.readout--primary dd{font-size:42px;font-weight:200;line-height:1}.readout dd small{color:var(--ink-3);font-family:var(--serif);margin-left:.3em;font-size:12px;font-weight:400}.table{gap:4px;margin-top:10px;display:grid}.table__plot{cursor:ew-resize;touch-action:none;height:64px;position:relative}.table__plot svg{width:100%;height:100%;position:absolute;inset:0}.table__msl{stroke:var(--hair);stroke-dasharray:2 4;vector-effect:non-scaling-stroke}.table__area{fill:rgb(var(--ink-rgb) / .07)}.table__line{fill:none;stroke:var(--ink);stroke-width:1.25px;vector-effect:non-scaling-stroke}.table__mark{pointer-events:none;justify-items:center;width:0;display:grid;position:absolute}.table__mark:before{border:1px solid var(--ink);background:var(--veil);content:"";border-radius:50%;width:5px;height:5px;transform:translateY(-50%)}.table__mark b,.table__mark i{font-family:var(--data);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px;font-style:normal;position:absolute}.table__mark b{font-weight:500}.table__mark i{color:var(--ink-3)}.table__mark--high b{bottom:8px}.table__mark--high i{bottom:21px}.table__mark--low b{top:4px}.table__mark--low i{top:17px}.table__head{background:var(--ink);pointer-events:none;width:1px;position:absolute;top:-4px;bottom:-14px}.table__head b{background:var(--ink);color:var(--veil);font-family:var(--data);font-variant-numeric:tabular-nums;padding:2px 6px;font-size:12px;font-weight:500;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%)}.table__day{border-radius:1px;height:6px}.table__hours{height:14px;position:relative}.table__hours span{color:var(--ink-3);font-family:var(--data);font-variant-numeric:tabular-nums;font-size:11px;position:absolute;transform:translate(-50%)}.table__hours span:first-child{transform:none}.table__hours span:last-child{transform:translate(-100%)}.controls{justify-content:space-between;align-items:center;gap:16px;margin-top:6px;display:flex}.controls__group{align-items:center;gap:10px;display:flex}.round-button{border:1px solid var(--hair-strong);width:40px;height:40px;color:var(--ink-2);border-radius:50%;place-items:center;transition:color .2s,border-color .2s,background-color .2s;display:grid}.round-button svg,.text-button svg,.tool-switch svg{stroke-width:1.5px;width:16px;height:16px}.round-button:hover,.round-button[aria-pressed=true]{border-color:var(--ink);color:var(--ink)}.round-button--primary{border-color:var(--ink);background:var(--ink);width:48px;height:48px;color:var(--veil)}.round-button--primary:hover{color:var(--ink);background:0 0}.text-button{height:40px;color:var(--ink-2);letter-spacing:.12em;align-items:center;gap:8px;padding:0 12px;font-size:14px;transition:color .2s,border-color .2s;display:inline-flex}.text-button:hover{color:var(--ink)}.text-button--outlined{border:1px solid var(--hair-strong);border-radius:999px;padding:0 18px}.tool-switch{border:1px solid var(--hair-strong);border-radius:999px;height:40px;padding:3px;display:flex}.tool-switch button{color:var(--ink-2);letter-spacing:.1em;border-radius:999px;align-items:center;gap:6px;padding:0 14px;font-size:14px;transition:color .2s,background-color .2s;display:inline-flex}.tool-switch button:hover{color:var(--ink)}.tool-switch button[aria-checked=true]{background:var(--ink);color:var(--veil)}.text-input{border-bottom:1px solid var(--hair-strong);width:10em;height:40px;color:var(--ink);letter-spacing:.1em;padding:0 4px;font-size:16px}.text-input::placeholder{color:var(--ink-3)}.text-input:focus-visible{border-color:var(--ink);outline:none}.drawer-scrim{z-index:20;background:rgb(var(--veil-rgb) / .3);opacity:0;pointer-events:none;transition:opacity .4s var(--ease);position:absolute;inset:0}.drawer-scrim[data-open=true]{opacity:1;pointer-events:auto}.drawer{z-index:21;width:min(380px,100vw);padding:var(--gutter) calc(var(--gutter) * .8);padding-top:max(var(--gutter), env(safe-area-inset-top));border-left:1px solid var(--hair);background:rgb(var(--veil-rgb) / .9);-webkit-backdrop-filter:blur(20px)saturate(.8);color:var(--ink);visibility:hidden;transition:transform .52s var(--ease), visibility .52s step-end;flex-direction:column;gap:26px;display:flex;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%)}.drawer[data-open=true]{visibility:visible;transition:transform .52s var(--ease), visibility .52s step-start;transform:translate(0)}.drawer__head{justify-content:space-between;align-items:center;display:flex}.drawer__head h2{letter-spacing:.16em;font-size:21px;font-weight:500}.drawer__section{gap:12px;padding-left:14px;display:grid}.drawer__section h3{color:var(--ink-3);letter-spacing:.14em;margin-left:-14px;font-size:12px;font-weight:400}.drawer__credit{border-top:1px solid var(--hair);color:var(--ink-3);margin-top:auto;padding-top:20px;font-size:12px;line-height:1.8}.choice{flex-wrap:wrap;gap:8px;display:flex}.choice__item{border:1px solid var(--hair);min-width:72px;color:var(--ink-2);text-align:left;border-radius:6px;gap:2px;padding:8px 12px;transition:color .2s,border-color .2s;display:grid}.choice__item span{font-size:14px}.choice__item small{color:var(--ink-3);font-size:11px}.choice__item:hover{border-color:var(--hair-strong);color:var(--ink)}.choice__item[aria-checked=true]{border-color:var(--ink);color:var(--ink)}.toast{bottom:calc(max(var(--gutter), env(safe-area-inset-bottom)) + 250px);z-index:30;border:1px solid var(--hair-strong);background:rgb(var(--veil-rgb) / .88);-webkit-backdrop-filter:blur(12px);letter-spacing:.06em;text-align:center;opacity:0;pointer-events:none;max-width:min(90vw,32em);transition:opacity .36s var(--ease), transform .36s var(--ease);border-radius:999px;padding:10px 18px;font-size:14px;position:absolute;left:50%;transform:translate(-50%,8px)}.toast[data-visible=true]{opacity:1;transform:translate(-50%)}.fallback{z-index:40;background:var(--veil);text-align:center;place-content:center;justify-items:center;gap:16px;padding:32px;display:grid;position:absolute;inset:0}.fallback h2{letter-spacing:.08em;font-size:28px;font-weight:500}.fallback p{max-width:28em;color:var(--ink-2);font-size:14px;line-height:1.9}@media (max-height:680px){.verse{display:none}}@media (max-height:720px){.verse__en{display:none}.verse{top:calc(max(var(--gutter), env(safe-area-inset-top)) + 120px);max-height:calc(100dvh - 380px)}}@media (max-width:1080px){.opening{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:auto minmax(0,1fr)}.opening__title{grid-row:1/3}.opening__coasts{grid-area:1/2}.verse__en,.tool-switch span{display:none}}@media (max-width:720px){.opening{background:linear-gradient(0deg, rgb(var(--veil-rgb) / .92) 0%, rgb(var(--veil-rgb) / .55) 55%, rgb(var(--veil-rgb) / .25) 100%);grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);gap:20px}.opening__title{grid-row:1}.opening__zh{font-size:72px}.opening__coasts{grid-area:2/1;align-self:end}.opening__intro{grid-row:3;gap:18px}.coast__note,.readout--minor,.verse__en,.gauge,.text-button span{display:none}.site-card__name{font-size:21px}.verse{top:auto;right:var(--gutter);flex-direction:column;max-height:none;bottom:370px}.verse__zh{writing-mode:horizontal-tb;letter-spacing:.12em;font-size:14px}.verse__zh span{display:inline}.verse__zh span+span{padding-top:0}.readout--primary dd{font-size:32px}.controls{flex-wrap:wrap}.tools{order:3;width:100%}.text-input{flex:1;width:auto}.drawer{border-top:1px solid var(--hair);border-left:0;border-radius:14px 14px 0 0;width:100%;max-height:82dvh;top:auto;transform:translateY(100%)}.drawer[data-open=true]{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}
/*# sourceMappingURL=index.e3a0c73b13.css.map*/