@font-face{font-family:Playfair Display;font-style:normal;font-weight:600 700;font-display:swap;src:url(/assets/playfair-vietnamese-Cabi7G8-.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:600 700;font-display:swap;src:url(/assets/playfair-latin-BOwq7MWX.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #f4eee3;--paper-2: #ece4d4;--paper-3: #e3d9c6;--ink: #2f2a28;--ink-soft: #5a524c;--ink-faint: #8a7f75;--blossom: #e9aec6;--blossom-deep: #d67ba6;--plum: #9a5d7f;--moss: #5e7360;--seal: #b3372f;--seal-dark: #9c2f28;--serif-display: "Playfair Display", Georgia, "Times New Roman", serif;--serif-zh: "Noto Serif SC", "Songti SC", "SimSun", serif;--serif-vi: "Times New Roman", "Noto Serif", "Tinos", serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{min-height:100vh;color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,sans-serif;background-color:var(--paper);background-image:radial-gradient(1100px 700px at -8% -12%,rgba(47,42,40,.075),transparent 60%),radial-gradient(900px 620px at 108% 112%,rgba(94,115,96,.09),transparent 60%),radial-gradient(700px 420px at 92% -6%,rgba(214,123,166,.1),transparent 65%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.18 0 0 0 0 0.16 0 0 0 0 0.15 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E")}.petals{position:fixed;inset:0;z-index:2;pointer-events:none}.mist{position:fixed;z-index:0;width:62vw;height:30vh;border-radius:50%;background:radial-gradient(closest-side,rgba(255,252,246,.55),transparent 70%);filter:blur(52px);pointer-events:none}.mist-a{top:4vh;left:-12vw;animation:mist-drift 85s ease-in-out infinite alternate}.mist-b{bottom:-6vh;right:-14vw;animation:mist-drift 105s ease-in-out infinite alternate-reverse}@keyframes mist-drift{0%{transform:translate(-6vw)}to{transform:translate(9vw)}}.page{position:relative;z-index:1;max-width:1060px;margin:0 auto;padding:26px 20px 14px;display:flex;flex-direction:column;min-height:100vh}main{flex:1}.site{margin-bottom:26px}.brand{display:flex;align-items:center;gap:16px}.seal{width:58px;height:58px;flex:none;filter:drop-shadow(0 2px 5px rgba(47,42,40,.28));transform:rotate(-2.5deg)}.brand-text h1{margin:0;font-family:var(--serif-display);font-weight:700;font-size:2.15rem;letter-spacing:.02em;line-height:1.1}.tagline{margin:4px 0 0;color:var(--ink-soft);font-size:.95rem}.brushline{display:block;width:min(600px,100%);height:12px;margin-top:14px}.card{background:#fffdf8a6;border:1px solid var(--paper-3);border-radius:12px;padding:22px 26px;box-shadow:0 10px 28px -18px #2f2a2873}.hint{color:var(--ink-faint);font-size:.86rem;margin:6px 0 0}.center{text-align:center}[hidden]{display:none!important}button{font:inherit;cursor:pointer;border-radius:8px;border:none}button:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--plum);outline-offset:2px}.go{position:relative;overflow:hidden;background:linear-gradient(160deg,var(--seal),var(--seal-dark));color:var(--paper);font-family:var(--serif-display);font-weight:600;font-size:1.12rem;padding:12px 42px;box-shadow:0 6px 18px -8px #b3372fbf;transition:transform .12s ease,box-shadow .12s ease}.go:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 9px 22px -8px #b3372fcc}.go:disabled{opacity:.55;cursor:default}.go.small{font-size:.98rem;padding:9px 26px}.go.alt{background:linear-gradient(160deg,var(--moss),#4c5e4e);box-shadow:0 6px 18px -8px #5e7360bf}.go .kbd{font-family:system-ui,sans-serif;font-size:.68rem;font-weight:400;opacity:.75;margin-left:8px;border:1px solid rgba(244,238,227,.5);border-radius:4px;padding:1px 5px;vertical-align:2px}.go.busy{animation:busy-pulse 1.1s ease-in-out infinite}@keyframes busy-pulse{0%,to{filter:saturate(1)}50%{filter:saturate(.55) brightness(1.06)}}.ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--paper-3);padding:6px 14px;font-size:.88rem;transition:border-color .12s ease,color .12s ease,background .12s ease}.ghost:hover{border-color:var(--plum);color:var(--plum);background:#9a5d7f0f}.linklike{background:none;border:none;padding:0;color:var(--plum);text-decoration:underline;font-size:inherit}.gate{max-width:560px;margin:8vh auto;text-align:center}.gate h2{font-family:var(--serif-display);margin:0 0 10px}.loading{max-width:480px;margin:3vh auto;text-align:center}.hero{width:min(340px,76vw);aspect-ratio:1 / 1.01;margin:0 auto 18px}.hero img{width:100%;height:100%;object-fit:cover;-webkit-mask-image:radial-gradient(ellipse 68% 66% at 50% 48%,#000 58%,transparent 97%);mask-image:radial-gradient(ellipse 68% 66% at 50% 48%,#000 58%,transparent 97%);animation:hero-breathe 6s ease-in-out infinite alternate}@keyframes hero-breathe{0%{transform:scale(1)}to{transform:scale(1.022)}}.phase{min-height:1.4em;margin:0 0 10px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.brushbar{height:13px;border-radius:7px;background:var(--paper-2);border:1px solid var(--paper-3);position:relative}.brushfill{position:relative;height:100%;width:0%;border-radius:7px 9px 11px 7px/7px 5px 9px 7px;background:linear-gradient(90deg,rgba(90,82,76,.85),var(--ink) 38%,#191513 62%,rgba(90,82,76,.9));background-size:220% 100%;animation:ink-flow 2.6s linear infinite;box-shadow:inset 0 -2px 3px #ffffff1f;transition:width .25s ease}@keyframes ink-flow{0%{background-position:0% 0}to{background-position:-220% 0}}.brushfill:after{content:"";position:absolute;right:-3px;top:50%;width:19px;height:19px;transform:translateY(-50%);border-radius:50% 46% 52% 48%;background:radial-gradient(circle at 35% 35%,#3d3733,#14100e 70%);box-shadow:0 0 10px #19151373}.brushfill:before{content:"";position:absolute;right:3px;top:100%;width:5px;height:7px;border-radius:50% 50% 60% 60%;background:#191513a6;opacity:0;animation:ink-drip 2.4s ease-in infinite}@keyframes ink-drip{0%,55%{transform:translateY(0) scale(.6);opacity:0}65%{transform:translateY(2px) scale(1);opacity:.8}95%{transform:translateY(15px) scale(.9);opacity:0}to{opacity:0}}.panes{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}.pane{display:flex;flex-direction:column;background:#fffdf8b8;border:1px solid var(--paper-3);border-radius:12px;box-shadow:0 12px 30px -22px #2f2a2880;overflow:hidden}.pane-head{display:flex;justify-content:space-between;align-items:baseline;padding:10px 16px 8px;border-bottom:1px dashed var(--paper-3)}.lang{font-family:var(--serif-display);font-weight:600;color:var(--plum);letter-spacing:.06em}.pane.src .lang{font-family:var(--serif-zh)}.count{color:var(--ink-faint);font-size:.8rem;font-variant-numeric:tabular-nums}.pane textarea,.output{min-height:320px;padding:14px 16px;border:none;background:transparent;resize:vertical}.pane textarea{font-family:var(--serif-zh);font-size:1.06rem;line-height:1.75;color:var(--ink)}.pane textarea::placeholder{color:var(--ink-faint);opacity:.8}.pane textarea:focus{outline:none}.output{font-family:var(--serif-vi);font-size:1.02rem;line-height:1.8;white-space:pre-wrap;overflow-wrap:break-word;overflow-y:auto;max-height:60vh}.pane-foot{display:flex;gap:8px;padding:8px 12px 12px}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:18px;margin:20px 2px}.auto{color:var(--ink-soft);font-size:.9rem;display:inline-flex;align-items:center;gap:7px;cursor:pointer}.auto input{accent-color:var(--seal)}.progress{color:var(--plum);font-size:.9rem;font-variant-numeric:tabular-nums}.filezone{margin:6px 0 18px}.drop{border:1.6px dashed var(--ink-faint);border-radius:12px;padding:18px 20px;text-align:center;color:var(--ink-soft);background:#fffdf866;transition:border-color .15s ease,background .15s ease}.drop p{margin:4px 0}.drop.dragover{border-color:var(--seal);background:#e9aec624}.filecard{margin-top:4px}.filemeta{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.encpick{color:var(--ink-soft);font-size:.88rem;margin-left:auto}.encpick select{font:inherit;margin-left:6px;padding:4px 8px;border:1px solid var(--paper-3);border-radius:6px;background:var(--paper);color:var(--ink)}.preview{font-family:var(--serif-zh);font-size:.92rem;line-height:1.6;background:#ece4d48c;border-radius:8px;padding:10px 12px;margin:12px 0;max-height:130px;overflow:auto;white-space:pre-wrap;overflow-wrap:break-word}.preview.result{font-family:var(--serif-vi);border-left:3px solid var(--moss)}.fileacts{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.error-banner{display:flex;align-items:center;gap:14px;justify-content:space-between;margin:18px 0;padding:12px 16px;border-radius:10px;border:1px solid rgba(179,55,47,.4);background:#b3372f14;color:var(--seal-dark)}.stats{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:16px 2px 6px;margin-top:10px;border-top:1px solid var(--paper-3);color:var(--ink-faint);font-size:.8rem;font-variant-numeric:tabular-nums}.stats .privacy{margin-left:auto;color:var(--moss)}.stats .credit{color:var(--ink-faint)}.stats .credit:hover{color:var(--plum)}.gpu-tip{flex-basis:100%;color:var(--plum);font-size:.78rem}.ink-in{display:inline;animation:ink-in .55s both}@keyframes ink-in{0%{opacity:0;filter:blur(6px)}to{opacity:1;filter:blur(0)}}.ripple{position:absolute;border-radius:50%;width:18px;height:18px;margin:-9px;pointer-events:none;background:radial-gradient(circle,#19151380,#19151300 65%);animation:ripple-out .65s ease-out forwards}@keyframes ripple-out{0%{transform:scale(.4);opacity:.9}to{transform:scale(13);opacity:0}}@media(max-width:900px){.panes{grid-template-columns:1fr}.pane textarea,.output{min-height:200px}.brand-text h1{font-size:1.8rem}.stats .privacy{margin-left:0}}@media(prefers-reduced-motion:reduce){.mist{display:none}.go.busy{animation:none;opacity:.75}.ink-in{animation-duration:.2s}.ripple{display:none}.brushfill{transition:none;animation:none}.brushfill:before{display:none}.hero img{animation:none}}
