@font-face{font-family:Geist;src:url('/static/geist-latin.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{color-scheme:dark;--ground:#0B1322;--card:#141F33;--ink:#EDF2F7;--muted:#A5B7CE;--quiet:#8F9EB4;--line:#22304A;--accent:#A4CFF2;--soft:#203750;--bad:#ffb3ad;--font:Geist,'PingFang SC','HarmonyOS Sans SC','MiSans','Microsoft YaHei UI','Microsoft YaHei',sans-serif;--text-xs:12px;--text-sm:14px;--text-base:16px;--text-brand:25px;--text-display:clamp(42px,11vw,49px)}
*{box-sizing:border-box}
body{margin:0;background:#080F19;color:var(--ink);font:400 var(--text-base)/1.5 var(--font);-webkit-font-smoothing:antialiased}
button,input,textarea{font:inherit;color:inherit}
button,a,summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button{cursor:pointer;border:0;min-width:44px}
a{color:inherit;text-decoration:none}
button,a,summary{min-height:44px}
button:disabled{opacity:.5;cursor:not-allowed}
h1,h2,h3,p{margin:0}
h2,h3{font-size:16px;font-weight:400}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.primary,.quiet,.download{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:24px;font-size:14px;line-height:1.4}
.primary,.download{background:var(--accent);color:var(--ground);font-weight:500}
.quiet{background:transparent;color:var(--muted);padding:10px 12px}
.quiet:hover{background:var(--soft);color:var(--ink)}
.brand-dot{color:var(--accent)}
.login{min-height:100svh;display:grid;place-items:center;padding:32px;background:radial-gradient(ellipse at 50% 40%,#20375088,transparent 65%)}
.login-card{width:min(340px,100%)}
.eyebrow{color:var(--accent);letter-spacing:.2em;font-size:12px}
.login h1{font-size:76px;font-weight:400;line-height:1.2;letter-spacing:-.06em}
.login-note{color:var(--muted);margin:18px 0 36px;font-size:14px}
.login form{display:grid;gap:12px}
.login input{width:100%;min-height:52px;border:1px solid var(--line);border-radius:14px;padding:12px 16px;background:var(--card);font-size:16px}
#loginStatus{margin-top:24px;font-size:14px;color:var(--muted);overflow-wrap:anywhere}
.shell{max-width:480px;min-height:100svh;margin:auto;background:var(--ground);padding:0 24px max(28px,env(safe-area-inset-bottom));overflow:hidden}
.top{padding:36px 0 28px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{display:flex;align-items:baseline;font-size:var(--text-brand);font-weight:400;letter-spacing:.08em;line-height:44px}
.brand-cn{font-size:12px;color:var(--muted);margin-left:14px;letter-spacing:.12em}
.health{font-size:12px;color:var(--accent);display:flex;gap:9px;align-items:center}
.health:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;box-shadow:0 0 0 5px #c7d2df0a;flex:none}
.health.off{color:var(--bad)}
.compose{background:var(--card);border:1px solid var(--line);padding:20px 20px 12px;border-radius:20px;position:relative;z-index:2}
.compose:focus-within{border-color:#54647B}
textarea{display:block;width:100%;height:62px;resize:vertical;min-height:62px;max-height:200px;background:none;border:0;padding:0;word-break:break-all;line-height:1.5;font-size:16px}
textarea::placeholder{color:var(--muted)}
.compose-bar{display:flex;align-items:center;gap:8px;margin-top:12px}
.compose-bar #hash{margin-right:auto;font-size:12px;color:var(--accent);font-variant-numeric:tabular-nums}
.compose-bar .quiet{padding-left:0}
.compose-bar .primary{padding:0 18px;border-radius:22px}
.submit-status{color:var(--muted);font-size:14px;margin:12px 4px;overflow-wrap:anywhere}
.submit-status:empty{margin:0}
.ocean-panel{position:relative;isolation:isolate;min-height:max(660px,calc(100svh - 112px));margin:0 -24px;padding:0 24px 340px;background:var(--ground);--water-y:190px}
#sea,#fx{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none}
#sea{z-index:-1}#fx{z-index:5}
#tray{position:relative;z-index:3;margin-top:16px}
#tray:empty{margin-top:0}
#tray .file{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;transform-origin:50% 100%}
#tray .file-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ocean-copy{position:absolute;top:calc(var(--water-y) + 30px);left:28px;right:28px;pointer-events:none}
#oceanRate{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;margin-top:10px;font-variant-numeric:tabular-nums;pointer-events:auto}
#rateNumber{font-size:32px;letter-spacing:-.035em;line-height:1.2}
.rate-unit{font-size:14px;color:#C7D2DF}.rate-label{flex-basis:100%;font-size:12px;color:var(--muted)}
#rateSample{font-size:12px;color:var(--quiet)}
#oceanPercent .unit{font-size:20px;color:#C7D2DF;margin-left:3px;letter-spacing:0}
.hud-row{display:flex;align-items:baseline;justify-content:space-between;gap:20px;min-height:54px}
#oceanState{font-size:14px;color:#C7D2DF}
#oceanPercent{font:400 var(--text-display)/1.1 var(--font);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
#oceanName{color:var(--muted);margin-top:12px;max-width:90%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:12px}
#oceanMeta{color:#C7D2DF;font-size:14px;min-height:21px;margin-top:4px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.steps{display:flex;gap:5px;margin-top:20px;width:72px}
.steps span{height:2px;flex:1;font-size:0;background:#c7d2df2e;border-radius:2px}
.steps .on{background:var(--ink)}
.steps .done{background:var(--accent)}
.ocean-caption{position:absolute;bottom:14px;left:28px;right:28px;color:var(--quiet);font-size:12px}
.section-head{display:flex;gap:12px;align-items:center;padding:12px 0}
.section-head h2{margin-right:auto}
.section-head #count{font-size:12px;color:var(--muted)}
.connection{color:var(--bad);font-size:14px;margin-bottom:12px;overflow-wrap:anywhere}
.connection:empty{display:none}
.task{margin-bottom:14px;background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.task.focused{border-color:#54647B}
.task-head{padding:14px 16px;display:flex;gap:12px;align-items:center}
.task-focus{min-width:0;flex:1;text-align:left;background:none;padding:4px 0;display:block}
.task-name{display:block;font-size:16px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.task-focus small{display:block;font-size:12px;color:var(--muted);margin-top:4px}
.task-message{padding:0 16px 14px;overflow-wrap:anywhere;color:var(--muted);font-size:14px}
.bad{color:var(--bad)!important}
.pill{font-size:12px;flex:none;color:var(--accent)}
.file{padding:16px;border-top:1px solid var(--line);transform-origin:50% 100%}
.file-main{display:flex;align-items:center;gap:12px}
.file-mark{font-size:24px;color:#C3DFFF;flex:none;width:24px;text-align:center}
.file-info{min-width:0;flex:1;background:none;text-align:left;padding:0}
.file-info[aria-pressed=true] .file-name{color:#C3DFFF}
.file-name{display:block;font-size:16px;font-weight:400;line-height:1.4;overflow-wrap:anywhere}
.file-meta{display:block;font-size:12px;line-height:1.4;color:var(--muted);margin-top:4px;font-variant-numeric:tabular-nums}
.file-action{flex:none}
.file-action .primary{font-size:14px;padding:10px 14px;max-width:110px}
.download{width:44px;height:44px;padding:0;border-radius:50%;font-size:24px}
.file-detail{font-size:12px;color:var(--muted);margin-top:8px;overflow-wrap:anywhere}
.download-options{font-size:12px;color:var(--muted);margin-top:4px}
.download-options summary{cursor:pointer;display:flex;align-items:center;gap:6px;width:fit-content}
.download-options summary:after{content:'+';color:var(--accent)}
.download-options[open] summary:after{content:'−'}
.option-links{display:flex;flex-wrap:wrap;gap:8px 20px}
.text-link{display:inline-flex;align-items:center;color:var(--accent);text-decoration:underline;text-underline-offset:4px}
.progress-track{display:block;appearance:none;width:100%;height:3px;border:0;border-radius:3px;background:var(--soft);overflow:hidden;margin:12px 0 0;accent-color:var(--accent)}
.progress-track::-webkit-progress-bar{background:var(--soft)}
.progress-track::-webkit-progress-value{background:var(--accent)}
.progress-track::-moz-progress-bar{background:var(--accent)}
.progress-track:not([value]){background:repeating-linear-gradient(110deg,var(--soft) 0 12px,#80b6e055 12px 24px)}
.progress-track:not([value])::-webkit-progress-bar{background:repeating-linear-gradient(110deg,var(--soft) 0 12px,#80b6e055 12px 24px)}
.task>.progress-track{margin-bottom:14px}
.empty{padding:24px 0;color:var(--muted);font-size:14px}
.help{font-size:12px;color:var(--muted);margin-top:24px}
.help summary{display:flex;align-items:center;cursor:pointer}
.help p{margin:8px 0 16px;line-height:1.8}
footer{padding-top:24px;color:var(--quiet);font-size:12px;letter-spacing:.04em}
.toast{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:10;width:max-content;max-width:min(90vw,540px);background:#101F30;border:1px solid #38485F;color:#C7D2DF;border-radius:14px;padding:12px 16px;font-size:14px;box-shadow:0 10px 40px #080f1988;overflow-wrap:anywhere;pointer-events:none}
.toast:empty{display:none}
.task{background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;margin:0}
.task-head{padding:8px 0;cursor:pointer;list-style:none}.task-head::-webkit-details-marker{display:none}
.task-name{font-size:14px}.task-focus small{font-size:12px}.task .file{padding:12px 0}.task .file-name{font-size:14px}
.task.focused{border-color:#54647B}.task:not([open]) .pill{font-size:0}.task:not([open]) .pill:after{content:'＋';font-size:16px}
.collection{position:relative}.submit-status{position:relative;z-index:3}
@media(min-width:700px){.shell{margin:28px auto;border-radius:36px;box-shadow:0 20px 100px #0003}.ocean-panel{min-height:700px}}
.ocean-panel[data-stage=ready],.ocean-panel[data-stage=waiting]{min-height:540px;padding-bottom:260px}
@media(max-width:500px){.top{padding-top:max(36px,env(safe-area-inset-top))}.file-main{gap:8px}.task-head{gap:8px}.health{font-size:12px}.compose{padding:20px 20px 12px}}
@media(max-width:360px){.shell{padding-left:16px;padding-right:16px}.ocean-panel{margin-left:-16px;margin-right:-16px}.brand-cn{display:none}.pill{font-size:11px}.file{padding:12px}.file-mark{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
body.paused *{animation-play-state:paused!important}
.input-mirror{position:absolute;white-space:pre-wrap;overflow-wrap:break-word;pointer-events:none;opacity:0;z-index:-1}
#oceanMeta{font-size:12px;color:var(--muted)}
