.fade-enter-active,.fade-leave-active{transition:opacity .2s var(--ease-out),transform .24s var(--ease-out)}.fade-enter-from{opacity:0;transform:translateY(6px)}.fade-leave-to{opacity:0;transform:translateY(-4px)}:root{--paper: #F5F1E8;--paper-2: #FFFEF9;--paper-deep: #EFE7D5;--paper-edge: #E5DCC7;--ink: #2A2620;--ink-soft: #6F6A60;--ink-faint: #ABA396;--sage: #7A8B6E;--sage-deep: #4F5E45;--sage-pale: #C9D2BD;--sage-cream: #EAEEDF;--clay: #C97B5C;--clay-soft: #E5B5A1;--font-display: "Fraunces", "Songti SC", "STSong", Georgia, serif;--font-ui: "DM Sans", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", sans-serif;--radius-sm: 8px;--radius: 14px;--radius-lg: 22px;--radius-pill: 999px;--shadow-soft: 0 1px 2px rgba(43, 38, 32, .04), 0 8px 24px rgba(43, 38, 32, .06);--shadow-bubble: 0 1px 1px rgba(43, 38, 32, .05);--shadow-float: 0 2px 4px rgba(43, 38, 32, .05), 0 20px 48px rgba(43, 38, 32, .1);--ease-out: cubic-bezier(.16, 1, .3, 1);--shell-max: 480px}*,*:before,*:after{box-sizing:border-box}html,body,#app{height:100%;margin:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-ui);font-size:15px;line-height:1.5;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01","cv11";overscroll-behavior:none}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(1200px 600px at 20% -10%,rgba(201,210,189,.35),transparent 60%),radial-gradient(800px 600px at 110% 110%,rgba(201,123,92,.1),transparent 60%),var(--paper);pointer-events:none}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;opacity:.5;mix-blend-mode:multiply;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.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.20  0 0 0 0 0.18  0 0 0 0 0.15  0 0 0 0.06 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}input,textarea{font:inherit;color:inherit}a{color:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:var(--paper-edge);border-radius:999px}::-webkit-scrollbar-track{background:transparent}.app-shell{position:relative;min-height:100dvh;display:flex;justify-content:center}.screen{position:relative;width:100%;max-width:var(--shell-max);min-height:100dvh;display:flex;flex-direction:column;background:var(--paper)}@media(min-width:768px){.app-shell{padding:32px 24px;align-items:stretch}.screen{min-height:calc(100dvh - 64px);border-radius:28px;box-shadow:var(--shadow-float);overflow:hidden;border:1px solid var(--paper-edge)}}.bar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--paper-edge);background:linear-gradient(180deg,#fffef9b3,#f5f1e8b3);backdrop-filter:saturate(140%) blur(8px);-webkit-backdrop-filter:saturate(140%) blur(8px)}.bar h1{margin:0;font-family:var(--font-display);font-weight:400;font-size:20px;letter-spacing:-.01em}.bar .sub{font-size:12px;color:var(--ink-soft)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.field input{width:100%;padding:12px 14px;background:var(--paper-2);border:1px solid var(--paper-edge);border-radius:var(--radius);transition:border-color .16s var(--ease-out),box-shadow .16s var(--ease-out)}.field input:focus{outline:0;border-color:var(--sage);box-shadow:0 0 0 4px #7a8b6e26}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;border-radius:var(--radius);background:var(--sage-deep);color:var(--paper-2);font-weight:500;letter-spacing:.01em;transition:transform .12s var(--ease-out),background .16s var(--ease-out),box-shadow .16s var(--ease-out)}.btn:hover{background:var(--sage)}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--ink-soft);padding:8px 12px}.btn-ghost:hover{color:var(--ink);background:var(--paper-deep)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--sage-cream);color:var(--sage-deep);font-family:var(--font-display);font-size:16px;letter-spacing:-.02em;-webkit-user-select:none;user-select:none;flex:0 0 auto;overflow:hidden}.avatar img{display:block;width:100%;height:100%;object-fit:cover}.avatar.lg{width:56px;height:56px;font-size:22px}.avatar.sm{width:30px;height:30px;font-size:13px}.avatar.group{background:linear-gradient(135deg,var(--sage-pale),var(--clay-soft));color:var(--ink)}.bubble-row{display:flex;align-items:flex-end;gap:8px;margin-bottom:4px}.bubble-row.mine{justify-content:flex-end}.bubble-row .author{font-size:11px;color:var(--ink-soft);margin:0 8px 4px}.bubble{max-width:76%;padding:8px 12px 7px;border-radius:18px 18px 18px 6px;background:var(--paper-2);border:1px solid var(--paper-edge);box-shadow:var(--shadow-bubble);position:relative;word-wrap:break-word;word-break:break-word;overflow-wrap:anywhere;white-space:pre-wrap;line-height:1.45}.bubble-row.mine .bubble{border-radius:18px 18px 6px;background:var(--sage-deep);color:var(--paper-2);border-color:transparent}.bubble .text{display:inline}.bubble .at{color:var(--clay);font-weight:600}.bubble-row.mine .bubble .at{color:var(--clay-soft)}.bubble .link{color:var(--sage-deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;word-break:break-all;overflow-wrap:anywhere;transition:opacity .12s}.bubble .link:hover{opacity:.78}.bubble-row.mine .bubble .link{color:var(--paper-2);text-decoration-color:#fffef9b3}.bubble .meta{display:inline-block;margin-left:8px;font-size:10px;letter-spacing:.04em;color:var(--ink-faint);white-space:nowrap;vertical-align:baseline;transform:translateY(2px);font-variant-numeric:tabular-nums}.bubble.has-media .meta{display:block;margin:6px 4px 0 0;text-align:right;transform:none}.bubble-row.mine .bubble .meta{color:#fffef98c}.day-divider{display:flex;justify-content:center;margin:18px 0 10px}.day-divider span{font-family:var(--font-display);font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);background:var(--paper);padding:0 12px}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fade-up .24s var(--ease-out) both}@keyframes pulse-dot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(.7);opacity:.6}}
