:root{
  --bg:#f4f6fb;
  --card:#ffffff;
  --muted:#6b7280;
  --accent-600:#2b7cff;
  --accent-500:#3a8bff;
  --accent-400:#7fb0ff;
  --success:#2bb673;
  --danger:#e05555;
  --glass: rgba(255,255,255,0.7);
  --radius:14px;
  --shadow-1: 0 6px 18px rgba(18,24,40,0.06);
  --shadow-2: 0 10px 30px rgba(18,24,40,0.08);
  --transition: 220ms cubic-bezier(.2,.9,.2,1);
  --input-border: #e8eef8;
  --surface-1: #f8fbff;
  font-family: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
  color-scheme: light;
}

/* Reset & Base */
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  background: linear-gradient(180deg,#f7fbff 0%, var(--bg) 100%);
  color: #0f1724;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-size:15px;
  line-height:1.45;
}

/* Container helper */
.container{max-width:1150px;margin:28px auto;padding:0 20px}

/* Header */
.site-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 20px;
  background:transparent;
  position:sticky;
  top:0;
  z-index:40;
  backdrop-filter: blur(6px);
}
.logo{display:flex;align-items:center;gap:12px;text-decoration:none}
.logo .mark{
  width:48px;height:48px;border-radius:12px;
  background:linear-gradient(135deg,var(--accent-600),#7bb6ff);
  display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;
  box-shadow: var(--shadow-1);
  font-size:18px;
}
.logo .title{font-weight:700;font-size:18px;color:var(--accent-600)}
.logo .slogan{font-size:12px;color:var(--muted)}

/* Top nav */
.top-nav{display:flex;gap:10px;align-items:center}
.top-nav .btn{margin-left:8px}

/* Buttons — modern */
.btn{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:8px;
  justify-content:center;
  padding:10px 14px;
  border-radius:12px;
  background:linear-gradient(90deg,var(--accent-600),var(--accent-500));
  color:#fff;
  border: none;
  cursor:pointer;
  font-weight:600;
  box-shadow: 0 6px 20px rgba(43,124,255,0.12);
  transition: transform var(--transition), box-shadow var(--transition), opacity var(--transition);
  overflow: hidden;
}
.btn:active{transform:translateY(0)}
.btn:hover{transform:translateY(-3px)}
.btn.btn-ghost{
  background:transparent;
  color:var(--accent-600);
  border:1px solid rgba(59,139,255,0.12);
  box-shadow:none;
}
.btn.secondary{
  background:linear-gradient(90deg,#fff,#f7fbff);
  color:var(--accent-600);
  border:1px solid var(--input-border);
}

/* Ripple pseudo element will be added via JS */

/* Inputs & Textareas */
input[type="text"], input[type="email"], input[type="password"], textarea, select {
  display:block;
  width:100%;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid var(--input-border);
  background:#fff;
  transition: box-shadow var(--transition), border-color var(--transition), transform var(--transition);
  box-shadow: 0 2px 6px rgba(16,24,40,0.03);
  outline:none;
  font-size:15px;
}
input::placeholder, textarea::placeholder { color: #b7c0d6; }
input:focus, textarea:focus, select:focus {
  box-shadow: 0 10px 30px rgba(43,124,255,0.08);
  border-color: var(--accent-400);
  transform: translateY(-2px);
}

/* Labels */
label{display:block;margin-bottom:8px;color:var(--muted);font-weight:600;font-size:13px}

/* Cards */
.card{
  background:var(--card);
  border-radius:var(--radius);
  box-shadow:var(--shadow-2);
  padding:16px;
}

/* Auth card */
.auth-card{
  max-width:520px;margin:70px auto;padding:28px;border-radius:18px;background:linear-gradient(180deg, rgba(255,255,255,0.92), rgba(255,255,255,1));
  box-shadow:0 20px 50px rgba(11,22,60,0.06);
  text-align:center;
}
.auth-card h1{margin:0;font-size:28px;color:var(--accent-600)}
.auth-card .slogan{margin-top:6px;color:var(--muted);font-size:13px}

/* Progress + timer */
.timer-row{display:flex;align-items:center;gap:12px;margin-top:12px}
.progress{flex:1;height:8px;background:rgba(43,124,255,0.12);border-radius:8px;overflow:hidden}
.progress > i{display:block;height:100%;background:linear-gradient(90deg,var(--accent-600),var(--accent-400));width:0;transition:width 0.3s ease}

/* Spoilers / details */
.category-spoiler{margin-bottom:12px}
.category-spoiler summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:12px 16px;
  border-radius:12px;
  list-style:none;
  cursor:pointer;
  background: linear-gradient(180deg,#fff,#fbfdff);
  box-shadow: var(--shadow-1);
  transition: transform var(--transition), box-shadow var(--transition), background var(--transition);
}
.category-spoiler summary:hover{transform:translateY(-4px);box-shadow:0 12px 30px rgba(18,24,40,0.08)}
.category-spoiler summary .left{display:flex;gap:12px;align-items:center}
.category-spoiler summary .title{font-weight:700}
.category-spoiler summary .desc{color:var(--muted);font-size:13px}

/* Custom disclosure arrow */
.category-spoiler summary::-webkit-details-marker { display:none; }
.category-spoiler summary::after{
  content: "";
  width:36px;height:36px;border-radius:9px;background:linear-gradient(90deg,#f0f6ff,#eef7ff);
  display:inline-block;margin-left:12px;
  transform-origin:center;
  transition: transform var(--transition);
  mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="%23007acc" d="M7 10l5 5 5-5z"/></svg>') no-repeat center;
  -webkit-mask: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="%23007acc" d="M7 10l5 5 5-5z"/></svg>') no-repeat center;
}
.category-spoiler[open] summary::after{ transform: rotate(180deg) }

/* details content animation (use max-height trick) */
.category-spoiler .rooms-list{
  padding:12px 16px 18px;
  overflow:hidden;
  max-height: 0;
  transition: max-height 350ms cubic-bezier(.2,.9,.2,1), opacity 300ms ease;
  opacity:0;
}
.category-spoiler[open] .rooms-list{ max-height: 800px; opacity:1 }

/* Room row */
.room-row{display:flex;align-items:center;gap:12px;margin:10px 0}
.room-link{padding:8px 12px;border-radius:10px;background:linear-gradient(90deg,#f0f6ff,#eef7ff);text-decoration:none;color:var(--accent-600);font-weight:600}
.private-badge{background:#fff6f6;color:var(--danger);padding:6px 8px;border-radius:8px;font-size:12px}
.meta{color:var(--muted);font-size:13px}

/* Chat layout */
.chat-wrap{display:flex;gap:22px}
.chat-info{width:300px}
.chat-main{flex:1;display:flex;flex-direction:column;min-height:560px}
.messages{flex:1;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:10px}
.msg{padding:12px;border-radius:12px;background:linear-gradient(180deg,#ffffff,#f7fbff);box-shadow:var(--shadow-1);max-width:75%}
.msg.mine{margin-left:auto;background:linear-gradient(90deg,#dfefff,#e8f4ff)}
.msg .meta{font-size:12px;color:var(--muted);margin-bottom:6px}
.composer{padding:12px;border-top:1px solid rgba(10,20,40,0.04);display:flex;flex-direction:column;gap:10px}

/* Reactions */
.reactions{display:flex;gap:8px;margin-top:8px}
.reactions button{padding:6px 8px;border-radius:8px;border:none;background:#f6f9ff;cursor:pointer;transition:transform .12s}
.reactions button:hover{transform:translateY(-3px)}

/* Modal */
.modal{
  position:fixed;left:0;top:0;width:100%;height:100%;background:rgba(3,6,18,0.48);
  display:flex;align-items:center;justify-content:center;z-index:1000;
  opacity:0;pointer-events:none;transition:opacity 260ms ease;
}
.modal.show{opacity:1;pointer-events:auto}
.modal-inner{width:100%;max-width:620px;background:var(--card);border-radius:14px;padding:18px;box-shadow:var(--shadow-2)}

/* Toasts */
.toast-ui{
  position:fixed;right:18px;bottom:18px;z-index:9999;display:flex;flex-direction:column;gap:8px;
}
.toast{
  background:#0f1724;color:#fff;padding:12px 14px;border-radius:10px;box-shadow:0 10px 30px rgba(11,22,60,0.12);
  transform: translateY(12px); opacity:0; transition: transform 300ms ease, opacity 300ms ease;
}
.toast.show{transform: translateY(0); opacity:1}

/* Footer */
.site-footer{margin-top:36px;padding:18px 24px;background:transparent;display:flex;justify-content:space-between;align-items:center}
.footer-inner{max-width:1150px;margin:0 auto;width:100%;display:flex;justify-content:space-between;align-items:center}
.footer-inner .left{color:var(--muted)}
.footer-inner .right .btn{padding:8px 12px}

/* Emoji picker */
.emoji-picker { background: #fff; border-radius: 12px; box-shadow: var(--shadow-2); padding: 8px; display:grid; grid-template-columns: repeat(8, 1fr); gap:6px; }
.emoji-btn { cursor:pointer; transition: transform .12s; background:transparent;border:none;font-size:20px;padding:6px;border-radius:8px }
.emoji-btn:hover{transform:translateY(-3px);background:#f2f7ff}

/* Admin table */
.admin-table{width:100%;border-collapse:collapse}
.admin-table td, .admin-table th{padding:10px;border-bottom:1px solid rgba(10,20,40,0.04)}

/* Utilities */
.muted{color:var(--muted);font-size:13px}
.notice{background:#eefaf3;color:var(--success);padding:10px;border-radius:10px}
.error{background:#fff0f0;color:var(--danger);padding:10px;border-radius:10px}

/* small screens */
@media (max-width:900px){
  .chat-wrap{flex-direction:column;padding:16px}
  .chat-info{width:100%}
  .container{padding:0 14px}
  .auth-card{margin:28px 12px}
  .emoji-picker{grid-template-columns: repeat(6,1fr)}
}

/* Accessibility focus */
:focus{outline: 3px solid rgba(59,139,255,0.14);outline-offset:3px}