/* EMBER COMPONENT LIBRARY */

/* ── Navbar ─────────────── */
.navbar{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:var(--sf);border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:100}
.navbar-brand{display:flex;align-items:center;gap:var(--sp-2);font-weight:700;font-size:var(--text-lg);color:var(--ac);text-decoration:none;margin-right:var(--sp-4)}
.navbar-brand img,.navbar-brand svg{height:24px;width:auto}
.navbar-links{display:flex;gap:var(--sp-1)}
.navbar-link{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);color:var(--tx2);font-size:var(--text-sm);font-weight:500;text-decoration:none;transition:all var(--fast)}
.navbar-link:hover{color:var(--tx);background:var(--sf2)}
.navbar-link.active{color:var(--ac);background:var(--ac-m)}
.navbar-end{margin-left:auto;display:flex;align-items:center;gap:var(--sp-3)}

/* ── Cards ──────────────── */
.card{background:var(--card-bg);border:1px solid var(--card-bd);border-radius:var(--card-r);overflow:hidden}
.card+.card{margin-top:var(--sp-4)}
.card-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--bd)}
.card-header h3{font-size:var(--text-sm);font-weight:600;color:var(--tx2);text-transform:uppercase;letter-spacing:0.04em}
.card-body{padding:var(--card-p)}.card-body.flush{padding:0}
.card-footer{padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--bd)}

/* ── Buttons ────────────── */
.btn{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--btn-p);border-radius:var(--btn-r);font-family:var(--font-sans);font-size:var(--btn-fs);font-weight:500;line-height:1;cursor:pointer;border:1px solid var(--bd2);background:var(--sf2);color:var(--tx);transition:all var(--fast);white-space:nowrap}
.btn:hover{background:var(--sf3);border-color:var(--sf3)}
.btn:active{transform:scale(0.98)}
.btn-primary{background:var(--ac);border-color:var(--ac);color:var(--ac-tx)}
.btn-primary:hover{background:var(--ac-h);border-color:var(--ac-h)}
.btn-danger{background:transparent;border-color:var(--no);color:var(--no)}
.btn-danger:hover{background:var(--no);color:#fff}
.btn-ghost{background:transparent;border-color:transparent;color:var(--tx2)}
.btn-ghost:hover{background:var(--sf2);color:var(--tx)}
.btn-sm{padding:var(--sp-1) var(--sp-2);font-size:var(--text-xs)}

/* ── Avatars ────────────── */
.avatar{border-radius:var(--radius-full);object-fit:cover;flex-shrink:0;width:var(--av-md);height:var(--av-md)}
.avatar-xs{width:var(--av-xs);height:var(--av-xs)}
.avatar-sm{width:var(--av-sm);height:var(--av-sm)}
.avatar-lg{width:var(--av-lg);height:var(--av-lg)}
.avatar-ring{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--role-color,var(--tx3))}
.avatar-wrap{position:relative;display:inline-flex}
.avatar-status{position:absolute;bottom:0;right:0;width:10px;height:10px;border-radius:var(--radius-full);border:2px solid var(--bg)}
.avatar-status.online{background:var(--ok)}.avatar-status.offline{background:var(--tx3)}
.avatar-placeholder{display:flex;align-items:center;justify-content:center;background:var(--ac-m);color:var(--ac);font-weight:700;font-size:var(--text-sm);border-radius:var(--radius-full);flex-shrink:0}

/* ── Badges ─────────────── */
.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:600;line-height:1.4}
.badge-accent{background:var(--ac-m);color:var(--ac)}
.badge-role{background:color-mix(in srgb,var(--role-color,var(--tx3)) 15%,transparent);color:var(--role-color,var(--tx3))}
.badge-success{background:rgba(34,197,94,0.12);color:var(--ok)}
.badge-danger{background:rgba(239,68,68,0.12);color:var(--no)}
.badge-info{background:rgba(59,130,246,0.12);color:var(--info)}
.badge-pin{background:rgba(234,179,8,0.12);color:var(--warn)}

/* ── Inputs ─────────────── */
.input{width:100%;padding:var(--sp-2) var(--sp-3);background:var(--inp-bg);border:1px solid var(--inp-bd);border-radius:var(--radius-md);color:var(--tx);font-family:var(--font-sans);font-size:var(--text-sm);outline:none;transition:border-color var(--fast)}
.input::placeholder{color:var(--tx3)}
.input:focus{border-color:var(--inp-focus);box-shadow:0 0 0 3px var(--ac-m)}

/* ── Pagination ─────────── */
.pagination{display:flex;gap:var(--sp-1)}
.pagination a,.pagination span{display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 var(--sp-2);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--tx2);text-decoration:none;transition:all var(--fast)}
.pagination a:hover{background:var(--sf2);color:var(--tx)}
.pagination .active{background:var(--ac);color:var(--ac-tx)}

/* ── Board Rows ─────────── */
.board-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--bd);transition:background var(--fast);cursor:pointer}
.board-row:last-child{border-bottom:none}
.board-row:hover{background:var(--sf2)}
.board-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-lg);background:var(--sf2);color:var(--ac);font-size:var(--text-lg);flex-shrink:0}
.board-info{flex:1;min-width:0}
.board-name{font-weight:600;font-size:var(--text-base);color:var(--tx)}
.board-desc{font-size:var(--text-xs);color:var(--tx3);margin-top:1px}
.board-stats{display:flex;gap:var(--sp-4);font-size:var(--text-xs);color:var(--tx3);flex-shrink:0}
.board-latest{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0;min-width:170px;justify-content:flex-end}
.board-latest-title{font-size:var(--text-xs);color:var(--tx2);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.board-latest-meta{font-size:var(--text-xs);color:var(--tx3)}
.unread-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--ac);flex-shrink:0}

/* ── Thread Rows ────────── */
.thread-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--bd);transition:background var(--fast)}
.thread-row:last-child{border-bottom:none}
.thread-row:hover{background:var(--sf2)}
.thread-title{font-weight:500;color:var(--tx);display:flex;align-items:center;gap:var(--sp-2)}
.thread-title a{color:inherit;text-decoration:none}.thread-title a:hover{color:var(--ac)}
.thread-meta{font-size:var(--text-xs);color:var(--tx3);margin-top:2px}

/* ── Forum Posts ────────── */
.post{display:flex;border-bottom:1px solid var(--bd)}.post:last-child{border-bottom:none}
.post-sidebar{width:var(--post-sidebar);padding:var(--sp-4);background:var(--sf2);text-align:center;flex-shrink:0;border-right:1px solid var(--bd)}
.post-sidebar .avatar{margin:0 auto var(--sp-2)}
.post-author{font-weight:600;font-size:var(--text-sm)}
.post-role{font-size:var(--text-xs);margin-top:2px}
.post-count{font-size:var(--text-xs);color:var(--tx3);margin-top:var(--sp-1)}
.post-main{flex:1;min-width:0;display:flex;flex-direction:column}
.post-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--bd);font-size:var(--text-xs);color:var(--tx3)}
.post-content{padding:var(--sp-4);flex:1;line-height:1.65;overflow-wrap:break-word}
.post-content p{margin-bottom:var(--sp-3)}.post-content p:last-child{margin-bottom:0}
.post-content code{background:var(--code-bg);padding:2px 6px;border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--code-tx)}
.post-content pre{background:var(--code-bg);padding:var(--sp-3);border-radius:var(--radius-md);overflow-x:auto;margin-bottom:var(--sp-3)}
.post-content pre code{background:none;padding:0}
.post-content img{max-width:100%;border-radius:var(--radius-md)}
.post-content blockquote{border-left:3px solid var(--ac);padding:var(--sp-2) var(--sp-4);margin:var(--sp-3) 0;color:var(--tx2);background:var(--sf2);border-radius:0 var(--radius-md) var(--radius-md) 0}
.post-footer{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-4);border-top:1px solid var(--bd)}
.post-reactions{display:flex;gap:var(--sp-2)}
.reaction{display:inline-flex;align-items:center;gap:4px;padding:2px var(--sp-2);border-radius:var(--radius-full);font-size:var(--text-xs);cursor:pointer;opacity:0.4;transition:all var(--fast);user-select:none}
.reaction:hover{opacity:1;transform:scale(1.1)}.reaction.active{opacity:1;background:var(--ac-m)}
.post-actions{display:flex;gap:var(--sp-2)}

/* ── Shoutbox ───────────── */
.shoutbox-messages{max-height:140px;overflow-y:auto;padding:var(--sp-3) var(--sp-4)}
.shout{display:flex;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-2);font-size:var(--text-sm)}
.shout:last-child{margin-bottom:0}
.shout-name{font-weight:600;white-space:nowrap;flex-shrink:0}.shout-text{color:var(--tx2)}
.shout-time{color:var(--tx3);font-size:var(--text-xs);margin-left:auto;white-space:nowrap}
.shoutbox-input{display:flex;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--bd)}
.shoutbox-input .input{flex:1}

/* ── Breadcrumb ─────────── */
.breadcrumb{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) 0;font-size:var(--text-sm);color:var(--tx3)}
.breadcrumb a{color:var(--tx2)}.breadcrumb a:hover{color:var(--ac)}
.breadcrumb-sep{font-size:var(--text-xs)}

/* ── Server Status ──────── */
.server-status{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) 0}
.server-dot{width:8px;height:8px;border-radius:var(--radius-full);flex-shrink:0}
.server-dot.online{background:var(--ok)}.server-dot.offline{background:var(--no)}
.server-name{font-size:var(--text-sm);font-weight:600}
.server-players{font-size:var(--text-xs);color:var(--tx3);margin-left:auto}
.server-bar{height:4px;background:var(--sf2);border-radius:2px;overflow:hidden;margin-top:var(--sp-1)}
.server-bar-fill{height:100%;border-radius:2px;transition:width var(--base)}

/* ── Stats ──────────────── */
.stat-row{display:flex;justify-content:space-between;padding:var(--sp-2) var(--sp-4);font-size:var(--text-sm)}
.stat-row:nth-child(even){background:var(--sf2)}
.stat-label{color:var(--tx3)}.stat-value{font-weight:600}

/* ── Layout Grid ────────── */
.page-grid{display:grid;grid-template-columns:1fr 280px;gap:var(--sp-4);padding:var(--sp-4) 0}
.page-content,.page-sidebar{min-width:0}
.page-sidebar .card+.card{margin-top:var(--sp-3)}

/* ── Reply Editor ────────── */
.reply-editor{min-height:120px;padding:var(--sp-3);background:var(--inp-bg);border:1px solid var(--inp-bd);border-radius:var(--radius-md);color:var(--tx);font-family:var(--font-sans);font-size:var(--text-sm);resize:vertical;width:100%;outline:none;line-height:1.65}
.reply-editor:focus{border-color:var(--inp-focus);box-shadow:0 0 0 3px var(--ac-m)}
.reply-toolbar{display:flex;gap:var(--sp-1);padding:var(--sp-2) 0}
.reply-toolbar button{background:var(--sf2);border:1px solid var(--bd);color:var(--tx2);width:32px;height:32px;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);transition:all var(--fast)}
.reply-toolbar button:hover{background:var(--sf3);color:var(--tx)}

/* ── Quoted Post ─────────── */
.quoted-post{background:var(--sf2);border-left:3px solid var(--ac);border-radius:0 var(--radius-md) var(--radius-md) 0;padding:var(--sp-3);margin-bottom:var(--sp-3);font-size:var(--text-sm)}
.quoted-post-meta{font-size:var(--text-xs);color:var(--tx3);margin-bottom:var(--sp-2)}

/* ── Responsive ─────────── */
@media(max-width:768px){
  .page-grid{grid-template-columns:1fr}
  .post-sidebar{display:none}
  .board-stats,.board-latest{display:none}
  .navbar-links{display:none}
  .admin-layout{grid-template-columns:1fr}
  .admin-sidebar{display:none}
}

/* ── Navbar User Dropdown ── */
.navbar-user{position:relative;cursor:pointer;user-select:none}
.navbar-dropdown{display:none;position:absolute;top:100%;right:0;min-width:180px;background:var(--sf);border:1px solid var(--bd);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);z-index:200;margin-top:var(--sp-2);overflow:hidden}
.navbar-user.open .navbar-dropdown{display:block}
.navbar-dropdown.open{display:block}
.navbar-dropdown-header{padding:var(--sp-3);border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-sm)}
.navbar-dropdown-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);font-size:var(--text-sm);color:var(--tx2);text-decoration:none;transition:background var(--fast)}
.navbar-dropdown-item:hover{background:var(--sf2);color:var(--tx)}
.navbar-notif{position:relative}
.notif-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;border-radius:var(--radius-full);background:var(--no);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;line-height:1}
.notif-dropdown{right:0;min-width:300px}

/* ── VikingCMS Admin Layout ── */
.admin-layout{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 56px)}
.admin-sidebar{background:var(--sf);border-right:1px solid var(--bd);display:flex;flex-direction:column;position:sticky;top:56px;height:calc(100vh - 56px);overflow-y:auto}
.admin-brand{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-4);font-weight:700;font-size:var(--text-lg);color:var(--ac)}
.admin-nav{display:flex;flex-direction:column;padding:0 var(--sp-2);gap:2px;flex:1}
.admin-nav-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--tx2);text-decoration:none;transition:all var(--fast)}
.admin-nav-item:hover{background:var(--sf2);color:var(--tx)}
.admin-nav-item.active{background:var(--ac-m);color:var(--ac);font-weight:600}
.admin-main{padding:var(--sp-4) var(--sp-6);max-width:960px;min-width:0}
.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4)}
.admin-header h1{font-size:var(--text-xl);font-weight:700}
.admin-content{}
.admin-label{display:block;font-size:var(--text-xs);font-weight:600;color:var(--tx3);text-transform:uppercase;letter-spacing:0.04em;margin-bottom:4px}

/* Admin Stats */
.admin-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--sp-3)}
.admin-stat-card{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);background:var(--sf);border:1px solid var(--bd);border-radius:var(--radius-xl)}
.admin-stat-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-lg);font-size:var(--text-lg);flex-shrink:0}
.admin-stat-value{font-size:var(--text-xl);font-weight:700;line-height:1}
.admin-stat-label{font-size:var(--text-xs);color:var(--tx3);margin-top:2px}

/* Admin Permissions Grid */
.admin-perm-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-1) var(--sp-3);padding:var(--sp-2) 0}

/* ── Modals ─────────────── */
.admin-modal{position:fixed;inset:0;background:rgba(0,0,0,0.6);z-index:300;display:flex;align-items:center;justify-content:center;padding:var(--sp-4)}
.admin-modal-content{width:100%;max-width:480px;max-height:90vh;overflow-y:auto}

/* ── Toasts ─────────────── */
.admin-toast{position:fixed;bottom:var(--sp-4);right:var(--sp-4);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-lg);font-size:var(--text-sm);font-weight:500;color:#fff;background:var(--ok);box-shadow:var(--shadow-md);z-index:400;opacity:0;transform:translateY(10px);transition:all 0.3s ease}
.admin-toast.show{opacity:1;transform:translateY(0)}
.admin-toast-error{background:var(--no)}

/* ── Hero Section ────────── */
.hero{position:relative;overflow:hidden;padding:var(--sp-8) 0;text-align:center;background:var(--sf)}
.hero-bg{padding:80px 0 60px;background-size:cover;background-position:center;min-height:350px;display:flex;align-items:center}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,0.6),rgba(0,0,0,0.8));pointer-events:none}
.hero-bg .hero-overlay{display:block}.hero:not(.hero-bg) .hero-overlay{display:none}
.hero-inner{position:relative;z-index:1;max-width:700px;margin:0 auto}
.hero-logo{max-height:80px;max-width:300px;margin:0 auto var(--sp-4);display:block;object-fit:contain;filter:drop-shadow(0 2px 8px rgba(0,0,0,0.3))}
.hero-icon{font-size:56px;color:var(--ac);margin-bottom:var(--sp-4);display:block}
.hero-title{font-size:2rem;font-weight:700;margin-bottom:var(--sp-2);text-shadow:0 2px 12px rgba(0,0,0,0.3)}
.hero-subtitle{font-size:var(--text-lg);color:var(--tx2);margin-bottom:var(--sp-4);opacity:0.85}
.hero-bg .hero-title,.hero-bg .hero-subtitle{color:#fff}
.hero-bg .hero-subtitle{color:rgba(255,255,255,0.8)}
.hero-actions{display:flex;gap:var(--sp-3);justify-content:center;flex-wrap:wrap;margin-bottom:var(--sp-4)}
.hero-stats{display:flex;gap:var(--sp-6);justify-content:center;padding-top:var(--sp-4);border-top:1px solid rgba(255,255,255,0.1)}
.hero:not(.hero-bg) .hero-stats{border-color:var(--bd)}
.hero-stat{text-align:center}
.hero-stat-value{display:block;font-size:var(--text-xl);font-weight:700;color:var(--ac)}
.hero-stat-label{font-size:var(--text-xs);color:var(--tx3);text-transform:uppercase;letter-spacing:0.05em}
.btn-lg{padding:var(--sp-3) var(--sp-5);font-size:var(--text-base);border-radius:var(--radius-lg)}

/* ── Homepage Grid ──────── */
.home-grid{display:grid;grid-template-columns:1fr 300px;gap:var(--sp-4)}
.home-grid-full{grid-template-columns:1fr}
.home-main,.home-sidebar{min-width:0}
.home-sidebar .card+.card{margin-top:var(--sp-3)}
@media(max-width:768px){.home-grid{grid-template-columns:1fr}}

/* ── Announcement Bar ───── */
.announcement-bar{padding:var(--sp-2) 0;font-size:var(--text-sm);font-weight:500}
.announcement-info{background:rgba(59,130,246,0.1);color:var(--info);border-bottom:1px solid rgba(59,130,246,0.2)}
.announcement-success{background:rgba(34,197,94,0.1);color:var(--ok);border-bottom:1px solid rgba(34,197,94,0.2)}
.announcement-warning{background:rgba(234,179,8,0.1);color:var(--warn);border-bottom:1px solid rgba(234,179,8,0.2)}
.announcement-danger{background:rgba(239,68,68,0.1);color:var(--no);border-bottom:1px solid rgba(239,68,68,0.2)}

/* ── Subpage Content ────── */
.subpage-content{max-width:800px}
.sp-block{margin-bottom:var(--sp-4)}
.sp-block:last-child{margin-bottom:0}
.sp-image{margin:0}.sp-image img{max-width:100%;border-radius:var(--radius-lg)}
.sp-image figcaption{font-size:var(--text-xs);color:var(--tx3);text-align:center;margin-top:var(--sp-2)}
.sp-video{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:var(--radius-lg)}
.sp-video iframe{position:absolute;top:0;left:0;width:100%;height:100%}
.sp-divider{border:none;border-top:1px solid var(--bd);margin:var(--sp-6) 0}
.sp-alert{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);border-left:4px solid;font-size:var(--text-sm)}
.sp-alert-info{background:rgba(59,130,246,0.08);border-color:var(--info);color:var(--info)}
.sp-alert-success{background:rgba(34,197,94,0.08);border-color:var(--ok);color:var(--ok)}
.sp-alert-warning{background:rgba(234,179,8,0.08);border-color:var(--warn);color:var(--warn)}
.sp-alert-danger{background:rgba(239,68,68,0.08);border-color:var(--no);color:var(--no)}
.sp-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--sp-4)}
.sp-col{min-width:0}
.sp-embed{width:100%;border:1px solid var(--bd);border-radius:var(--radius-lg)}

/* ── Subpage Editor ─────── */
.sp-editor-blocks{display:flex;flex-direction:column;gap:var(--sp-3)}
.sp-editor-block .card-header{cursor:grab}
.sp-editor-block .card-body{padding:var(--sp-3)}
.sp-block-types{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:var(--sp-2)}
.sp-type-btn{display:flex;align-items:center;gap:6px;padding:var(--sp-2);border:none;background:transparent;color:var(--tx2);font-size:var(--text-xs);font-family:var(--font-sans);cursor:pointer;border-radius:var(--radius-md);transition:all var(--fast)}
.sp-type-btn:hover{background:var(--sf2);color:var(--ac)}
