:root{--bg: #f6f7fb;--surface: #ffffff;--surface-2: #f0f2f7;--border: #e2e5ee;--text: #1a1d29;--text-muted: #666d80;--text-subtle: #9aa1b2;--brand: #5b5bd6;--brand-strong: #4a4ac0;--brand-soft: #ececfb;--accent: #f0674a;--success: #17936a;--success-soft: #e3f5ee;--warning: #c9820a;--danger: #d63b3b;--danger-soft: #fdecec;--radius: 12px;--radius-sm: 8px;--radius-lg: 18px;--shadow: 0 1px 2px rgba(20, 24, 40, .06), 0 4px 16px rgba(20, 24, 40, .06);--shadow-lg: 0 8px 40px rgba(20, 24, 40, .14);--nav-height: 60px;--content-width: clamp(1160px, 75vw, 1800px)}@media (prefers-color-scheme: dark){:root{--bg: #12141c;--surface: #1a1d27;--surface-2: #232733;--border: #2e3342;--text: #e8eaf2;--text-muted: #a2a9bd;--text-subtle: #767e93;--brand: #8b8bf0;--brand-strong: #a0a0f5;--brand-soft: #262a44;--accent: #ff8a70;--success: #4fc99a;--success-soft: #1c3730;--warning: #e0a53c;--danger: #f07070;--danger-soft: #3a2226;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 4px 16px rgba(0, 0, 0, .3);--shadow-lg: 0 8px 40px rgba(0, 0, 0, .5)}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0 0 .5em;line-height:1.3;font-weight:700;letter-spacing:-.01em}h1{font-size:1.85rem}h2{font-size:1.35rem}h3{font-size:1.1rem}p{margin:0 0 1em}.container{max-width:var(--content-width);margin:0 auto;padding:28px 20px 80px}.container-narrow{max-width:clamp(760px,62vw,1000px)}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-head p{margin:0;color:var(--text-muted)}.layout-split{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}@media (max-width: 900px){.layout-split{grid-template-columns:minmax(0,1fr)}.layout-split>aside{order:-1}}body.has-feed-layout #root{height:100dvh;overflow:hidden}.container-feed{display:flex;flex-direction:column;flex:1;min-height:0;padding-bottom:24px}.feed-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:20px;flex:1;min-height:0}.feed-side,.feed-main{overflow-y:auto;padding-right:6px}.feed-side{display:flex;flex-direction:column}.feed-group{margin-bottom:18px}.feed-group-title{margin:0 0 8px;font-size:.78rem;font-weight:700;letter-spacing:.06em;color:var(--text-subtle)}.feed-side .filter-bar{margin-bottom:0}@media (max-width: 900px){body.has-feed-layout #root{height:auto;min-height:100dvh;overflow:visible}.container-feed{flex:none}.feed-layout{grid-template-columns:minmax(0,1fr);flex:none}.feed-side,.feed-main{overflow:visible;padding-right:0}}.stack{display:flex;flex-direction:column;gap:14px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row-tight{gap:6px}.spacer{flex:1}.navbar{position:sticky;top:0;z-index:40;height:var(--nav-height);background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.navbar-inner{max-width:var(--content-width);height:100%;margin:0 auto;padding:0 20px;display:flex;align-items:center;gap:6px}.brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:1.15rem;color:var(--text);margin-right:12px;white-space:nowrap}.brand:hover{text-decoration:none}.brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--brand),var(--accent));color:#fff;font-size:.95rem}.nav-links{display:flex;align-items:center;gap:2px;overflow-x:auto;scrollbar-width:none}.nav-links::-webkit-scrollbar{display:none}.nav-link{padding:7px 12px;border-radius:var(--radius-sm);color:var(--text-muted);font-weight:600;font-size:.92rem;white-space:nowrap}.nav-link:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-link.active{background:var(--brand-soft);color:var(--brand)}.nav-badge{margin-left:5px;padding:1px 6px;border-radius:999px;background:var(--surface-2);color:var(--text-subtle);font-size:.68rem;font-weight:700;vertical-align:1px}#root{display:flex;flex-direction:column;min-height:100dvh}.site-footer{margin-top:auto;border-top:1px solid var(--border);background:var(--surface);padding:18px 20px}.site-footer-inner{max-width:var(--content-width);margin:0 auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.site-footer-link{color:var(--text-muted);font-size:.85rem;font-weight:600;padding:4px 8px;border-radius:var(--radius-sm)}.site-footer-link:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--brand);color:#fff;font:inherit;font-weight:600;font-size:.92rem;cursor:pointer;transition:filter .15s,background .15s,border-color .15s;white-space:nowrap}.btn:hover:not(:disabled){filter:brightness(1.08);text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn-soft{background:var(--brand-soft);color:var(--brand)}.btn-danger{background:transparent;color:var(--danger);border-color:var(--border)}.btn-danger:hover:not(:disabled){background:var(--danger-soft)}.btn-sm{padding:5px 11px;font-size:.84rem}.btn-lg{padding:12px 24px;font-size:1rem}.btn-block{width:100%}.google-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px}.or-divider{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--text-subtle);font-size:.85rem}.or-divider:before,.or-divider:after{content:"";flex:1;height:1px;background:var(--border)}.btn-icon{padding:7px;width:34px;height:34px;border-radius:50%;background:transparent;color:var(--text-muted);border-color:transparent}.btn-icon:hover:not(:disabled){background:var(--surface-2)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.card-hover{transition:transform .15s,box-shadow .15s,border-color .15s}.card-hover:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--brand) 35%,var(--border))}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel-head{padding:14px 16px;border-bottom:1px solid var(--border);font-weight:700;display:flex;align-items:center;gap:8px}.panel-body{padding:16px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label,.label{font-size:.86rem;font-weight:600;color:var(--text-muted)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],select,textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;font-size:.94rem;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 18%,transparent)}textarea{resize:vertical;min-height:100px;line-height:1.7}.hint{font-size:.82rem;color:var(--text-subtle)}.checkbox{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--text-muted);cursor:pointer}.checkbox input{width:16px;height:16px;accent-color:var(--brand)}.alert{padding:10px 14px;border-radius:var(--radius-sm);font-size:.9rem;margin-bottom:14px}.alert-error{background:var(--danger-soft);color:var(--danger)}.alert-success{background:var(--success-soft);color:var(--success)}.empty{padding:48px 20px;text-align:center;color:var(--text-subtle)}.empty-icon{font-size:2.4rem;margin-bottom:8px}.loading{padding:40px;text-align:center;color:var(--text-subtle)}.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;background:var(--surface-2);color:var(--text-muted);font-size:.78rem;font-weight:600;white-space:nowrap}.chip-subject{color:#fff}.chip-outline{background:transparent;border:1px solid var(--border)}.chip-status-open{background:var(--brand-soft);color:var(--brand)}.chip-status-resolved{background:var(--success-soft);color:var(--success)}.chip-status-closed{background:var(--surface-2);color:var(--text-subtle)}.filter-bar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}.filter-chip{padding:5px 13px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text-muted);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .15s}.filter-chip:hover{border-color:var(--brand);color:var(--brand)}.filter-chip.active{background:var(--brand);border-color:var(--brand);color:#fff}.avatar{display:grid;place-items:center;flex:none;border-radius:50%;background:var(--brand-soft);color:var(--brand);font-weight:700;overflow:hidden;-webkit-user-select:none;user-select:none}.avatar img{width:100%;height:100%;object-fit:cover}.author{display:flex;align-items:center;gap:8px;min-width:0}.author-name{font-weight:600;font-size:.88rem;color:var(--text)}.author-meta{font-size:.78rem;color:var(--text-subtle)}.post-card{display:block;color:inherit}.post-card:hover{text-decoration:none}.post-card h3{margin:8px 0 6px;font-size:1.05rem}.post-excerpt{color:var(--text-muted);font-size:.9rem;margin:0 0 12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-stats{display:flex;gap:14px;font-size:.82rem;color:var(--text-subtle)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.markdown{line-height:1.85;overflow-wrap:break-word}.markdown h1,.markdown h2,.markdown h3{margin-top:1.6em}.markdown h2{padding-bottom:6px;border-bottom:1px solid var(--border)}.markdown ul,.markdown ol{padding-left:1.4em}.markdown li{margin-bottom:.35em}.markdown code{padding:2px 6px;border-radius:5px;background:var(--surface-2);font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.88em}.markdown pre{padding:14px;border-radius:var(--radius-sm);background:var(--surface-2);overflow-x:auto}.markdown pre code{padding:0;background:none}.markdown blockquote{margin:1em 0;padding:4px 16px;border-left:3px solid var(--brand);color:var(--text-muted)}.markdown img{max-width:100%;border-radius:var(--radius-sm)}.markdown .table-scroll{overflow-x:auto;margin:1em 0}.markdown table{border-collapse:collapse;width:100%;font-size:.92rem}.markdown th,.markdown td{padding:8px 12px;border:1px solid var(--border);text-align:left}.markdown th{background:var(--surface-2)}.recorder{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.rec-button{display:grid;place-items:center;width:40px;height:40px;flex:none;border:none;border-radius:50%;background:var(--danger);color:#fff;font-size:1rem;cursor:pointer;transition:transform .15s}.rec-button:hover:not(:disabled){transform:scale(1.06)}.rec-button:disabled{opacity:.5;cursor:not-allowed}.rec-button.recording{animation:pulse 1.3s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--danger) 55%,transparent)}50%{box-shadow:0 0 0 10px transparent}}@media (prefers-reduced-motion: reduce){.rec-button.recording{animation:none}*{transition:none!important}}.rec-time{font-variant-numeric:tabular-nums;font-weight:700;color:var(--text)}.rec-meter{flex:1;height:6px;border-radius:3px;background:var(--border);overflow:hidden}.rec-meter span{display:block;height:100%;background:var(--danger);transition:width .08s linear}.audio-player{display:flex;align-items:center;gap:8px}.audio-player audio{height:34px;max-width:260px}.chat-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;height:calc(100vh - var(--nav-height) - 56px)}@media (max-width: 820px){.chat-layout{grid-template-columns:minmax(0,1fr);height:auto}.chat-layout.has-active .conversation-list{display:none}}.conversation-list{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.conversation-items{flex:1;overflow-y:auto}.conversation-item{display:flex;gap:10px;width:100%;padding:11px 13px;border:none;border-bottom:1px solid var(--border);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.conversation-item:hover{background:var(--surface-2)}.conversation-item.active{background:var(--brand-soft)}.conversation-item .title{font-weight:600;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-item .preview{font-size:.8rem;color:var(--text-subtle);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.unread-dot{display:grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--accent);color:#fff;font-size:.7rem;font-weight:700}.chat-window{display:flex;flex-direction:column;min-height:460px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}.bubble-row{display:flex;gap:8px;align-items:flex-end}.bubble-row.mine{flex-direction:row-reverse}.bubble{max-width:min(560px,74%);padding:9px 13px;border-radius:16px;background:var(--surface-2);overflow-wrap:break-word;white-space:pre-wrap}.bubble-row.mine .bubble{background:var(--brand);color:#fff;white-space:pre-wrap}.bubble-meta{margin-top:3px;font-size:.72rem;color:var(--text-subtle)}.bubble-sender{font-size:.76rem;font-weight:600;color:var(--text-muted);margin-bottom:2px}.chat-composer{display:flex;gap:8px;align-items:flex-end;padding:12px;border-top:1px solid var(--border)}.chat-composer textarea{min-height:42px;max-height:140px;resize:none}.typing-indicator{padding:0 16px 6px;font-size:.8rem;color:var(--text-subtle);height:22px}.peer-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.peer-tile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:18px 10px;border:2px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:center;transition:border-color .15s,box-shadow .15s}.peer-tile.speaking{border-color:var(--success);box-shadow:0 0 0 4px color-mix(in srgb,var(--success) 22%,transparent)}.peer-tile .peer-name{font-weight:600;font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.peer-tile .peer-state{font-size:.76rem;color:var(--text-subtle)}.voice-toolbar{display:flex;gap:10px;align-items:center;padding:14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);position:sticky;bottom:16px;box-shadow:var(--shadow-lg)}.hero{padding:56px 0 40px;text-align:center}.hero h1{font-size:clamp(1.9rem,5vw,2.9rem);margin-bottom:12px}.hero .gradient{background:linear-gradient(120deg,var(--brand),var(--accent));-webkit-background-clip:text;background-clip:text;color:transparent}.hero p{max-width:560px;margin:0 auto 24px;color:var(--text-muted);font-size:1.05rem}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:36px 0}.feature{padding:20px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.feature-emoji{font-size:1.6rem}.feature h3{margin:10px 0 6px;font-size:1rem}.feature p{margin:0;font-size:.88rem;color:var(--text-muted)}.bell-wrap{position:relative}.bell-badge{position:absolute;top:2px;right:2px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff;font-size:.66rem;font-weight:700;display:grid;place-items:center}.dropdown{position:absolute;top:calc(100% + 8px);right:0;width:320px;max-height:400px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:50}.dropdown-item{display:block;width:100%;padding:11px 14px;border:none;border-bottom:1px solid var(--border);background:transparent;color:inherit;font:inherit;font-size:.88rem;text-align:left;cursor:pointer}.dropdown-item:hover{background:var(--surface-2);text-decoration:none}.dropdown-item.unread{background:var(--brand-soft)}.verify-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;max-width:var(--content-width);margin:16px auto 0;padding:12px 16px;border:1px solid color-mix(in srgb,var(--warning) 40%,var(--border));border-radius:var(--radius);background:color-mix(in srgb,var(--warning) 12%,var(--surface))}.verify-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:18px;padding:14px;border:1px solid color-mix(in srgb,var(--warning) 40%,var(--border));border-radius:var(--radius);background:color-mix(in srgb,var(--warning) 12%,var(--surface))}.verify-card a{overflow-wrap:anywhere}.streak-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent);font-size:.78rem;font-weight:700;white-space:nowrap}.avatar-frame{display:inline-flex;border-radius:50%;flex:none;line-height:0}.coin-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 10px;border-radius:999px;background:color-mix(in srgb,var(--warning) 18%,transparent);color:var(--warning);font-size:.78rem;font-weight:700;white-space:nowrap}.checkin-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.checkin-weekday{text-align:center;font-size:.68rem;color:var(--text-subtle)}.checkin-day{aspect-ratio:1;border-radius:4px;background:var(--surface-2);border:1px solid transparent}.checkin-day.checked{background:var(--accent)}.checkin-day.today{border-color:var(--text-muted)}.muted{color:var(--text-muted)}.subtle{color:var(--text-subtle);font-size:.85rem}.center{text-align:center}.divider{height:1px;background:var(--border);margin:18px 0}.stat-row{display:flex;gap:22px;flex-wrap:wrap}.stat-value{font-size:1.3rem;font-weight:700}.stat-label{font-size:.8rem;color:var(--text-subtle)}.reputation{display:inline-flex;align-items:center;gap:3px;color:var(--warning);font-weight:700;font-size:.8rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
