:root{--ink:#161523;--paper:#f7f5ef;--white:#ffffff;--violet:#6d3ef2;--blue:#245bdb;--lime:#d7f75b;--muted:#5b596b;--line:#d9d6e2;--control:#777181;--error:#b4233c;--success:#216b44;--radius-card:16px;--radius-control:10px;--font-stack:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--measure:68ch;--shadow-card:0 1px 2px rgb(22 21 35/0.06),0 8px 24px rgb(22 21 35/0.06)}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-stack);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}img{max-width:100%;height:auto}h1,h2,h3,h4{line-height:1.1;letter-spacing:-.015em;font-weight:800;margin:0 0 .5em}h1{font-size:clamp(2rem,4.5vw,3.2rem)}h2{font-size:clamp(1.4rem,2.6vw,2rem)}h3{font-size:1.15rem}p{margin:0 0 1em}a{color:var(--blue);text-underline-offset:.15em}a:hover{color:var(--violet)}:focus-visible{outline:3px solid var(--blue);outline-offset:2px;border-radius:4px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:16px;top:-64px;z-index:100;background:var(--ink);color:var(--paper);padding:8px 16px;border-radius:var(--radius-control);transition:top .15s ease}.skip-link:focus{top:12px;color:var(--lime)}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:rgb(247 245 239/.94);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}.site-header-inner{max-width:1200px;margin:0 auto;padding:10px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}.brand-mark{width:40px;height:36px;object-fit:contain;border-radius:8px}.brand-wordmark{font-weight:800;font-size:1.15rem;letter-spacing:-.01em}.brand-insights{color:var(--violet);font-weight:700}.site-nav{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.nav-link{color:var(--ink);text-decoration:none;font-weight:600;font-size:.95rem}.nav-link:hover{color:var(--violet)}.user-menu{gap:10px}.user-chip,.user-menu{display:inline-flex;align-items:center}.user-chip{gap:8px;background:var(--white);border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-size:.85rem;font-weight:600}.role-badge{text-transform:uppercase;font-size:.68rem;letter-spacing:.06em;font-weight:800;padding:2px 8px;border-radius:999px;background:var(--line);color:var(--ink)}.role-admin{background:var(--ink);color:var(--lime)}.role-editor{background:var(--violet);color:var(--white)}.role-author{background:var(--lime);color:var(--ink)}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-weight:700;font-size:1rem;line-height:1.2;padding:12px 22px;border-radius:var(--radius-control);border:2px solid transparent;cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease,color .15s ease}.button:disabled{opacity:.6;cursor:not-allowed}.button-primary{background:var(--violet);color:var(--white)}.button-primary:hover:not(:disabled){background:#5a2fd6;color:var(--white)}.button-secondary{background:var(--white);color:var(--blue);border-color:var(--blue)}.button-secondary:hover:not(:disabled){background:var(--blue);color:var(--white)}.button-ghost{background:transparent;color:var(--ink);border-color:var(--control)}.button-ghost:hover:not(:disabled){border-color:var(--ink);color:var(--ink)}.button-danger{background:var(--white);color:var(--error);border-color:var(--error)}.button-danger:hover:not(:disabled){background:var(--error);color:var(--white)}.button-small{padding:8px 14px;font-size:.9rem}.container{max-width:1200px;margin:0 auto;padding:0 24px}.section{padding:64px 0}.section-dark{background:var(--ink);color:var(--paper)}.section-dark a{color:var(--lime)}.hero{padding:64px 0 48px}.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-gap:48px;gap:48px;align-items:center}.hero-kicker{display:inline-block;background:var(--lime);color:var(--ink);font-weight:800;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;padding:4px 12px;border-radius:999px}.hero h1,.hero-kicker{margin-bottom:16px}.hero-lede{font-size:1.15rem;color:var(--muted);max-width:54ch}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.hero-art{border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:hidden;background:var(--white)}.card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px;margin-top:32px}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-card);padding:24px;box-shadow:var(--shadow-card)}.card h3{margin-bottom:8px}.card p{color:var(--muted);font-size:.95rem;margin:0}.about-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-gap:48px;gap:48px;align-items:center}.about-grid .hero-art{margin:0}.feed-intro{max-width:var(--measure);color:var(--muted)}.feed-controls{display:flex;flex-direction:column;gap:16px;margin:24px 0 32px}.search-form{display:flex;gap:8px;max-width:560px}.search-form input[type=search]{flex:1 1;min-width:0}.tag-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.tag-row-label{font-size:.85rem;font-weight:700;color:var(--muted);margin-right:4px}.tag-chip{display:inline-block;padding:4px 12px;border-radius:999px;border:1px solid var(--control);background:var(--white);color:var(--ink);font-size:.82rem;font-weight:700;text-decoration:none}.tag-chip:hover{border-color:var(--violet);color:var(--violet)}.tag-chip[aria-current=true]{background:var(--ink);color:var(--lime);border-color:var(--ink)}.article-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px;list-style:none;margin:0;padding:0}.article-card{display:flex;flex-direction:column;gap:8px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-card);padding:24px;box-shadow:var(--shadow-card)}.article-card h3{margin:0}.article-card h3 a{color:var(--ink);text-decoration:none}.article-card h3 a:hover{color:var(--violet)}.article-card .excerpt{color:var(--muted);font-size:.95rem;margin:0;flex:1 1}.meta-row{gap:12px;align-items:center;font-size:.82rem;color:var(--muted)}.meta-row,.tag-list{display:flex;flex-wrap:wrap}.tag-list{gap:6px;list-style:none;margin:0;padding:0}.tag-pill{background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:700;color:var(--muted)}.pagination{display:flex;gap:8px;align-items:center;justify-content:center;margin-top:40px;flex-wrap:wrap}.pagination .page-current{font-weight:800;background:var(--ink);color:var(--lime)}.pagination .page-current,.pagination a{padding:8px 14px;border-radius:var(--radius-control)}.pagination a{text-decoration:none;font-weight:700;border:1px solid var(--control);color:var(--ink)}.pagination a:hover{border-color:var(--violet);color:var(--violet)}.article-header{padding:56px 0 24px;max-width:var(--measure)}.article-header .excerpt{font-size:1.2rem;color:var(--muted)}.article-body{max-width:var(--measure);padding-bottom:64px}.prose{font-size:1.06rem;line-height:1.75}.prose h2{margin-top:1.8em}.prose p{margin:0 0 1.1em}.prose ol,.prose ul{margin:0 0 1.1em;padding-left:1.4em}.prose code{background:var(--white);border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:.9em}.prose pre{background:var(--ink);color:var(--paper);border-radius:var(--radius-control);padding:16px;overflow-x:auto}.prose pre code{background:transparent;border:0;padding:0;color:inherit}.prose blockquote{margin:0 0 1.1em;padding:4px 0 4px 20px;border-left:4px solid var(--violet);color:var(--muted)}.prose img{border-radius:var(--radius-card)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:20px}.field label{font-weight:700;font-size:.95rem}.field .hint{font-size:.82rem;color:var(--muted)}input[type=email],input[type=password],input[type=search],input[type=text],select,textarea{font-family:inherit;font-size:1rem;color:var(--ink);background:var(--white);border:1.5px solid var(--control);border-radius:var(--radius-control);padding:10px 14px;width:100%}textarea{resize:vertical;min-height:120px}input:focus,select:focus,textarea:focus{outline:3px solid rgb(36 91 219/.35);outline-offset:1px;border-color:var(--blue)}.field-error{color:var(--error);font-size:.85rem;font-weight:600}input[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--error)}.form-error{background:#fbecf0;border:1px solid var(--error);color:var(--error);border-radius:var(--radius-control)}.form-error,.form-success{padding:12px 16px;font-weight:600;margin-bottom:16px}.form-success{background:#e9f4ee;border:1px solid var(--success);color:var(--success);border-radius:var(--radius-control)}.auth-shell{max-width:440px;margin:64px auto;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:32px}.auth-shell h1{font-size:1.6rem}.auth-note{color:var(--muted);font-size:.9rem}.dashboard-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:40px 0 8px}.status-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 24px}.status-tab{padding:6px 16px;border-radius:999px;border:1px solid var(--control);text-decoration:none;color:var(--ink);font-weight:700;font-size:.88rem;background:var(--white)}.status-tab[aria-current=true]{background:var(--violet);border-color:var(--violet);color:var(--white)}.article-table{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow-card)}.article-table td,.article-table th{text-align:left;padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:top}.article-table th{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.article-table tr:last-child td{border-bottom:0}.status-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.status-draft{background:var(--paper);border:1px solid var(--control);color:var(--muted)}.status-published{background:var(--lime);color:var(--ink)}.editor-shell{padding:32px 0 64px}.editor-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:24px}.editor-topbar h1{font-size:1.5rem;margin:0}.editor-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:24px;gap:24px}.editor-grid.with-preview{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.editor-panel,.preview-panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-card);padding:24px;box-shadow:var(--shadow-card)}.preview-panel{position:-webkit-sticky;position:sticky;top:84px}.preview-panel h2.preview-title{margin-top:0}.unsaved-badge{display:inline-flex;align-items:center;gap:6px;background:var(--lime);color:var(--ink);font-weight:800;font-size:.78rem;padding:4px 12px;border-radius:999px}.saved-badge{color:var(--success);font-weight:700;font-size:.85rem}.user-table{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow-card)}.user-table td,.user-table th{text-align:left;padding:12px 16px;border-bottom:1px solid var(--line)}.user-table th{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.user-table tr:last-child td{border-bottom:0}.role-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.role-controls select{width:auto;min-width:120px}.empty-state{text-align:center;padding:64px 24px;background:var(--white);border:1px dashed var(--control);border-radius:var(--radius-card)}.empty-state img{width:96px;margin-bottom:16px}.empty-state h2,.empty-state h3{margin-bottom:8px}.empty-state p,.loading-block{color:var(--muted)}.loading-block{padding:64px 24px;text-align:center;font-weight:600}.alert-info{background:var(--white);border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:var(--radius-control);padding:12px 16px;margin-bottom:16px}.site-footer{background:var(--ink);color:var(--paper);margin-top:64px}.site-footer-inner{max-width:1200px;margin:0 auto;padding:48px 24px;display:flex;flex-direction:column;gap:20px}.footer-brand .brand-wordmark{color:var(--paper)}.footer-tagline{color:var(--lime);font-weight:700;margin:4px 0 0}.footer-nav{display:flex;gap:20px;flex-wrap:wrap}.footer-nav a{color:var(--paper);text-decoration:none;font-weight:600}.footer-nav a:hover{color:var(--lime)}.footer-legal{color:#b9b6c7;font-size:.85rem;border-top:1px solid #2c2a3e;padding-top:20px;margin:0}dialog.confirm-dialog{border:1px solid var(--line);border-radius:var(--radius-card);padding:24px;max-width:420px;box-shadow:var(--shadow-card)}dialog.confirm-dialog::-webkit-backdrop{background:rgb(22 21 35/.45)}dialog.confirm-dialog::backdrop{background:rgb(22 21 35/.45)}.dialog-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}@media (max-width:900px){.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.article-list,.editor-grid.with-preview{grid-template-columns:minmax(0,1fr)}.preview-panel{position:static}}@media (max-width:720px){body{font-size:16px}.container{padding:0 16px}.about-grid,.hero-grid{gap:24px}.about-grid,.card-grid,.hero-grid{grid-template-columns:minmax(0,1fr)}.section{padding:40px 0}.site-header-inner{padding:8px 16px;gap:8px}.site-nav{gap:10px}.article-table,.user-table{display:block;overflow-x:visible}.article-table thead,.user-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.article-table tr,.user-table tr{display:block;border-bottom:1px solid var(--line);padding:8px 0}.article-table td,.user-table td{display:block;border-bottom:0;padding:6px 16px}}