@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin .8s linear infinite}.post-nav-link{display:flex;flex-direction:column;gap:.25rem;padding:.875rem 1rem;border-radius:.5rem;background-color:transparent;border:1px solid var(--color-border);transition:border-color .2s,transform .15s;text-decoration:none;color:inherit;flex:1;min-width:0}.post-nav-link:hover{border-color:var(--color-accent);transform:translateY(-1px)}.post-nav-label{font-size:.7rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-secondary)}.post-nav-title{font-size:.875rem;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s}.post-nav-link:hover .post-nav-title{color:var(--color-accent)}.toc-link{display:block;padding:.2rem .5rem;border-radius:.35rem;color:var(--color-text-secondary);text-decoration:none;transition:color .15s,background-color .15s;line-height:1.4}.toc-link:hover,.toc-link.active{color:var(--color-accent);background-color:#3fb95014}.toc-h3{padding-left:1rem;font-size:.7rem}.toc-h2{font-size:.75rem;font-weight:500}.post-cover{margin-bottom:1.75rem;border-radius:.5rem;overflow:hidden;border:1px solid var(--color-border);background:var(--color-bg-secondary);aspect-ratio:16 / 7;max-height:360px}.post-cover img{display:block;width:100%;height:100%;object-fit:cover;will-change:transform}.edit-cover-preview{position:relative;aspect-ratio:16 / 7;overflow:hidden}.edit-cover-preview img{width:100%;height:100%;object-fit:cover;display:block;will-change:transform}.edit-cover-crop-controls{display:grid;gap:.65rem;padding:.8rem .75rem .2rem}.edit-cover-crop-row{display:grid;grid-template-columns:4.5rem minmax(0,1fr) 3.2rem;gap:.65rem;align-items:center;font-family:var(--font-mono);font-size:.75rem;color:var(--color-text-secondary)}.edit-cover-crop-row input[type=range]{width:100%;accent-color:var(--color-accent)}.edit-cover-crop-value{text-align:right;color:var(--color-text)}.edit-save-btn{padding:.375rem 1.25rem;border-radius:.5rem;border:none;background:var(--color-accent);color:#fff;font-size:.8125rem;font-weight:600;cursor:pointer;transition:opacity .15s}.edit-save-btn:hover{opacity:.88}.edit-save-btn:disabled{opacity:.5;cursor:not-allowed}.edit-cancel-btn{padding:.375rem 1rem;border-radius:.5rem;border:1px solid var(--color-border);background:transparent;color:var(--color-text-secondary);font-size:.8125rem;cursor:pointer;transition:all .15s}.edit-cancel-btn:hover{border-color:var(--color-text);color:var(--color-text)}[contenteditable=true]{border-radius:.375rem;transition:outline .15s;outline:2px solid transparent;outline-offset:3px}[contenteditable=true]:focus{outline-color:var(--color-accent)}[contenteditable=true][data-placeholder]:empty:before{content:attr(data-placeholder);color:var(--color-text-secondary);opacity:.45;pointer-events:none}.edit-field-label{font-family:var(--font-mono);font-size:.68rem;color:var(--color-text-secondary);margin-bottom:.35rem;display:block}.edit-field-label:before{content:"// ";color:var(--color-accent);opacity:.7}.edit-required{color:#ef4444;margin-left:.2rem}.edit-help-banner{background:#3fb9500f;border:1px solid rgba(63,185,80,.2);border-radius:.5rem;padding:.6rem .85rem;margin-bottom:1.25rem;font-family:var(--font-mono);font-size:.7rem;color:var(--color-text-secondary);line-height:1.6}.edit-help-banner b{color:var(--color-text);font-weight:600}.md-toolbar{display:flex;flex-wrap:wrap;gap:.125rem;padding:.375rem .5rem;border:1px solid var(--color-border);border-bottom:none;border-radius:.625rem .625rem 0 0;background:var(--color-bg-secondary)}.md-toolbar-btn{padding:.2rem .45rem;border-radius:.3rem;border:none;background:transparent;color:var(--color-text-secondary);font-size:.78rem;cursor:pointer;transition:all .12s;line-height:1.4;min-width:1.6rem;text-align:center}.md-toolbar-btn:hover{background:var(--color-accent);color:#fff}.md-toolbar-sep{width:1px;background:var(--color-border);margin:.15rem .2rem;align-self:stretch}.edit-body-textarea{width:100%;padding:1rem 1.125rem;border:1px solid var(--color-border);border-radius:0 0 .625rem .625rem;background:var(--color-bg-secondary);color:var(--color-text);font-family:var(--font-mono);font-size:.9rem;line-height:1.8;resize:none;outline:none;overflow:hidden;min-height:160px;transition:border-color .15s}.edit-body-textarea:focus{border-color:var(--color-accent)}.edit-divider{display:flex;align-items:center;gap:.75rem;margin:1.75rem 0 1.25rem;color:var(--color-text-secondary);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}.edit-divider:before,.edit-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.like-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:2rem;font-size:.8125rem;font-weight:600;border:1.5px solid var(--color-border);background:var(--color-bg-card);color:var(--color-text-secondary);cursor:pointer;transition:all .15s}.like-btn:hover{border-color:#f43f5e;color:#f43f5e}.like-btn.liked{border-color:#f43f5e;color:#f43f5e;background:#f43f5e0f}.rich-editor{min-height:360px;border:1px solid var(--color-border);border-radius:.625rem;background:var(--color-bg-secondary);color:var(--color-text);font-size:1.0125rem;line-height:1.85;transition:border-color .15s;overflow:visible}.rich-editor:focus-within{border-color:var(--color-accent)}.tt-editor-mount{padding:1rem 1.25rem}.tt-table-toolbar{position:sticky;top:56px;z-index:25;display:flex;flex-wrap:wrap;align-items:center;gap:.2rem;padding:.4rem .6rem;background:var(--color-bg-card);border-bottom:1px solid var(--color-border);border-radius:.625rem .625rem 0 0;backdrop-filter:blur(8px)}.tt-tb-btn{padding:.3rem .55rem;border-radius:.35rem;border:1px solid transparent;background:transparent;color:var(--color-text-secondary);font-family:var(--font-mono);font-size:.72rem;cursor:pointer;transition:background .1s,color .1s,border-color .1s;line-height:1.2}.tt-tb-btn:hover{background:#3fb9501f;color:var(--color-accent);border-color:#3fb9504d}.tt-tb-sep{width:1px;height:1.1rem;background:var(--color-border);margin:0 .25rem}.tiptap-editor-content{outline:none;min-height:320px}.tiptap-editor-content:focus{outline:none}.tiptap-editor-content.prose{max-width:none}.tiptap-editor-content p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--color-dim);float:left;pointer-events:none;height:0}.tiptap-editor-content h1.is-empty:before,.tiptap-editor-content h2.is-empty:before{content:attr(data-placeholder);color:var(--color-dim);float:left;pointer-events:none;height:0}.tiptap-editor-content table{table-layout:fixed}.tiptap-editor-content th,.tiptap-editor-content td{position:relative}.tt-img-wrap{position:relative;display:inline-block;max-width:100%;line-height:0;margin:.6em 0}.tt-img-wrap img{display:block;max-width:100%;height:auto;border:1px solid var(--color-border-d);border-radius:2px;filter:brightness(.92)}.tt-img-wrap:hover img{filter:brightness(1)}.tt-img-handle{position:absolute;right:-6px;bottom:-6px;width:14px;height:14px;background:var(--color-green);border:2px solid var(--color-bg);border-radius:3px;cursor:nwse-resize;opacity:0;transition:opacity .15s;z-index:2}.tt-img-wrap:hover .tt-img-handle,.ProseMirror-selectednode .tt-img-handle{opacity:1}.tt-img-wrap:after{content:"";position:absolute;inset:0;border:1px solid transparent;border-radius:2px;pointer-events:none;transition:border-color .15s}.tt-img-wrap:hover:after{border-color:var(--color-green)}.tt-bubble{position:fixed;z-index:80;display:flex;align-items:center;gap:2px;padding:4px;background:var(--color-panel2);border:1px solid var(--color-border-d);border-radius:4px;box-shadow:0 6px 24px #00000080;font-family:var(--font-mono)}.tt-bubble-btn{min-width:26px;height:26px;padding:0 6px;background:transparent;border:none;border-radius:2px;color:var(--color-subtle);font-size:12px;font-family:var(--font-mono);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.tt-bubble-btn:hover{background:var(--color-panel);color:var(--color-fg)}.tt-bubble-btn.is-active{color:var(--color-green);background:#3fb9501f}.tt-bubble-sep{width:1px;height:16px;background:var(--color-border-d);margin:0 3px}.tt-bubble-swatch{width:16px;height:16px;border-radius:50%;border:1px solid var(--color-border-d);cursor:pointer;padding:0;margin:0 1px;transition:transform .1s}.tt-bubble-swatch:hover{transform:scale(1.18)}.tiptap-editor-content .selectedCell:after{content:"";position:absolute;inset:0;background:#3fb9502e;pointer-events:none}.tiptap-editor-content .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;background:var(--color-accent);pointer-events:none}.slash-menu{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:.5rem;padding:.3rem;box-shadow:0 6px 20px #0003;min-width:220px;max-height:280px;overflow-y:auto}.slash-item{display:flex;gap:.6rem;align-items:center;width:100%;text-align:left;padding:.45rem .65rem;border-radius:.35rem;background:transparent;border:none;cursor:pointer;font-size:.85rem;color:var(--color-text);transition:background .1s,color .1s}.slash-item:hover,.slash-item.is-selected{background:#3fb9501f;color:var(--color-accent)}.slash-title{flex:1;font-weight:500}.slash-sub{font-family:var(--font-mono);font-size:.7rem;color:var(--color-text-secondary)}.slash-empty{padding:.6rem .7rem;font-size:.8rem;color:var(--color-text-secondary)}.tippy-box{background:transparent;border:none;padding:0}.tippy-box[data-theme] .tippy-content{padding:0}.comment-card{padding:.875rem 1rem;border-radius:.75rem;background:var(--color-bg-card);box-shadow:var(--shadow-card)}.comment-textarea{width:100%;padding:.75rem;border-radius:.625rem;border:1px solid var(--color-border);background:var(--color-bg-secondary);color:var(--color-text);font-size:.875rem;resize:vertical;min-height:80px;font-family:var(--font-sans);transition:border-color .15s;outline:none}.comment-textarea:focus{border-color:var(--color-accent)}.comment-submit{padding:.5rem 1.25rem;border-radius:.5rem;font-size:.8125rem;font-weight:600;color:#fff;border:none;cursor:pointer;transition:opacity .15s;background:linear-gradient(135deg,#1f8c42,#11512a)}.comment-submit:hover{opacity:.9}.comment-submit:disabled{opacity:.5;cursor:not-allowed}
