:root{
  --bg:#08080a;
  --card:#111113;
  --card2:#18181b;
  --card3:#1e1e22;
  --border:#232326;
  --border2:#2d2d32;
  --text:#f5f5f6;
  --muted:#9a9aa3;
  --muted2:#6e6e78;
}
/* THEMES */
[data-theme="light"]{
  --bg:#f4f4f5;
  --card:#ffffff;
  --card2:#f9f9fb;
  --card3:#ececef;
  --border:#e4e4e7;
  --border2:#d4d4d8;
  --text:#09090b;
  --muted:#71717a;
  --muted2:#a1a1aa;
}
[data-theme="discord"]{
  --bg:#313338;
  --card:#2b2d31;
  --card2:#232428;
  --card3:#1e1f22;
  --border:#404249;
  --border2:#3f4147;
  --text:#f2f3f5;
  --muted:#b5bac1;
  --muted2:#80848e;
}
[data-theme="midnight"]{
  --bg:#000000;
  --card:#0a0a0f;
  --card2:#11111b;
  --card3:#1a1a2e;
  --border:#23233a;
  --border2:#2e2e4a;
  --text:#e8e8ff;
  --muted:#8b8bb3;
  --muted2:#5a5a7a;
}
[data-theme="ocean"]{
  --bg:#0a141e;
  --card:#0f1f33;
  --card2:#132845;
  --card3:#1a3355;
  --border:#1e3a5f;
  --border2:#244a7a;
  --text:#e0f0ff;
  --muted:#7fb3d5;
  --muted2:#5a8ab0;
}
[data-theme="crimson"]{
  --bg:#120505;
  --card:#1a0a0a;
  --card2:#241414;
  --card3:#2e1a1a;
  --border:#4a2323;
  --border2:#5c2e2e;
  --text:#ffe8e8;
  --muted:#c98b8b;
  --muted2:#a05a5a;
}
[data-theme="forest"]{
  --bg:#0a120a;
  --card:#0f1f0f;
  --card2:#142914;
  --card3:#1a331a;
  --border:#234a23;
  --border2:#2e5c2e;
  --text:#e8ffe8;
  --muted:#8bc98b;
  --muted2:#5aa05a;
}
[data-theme="sunset"]{
  --bg:#150f0a;
  --card:#1f150f;
  --card2:#2a1e12;
  --card3:#332615;
  --border:#4a3520;
  --border2:#5c4228;
  --text:#fff5e0;
  --muted:#d5b37f;
  --muted2:#b08a5a;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
::selection{background:#fff;color:#000}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:999px}
::-webkit-scrollbar-thumb:hover{background:var(--muted2)}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;background:radial-gradient(1200px 600px at 50% -10%, rgba(255,255,255,.04), transparent 60%), var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;line-height:1.5}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
*:focus-visible{outline:2px solid #fff;outline-offset:2px}

/* LOGIN */
.login-body{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;background:var(--bg);position:relative;overflow:visible}
.login-body::before{content:"";position:absolute;inset:0;background:radial-gradient(900px 600px at 50% 0%, rgba(255,255,255,.05), transparent 65%), linear-gradient(180deg, rgba(255,255,255,.015), transparent 40%);pointer-events:none}
.login-wrap{position:relative;z-index:1;width:100%;max-width:420px;display:flex;flex-direction:column;gap:14px}
.login-brand{text-align:center;margin-bottom:2px}
.login-brand span{font-size:10px;letter-spacing:.16em;font-weight:700;color:var(--muted2);text-transform:uppercase}
.login-card{width:100%;background:linear-gradient(180deg, #16161a 0%, var(--card) 100%);border:1px solid var(--border);border-radius:18px;overflow:visible;box-shadow:0 20px 60px rgba(0,0,0,.5), 0 1px 0 rgba(255,255,255,.04) inset}
.login-card-head{padding:30px 28px 0;text-align:center}
.login-icon{width:48px;height:48px;margin:0 auto 14px;border-radius:12px;background:#fff;color:#000;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(255,255,255,.1)}
.login-card-head h1{font-size:20px;font-weight:800;letter-spacing:-.02em}
.login-card-head p{color:var(--muted);font-size:13px;margin-top:6px}
.login-card-body{padding:22px 28px 28px}
.btn-discord{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;background:#fff;color:#000;border:1px solid #fff;padding:12px 16px;border-radius:10px;font-weight:600;font-size:14px;transition:.15s;line-height:1;overflow:visible;cursor:pointer}
.btn-discord:hover{background:#ececec;transform:translateY(-1px);box-shadow:0 6px 18px rgba(255,255,255,.08)}
.btn-icon{width:20px;height:20px;min-width:20px;min-height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:visible}
.btn-icon img,.btn-icon svg{width:20px;height:20px;display:block;overflow:visible;object-fit:contain}
.login-divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--muted2);font-size:10px;letter-spacing:.1em;text-transform:uppercase}
.login-divider::before,.login-divider::after{content:"";flex:1;height:1px;background:var(--border)}
.login-hint{color:var(--muted);font-size:12.5px;line-height:1.6;text-align:center}
.login-meta{text-align:center;color:var(--muted2);font-size:11px;opacity:.8}

/* NAVBAR */
.navbar{height:60px;background:rgba(17,17,19,.88);backdrop-filter:blur(16px) saturate(1.2);-webkit-backdrop-filter:blur(16px) saturate(1.2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:sticky;top:0;z-index:20;box-shadow:0 4px 24px rgba(0,0,0,.2)}
.nav-left{display:flex;align-items:center;gap:12px}
.nav-logo{font-weight:800;font-size:11px;letter-spacing:.14em;color:var(--muted);border:1px solid var(--border);padding:6px 9px;border-radius:7px;background:var(--card2)}
.nav-guild{font-size:13px;font-weight:600;color:var(--text);background:var(--card2);border:1px solid var(--border);padding:6px 10px;border-radius:8px}
.nav-right{display:flex;align-items:center;gap:10px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--card2);object-fit:cover;border:1px solid var(--border)}
.nav-user{line-height:1.15}
.nav-user b{font-size:13px;font-weight:600}
.nav-user small{color:var(--muted);font-size:11px}
.btn-logout{font-size:13px;font-weight:500;color:var(--muted);border:1px solid var(--border);padding:7px 12px;border-radius:8px;background:transparent;transition:.15s;cursor:pointer}
.btn-logout:hover{color:var(--text);background:var(--card2);border-color:var(--border2)}
.btn-close{font-size:13px;font-weight:600;color:#fff;background:#e53e3e;border:1px solid #c53030;padding:7px 12px;border-radius:8px;cursor:pointer}
.btn-close:hover{background:#c53030}

/* LAYOUT */
.layout{display:flex;min-height:calc(100vh - 60px)}
.sidebar{width:280px;min-width:280px;background:var(--card);border-right:1px solid var(--border);padding:18px 14px;display:flex;flex-direction:column;gap:2px;position:sticky;top:60px;height:calc(100vh - 60px);overflow-y:auto;align-self:flex-start;scrollbar-width:thin;scrollbar-color:var(--border) transparent}
.sidebar::-webkit-scrollbar{width:6px}
.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}
.sidebar a{padding:8px 10px;border-radius:8px;color:#94a3b8;font-size:13px;font-weight:500;display:flex;align-items:center;gap:12px;transition:all 150ms ease;border:1px solid transparent;position:relative}
.sidebar a svg{width:16px;height:16px;flex-shrink:0;opacity:.7;transition:all 150ms ease}
.sidebar a.active{background:rgba(79,70,229,.10);color:#fff;font-weight:600;border-color:rgba(79,70,229,.20);box-shadow:none}
.sidebar a.active::before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:3px;height:20px;background:#6366f1;border-radius:0 4px 4px 0}
.sidebar a.active svg{opacity:1;color:#818cf8}
.sidebar a.active span,.sidebar a.active{color:#fff}
.sidebar a:not(.active):hover{background:rgba(30,41,59,.5);color:#e2e8f0;border-color:transparent;transform:none}
.sidebar a:not(.active):hover svg{opacity:1;color:#e2e8f0}
.side-cat{margin-top:4px}
.side-cat-head{width:100%;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;background:transparent;border:1px solid transparent;color:var(--muted);font-size:13px;font-weight:600;cursor:pointer;text-align:left}
.side-cat-head:hover{background:var(--card2);color:var(--text);border-color:var(--border)}
.side-cat-head.open{color:var(--text);background:var(--card2);border-color:var(--border)}
.side-cat-body{padding:4px 0 4px 8px;display:flex;flex-direction:column;gap:2px}
.side-cat-body a{font-size:12.5px;padding:6px 10px;border-radius:7px;color:var(--muted);border:1px solid transparent}
.side-cat-body a:hover{background:var(--card2);color:var(--text)}
.side-cat-body a.sub-active{background:#fff;color:#000;font-weight:600}
.side-arrow{margin-left:auto;font-size:10px;opacity:.6}
.side-group-label{font-size:10px;font-weight:700;letter-spacing:.1em;color:#64748b;margin:18px 0 8px 8px;text-transform:uppercase;display:flex;align-items:center;gap:10px}
.side-group-label::after{content:"";flex:1;height:1px;background:#1e293b}
.side-group-label:first-of-type{margin-top:2px}
.side-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--border);font-size:11.5px;color:var(--muted2);line-height:1.6}
.main{flex:1;padding:28px;max-width:1120px;margin:0 auto;width:100%;min-height:calc(100vh - 60px)}
.quick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-top:14px}
.quick-card{display:flex;flex-direction:column;gap:8px;padding:14px;background:var(--card);border:1px solid var(--border);border-radius:12px;transition:.15s;text-align:left}
.quick-card:hover{border-color:var(--border2);transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.2)}
.quick-card b{font-size:13px}
.quick-card span{font-size:11px;color:var(--muted);line-height:1.4}

/* BANNER */
.banner{border-radius:18px;overflow:visible;border:1px solid var(--border);background:var(--card);margin-bottom:22px;box-shadow:0 12px 40px rgba(0,0,0,.35), 0 1px 0 rgba(255,255,255,.04) inset}
.banner-head{height:148px;background:linear-gradient(135deg, #0f0f12 0%, #1c1c20 45%, #16161a 100%), radial-gradient(800px 400px at 20% 0%, rgba(255,255,255,.07), transparent 60%);border-radius:18px 18px 0 0;position:relative;border-bottom:1px solid var(--border);overflow:hidden}
.banner-head::before{content:"";position:absolute;inset:0;background:radial-gradient(700px 320px at 30% 0%, rgba(255,255,255,.07), transparent 62%)}
.banner-head::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg, transparent 45%, rgba(0,0,0,.45))}
.banner-body{display:flex;align-items:flex-end;gap:16px;padding:0 22px 18px;position:relative;margin-top:-36px}
.guild-icon{width:76px;height:76px;border-radius:16px;border:3px solid var(--card);background:var(--card2);object-fit:cover;flex-shrink:0;box-shadow:0 8px 24px rgba(0,0,0,.4);position:relative;z-index:2}
.banner-text{padding-bottom:4px}
.banner-text h1{font-size:21px;font-weight:800;letter-spacing:-.02em}
.banner-text p{color:var(--muted);font-size:13px;margin-top:3px}
.badge{margin-left:auto;margin-bottom:6px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:7px 12px;border-radius:999px;border:1px solid var(--border);background:#fff;color:#000;white-space:nowrap;align-self:flex-end;box-shadow:0 2px 10px rgba(255,255,255,.08)}

/* STATS */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}
.stat{background:linear-gradient(180deg, var(--card) 0%, #0e0e10 100%);border:1px solid var(--border);border-radius:16px;padding:16px;position:relative;overflow:hidden;transition:.2s}
.stat::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg, transparent, rgba(255,255,255,.07), transparent)}
.stat::after{content:"";position:absolute;bottom:-20px;right:-20px;width:80px;height:80px;background:radial-gradient(circle, rgba(255,255,255,.04), transparent 70%);pointer-events:none}
.stat:hover{border-color:var(--border2);transform:translateY(-2px);box-shadow:0 12px 32px rgba(0,0,0,.3)}
.stat-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.stat-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--card2);border:1px solid var(--border);border-radius:8px;font-size:14px}
.stat span{color:var(--muted2);font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}
.stat b{display:block;font-size:24px;font-weight:800;margin-top:4px;letter-spacing:-.02em}
.stat small{color:var(--muted);font-size:11px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px;box-shadow:0 4px 20px rgba(0,0,0,.12), 0 1px 0 rgba(255,255,255,.03) inset;transition:.15s}
.card:hover{border-color:var(--border2)}
.card h3{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.card h3::before{content:"";width:3px;height:14px;background:var(--border2);border-radius:999px}

/* ROLES & SALONS */
.role-list{display:flex;flex-direction:column;gap:6px}
.role{font-size:13px;padding:10px 11px;border-radius:9px;background:var(--card2);border:1px solid var(--border);color:var(--muted);display:flex;align-items:center;gap:9px;cursor:pointer;width:100%;text-align:left;transition:.12s}
.role:hover{border-color:var(--border2);background:#1d1d20;color:var(--text)}
.role-btn{cursor:grab}
.drag-handle{color:var(--muted2);font-size:12px;cursor:grab;user-select:none;letter-spacing:1px}
.dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;border:1px solid rgba(255,255,255,.1)}
.discord-card{padding:14px}
.cat-block{margin-bottom:12px;background:var(--card2);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.cat-head{font-size:11px;font-weight:700;letter-spacing:.07em;color:var(--muted);padding:9px 10px;display:flex;align-items:center;gap:8px;cursor:grab;background:var(--card3);border-bottom:1px solid var(--border)}
.cat-arrow{font-size:10px;opacity:.6}
.cat-chans{padding:6px;min-height:12px;display:flex;flex-direction:column;gap:2px}
.chan-row{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:7px;cursor:grab;background:transparent;border:1px solid transparent;font-size:13px;transition:.12s}
.chan-row:hover{background:var(--card);border-color:var(--border)}
.chan-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--card3);border:1px solid var(--border);border-radius:6px;color:var(--muted);font-size:11px;flex-shrink:0}
.chan-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.chan-id{font-size:10px;color:var(--muted2);font-family:ui-monospace,monospace}
.btn-mini{font-size:11px;font-weight:600;padding:5px 8px;border-radius:7px;border:1px solid var(--border);background:var(--card2);color:var(--muted);cursor:pointer;transition:.12s}
.btn-mini:hover{color:var(--text);border-color:var(--border2);background:var(--card3)}

/* MODALS */
.modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal.hidden{display:none}
.modal-bg{position:absolute;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px)}
.modal-box{position:relative;background:var(--card);border:1px solid var(--border2);border-radius:16px;padding:20px;width:90%;max-width:480px;max-height:85vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.modal-head{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:4px}
.modal-head h2{font-size:15px;font-weight:700}
.btn-close-modal{background:var(--card2);border:1px solid var(--border);color:var(--muted);width:30px;height:30px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.12s}
.btn-close-modal:hover{color:var(--text);border-color:var(--border2)}
.modal-members{margin-top:12px;max-height:320px;overflow:auto}

/* TICKETS */
.ticket-list{display:flex;flex-direction:column;gap:8px}
.ticket-row{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--card);border:1px solid var(--border);border-radius:10px;transition:.15s}
.ticket-row:hover{border-color:var(--border2);background:var(--card2);transform:translateY(-1px)}
.ticket-name{font-weight:600;font-size:14px;min-width:160px}
.ticket-topic{color:var(--muted);font-size:13px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ticket-meta{color:var(--muted2);font-size:11px;font-family:ui-monospace,monospace}
.ticket-layout{display:flex;flex-direction:column;height:calc(100vh - 60px);max-width:900px;margin:0 auto;width:100%}
.ticket-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--bg)}
.msg{display:flex;gap:10px;padding:12px;border-radius:10px;background:var(--card);border:1px solid var(--border)}
.msg-avatar{width:34px;height:34px;border-radius:50%;flex-shrink:0;border:1px solid var(--border)}
.msg-head{font-size:13px;display:flex;gap:8px;align-items:center}
.msg-head b{font-weight:600}
.msg-head span{color:var(--muted);font-size:11px}
.tag-bot{font-size:10px;font-weight:700;background:#fff;color:#000;padding:2px 6px;border-radius:4px;letter-spacing:.04em}
.msg-content{margin-top:4px;font-size:13.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
.ticket-send{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border);background:var(--card)}
.ticket-send input{flex:1;background:var(--card2);border:1px solid var(--border);color:var(--text);padding:11px 12px;border-radius:9px;font-size:14px;outline:none;transition:.12s}
.ticket-send input:focus{border-color:var(--border2);background:var(--card3)}
.ticket-send button{background:#fff;color:#000;border:none;padding:11px 16px;border-radius:9px;font-weight:600;cursor:pointer;transition:.12s}
.ticket-send button:hover{background:#ececec}
.ticket-send button:disabled{opacity:.5}

/* SWITCH SLIDE */
.switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--card2);border:1px solid var(--border);transition:.25s;border-radius:24px}
.slider:before{position:absolute;content:"";height:18px;width:18px;left:2px;bottom:2px;background:var(--muted);transition:.25s;border-radius:50%}
input:checked + .slider{background:#fff;border-color:#fff}
input:checked + .slider:before{transform:translateX(20px);background:#000}

/* THEME SELECTOR */
.theme-picker{display:flex;align-items:center;gap:6px;background:var(--card2);border:1px solid var(--border);padding:5px 8px;border-radius:8px;font-size:12px;color:var(--muted)}
.theme-picker select{background:var(--card);color:var(--text);border:1px solid var(--border);padding:4px 6px;border-radius:6px;font-size:12px;outline:none;cursor:pointer}
.theme-dots{display:flex;gap:4px}
.theme-dot{width:14px;height:14px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:.15s}
.theme-dot.active{border-color:var(--text);transform:scale(1.2)}
.theme-dot:hover{transform:scale(1.15)}

/* REST POLISH — users / roles / salons / tickets / protection / logs */
.user-card{position:relative;overflow:hidden}
.user-card::after{content:"";position:absolute;inset:0;border-radius:12px;border:1px solid transparent;pointer-events:none;transition:.18s}
.user-card:hover::after{border-color:rgba(255,255,255,.08)}
#search{transition:.15s}
#search:focus{outline:none;border-color:var(--border2)!important;box-shadow:0 0 0 3px rgba(255,255,255,.06)}
.role{position:relative;overflow:hidden}
.role::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent;transition:.15s}
.role:hover::before{background:rgba(255,255,255,.15)}
.cat-block{transition:.15s}
.cat-block:hover{border-color:var(--border2);box-shadow:0 4px 16px rgba(0,0,0,.15)}
.chan-row{position:relative}
.chan-row:active{transform:scale(.98)}
.ticket-row{position:relative;overflow:hidden}
.ticket-row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--border);transition:.15s}
.ticket-row:hover::before{background:#fff}
.ticket-row:hover{padding-left:15px}
.modal-box{animation:pop .18s ease}
@keyframes pop{from{transform:scale(.97);opacity:0}to{transform:scale(1);opacity:1}}
.empty-state{padding:32px 20px;text-align:center;border:1px dashed var(--border);border-radius:14px;background:var(--card2);color:var(--muted)}
.empty-state b{color:var(--text);display:block;margin-bottom:4px}

@media(max-width:900px){
  .stats{grid-template-columns:repeat(2,1fr)}
  .grid2{grid-template-columns:1fr}
  .sidebar{position:fixed;left:-100%;width:280px;z-index:30;transition:.2s}
  .sidebar.open{left:0}
  .banner-body{flex-wrap:wrap}
  .quick-grid{grid-template-columns:repeat(2,1fr)}
}
