:root{--bg:#fafafa;--panel:#fff;--border:#e4e4e7;--border-strong:#d4d4d8;--text:#18181b;--text-2:#3f3f46;--muted:#71717a;--faint:#a1a1aa;--accent:#18181b;--link:#2563eb;--danger:#dc2626;--danger-bg:#fef2f2;--ok:#16a34a;--ok-bg:#f0fdf4;--warn:#d97706;--warn-bg:#fffbeb;--radius:10px;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 1px 2px #0000000a, 0 8px 24px #00000012;--font-sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}a{color:var(--link);font-weight:500;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{letter-spacing:-.01em;color:var(--text)}h2{margin:0;font-size:20px;font-weight:600}h3{margin:0;font-size:15px;font-weight:600}.center{place-items:center;min-height:100vh;display:grid}.muted{color:var(--muted)}.faint{color:var(--faint)}.row{align-items:center;gap:8px;display:flex}.spread{justify-content:space-between;align-items:center;gap:12px;display:flex}.stack{flex-direction:column;gap:14px;display:flex}.grow{flex:1;min-width:0}.error{color:var(--danger);font-size:13px}button{font:inherit;border:1px solid var(--border);background:var(--panel);color:var(--text-2);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 14px;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}button:hover{border-color:var(--border-strong);background:#f4f4f5}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background:#3f3f46;border-color:#3f3f46}button.danger{color:var(--danger)}button.danger:hover{background:var(--danger-bg);border-color:#fecaca}button.ghost{color:var(--muted);background:0 0;border-color:#0000}button.ghost:hover{color:var(--text);background:#f4f4f5}button:disabled{opacity:.45;cursor:default;pointer-events:none}button.small{border-radius:7px;padding:4px 10px;font-size:13px}button.icon{width:28px;height:28px;padding:5px}input,textarea,select{font:inherit;border:1px solid var(--border);width:100%;color:var(--text);background:#fff;border-radius:8px;outline:none;padding:8px 11px;transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--faint)}input:focus,textarea:focus,select:focus{border-color:var(--faint);box-shadow:0 0 0 3px #18181b0f}textarea{resize:vertical;min-height:84px;font-family:var(--font-mono);font-size:13px;line-height:1.6}label{color:var(--muted);margin-bottom:5px;font-size:12px;font-weight:500;display:block}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px}.badge{border:1px solid var(--border);color:var(--muted);background:#f4f4f5;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:12px;font-weight:500;display:inline-flex}.badge:before{content:"";background:var(--faint);border-radius:999px;width:6px;height:6px}.badge.published{color:#15803d;background:var(--ok-bg);border-color:#bbf7d0}.badge.published:before{background:var(--ok)}.badge.draft{color:var(--warn);background:var(--warn-bg);border-color:#fde68a}.badge.draft:before{background:var(--warn)}.topbar{z-index:40;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#ffffffd9;align-items:center;gap:16px;height:56px;padding:0 20px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.01em;color:var(--text);align-items:center;gap:9px;font-size:15px;font-weight:600;display:flex}.brand:hover{text-decoration:none}.brand-logo{background:var(--accent);color:#fff;border-radius:7px;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;font-weight:700;display:flex}.brand .dim{color:var(--faint);font-weight:500}.topbar-user{color:var(--muted);border-radius:7px;padding:5px 9px;font-size:13px;font-weight:400}.topbar-user:hover{background:#f4f4f5;text-decoration:none}.topbar-user b{color:var(--text-2);font-weight:500}.shell-body{min-height:calc(100vh - 56px);display:flex}.sidebar{border-right:1px solid var(--border);flex-shrink:0;width:230px;padding:20px 14px}.sidebar-label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin:0 0 8px;padding:0 10px;font-size:11px;font-weight:600}.nav{flex-direction:column;gap:2px;display:flex}.nav a{color:var(--text-2);border-radius:8px;align-items:center;gap:9px;padding:7px 10px;font-size:13.5px;font-weight:450;display:flex}.nav a:hover{color:var(--text);background:#f4f4f5;text-decoration:none}.nav a.active{color:var(--text);background:#f4f4f5;font-weight:600}.nav a svg{color:var(--faint);flex-shrink:0}.nav a.active svg{color:var(--text)}.content{flex:1;min-width:0;padding:28px 32px 64px}.content.narrow{max-width:880px}.page-head{margin-bottom:20px}.page-head p{color:var(--muted);margin:4px 0 0;font-size:13.5px}.table-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}table{border-collapse:collapse;width:100%;font-size:13.5px}th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--faint);border-bottom:1px solid var(--border);background:#fafafa;padding:10px 16px;font-size:12px;font-weight:600}td{text-align:left;border-bottom:1px solid #f1f1f3;padding:11px 16px}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover{background:#fafafa}.list-item{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);align-items:center;gap:10px;padding:12px 14px;transition:border-color .15s;display:flex}.list-item:hover{border-color:var(--border-strong)}.drag-handle{cursor:grab;color:var(--faint);-webkit-user-select:none;user-select:none;border-radius:5px;padding:2px 4px;line-height:1}.drag-handle:hover{color:var(--muted);background:#f4f4f5}.block{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);background:#fff;transition:border-color .15s,box-shadow .15s}.block:focus-within{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.block-head{border-bottom:1px solid #f1f1f3;align-items:center;gap:8px;padding:7px 10px;display:flex}.block-body{padding:12px}.block-type{color:var(--muted);align-items:center;gap:7px;font-size:12px;font-weight:600;display:inline-flex}.block-type svg{color:var(--faint)}.insert-zone{justify-content:center;align-items:center;height:22px;display:flex;position:relative}.insert-zone:before{content:"";opacity:0;background:#d4d4d8;border-radius:2px;height:2px;transition:opacity .12s;position:absolute;top:50%;left:6px;right:6px}.insert-zone:hover:before,.insert-zone.open:before{opacity:1}.insert-btn{z-index:1;border:1px solid var(--border-strong);width:26px;height:26px;color:var(--muted);opacity:0;background:#fff;border-radius:999px;padding:0;transition:opacity .12s,transform .12s,color .12s,border-color .12s;position:relative;transform:scale(.8)}.insert-zone:hover .insert-btn,.insert-zone.open .insert-btn{opacity:1;transform:scale(1)}.insert-zone.open .insert-btn{color:var(--text);border-color:var(--text)}.insert-btn:hover{color:var(--text);border-color:var(--text);background:#fff}.insert-backdrop{z-index:55;position:fixed;inset:0}.insert-menu{z-index:60;border:1px solid var(--border);background:#fff;border-radius:12px;grid-template-columns:repeat(4,1fr);gap:4px;width:340px;padding:8px;display:grid;position:absolute;top:calc(50% + 18px);left:50%;transform:translate(-50%);box-shadow:0 12px 36px #00000024}.insert-menu-btn{color:var(--text-2);background:0 0;border:none;border-radius:8px;flex-direction:column;gap:5px;padding:10px 4px;font-size:12px}.insert-menu-btn:hover{background:#f4f4f5;border:none}.insert-menu-btn svg{color:var(--muted)}.add-block{margin-top:4px}.add-block-label{text-transform:uppercase;letter-spacing:.05em;color:var(--faint);margin-bottom:10px;font-size:12px;font-weight:600}.add-block-grid{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px;display:grid}.add-block-btn{color:var(--text-2);background:#fafafa;border-style:dashed;flex-direction:column;gap:6px;padding:12px 8px;font-size:12.5px}.add-block-btn:hover{background:#fff;border-style:solid}.add-block-btn svg{color:var(--muted)}.empty-state{border:1.5px dashed var(--border-strong);border-radius:var(--radius);text-align:center;color:var(--muted);background:#fcfcfc;padding:36px 20px;font-size:13.5px}.thumb{object-fit:cover;border:1px solid var(--border);background:#f4f4f5;border-radius:8px}.media-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;display:grid}.media-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s,transform .15s;overflow:hidden}.media-card.clickable{cursor:pointer}.media-card.clickable:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.media-card img,.media-card video{object-fit:cover;background:#f4f4f5;width:100%;height:110px;display:block}.media-card .video-ph{color:#a1a1aa;background:#18181b;place-items:center;height:110px;display:grid}.media-meta{padding:8px 10px}.media-name{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;background:#09090b73;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;width:min(680px,94vw);max-height:86vh;padding:22px;overflow:auto;box-shadow:0 24px 60px #00000040}.modal h3{font-size:16px}.editor-toolbar{z-index:30;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#fafafae6;align-items:center;gap:12px;margin:-28px -32px 22px;padding:10px 32px;display:flex;position:sticky;top:56px}.editor-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:24px;display:grid}.editor-grid.no-preview{grid-template-columns:minmax(0,760px);justify-content:center}@media (width<=1100px){.editor-grid{grid-template-columns:1fr}}.editor-title{letter-spacing:-.015em;background:0 0;border:none;border-radius:0;padding:2px 0;font-size:24px;font-weight:650}.editor-title:focus{box-shadow:none;border:none}.section-label{text-transform:uppercase;letter-spacing:.05em;color:var(--faint);margin:6px 0 -4px;font-size:12px;font-weight:600}.saved-pill{color:#15803d;align-items:center;gap:5px;font-size:13px;font-weight:500;display:inline-flex}.preview-pane{background:var(--panel);border:1px solid var(--border);max-height:calc(100vh - 156px);box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;display:flex;position:sticky;top:132px;overflow:hidden}@media (width<=1100px){.preview-pane{max-height:none;position:static}}.preview-bar{border-bottom:1px solid var(--border);background:#fafafa;flex-shrink:0;align-items:center;gap:8px;padding:9px 14px;display:flex}.preview-dots{gap:5px;display:flex}.preview-dots span{background:var(--border-strong);border-radius:999px;width:9px;height:9px}.preview-url{text-align:center;color:var(--muted);font-size:12px;font-family:var(--font-mono);border:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;background:#fff;border-radius:6px;flex:1;padding:3px 10px;overflow:hidden}.preview-body{padding:30px 34px 48px;overflow-y:auto}.preview-crumb{color:var(--faint);align-items:center;gap:6px;margin-bottom:16px;font-size:12px;display:flex}.preview-title{letter-spacing:-.01em;color:#18181b;margin:0 0 .6rem;font-size:2.1rem;font-weight:600;line-height:1.2}.preview-excerpt{color:var(--muted);margin:0 0 1.5rem;font-size:.95rem}.markdown{color:#3f3f46;font-size:.95rem;line-height:1.75}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4{color:#18181b;letter-spacing:-.01em;font-weight:600}.markdown h2{border-bottom:1px solid #e4e4e7;margin:2.25rem 0 1rem;padding-bottom:.4rem;font-size:1.5rem}.markdown h3{margin:1.75rem 0 .75rem;font-size:1.2rem}.markdown h4{margin:1.5rem 0 .5rem;font-size:1.02rem}.markdown p{margin:0 0 1.1rem}.markdown a{color:#2563eb;font-weight:500;text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown ul,.markdown ol{margin:0 0 1.1rem;padding-left:1.4rem}.markdown ul{list-style:outside}.markdown ol{list-style:decimal}.markdown li{margin:.35rem 0}.markdown li::marker{color:#a1a1aa}.markdown blockquote{color:#52525b;border-left:3px solid #d4d4d8;margin:1.25rem 0;padding:.25rem 1rem}.markdown hr{border:none;border-top:1px solid #e4e4e7;margin:2rem 0}.markdown :not(pre)>code{color:#be185d;font-size:.85em;font-family:var(--font-mono);background:#f4f4f5;border-radius:.35rem;padding:.15em .4em}.markdown pre{background:#fafafa;border:1px solid #e4e4e7;border-radius:.65rem;margin:0 0 1.4rem;padding:1rem 1.1rem;font-size:.85rem;line-height:1.6;overflow-x:auto}.markdown pre code{font-family:var(--font-mono);color:#27272a;background:0 0;padding:0}.markdown table{border-collapse:collapse;width:100%;margin:0 0 1.4rem;font-size:.88rem;display:block;overflow-x:auto}.markdown th,.markdown td{text-align:left;border:1px solid #e4e4e7;padding:.5rem .75rem}.markdown th{color:#18181b;text-transform:none;letter-spacing:0;background:#f4f4f5;font-size:.88rem;font-weight:600}.markdown tbody tr:hover{background:0 0}.markdown img{border-radius:.5rem;max-width:100%}.manual-figure{margin:1.5rem 0;display:block}.manual-figure img{max-width:100%;box-shadow:var(--shadow-md);border:1px solid #e4e4e7;border-radius:.6rem;display:block}.manual-figure video{background:#000;border:1px solid #e4e4e7;border-radius:.6rem;width:100%;display:block}.manual-caption{color:#71717a;text-align:center;margin-top:.55rem;font-size:.82rem;display:block}.manual-placeholder{text-align:center;background:repeating-linear-gradient(45deg,#fafafa,#fafafa 12px,#f4f4f5 12px 24px);border:2px dashed #d4d4d8;border-radius:.7rem;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;min-height:9rem;margin:1.5rem 0;padding:1.5rem;display:flex}.manual-placeholder-badge{text-transform:uppercase;letter-spacing:.06em;color:#a1a1aa;background:#fff;border:1px solid #d4d4d8;border-radius:999px;padding:.15rem .7rem;font-size:.68rem;font-weight:600}.manual-placeholder-text{color:#71717a;max-width:32rem;font-size:.88rem}.hljs-comment,.hljs-quote{color:#6a737d;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-name,.hljs-tag{color:#d73a49}.hljs-string,.hljs-title,.hljs-section,.hljs-attribute,.hljs-literal,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-addition{color:#032f62}.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-meta,.hljs-link{color:#005cc5}.hljs-variable,.hljs-attr,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#6f42c1}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:600}.login-card{background:var(--panel);border:1px solid var(--border);width:360px;box-shadow:var(--shadow-md);border-radius:14px;padding:28px}.login-brand{align-items:center;gap:10px;margin-bottom:4px;display:flex}.login-brand .brand-logo{border-radius:9px;width:34px;height:34px;font-size:17px}.login-brand h1{letter-spacing:-.01em;margin:0;font-size:18px;font-weight:650}
