@font-face{font-family:JasonHandwriting1;src:url(/fonts/jason1-Regular.subset.woff2) format("woff2");font-weight:400;font-display:swap;font-style:normal}@font-face{font-family:JasonHandwriting1;src:url(/fonts/jason1-SemiBold.subset.woff2) format("woff2");font-weight:600 700;font-display:swap;font-style:normal}:root{--bg: #FAF5EB;--surface: #FFFCF4;--surface-2: #F3EDDE;--ink: #2B2117;--ink-2: #4A3C2E;--muted: #8A7F70;--muted-2: #B5A99A;--border: #E8DFCC;--border-strong: #C9BCA4;--primary: #D4633F;--primary-ink: #B04F2F;--primary-soft: #FBE7DE;--primary-faint: #FDF3ED;--accent: #3E7D5C;--accent-ink: #2D5E44;--accent-soft: #E0EDDF;--accent-faint: #F2F8F1;--amber: #E8A33B;--amber-soft: #FAEBC8;--success: #3E7D5C;--success-soft: #E0EDDF;--warning: #C28A1F;--warning-soft: #F8EDD2;--danger: #C8332A;--danger-soft: #FCE5E1;--font-sans: "Caveat", "JasonHandwriting1", "Noto Sans TC", -apple-system, BlinkMacSystemFont, "PingFang TC", "Microsoft JhengHei", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--font-hand: "Caveat", "JasonHandwriting1", "Marker Felt", cursive;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-xl: 22px}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:var(--font-sans);background:#e9e2d2;color:var(--ink);-webkit-font-smoothing:antialiased}.tw-screen{width:100%;height:100%;background:repeating-linear-gradient(180deg,transparent 0,transparent 39px,rgba(140,95,45,.05) 39px,rgba(140,95,45,.05) 40px),var(--bg);font-family:var(--font-sans);color:var(--ink);letter-spacing:0;display:flex;flex-direction:column;position:relative;overflow:hidden}.tw-screen.dark{background:#07101e;color:#fff}.tw-safe-top{height:60px;flex-shrink:0}.tw-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;cursor:pointer;font-family:var(--font-sans);font-size:17px;font-weight:600;padding:18px 24px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:transform .14s ease,background-color .14s ease,box-shadow .14s ease;min-height:56px;letter-spacing:.01em}.tw-btn:active{transform:scale(.985)}.tw-btn-primary{background:var(--primary);color:#fff;box-shadow:0 1px #0000000f,0 8px 24px -10px #0f2a4a80}.tw-btn-primary:hover{background:var(--primary-ink)}.tw-btn-accent{background:var(--accent);color:#fff;box-shadow:0 1px #0000000f,0 8px 24px -10px #1e4fbf8c}.tw-btn-secondary{background:#fff;color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--border)}.tw-btn-ghost{background:transparent;color:var(--muted)}.tw-btn-block{width:100%}.tw-appbar{display:flex;align-items:center;padding:14px 18px;gap:14px;font-size:17px;font-weight:600;color:var(--ink);flex-shrink:0}.tw-appbar .tw-back{width:36px;height:36px;border-radius:999px;background:#0000000a;display:flex;align-items:center;justify-content:center}.tw-card{background:#fff;border-radius:var(--r-lg);box-shadow:0 1px #46321e0a,0 1px 2px #46321e0d}.tw-mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1,"ss01" 1}.tw-label-sm{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}.handwriting{font-family:var(--font-hand);font-weight:600;letter-spacing:.01em;line-height:1.15}.handwriting.hand-en{font-weight:700}.tw-cam{flex:1;position:relative;background:radial-gradient(ellipse at 50% 30%,#ffffff0d,#0000 60%),linear-gradient(180deg,#0b1626,#050a14);overflow:hidden}.tw-cam-noise{position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle at 10% 20%,rgba(255,255,255,.04) 0,transparent 30%),radial-gradient(circle at 80% 70%,rgba(255,255,255,.03) 0,transparent 30%);opacity:1;pointer-events:none}.tw-cam-grain{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.18;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.7'/></svg>")}.tw-cam-bg-doc{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;filter:blur(1.5px) brightness(.85)}@keyframes tw-pulse{0%,to{opacity:1}50%{opacity:.55}}.tw-pulse{animation:tw-pulse 1.6s ease-in-out infinite}@keyframes tw-spin{to{transform:rotate(360deg)}}.tw-spin{animation:tw-spin 1s linear infinite}.tw-diff-card{background:#fff;border-radius:14px;padding:16px 16px 18px;position:relative;box-shadow:0 1px #46321e0a,0 1px 2px #46321e0a}.tw-diff-card-tappable{cursor:pointer;transition:box-shadow .14s,transform .14s}.tw-diff-card-tappable:hover{box-shadow:0 2px #46321e0f,0 6px 14px -4px #46321e1f}.tw-diff-card-tappable:active{transform:scale(.995)}.tw-card-trash{position:absolute;top:8px;right:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;width:34px;height:34px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);transition:background-color .12s,color .12s;z-index:2}.tw-card-trash:hover{background:var(--danger-soft);color:var(--danger)}.tw-card-trash:hover svg path{stroke:var(--danger)}@keyframes tw-shutter{0%{box-shadow:0 0 #ffffff59}60%,to{box-shadow:0 0 0 22px #fff0}}.tw-shutter:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;animation:tw-shutter 2.4s ease-out infinite;pointer-events:none}@keyframes tw-rise{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}.tw-rise{animation:tw-rise .35s cubic-bezier(.2,.7,.2,1) both}@keyframes tw-check-draw{0%{stroke-dashoffset:60}to{stroke-dashoffset:0}}.tw-check path{stroke-dasharray:60;stroke-dashoffset:0;animation:tw-check-draw .55s .15s ease-out both}@keyframes tw-ring-grow{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.tw-ring{animation:tw-ring-grow .45s cubic-bezier(.2,1.1,.3,1) both}@keyframes tw-burst{0%{transform:translate(0) scale(.6);opacity:0}35%{opacity:1}to{transform:translate(var(--dx,0),var(--dy,0)) scale(1);opacity:0}}.tw-confetti span{position:absolute;width:6px;height:6px;border-radius:2px;animation:tw-burst 1.3s ease-out forwards}.tw-rail-left{position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:2px}.redpen-row{display:flex;align-items:flex-end;justify-content:center;flex-wrap:nowrap;padding:4px 6px 6px;position:relative}.redpen-stack{display:inline-flex;flex-direction:column;align-items:center;line-height:1;position:relative}.redpen-annot{display:flex;flex-direction:column;align-items:center;line-height:1;margin-bottom:2px;pointer-events:none;height:32px;justify-content:flex-end}.redpen-annot-empty{visibility:hidden}.redpen-annot-text{font-family:Caveat,Marker Felt,cursive;font-size:28px;font-weight:700;color:var(--danger);transform:rotate(-5deg);letter-spacing:.02em;text-shadow:0 .5px 0 rgba(176,40,35,.2)}.redpen-annot-arrow{font-size:13px;line-height:1;color:var(--danger);font-weight:700;margin-top:1px}.redpen-char{font-family:var(--font-mono);font-size:20px;font-weight:500;color:var(--ink);padding:2px;position:relative;letter-spacing:0;z-index:0}.redpen-char.space{padding:0 3px}.redpen-char.wrong{font-weight:600}.redpen-char.wrong:before{content:"";position:absolute;top:0;right:-3px;bottom:0;left:-3px;background:linear-gradient(96deg,#e6503700 2%,#dc3c2d8c 12%,#c8281eb8,#dc3c2d8c 88%,#e6503700 98%);border-radius:3px;transform:skew(-4deg);mix-blend-mode:multiply;z-index:-1;box-shadow:inset 0 -2px #b028232e}.redpen-char.wrong:after{content:"";position:absolute;left:-2px;right:-1px;top:5px;height:60%;background:#dc3c2d2e;border-radius:1px;transform:skew(-6deg) rotate(-1deg);mix-blend-mode:multiply;z-index:-1}.redpen-char.struck{color:#46321e8c}.redpen-char.struck:before{content:"";position:absolute;left:-3px;right:-3px;top:52%;height:2.5px;background:linear-gradient(90deg,#c8332ab3,#b02823f2,#c8332ab3);transform:rotate(-3deg);border-radius:2px;box-shadow:0 .5px #b0282340;z-index:1;pointer-events:none}.redpen-char.struck:after{content:"";position:absolute;left:-1px;right:0;top:46%;height:1px;background:#c8332a59;transform:rotate(-4deg);border-radius:2px;z-index:1;pointer-events:none}.redpen-char.is-insert{padding:0 1px 3px;min-width:10px;display:inline-flex;align-items:flex-end;justify-content:center;font-size:20px;line-height:1}.redpen-char.is-insert svg{display:block}.redpen-confirm{margin-top:14px;display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--success-soft);border-radius:10px}.acard{width:250px;background:#fbfbfa;border-radius:12px;border:1px solid rgba(70,50,30,.08);overflow:hidden;box-shadow:0 6px 18px -6px #46321e2e,0 1px 2px #46321e0d;position:relative;font-family:var(--font-sans)}.acard-header{padding:9px 14px 8px;background:linear-gradient(135deg,#c7522c,#e8743b);color:#fff;position:relative}.acard-title{font-size:10px;font-weight:700;letter-spacing:.18em;font-family:var(--font-mono)}.acard-subtitle{font-size:9px;opacity:.65;margin-top:1px;letter-spacing:.04em}.acard-stamp{position:absolute;top:8px;right:12px;font-family:var(--font-mono);font-size:7px;font-weight:700;letter-spacing:.12em;color:#ffffffd9;padding:2px 6px;border:1px solid rgba(255,255,255,.4);border-radius:3px;transform:rotate(2deg)}.acard-body{padding:6px 14px 12px}.acard-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;border-bottom:1px dotted rgba(70,50,30,.07);min-height:26px}.acard-row:last-child{border-bottom:none}.acard-label{font-size:8px;font-weight:600;color:#46321e8c;letter-spacing:.05em;text-transform:uppercase;flex-shrink:0}.acard-value{font-family:var(--font-mono);font-size:11px;color:var(--ink);font-weight:600;display:flex;align-items:center;gap:5px;letter-spacing:.02em}.acard-ok{display:inline-flex;width:8px;height:8px;border-radius:999px;background:var(--success);flex-shrink:0}.acard-value-shimmer{height:10px;border-radius:3px;background:linear-gradient(90deg,#46321e12,#46321e24,#46321e12);background-size:220% 100%;animation:tw-shimmer-bar 1.6s ease-in-out infinite}@keyframes tw-shimmer-bar{0%{background-position:100% 0}to{background-position:-120% 0}}.lens-wrap{position:absolute;left:0;top:0;pointer-events:none;will-change:transform;filter:drop-shadow(0 6px 14px rgba(70,50,30,.22))}.lens-glass{position:absolute;border-radius:50%;overflow:hidden;background:#fbfbfa}.lens-content{position:absolute;transform-origin:0 0;will-change:left,top}.lens-shine{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;pointer-events:none;background:radial-gradient(ellipse 60% 35% at 32% 25%,rgba(255,255,255,.55),transparent 70%),radial-gradient(circle at 50% 50%,transparent 55%,rgba(120,150,200,.1) 100%);box-shadow:inset 0 0 0 1px #b4c8e159,inset 0 2px 6px #ffffff80}.lens-frame{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.shimmer-stage{height:26px;display:flex;align-items:center;justify-content:center;position:relative}.shimmer-text{font-size:17px;font-weight:600;letter-spacing:.02em;background:linear-gradient(100deg,#46321e52,#46321e52 38%,#d4633f,#46321e52 62%,#46321e52);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:tw-shimmer-sweep 2.6s linear infinite;white-space:nowrap}@keyframes tw-shimmer-sweep{0%{background-position:220% 0}to{background-position:-120% 0}}@keyframes tw-fade-swap{0%,to{opacity:0;transform:translateY(4px)}15%,85%{opacity:1;transform:none}}.shimmer-text.swap{animation:tw-shimmer-sweep 2.6s linear infinite,tw-fade-swap 2.6s ease-in-out forwards}.tw-action-bar{padding:12px 18px calc(env(safe-area-inset-bottom,0px) + 8px);background:linear-gradient(180deg,#faf5eb00,#faf5eb 30%);display:flex;flex-direction:column;gap:10px;flex-shrink:0}.tw-btn-addfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1.5px dashed var(--border-strong);border-radius:12px;padding:14px 16px;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font-sans);font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;transition:border-color .15s,background-color .15s,color .15s}.tw-btn-addfield:hover{border-color:var(--primary);color:var(--primary-ink);background:var(--primary-faint)}.tw-addfield-plus{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:999px;background:var(--primary-soft);color:var(--primary-ink);font-size:16px;line-height:1;font-weight:700;padding-bottom:2px}.tw-sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#140c0473;z-index:5}.tw-sheet{position:absolute;left:0;right:0;bottom:0;background:var(--bg);border-radius:22px 22px 0 0;box-shadow:0 -16px 40px -10px #46321e40;z-index:6;display:flex;flex-direction:column;max-height:78%;animation:tw-sheet-rise .28s cubic-bezier(.2,.7,.2,1) both}.tw-sheet.tw-sheet-back{z-index:5;top:9%;max-height:none;filter:brightness(.78) saturate(.85);transform:scale(.965);transform-origin:50% 0;animation:tw-sheet-recede .28s cubic-bezier(.2,.7,.2,1) both}.tw-sheet.tw-sheet-front{z-index:7;top:15%;max-height:none}@keyframes tw-sheet-recede{0%{transform:scale(1);filter:none}to{transform:scale(.965);filter:brightness(.78) saturate(.85)}}@keyframes tw-sheet-rise{0%{transform:translateY(28px);opacity:0}to{transform:none;opacity:1}}.tw-sheet-grabber{width:36px;height:4px;background:var(--border-strong);border-radius:999px;margin:10px auto 4px}.tw-sheet-head{padding:8px 22px 12px;display:flex;align-items:baseline;justify-content:space-between}.tw-sheet-body{flex:1;overflow:auto;padding:4px 16px 18px}.tw-sheet-foot{padding:12px 18px calc(18px + env(safe-area-inset-bottom,0));background:var(--bg);border-top:1px solid var(--border)}.tw-fieldrow{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;background:transparent;cursor:pointer;border:1px solid transparent;transition:background-color .12s,border-color .12s}.tw-fieldrow:hover{background:var(--surface)}.tw-fieldrow.selected{background:var(--primary-faint);border-color:var(--primary-soft)}.tw-fieldrow+.tw-fieldrow{border-top:1px solid var(--border);border-radius:0}.tw-fieldrow-meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.tw-fieldrow-label{font-size:14px;color:var(--ink);font-weight:600}.tw-fieldrow-value{font-family:var(--font-mono);font-size:12px;color:var(--muted);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-fieldrow-chevron{color:var(--muted-2);flex-shrink:0}.tw-input{width:100%;background:#fff;border:1.5px solid var(--border);border-radius:12px;padding:14px;font-family:var(--font-mono);font-size:16px;color:var(--ink);letter-spacing:.02em;outline:none;transition:border-color .12s,box-shadow .12s}.tw-input:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-soft)}.tw-input-caret{display:inline-block;width:1.5px;height:18px;background:var(--primary);vertical-align:-3px;margin-left:1px;animation:tw-caret-blink 1s steps(2,end) infinite}@keyframes tw-caret-blink{50%{opacity:0}}.tw-manual-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:var(--amber-soft);color:#8a5a12;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.tw-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600}.tw-tag-primary{background:var(--primary-soft);color:var(--primary-ink)}.tw-tag-accent{background:var(--accent-soft);color:var(--accent-ink)}.tw-tag-success{background:var(--success-soft);color:var(--success)}.tw-tag-warn{background:var(--warning-soft);color:var(--warning)}.tw-tag-muted{background:#0000000a;color:var(--muted)}html,body,#root{width:100%;height:100%;height:100dvh;margin:0;padding:0;overflow:hidden}body{background:var(--bg)}#root>.tw-screen,.pt-page>.tw-screen{width:100%;height:100%}#root>div:has(>.pt-page){width:100vw;height:100dvh}.tw-safe-top{height:calc(env(safe-area-inset-top,24px) + 36px);flex-shrink:0}.tw-safe-bot{height:env(safe-area-inset-bottom,16px);flex-shrink:0}.tw-screen{padding-top:var(--screen-safe-top-override, calc(env(safe-area-inset-top, 24px) + 36px) )}.tw-screen.dark{--screen-safe-top-override: 0}.tw-cam-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;background:#000}*{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}input,textarea,select{-webkit-user-select:text;user-select:text}.tw-copy-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;font-size:10px;font-weight:600;letter-spacing:.04em;border-radius:999px;background:#0000000d;color:var(--muted-2);transition:background-color .22s ease,color .22s ease,transform .18s cubic-bezier(.34,1.56,.64,1);line-height:1}.tw-copy-pill svg{display:block;flex-shrink:0}.tw-copy-pill.copied{background:var(--success-soft);color:var(--success);transform:scale(1.08);animation:tw-copy-bounce 1.4s ease-out forwards}.tw-copy-pill.copied svg path{stroke-dasharray:24;stroke-dashoffset:24;animation:tw-copy-check .32s ease-out 60ms forwards}.tw-copy-pill.error{background:var(--danger-soft);color:var(--danger)}@keyframes tw-copy-bounce{0%{transform:scale(.92)}18%{transform:scale(1.12)}40%{transform:scale(1)}to{transform:scale(1)}}@keyframes tw-copy-check{to{stroke-dashoffset:0}}button:has(.tw-copy-pill):active{opacity:.7;transition:opacity 60ms}.pt-page.idle{transform:translate(0);opacity:1}@keyframes pt-enter-fwd{0%{transform:translate(100%);opacity:1}to{transform:translate(0);opacity:1}}@keyframes pt-exit-bk{0%{transform:translate(0);opacity:1}to{transform:translate(-30%);opacity:.7}}.pt-page.pt-enter-forward{animation:pt-enter-fwd .35s cubic-bezier(.32,.72,0,1) both}.pt-page.pt-exit-back{animation:pt-exit-bk .35s cubic-bezier(.32,.72,0,1) both}@keyframes pt-enter-bk{0%{transform:translate(-30%);opacity:.7}to{transform:translate(0);opacity:1}}@keyframes pt-exit-fwd{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:1}}.pt-page.pt-enter-back{animation:pt-enter-bk .35s cubic-bezier(.32,.72,0,1) both}.pt-page.pt-exit-forward{animation:pt-exit-fwd .35s cubic-bezier(.32,.72,0,1) both}.tw-body-locked{overflow:hidden!important}.tw-sheet-open{animation:tw-sheet-rise .28s cubic-bezier(.2,.7,.2,1) both}.tw-sheet-closing{animation:tw-sheet-close .28s cubic-bezier(.55,.085,.68,.53) both}@keyframes tw-sheet-close{0%{transform:translateY(0);opacity:1}to{transform:translateY(110%);opacity:0}}
