@font-face{font-family:ZFM Hand;src:url(/assets/hand-CTHNXA31.woff2)format("woff2");font-display:swap}@font-face{font-family:ZFM LCD;src:url(/assets/lcd-Cr2rYZd-.woff2)format("woff2");font-display:swap}:root{--bg:#0e0d0b;--panel:#171512;--panel-2:#12100e;--line:#2a2620;--line-2:#221f1a;--cream:#ede4d0;--muted:#a39a87;--amber:#ffb23e;--amber-dim:#9a7436;--lcd-bg:#150f07;--lcd-line:#3a2a12;--cyan:#6fd6c8;--cyan-dim:#1f2b29;--cyan-bg:#0c1614;--cyan-line:#1f3a36;--red:#d12e24;--pen:#c8321f;--paper:#f1e9d6;--ink:#2a2620;--ink-muted:#6f6759;--grid:#8db39a;--hilite:#f5d56a;--sans:"PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;--serif:"Songti SC", "Noto Serif CJK SC", "Noto Serif SC", "STSong", serif;--hand:"ZFM Hand", "Kaiti SC", "STKaiti", "KaiTi", cursive;--lcd-font:"ZFM LCD", "SF Mono", ui-monospace, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--cream);font-family:var(--sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0}button,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:2px solid var(--amber);outline-offset:2px}#app{border-left:1px solid var(--line-2);border-right:1px solid var(--line-2);max-width:440px;min-height:100dvh;margin:0 auto;position:relative;overflow:hidden}.screen{min-height:100dvh;padding-bottom:env(safe-area-inset-bottom);flex-direction:column;animation:.35s fade-in;display:flex;position:relative}.body{flex-direction:column;flex:1;gap:14px;padding:16px 16px 0;display:flex}.foot{flex-direction:column;gap:10px;padding:14px 16px 22px;display:flex}.row{align-items:center;gap:12px;display:flex}.grow{flex:1}.muted{color:var(--muted)}.small{font-size:12px;line-height:1.7}.center{text-align:center}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.lcd{font-family:var(--lcd-font);color:var(--amber);text-shadow:0 0 10px #ffb23e59;letter-spacing:.5px;line-height:1}.lcd.cyan{color:var(--cyan);text-shadow:0 0 10px #6fd6c866}.topbar{border-bottom:1px solid var(--line-2);background:var(--panel-2);flex-shrink:0;justify-content:space-between;align-items:center;height:56px;padding:0 20px;display:flex}.topbar .freq{align-items:baseline;gap:6px;display:flex}.lamp{letter-spacing:3px;color:#c39089;background:#3a1512;border-radius:5px;padding:4px 10px;font-size:12px;font-weight:700;transition:all .3s}.lamp.on{background:var(--red);color:#fff1ec;box-shadow:0 0 18px #d12e2499}.lamp.off{color:#a07d77;background:#1e1614;border:1px solid #3a2a27}.lamp.flicker{animation:1.4s infinite flicker}.seghead{justify-content:space-between;align-items:center;padding:14px 20px 4px;display:flex}.seghead .title{letter-spacing:1px;align-items:baseline;gap:10px;font-size:19px;font-weight:700;display:flex}.meter{gap:2px;display:flex}.meter span{background:var(--cyan-dim);border-radius:1px;width:6px;height:14px;transition:background .3s}.meter span.on{background:var(--cyan)}.echo-label{color:var(--cyan);letter-spacing:1px;font-size:12px}.paper{background:var(--paper);color:var(--ink);border-radius:3px;padding:18px;position:relative}.paper h1,.paper h2{font-family:var(--serif);margin:0;font-weight:900}.paper .rule{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:baseline;padding-bottom:10px;display:flex}.hand{font-family:var(--hand);color:var(--pen);white-space:pre-line;line-height:1.3}.slip{background:var(--paper);max-width:250px;transform:rotate(var(--rot,-2deg));border-radius:2px;padding:14px 16px 10px;position:relative;box-shadow:0 8px 20px #00000073}.slip:before{content:"";background:#f5d56a99;width:54px;height:16px;position:absolute;top:-9px;left:42%;transform:rotate(4deg)}.slip .hand{margin:0;font-size:23px}.slip .sign{color:var(--ink-muted);text-align:right;margin:4px 0 0;font-size:12px}.slip.right{align-self:flex-end}.slip.pop{animation:.4s pop}.stamp{border:3px solid var(--pen);color:var(--pen);text-align:center;width:78px;height:78px;font-family:var(--serif);opacity:.85;border-radius:50%;justify-content:center;align-items:center;font-size:16px;font-weight:900;line-height:1.15;display:flex;position:absolute;transform:rotate(-14deg)}.btn{letter-spacing:3px;touch-action:manipulation;-webkit-user-select:none;user-select:none;border:none;border-radius:14px;justify-content:center;align-items:center;gap:10px;min-height:56px;font-size:17px;font-weight:700;text-decoration:none;transition:transform .1s,opacity .2s;display:flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45}.btn.amber{background:var(--amber);color:#1a1206}.btn.red{background:var(--red);color:#fff1ec}.btn.cyan{background:var(--cyan);color:#082420}.btn.ghost{color:var(--cream);letter-spacing:1px;background:0 0;border:1px solid #3a342b;font-size:15px;font-weight:500}.btn.hold{position:relative;overflow:hidden}.btn.hold .fill{transform-origin:0;background:#ffffff2e;position:absolute;inset:0;transform:scaleX(0)}.btn.recording{box-shadow:0 0 0 4px #d12e2459}.pill{height:44px;color:var(--cream);background:0 0;border:1px solid #3a342b;border-radius:22px;align-items:center;gap:6px;padding:0 16px;font-size:14px;display:inline-flex}.pill.amber{border-color:var(--amber);color:var(--amber);font-weight:700}.rec-btn{border:3px solid var(--red);background:#1a0f0d;border-radius:50%;justify-content:center;align-items:center;width:76px;height:76px;padding:0;display:flex}.rec-btn span{background:var(--red);border-radius:50%;width:26px;height:26px;transition:border-radius .2s}.rec-btn.live span{border-radius:6px}.rec-btn.live{animation:1.6s infinite pulse}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:12px;padding:16px;display:flex}.lcd-box{background:var(--lcd-bg);border:1px solid var(--lcd-line);border-radius:12px;padding:12px 14px}.chip{color:var(--muted);background:#242019;border-radius:14px;align-items:center;gap:4px;padding:5px 10px;font-size:13px;display:inline-flex}.chip.ok{color:#a9d891;background:#1e2a1c}.chip.bad{color:#f2a69e;background:#3a1512}.vu{flex:1;gap:2px;display:flex}.vu span{background:#2a2216;border-radius:1px;flex:1;height:10px}.vu span.on{background:var(--amber)}.vu span.hot{background:#3a1512}.vu span.hot.on{background:var(--red)}.bars{justify-content:center;align-items:center;gap:3px;height:40px;display:flex}.bars span{background:var(--amber);border-radius:2px;width:3px;height:3px;transition:height 80ms linear}.bars.cyan span{background:var(--cyan)}.progress{gap:2px;display:flex}.progress span{background:#2a2216;flex:1;height:6px}.progress span.on{background:var(--amber)}.recorder{border-top:1px solid var(--line-2);background:var(--panel-2);flex-direction:column;gap:12px;margin-top:auto;padding:14px 20px 22px;display:flex}.recorder .status{justify-content:space-between;align-items:center;font-size:13px;display:flex}.dot{background:#5a2a25;border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.dot.live{background:var(--red);animation:1s infinite blink}.recorder .controls{justify-content:space-between;align-items:center;display:flex}.sheet{background:var(--paper);color:var(--ink);border-radius:3px;padding:14px 10px 16px 12px;transform:rotate(-.5deg)}.sheet .head{color:var(--ink-muted);border-bottom:1px solid #c9bd9f;justify-content:space-between;align-items:baseline;margin-bottom:12px;padding-bottom:8px;font-size:12px;display:flex}.sheet .head b{font-family:var(--serif);color:var(--ink);font-size:13px}.sheet .rows{flex-direction:column;gap:8px;display:flex}.sheet .line{align-items:center;gap:2px;height:28px;display:flex}.sheet .cells{grid-template-columns:repeat(10,28px);display:grid}.cell{width:28px;height:28px;font-family:var(--serif);box-shadow:inset 0 0 0 .5px var(--grid);justify-content:center;align-items:center;font-size:18px;transition:background .2s,color .2s;display:flex;position:relative}.cell.read{color:var(--ink-muted)}.cell.cur{background:var(--hilite)}.cell.missed:after{content:"";border:2px solid var(--pen);border-radius:50%;position:absolute;inset:2px;transform:rotate(-8deg)}.cell.marked:before{content:"";border-bottom:2px wavy var(--pen);position:absolute;bottom:1px;left:2px;right:2px}.hang{width:14px;font-family:var(--serif);font-size:18px}.margin{width:40px;height:28px;position:relative}.margin .note{font-family:var(--hand);color:var(--pen);white-space:nowrap;font-size:20px;position:absolute;top:2px;left:0;transform:rotate(-6deg)}.tick{width:28px;height:24px}.log{flex-direction:column;gap:10px;display:flex}.bubble{max-width:300px;padding:10px 14px;font-size:15px;line-height:1.6;animation:.25s fade-in}.bubble.them{border:1px solid var(--line);background:#1f1c18;border-radius:4px 14px 14px;align-self:flex-start}.bubble.me{border:1px solid var(--amber);background:#1a1408;border-radius:14px 4px 14px 14px;align-self:flex-end}.bubble.me .tag{color:var(--amber);letter-spacing:1px;margin-bottom:2px;font-size:11px;display:block}.bubble.me.live:after{content:"";vertical-align:-2px;background:var(--amber);width:2px;height:16px;margin-left:2px;animation:1s infinite blink;display:inline-block}.line-it,.line-me{align-items:flex-start;gap:8px;animation:.25s fade-in;display:flex}.line-it .who,.line-me .who{flex-shrink:0;width:22px;padding-top:4px;font-size:12px}.line-it .who{color:var(--cyan)}.line-me .who{color:var(--amber)}.line-it p{font-family:var(--serif);color:#bfebe4;margin:0;font-size:16px;line-height:1.6}.line-me p{margin:0;font-size:16px;line-height:1.6}.grille{border:1px solid var(--line);background-color:#161411;background-image:radial-gradient(#302a22 1.6px,#0000 1.8px);background-size:9px 9px;border-radius:12px}.scan{background-color:var(--cyan-bg);border:1px solid var(--cyan-line);background-image:repeating-linear-gradient(#6fd6c812 0 1px,#0000 1px 3px);border-radius:12px}.ringing{animation:1.2s infinite ring}.lamp-dot{background:var(--cyan);border-radius:50%;width:12px;height:12px;animation:.9s infinite blink;box-shadow:0 0 12px #6fd6c8e6}.typing{animation:.8s both fade-in}.tuner{flex-direction:column;gap:6px;display:flex;position:relative}.tuner .ticks{justify-content:space-between;align-items:flex-end;height:16px;display:flex}.tuner .ticks span{background:#6b5024;width:1px}.tuner .needle{background:var(--red);width:2px;height:44px;position:absolute;top:-8px;left:4px;box-shadow:0 0 8px #d12e24b3}.error-box{color:#f2a69e;background:#2a1210;border:1px solid #5a2a25;border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.6}.toast{color:var(--cream);z-index:10;background:#2a2620;border-radius:20px;max-width:360px;padding:10px 16px;font-size:14px;animation:.2s fade-in;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:.3}}@keyframes pulse{0%,to{box-shadow:0 0 #d12e2473}50%{box-shadow:0 0 0 10px #d12e2400}}@keyframes flicker{0%,to{opacity:1}40%{opacity:.4}45%{opacity:1}70%{opacity:.6}}@keyframes ring{0%,to{transform:rotate(0)}10%,30%{transform:rotate(-2deg)}20%,40%{transform:rotate(2deg)}50%{transform:rotate(0)}}@keyframes pop{0%{opacity:0;transform:rotate(var(--rot,-2deg)) scale(.9)}to{opacity:1;transform:rotate(var(--rot,-2deg)) scale(1)}}@keyframes shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.shake{animation:.3s 2 shake}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.hang.read{color:var(--ink-muted)}.hang.cur{background:var(--hilite)}.margin .tickbox{position:absolute;top:2px;left:4px}.choice{text-align:left;color:var(--ink);background:0 0;border:2px solid #c9bd9f;border-radius:8px;flex-direction:column;gap:6px;padding:14px;font-size:14px;line-height:1.6;display:flex;position:relative}.choice[aria-pressed=true]{border-color:var(--pen);background:#fbefe6}.screen.fixed{height:100dvh;min-height:0;overflow:hidden}.screen.fixed .body{min-height:0}.log.scroll{scrollbar-width:none;flex:1;min-height:0;padding-right:2px;overflow-y:auto}.log.scroll::-webkit-scrollbar{display:none}.small-stamp{width:58px;height:58px;font-size:14px;top:8px;right:10px}.choice:disabled{cursor:default}.choice>span:not(.stamp){padding-right:52px}
