﻿@font-face{font-family:'Instrument Sans';src:url('../_shared/fonts/InstrumentSans-Regular.ttf') format('truetype');font-weight:400;}@font-face{font-family:'Instrument Sans';src:url('../_shared/fonts/InstrumentSans-Bold.ttf') format('truetype');font-weight:700;}@font-face{font-family:'Geist Mono';src:url('../_shared/fonts/GeistMono-Regular.ttf') format('truetype');font-weight:400;}:root{--bg:#f3f0ea;--bg2:#fffaf1;--ink:#17130d;--muted:#746d61;--rule:#ded4c3;--accent:#6f4d2d;--accent2:#203a33;--ok:#2d6f52;--bad:#8a2d2d;--warn:#9a6b1d;--shadow:rgba(33,26,16,0.12);--veil:rgba(255,250,241,0.84);--font:'Instrument Sans',system-ui,sans-serif;--font-mono:'Geist Mono',Consolas,monospace;--radius:24px;--side:280px;--speed:220ms;--ease:cubic-bezier(.2,.8,.2,1);}*,*::before,*::after{box-sizing:border-box;}html{min-height:100%;background:var(--bg);}body{min-height:100vh;margin:0;font-family:var(--font);color:var(--ink);background:radial-gradient(circle at top left,rgba(111,77,45,0.16),transparent 34rem),radial-gradient(circle at bottom right,rgba(32,58,51,0.13),transparent 32rem),linear-gradient(135deg,var(--bg),#e7dfd1);overflow-x:hidden;user-select:none;}body.compact{--radius:18px;}body.reduce-motion{--speed:1ms;}button,input,textarea{font:inherit;}button{cursor:pointer;transition:transform var(--speed) var(--ease),filter var(--speed) var(--ease),background var(--speed) var(--ease),border-color var(--speed) var(--ease),box-shadow var(--speed) var(--ease);}button:active{transform:translateY(1px) scale(0.99);}.hidden{display:none!important;}.selectable,.selectable *{user-select:text;}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:28px;}.auth-card{width:min(1060px,100%);min-height:660px;display:grid;grid-template-columns:1.05fr .95fr;border:1px solid var(--rule);border-radius:36px;background:var(--veil);box-shadow:0 28px 90px var(--shadow);overflow:hidden;backdrop-filter:blur(18px);animation:riseIn 420ms var(--ease) both;}.auth-story{position:relative;padding:50px;color:var(--bg2);background:linear-gradient(135deg,rgba(23,19,13,0.92),rgba(32,58,51,0.86)),repeating-linear-gradient(90deg,rgba(255,255,255,0.04) 0 1px,transparent 1px 88px);}.brand-lockup{display:flex;align-items:center;gap:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;border:1px solid rgba(255,255,255,0.38);background:rgba(255,255,255,0.08);font-family:var(--font-mono);}.auth-story h1{margin:94px 0 16px;max-width:520px;font-size:clamp(42px,7vw,82px);line-height:.93;letter-spacing:-0.08em;}.auth-story p{max-width:500px;margin:0;color:rgba(255,250,241,0.78);font-size:16px;line-height:1.8;}.story-grid{position:absolute;left:50px;right:50px;bottom:44px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}.story-tile{padding:18px;min-height:118px;border-radius:22px;border:1px solid rgba(255,255,255,0.18);background:rgba(255,255,255,0.08);}.story-tile b{display:block;font-size:26px;margin-bottom:8px;}.story-tile span{color:rgba(255,250,241,0.7);font-size:12px;line-height:1.4;}.auth-panel{padding:54px;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(180deg,rgba(255,250,241,0.98),rgba(245,239,229,0.94));}.tabs{display:inline-flex;align-self:flex-start;gap:8px;padding:6px;border:1px solid var(--rule);border-radius:999px;background:rgba(255,255,255,0.54);}.tab-btn{border:0;padding:10px 18px;border-radius:999px;color:var(--muted);background:transparent;transition:color var(--speed) var(--ease),background var(--speed) var(--ease),transform var(--speed) var(--ease);}.tab-btn.active{color:var(--bg2);background:var(--ink);}.auth-form{margin-top:34px;display:grid;gap:18px;}.field{display:grid;gap:8px;}.field label{color:var(--muted);font-size:13px;font-weight:700;}.field input,.field textarea{width:100%;border:1px solid var(--rule);border-radius:18px;padding:16px 18px;color:var(--ink);background:rgba(255,255,255,0.72);outline:none;user-select:text;}.field input:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px rgba(111,77,45,0.13);}.primary-btn,.ghost-btn,.danger-btn{border:0;border-radius:18px;padding:14px 18px;font-weight:700;}.primary-btn{color:var(--bg2);background:var(--accent2);}.primary-btn:hover{filter:brightness(1.04);}.ghost-btn{color:var(--ink);border:1px solid var(--rule);background:rgba(255,255,255,0.62);}.danger-btn{color:var(--bg2);background:var(--bad);}.hint{color:var(--muted);font-size:13px;line-height:1.6;}.notice{min-height:42px;padding:12px 14px;border:1px solid var(--rule);border-radius:16px;color:var(--muted);background:rgba(255,255,255,0.44);font-size:13px;line-height:1.5;}.notice.bad{border-color:rgba(138,45,45,0.28);color:var(--bad);background:rgba(138,45,45,0.08);}.notice.ok{border-color:rgba(45,111,82,0.26);color:var(--ok);background:rgba(45,111,82,0.08);}.human-gate{margin-top:22px;padding:14px;border:1px solid var(--rule);border-radius:20px;background:rgba(255,255,255,0.58);box-shadow:0 12px 34px rgba(33,26,16,0.06);animation:pageIn var(--speed) var(--ease) both;overflow:hidden;}.human-gate.verified{border-color:rgba(45,111,82,0.28);background:rgba(45,111,82,0.08);}.human-gate-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px;}.human-gate-top strong{display:block;}.human-gate-top span{display:block;margin-top:3px;color:var(--muted);font-size:12px;}.human-gate-top b{color:var(--muted);font-size:12px;white-space:nowrap;}.human-hold{position:relative;width:100%;min-height:46px;overflow:hidden;border:1px solid var(--rule);border-radius:16px;color:var(--ink);background:rgba(255,255,255,0.72);font-weight:700;touch-action:none;-webkit-tap-highlight-color:transparent;}.human-hold span{position:relative;z-index:2;}.human-hold i{position:absolute;inset:0 auto 0 0;width:var(--human-progress,0%);background:linear-gradient(90deg,rgba(111,77,45,0.18),rgba(32,58,51,0.22));transition:width 70ms linear;}.human-gate.verified .human-hold{color:var(--ok);border-color:rgba(45,111,82,0.28);}.human-mode{display:grid;gap:10px;animation:pageIn var(--speed) var(--ease) both;width:100%;}.human-question{padding:12px 14px;border:1px solid var(--rule);border-radius:14px;color:var(--ink);background:rgba(255,255,255,0.64);font-weight:700;letter-spacing:.02em;}.human-answer-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:stretch;}.human-answer-row input{min-width:0;border:1px solid var(--rule);border-radius:14px;padding:12px 14px;color:var(--ink);background:rgba(255,255,255,0.72);outline:none;user-select:text;}.human-slider{position:relative;width:100%;height:52px;margin:0;border:1px solid var(--rule);border-radius:18px;background:rgba(255,255,255,0.72);outline:none;cursor:pointer;overflow:hidden;touch-action:none;user-select:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,0.36);}.human-slider-fill{position:absolute;inset:0 auto 0 0;width:var(--slide-progress,0%);background:linear-gradient(90deg,rgba(111,77,45,0.2),rgba(32,58,51,0.26));transition:width 80ms linear;}.human-slider-thumb{position:absolute;z-index:2;left:var(--slide-progress,0%);top:50%;width:74px;height:40px;display:grid;place-items:center;border:1px solid rgba(32,58,51,0.28);border-radius:15px;color:var(--ink);background:var(--bg2);box-shadow:0 12px 28px rgba(33,26,16,0.18);transform:translate(6px,-50%);transition:left 80ms linear,transform var(--speed) var(--ease);font-size:12px;font-weight:700;}.human-slider.dragging .human-slider-thumb{transform:translate(6px,-50%) scale(1.03);}.human-slider span{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:13px;font-weight:700;pointer-events:none;}.human-gate.verified .human-slider{border-color:rgba(45,111,82,0.28);}.human-trap{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none;}.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--side) 1fr;}.sidebar{position:sticky;top:0;height:100vh;padding:24px;border-right:1px solid var(--rule);background:rgba(255,250,241,0.76);backdrop-filter:blur(18px);}.side-head{display:flex;align-items:center;gap:12px;padding-bottom:24px;border-bottom:1px solid var(--rule);}.side-title small{display:block;margin-top:2px;color:var(--muted);font-size:12px;}.nav-group{margin-top:26px;display:grid;gap:10px;}.nav-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid transparent;border-radius:18px;padding:14px 16px;color:var(--muted);background:transparent;text-align:left;transition:transform var(--speed) var(--ease),color var(--speed) var(--ease),background var(--speed) var(--ease),box-shadow var(--speed) var(--ease),border-color var(--speed) var(--ease);}.nav-btn:hover{transform:translateX(3px);}.nav-btn.active{color:var(--ink);border-color:var(--rule);background:rgba(255,255,255,0.68);box-shadow:0 12px 30px rgba(33,26,16,0.06);}.nav-code{font-family:var(--font-mono);font-size:12px;}.side-foot{position:absolute;left:24px;right:24px;bottom:24px;display:grid;gap:12px;}.user-card{padding:16px;border:1px solid var(--rule);border-radius:22px;background:rgba(255,255,255,0.56);}.user-card b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.user-card span{display:block;margin-top:4px;color:var(--muted);font-size:12px;}.mobile-bar{display:none;position:sticky;top:0;z-index:20;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--rule);background:rgba(255,250,241,0.86);backdrop-filter:blur(18px);}.menu-btn{width:44px;height:44px;border:1px solid var(--rule);border-radius:14px;background:rgba(255,255,255,0.58);}.content{padding:34px;min-width:0;}body.compact .content{padding:24px;}.page{display:none;max-width:1360px;margin:0 auto;opacity:0;transform:translateY(12px);}.page.active{display:block;animation:pageIn var(--speed) var(--ease) both;}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px;}.eyebrow{display:inline-flex;align-items:center;height:28px;padding:0 12px;border:1px solid var(--rule);border-radius:999px;color:var(--muted);font-size:12px;background:rgba(255,255,255,0.56);}h2{margin:12px 0 0;font-size:clamp(34px,5vw,62px);line-height:.98;letter-spacing:-0.07em;}.subtext{max-width:680px;margin:12px 0 0;color:var(--muted);line-height:1.7;}.grid{display:grid;gap:18px;}.metrics{grid-template-columns:repeat(4,minmax(0,1fr));}.card{border:1px solid var(--rule);border-radius:var(--radius);padding:22px;background:rgba(255,250,241,0.7);box-shadow:0 18px 60px rgba(33,26,16,0.07);backdrop-filter:blur(10px);transition:transform var(--speed) var(--ease),box-shadow var(--speed) var(--ease),border-color var(--speed) var(--ease),background var(--speed) var(--ease);}.card:hover{transform:translateY(-2px);box-shadow:0 22px 70px rgba(33,26,16,0.1);}body.compact .card{padding:16px;}.metric b{display:block;font-size:36px;letter-spacing:-0.05em;line-height:1;}.metric span{display:block;margin-top:10px;color:var(--muted);font-size:13px;}.dashboard-layout{margin-top:18px;display:grid;grid-template-columns:1fr;gap:18px;}.line-list{display:grid;gap:12px;margin-top:18px;}.line-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border:1px solid var(--rule);border-radius:18px;background:rgba(255,255,255,0.48);}.bar{height:10px;border-radius:999px;background:rgba(23,19,13,0.08);overflow:hidden;min-width:150px;}.bar i{display:block;height:100%;width:var(--w);border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent2));}.terminal{margin-top:18px;padding:18px;border-radius:18px;color:#d6e4d5;background:#17130d;font-family:var(--font-mono);font-size:12px;line-height:1.8;user-select:text;}.community-shell{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px;min-height:660px;overflow-x:auto;}.channels{display:grid;gap:10px;align-content:start;}.channel-btn{width:100%;border:1px solid var(--rule);border-radius:18px;padding:16px;text-align:left;color:var(--muted);background:rgba(255,255,255,0.5);transition:transform var(--speed) var(--ease),color var(--speed) var(--ease),background var(--speed) var(--ease),box-shadow var(--speed) var(--ease),border-color var(--speed) var(--ease);}.channel-btn:hover{transform:translateY(-1px);}.channel-btn.active{color:var(--ink);background:var(--bg2);box-shadow:0 12px 30px rgba(33,26,16,0.06);}.channel-btn b{display:block;margin-bottom:5px;}.channel-btn span{font-size:12px;line-height:1.35;}.chat-panel{display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;min-height:660px;}.chat-top{display:flex;align-items:center;justify-content:space-between;gap:14px;padding-bottom:16px;border-bottom:1px solid var(--rule);}.chat-top h3{margin:0;font-size:24px;letter-spacing:-0.04em;}.chat-top p{margin:4px 0 0;color:var(--muted);font-size:13px;}.chat-log{padding:18px 4px 18px 0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;user-select:none;}.message{max-width:min(720px,92%);padding:14px 16px;border:1px solid var(--rule);border-radius:20px;background:rgba(255,255,255,0.62);box-shadow:0 10px 24px rgba(33,26,16,0.05);animation:messageIn 180ms var(--ease) both;}.message.mine{align-self:flex-end;border-color:rgba(32,58,51,0.28);background:rgba(235,241,235,0.72);}.message-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:7px;color:var(--muted);font-size:12px;}.message-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65;user-select:text;}.message.recalled .message-body{color:var(--muted);font-style:italic;user-select:none;}.message.self-deleted .message-body{display:none;}.message.self-deleted .message-head{margin-bottom:0;}.message.self-deleted{min-height:auto;opacity:.5;}.quote{margin-bottom:10px;padding:10px 12px 10px 14px;border-left:4px solid var(--accent);border-radius:0 12px 12px 0;color:var(--ink);background:rgba(111,77,45,0.10);font-size:13px;line-height:1.55;overflow-wrap:anywhere;user-select:text;box-shadow:inset 2px 0 6px rgba(111,77,45,0.06);}.composer{display:grid;gap:12px;padding-top:16px;border-top:1px solid var(--rule);}.quote-draft{display:none;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--rule);border-radius:14px;color:var(--muted);background:rgba(255,255,255,0.48);font-size:13px;}.quote-draft.active{display:flex;}.quote-draft.active{animation:pageIn var(--speed) var(--ease) both;}.compose-row{display:grid;grid-template-columns:1fr auto;gap:12px;}.file-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}.file-picker{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border:1px solid var(--rule);border-radius:16px;color:var(--ink);background:rgba(255,255,255,0.58);overflow:hidden;cursor:pointer;font-weight:700;font-size:13px;}.file-picker.disabled{color:var(--muted);cursor:not-allowed;opacity:.68;}.file-picker input{position:absolute;inset:0;opacity:0;cursor:inherit;}.file-info{color:var(--muted);font-size:13px;overflow-wrap:anywhere;}.attachment{margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid var(--rule);border-radius:16px;background:rgba(111,77,45,0.08);}.attachment strong{display:block;overflow-wrap:anywhere;}.attachment span{color:var(--muted);font-size:12px;}.download-file{border:1px solid var(--rule);border-radius:12px;padding:9px 12px;color:var(--ink);background:rgba(255,255,255,0.58);text-decoration:none;font-weight:700;white-space:nowrap;}.admin-lock{max-width:520px;}.admin-panel{margin-top:18px;}.admin-global-card{margin-bottom:18px;}.admin-grid{grid-template-columns:.9fr 1.1fr;align-items:start;}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;}.setting-card{display:flex;align-items:center;justify-content:space-between;gap:18px;}.setting-card h3{margin:10px 0 6px;font-size:22px;letter-spacing:-0.04em;}.setting-card p{margin:0;color:var(--muted);line-height:1.55;font-size:13px;}.switch{position:relative;width:58px;min-width:58px;height:34px;display:inline-flex;cursor:pointer;}.switch input{position:absolute;opacity:0;pointer-events:none;}.switch span{position:absolute;inset:0;border:1px solid var(--rule);border-radius:999px;background:rgba(255,255,255,0.62);transition:background var(--speed) var(--ease),border-color var(--speed) var(--ease);}.switch span::after{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:var(--muted);transition:transform var(--speed) var(--ease),background var(--speed) var(--ease);}.switch input:checked+span{border-color:rgba(32,58,51,0.28);background:rgba(32,58,51,0.14);}.switch input:checked+span::after{transform:translateX(24px);background:var(--accent2);}.admin-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px;}.admin-card-head h3{margin:10px 0 0;font-size:24px;letter-spacing:-0.04em;}.admin-select{min-height:44px;border:1px solid var(--rule);border-radius:14px;padding:0 12px;color:var(--ink);background:rgba(255,255,255,0.62);outline:none;}.admin-list{display:grid;gap:12px;max-height:680px;overflow:auto;padding-right:4px;}.admin-item{display:grid;gap:10px;padding:14px;border:1px solid var(--rule);border-radius:18px;background:rgba(255,255,255,0.52);}.admin-item-top{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px;}.admin-item b{color:var(--ink);overflow-wrap:anywhere;}.admin-item p{margin:0;color:var(--ink);line-height:1.55;overflow-wrap:anywhere;white-space:pre-wrap;user-select:text;}.admin-actions{display:flex;flex-wrap:wrap;gap:8px;}.mini-btn{border:1px solid var(--rule);border-radius:12px;padding:8px 10px;color:var(--ink);background:rgba(255,255,255,0.58);font-weight:700;font-size:12px;}.mini-btn.danger{color:var(--bad);border-color:rgba(138,45,45,0.28);background:rgba(138,45,45,0.08);}.admin-mini-input{width:120px;min-height:36px;border:1px solid var(--rule);border-radius:12px;padding:8px 10px;color:var(--ink);background:rgba(255,255,255,0.62);outline:none;user-select:text;}textarea{min-height:72px;max-height:180px;resize:vertical;}.context-menu{position:fixed;z-index:100;display:none;width:172px;padding:8px;border:1px solid var(--rule);border-radius:16px;background:var(--bg2);box-shadow:0 18px 60px var(--shadow);}.context-menu button{width:100%;border:0;border-radius:10px;padding:10px 12px;text-align:left;color:var(--ink);background:transparent;}.context-menu button:hover{background:rgba(111,77,45,0.1);}.toast{position:fixed;left:50%;bottom:24px;z-index:120;transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;padding:12px 16px;border:1px solid var(--rule);border-radius:999px;color:var(--ink);background:var(--bg2);box-shadow:0 16px 44px var(--shadow);transition:.22s ease;}.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}@keyframes pageIn{from{opacity:0;transform:translateY(12px);filter:blur(2px);}to{opacity:1;transform:translateY(0);filter:blur(0);}}@keyframes riseIn{from{opacity:0;transform:translateY(18px) scale(0.985);}to{opacity:1;transform:translateY(0) scale(1);}}@keyframes messageIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}body.reduce-motion *,body.reduce-motion *::before,body.reduce-motion *::after{animation-duration:1ms!important;transition-duration:1ms!important;scroll-behavior:auto!important;}@media(max-width:980px){.auth-card{grid-template-columns:1fr;min-height:auto;}.auth-story{display:none;}.auth-panel{min-height:calc(100vh - 56px);}.story-grid{position:static;margin-top:44px;}.app-shell{display:block;}.mobile-bar{display:flex;}.sidebar{position:fixed;z-index:30;inset:0 auto 0 0;width:min(320px,86vw);transform:translateX(-105%);transition:transform .22s ease;}.sidebar.open{transform:translateX(0);}.content{padding:22px 16px;}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));}.dashboard-layout{grid-template-columns:1fr;}.community-shell{grid-template-columns:190px minmax(420px,1fr);align-items:stretch;}.admin-grid{grid-template-columns:1fr;}.settings-grid{grid-template-columns:1fr;}.channels{grid-template-columns:1fr;}.channel-btn{padding:13px;}.attachment{align-items:flex-start;flex-direction:column;}}@media(max-width:640px){.auth-shell{padding:12px;}.auth-story,.auth-panel{padding:28px;}.auth-story h1{margin-top:58px;}.story-grid,.metrics{grid-template-columns:1fr;}.community-shell{grid-template-columns:170px minmax(360px,1fr);}.page-header{display:block;}.human-answer-row{grid-template-columns:1fr;}.human-gate-top{align-items:flex-start;flex-direction:column;}.admin-mini-input{width:100%;}.setting-card{align-items:flex-start;flex-direction:column;}.compose-row{grid-template-columns:1fr;}.file-row{align-items:stretch;flex-direction:column;}.file-picker,.file-row .ghost-btn{justify-content:center;width:100%;}.message{max-width:100%;}}.gc{position:relative;width:100%;max-width:420px;border-radius:20px;overflow:hidden;border:1px solid var(--rule);box-shadow:0 18px 60px var(--shadow);transition:transform var(--speed) var(--ease),box-shadow var(--speed) var(--ease);}.gc:hover{transform:translateY(-2px);box-shadow:0 22px 70px rgba(33,26,16,0.14);}.gc-bg{position:absolute;inset:0;background-size:cover;background-position:center top;background-color:var(--accent2);opacity:0;transition:opacity .6s ease;}
.gc-bg-img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center top;}.gc-has-bg .gc-bg{opacity:1;}.gc-ov{position:absolute;inset:0;background:linear-gradient(180deg,rgba(23,19,13,0.05) 0%,rgba(23,19,13,0.88) 55%,rgba(23,19,13,0.96) 100%);transition:background .4s;}.gc-no-bg .gc-ov{background:linear-gradient(180deg,rgba(32,58,51,0.1) 0%,rgba(23,19,13,0.06) 100%);}.gc-body{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;min-height:200px;padding:24px 22px;}.gc-top-row{display:flex;align-items:center;gap:8px;margin-bottom:10px;}.gc-status{font-size:11px;font-weight:700;letter-spacing:.06em;padding:3px 12px;border-radius:999px;text-transform:uppercase;}.gc-online{background:rgba(45,111,82,0.15);color:var(--ok);border:1px solid rgba(45,111,82,0.28);}.gc-offline{background:rgba(116,109,97,0.12);color:var(--muted);border:1px solid var(--rule);}.gc-title{font-size:22px;font-weight:700;color:#fffaf1;margin:0 0 6px;line-height:1.15;letter-spacing:-0.02em;text-shadow:0 2px 12px rgba(0,0,0,0.25);}.gc-no-bg .gc-title{color:var(--ink);text-shadow:none;}.gc-desc{font-size:12px;color:rgba(255,250,241,0.7);margin:0 0 16px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}.gc-no-bg .gc-desc{color:var(--muted);}.gc-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;}.gc-player-num{font-size:28px;font-weight:700;color:#fffaf1;line-height:1;letter-spacing:-0.04em;text-shadow:0 1px 8px rgba(0,0,0,0.2);}.gc-no-bg .gc-player-num{color:var(--ink);text-shadow:none;}.gc-player-label{display:block;margin-top:3px;font-size:11px;color:rgba(255,250,241,0.6);}.gc-no-bg .gc-player-label{color:var(--muted);}.gc-join{display:inline-flex;align-items:center;justify-content:center;padding:10px 28px;border-radius:14px;border:none;background:var(--accent2);color:var(--bg2);font-size:13px;font-weight:700;cursor:pointer;transition:transform var(--speed) var(--ease),box-shadow var(--speed) var(--ease),filter var(--speed) var(--ease);box-shadow:0 6px 22px rgba(32,58,51,0.22);letter-spacing:.02em;user-select:none;}.gc-join:hover{transform:translateY(-1px);box-shadow:0 8px 28px rgba(32,58,51,0.32);filter:brightness(1.06);}.gc-join:active{transform:translateY(0) scale(0.97);}.gc-offline .gc-join{background:var(--rule);color:var(--muted);box-shadow:none;cursor:default;opacity:.7;}.gc-offline .gc-join:hover{transform:none;box-shadow:none;filter:none;}.gc-err{white-space:pre-wrap;}.games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px;margin-top:24px;justify-items:start;}@media(max-width:640px){.games-grid{grid-template-columns:1fr;}.gc{max-width:100%;}}.exec-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:18px;align-items:start;}.exec-game-list{display:grid;gap:10px;max-height:520px;overflow:auto;padding-right:4px;}.exec-game-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border:1px solid var(--rule);border-radius:18px;background:rgba(255,255,255,0.52);cursor:pointer;transition:transform var(--speed) var(--ease),border-color var(--speed) var(--ease),background var(--speed) var(--ease);}.exec-game-item:hover{transform:translateY(-1px);border-color:var(--accent);}.exec-game-item.selected{border-color:var(--accent2);background:rgba(32,58,51,0.08);}.exec-game-item.offline{opacity:.5;cursor:not-allowed;}.exec-game-item.offline:hover{transform:none;border-color:var(--rule);}.exec-game-info{min-width:0;}.exec-game-info b{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.exec-game-info small{display:block;margin-top:3px;color:var(--muted);font-size:11px;}.exec-game-status{font-size:11px;font-weight:700;white-space:nowrap;letter-spacing:.04em;}.exec-game-status.online{color:var(--ok);}.exec-game-status.offline{color:var(--muted);}.exec-editor-card{display:grid;gap:14px;}.exec-editor{width:100%;min-height:420px;max-height:calc(100vh - 380px);border:1px solid var(--rule);border-radius:16px;padding:16px 18px;color:var(--ink);background:rgba(23,19,13,0.94);font-family:var(--font-mono);font-size:13px;line-height:1.7;resize:vertical;outline:none;user-select:text;tab-size:2;}.exec-editor:focus{border-color:var(--accent2);box-shadow:0 0 0 4px rgba(32,58,51,0.13);}.exec-editor::placeholder{color:var(--muted);opacity:.6;}.exec-actions{display:flex;gap:10px;flex-wrap:wrap;}.exec-actions .primary-btn{flex:1;min-width:160px;}@media(max-width:980px){.exec-layout{grid-template-columns:1fr;}.exec-editor{min-height:280px;max-height:400px;}}@media(max-width:640px){.exec-game-item{padding:12px;}.exec-actions{flex-direction:column;}.exec-actions button{width:100%;}.exec-editor{min-height:220px;}}.lang-switcher{display:inline-flex;gap:8px;}.lang-btn{min-width:72px;border:1px solid var(--rule);border-radius:14px;padding:10px 16px;color:var(--muted);background:rgba(255,255,255,0.58);font-weight:700;font-size:13px;transition:color var(--speed) var(--ease),background var(--speed) var(--ease),border-color var(--speed) var(--ease),box-shadow var(--speed) var(--ease);}.lang-btn:hover{transform:translateY(-1px);border-color:var(--accent);}.lang-btn.active{color:var(--bg2);background:var(--accent2);border-color:var(--accent2);box-shadow:0 8px 24px rgba(32,58,51,0.2);}.profile-content{display:grid;gap:18px;max-width:720px;}.profile-card{padding:32px;}.profile-header{display:flex;align-items:flex-start;gap:24px;}.profile-avatar{width:88px;min-width:88px;height:88px;display:grid;place-items:center;border-radius:24px;color:#fffaf1;font-size:32px;font-weight:700;text-transform:uppercase;letter-spacing:-0.03em;box-shadow:0 12px 36px rgba(33,26,16,0.18);border:2px solid rgba(255,255,255,0.3);}.profile-info{flex:1;min-width:0;}.profile-info h3{margin:0 0 8px;font-size:32px;letter-spacing:-0.04em;line-height:1;}.profile-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:10px;}.profile-badge.muted{background:rgba(138,45,45,0.1);color:var(--bad);border:1px solid rgba(138,45,45,0.24);}.profile-bio{margin:0 0 16px;color:var(--ink);line-height:1.7;font-size:15px;overflow-wrap:anywhere;user-select:text;}.profile-bio.empty{color:var(--muted);font-style:italic;}.profile-stats{display:flex;flex-wrap:wrap;gap:20px;}.profile-stat{display:flex;flex-direction:column;gap:3px;}.profile-stat b{font-size:16px;font-weight:700;color:var(--ink);}.profile-stat small{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;}.profile-edit-form{padding:28px;display:grid;gap:18px;animation:pageIn var(--speed) var(--ease) both;}.color-picker{display:flex;flex-wrap:wrap;gap:10px;}.color-swatch{width:36px;height:36px;border-radius:12px;border:2px solid transparent;cursor:pointer;transition:transform var(--speed) var(--ease),border-color var(--speed) var(--ease),box-shadow var(--speed) var(--ease);}.color-swatch:hover{transform:scale(1.1);}.color-swatch.selected{border-color:var(--ink);box-shadow:0 0 0 3px rgba(255,255,255,0.6);transform:scale(1.1);}.profile-loading,.profile-error{padding:40px;text-align:center;color:var(--muted);font-size:15px;}.profile-actions{display:flex;gap:8px;align-items:center;}.msg-author{cursor:pointer!important;transition:color var(--speed) var(--ease);}.msg-author:hover{color:var(--accent)!important;}@media(max-width:640px){.profile-card{padding:22px;}.profile-header{flex-direction:column;align-items:center;text-align:center;}.profile-avatar{width:72px;min-width:72px;height:72px;font-size:26px;}.profile-info{width:100%;}.profile-info h3{font-size:26px;}.profile-stats{justify-content:center;}.profile-edit-form{padding:18px;}}
/* ===== Sidebar Flex Layout Fix - Prevent overlap ===== */
aside.sidebar{
  display:flex!important;
  flex-direction:column!important;
  height:100vh!important;
  height:100dvh!important;
  max-height:100vh!important;
  max-height:100dvh!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
  padding-top:24px!important;
  padding-bottom:24px!important;
}
.side-head{
  flex-shrink:0!important;
  flex-grow:0!important;
  min-height:0!important;
}
.nav-group{
  flex:1 1 auto!important;
  min-height:0!important; /* Critical: allows flex child to shrink below content height */
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding-right:6px!important;
  scrollbar-width:thin;
  scrollbar-color:rgba(0,0,0,.15) transparent;
  margin-top:26px!important;
  margin-bottom:0!important;
  align-content:start!important;
}
.nav-group::-webkit-scrollbar{width:6px}
.nav-group::-webkit-scrollbar-track{background:transparent}
.nav-group::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px}
.side-foot{
  position:relative!important;
  left:auto!important;
  right:auto!important;
  bottom:auto!important;
  flex-shrink:0!important;
  flex-grow:0!important;
  min-height:0!important;
  margin-top:18px!important;
  margin-bottom:0!important;
  padding-top:18px!important;
  padding-bottom:0!important;
  border-top:1px solid var(--rule)!important;
  border-bottom:none!important;
  width:100%!important;
}
/* Mobile sidebar: dim outside + close on outside tap */
@media(max-width:980px){
  body.sidebar-open::before{
    content:'';
    position:fixed;
    inset:0;
    z-index:25;
    background:rgba(23,19,13,0.42);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
    animation:sbFade .18s ease;
  }
  @keyframes sbFade{from{opacity:0}to{opacity:1}}
  aside.sidebar.open, .sidebar.open{z-index:30;box-shadow:12px 0 40px rgba(33,26,16,0.22);}
}
/* Mobile sidebar fix */
@media(max-width:980px){
  aside.sidebar{
    height:100vh!important;
    height:100dvh!important;
    max-height:100vh!important;
    max-height:100dvh!important;
  }
}

/* ===== Game card: clickable + detail hint ===== */
.gc-clickable{cursor:pointer;}
.gc-top-row{justify-content:space-between;}
.gc-detail-hint{font-size:11px;font-weight:700;letter-spacing:.04em;color:rgba(255,250,241,0.75);border:1px solid rgba(255,250,241,0.3);border-radius:999px;padding:3px 11px;white-space:nowrap;transition:background var(--speed) var(--ease),color var(--speed) var(--ease),border-color var(--speed) var(--ease);}
.gc-no-bg .gc-detail-hint{color:var(--muted);border-color:var(--rule);}
.gc-clickable:hover .gc-detail-hint{background:rgba(255,250,241,0.2);}
.gc-clickable:focus-visible{outline:2px solid var(--accent2);outline-offset:3px;}

/* ===== Game detail modal (server list, Roblox-style layout / Andrux palette) ===== */
.gd-mask{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(23,19,13,0.55);backdrop-filter:blur(6px);}
.gd-mask.open{display:flex;animation:gdFade 240ms var(--ease) both;}
.gd-mask.gd-leave{animation:gdFadeOut 190ms var(--ease) both;}
.gd-mask.gd-leave .gd-card{animation:gdDrop 190ms var(--ease) both;}
.gd-card{position:relative;width:min(560px,100%);max-height:calc(100vh - 48px);overflow:auto;overflow-x:hidden;border:1px solid var(--rule);border-radius:24px;background:var(--bg2);box-shadow:0 34px 110px rgba(33,26,16,0.4);animation:gdRise 320ms var(--ease) both;}
.gd-cover{position:relative;aspect-ratio:16/9;overflow:hidden;background:linear-gradient(135deg,var(--accent2),#17130d);}
.gd-cover-img{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.95;animation:gdZoom 700ms var(--ease) both;}
.gd-card.gd-no-cover .gd-cover-img{display:none;}
.gd-card.gd-no-cover .gd-cover{aspect-ratio:auto;height:74px;}
.gd-close{position:absolute;top:12px;right:12px;z-index:6;width:34px;height:34px;display:grid;place-items:center;border:1px solid rgba(255,250,241,0.34);border-radius:50%;color:#fffaf1;background:rgba(23,19,13,0.46);backdrop-filter:blur(6px);}
.gd-close svg{width:15px;height:15px;display:block;}
.gd-close:hover{background:rgba(23,19,13,0.72);}
.gd-main{padding:16px 18px 18px;}
.gd-title{margin:0 0 6px;font-size:16px;font-weight:700;color:var(--ink);line-height:1.35;overflow-wrap:anywhere;}
.gd-meta{margin:0;color:var(--muted);font-size:12px;line-height:1.7;overflow-wrap:anywhere;user-select:text;}
.gd-meta b{color:var(--ink);font-weight:700;}
.gd-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;}
.gd-stat{padding:10px 12px;border:1px solid var(--rule);border-radius:14px;background:rgba(255,255,255,0.55);animation:gdRowIn 360ms var(--ease) both;}
.gd-stat b{display:block;font-size:20px;font-weight:700;color:var(--ink);line-height:1.1;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;}
.gd-stat span{display:block;margin-top:2px;font-size:10.5px;color:var(--muted);}
.gd-servers{margin-top:12px;display:grid;gap:9px;max-height:min(46vh,340px);overflow:auto;padding-right:3px;}
.gd-srv{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px 11px 14px;border:1px solid var(--rule);border-radius:14px;background:rgba(255,255,255,0.6);animation:gdRowIn 380ms var(--ease) both;transition:border-color var(--speed) var(--ease),box-shadow var(--speed) var(--ease),transform var(--speed) var(--ease);}
.gd-srv:hover{border-color:var(--accent);box-shadow:0 12px 30px rgba(33,26,16,0.09);transform:translateY(-1px);}
.gd-srv-info{min-width:0;flex:1;}
.gd-srv-name{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--ink);overflow-wrap:anywhere;}
.gd-srv-id{display:block;margin-top:3px;font-family:var(--font-mono);font-size:11px;color:var(--muted);overflow-wrap:anywhere;user-select:text;}
.gd-srv-id em,.gd-srv-sub em{font-style:normal;color:rgba(116,109,97,0.7);}
.gd-srv-sub{display:block;margin-top:2px;font-size:11px;color:var(--muted);overflow-wrap:anywhere;}
.gd-srv-sub i{font-style:normal;color:var(--rule);margin:0 5px;}
.gd-srv-sub b{color:var(--ink);font-weight:700;}
.gd-srv-acts{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.gd-copy{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--rule);border-radius:11px;color:var(--muted);background:rgba(255,255,255,0.72);}
.gd-copy svg{width:16px;height:16px;display:block;}
.gd-copy:hover{color:var(--ink);border-color:var(--accent);}
.gd-copy.done{color:var(--ok);border-color:rgba(45,111,82,0.32);background:rgba(45,111,82,0.1);animation:gdPop 340ms var(--ease);}
.gd-joinbtn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border:0;border-radius:11px;color:var(--bg2);background:var(--accent2);font-size:13px;font-weight:700;text-decoration:none;white-space:nowrap;box-shadow:0 6px 20px rgba(32,58,51,0.2);}
.gd-joinbtn svg{width:13px;height:13px;display:block;}
.gd-joinbtn:hover{filter:brightness(1.06);}
.gd-joinbtn.off{background:var(--rule);color:var(--muted);box-shadow:none;pointer-events:none;}
.gd-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.gd-dot.on{background:var(--ok);box-shadow:0 0 6px rgba(45,111,82,0.55);animation:gdPulse 2.2s ease-in-out infinite;}
.gd-dot.off{background:var(--muted);opacity:.55;}
.gd-tag{font-size:10px;font-weight:700;letter-spacing:.05em;padding:2px 7px;border-radius:999px;border:1px solid rgba(154,107,29,0.32);color:var(--warn);background:rgba(154,107,29,0.1);white-space:nowrap;}
.gd-empty{margin-top:12px;padding:20px;border:1px dashed var(--rule);border-radius:14px;text-align:center;color:var(--muted);font-size:13px;}
.gd-foot{display:flex;justify-content:flex-end;margin-top:14px;}
.gd-end{min-width:96px;border:1px solid var(--rule);border-radius:12px;padding:10px 18px;color:var(--ink);background:rgba(255,255,255,0.66);font-weight:700;font-size:13px;}
.gd-end:hover{background:var(--bg2);border-color:var(--accent);}
@keyframes gdFade{from{opacity:0}to{opacity:1}}
@keyframes gdFadeOut{from{opacity:1}to{opacity:0}}
@keyframes gdRise{from{opacity:0;transform:translateY(20px) scale(.965)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes gdDrop{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(12px) scale(.97)}}
@keyframes gdZoom{from{transform:scale(1.09);opacity:0}to{transform:scale(1);opacity:.95}}
@keyframes gdRowIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes gdPop{0%{transform:scale(1)}45%{transform:scale(1.16)}100%{transform:scale(1)}}
@keyframes gdPulse{0%,100%{box-shadow:0 0 0 0 rgba(45,111,82,0.5)}55%{box-shadow:0 0 0 5px rgba(45,111,82,0)}}
body.reduce-motion .gd-mask,body.reduce-motion .gd-card,body.reduce-motion .gd-cover-img,body.reduce-motion .gd-srv,body.reduce-motion .gd-stat,body.reduce-motion .gd-dot.on{animation:none!important;}
@media(max-width:640px){
  .gd-mask{padding:12px;}
  .gd-main{padding:14px;}
  .gd-srv{flex-wrap:wrap;}
  .gd-srv-acts{width:100%;justify-content:flex-end;}
}

/* ===== Luau syntax highlight + edit animations (executor) ===== */
.luau-hl-wrap{position:relative;width:100%;border:1px solid var(--rule);border-radius:16px;background:rgba(23,19,13,0.94);overflow:hidden;min-height:420px;max-height:calc(100vh - 380px);transition:border-color .2s,box-shadow .25s;}
.luau-hl-wrap:focus-within{border-color:var(--accent2);box-shadow:0 0 0 4px rgba(32,58,51,0.13);}
.luau-hl-pre,.luau-hl-textarea{margin:0;padding:16px 18px;border:none;border-radius:0;width:100%;min-height:420px;max-height:calc(100vh - 380px);box-sizing:border-box;font-family:var(--font-mono),Consolas,monospace;font-size:13px;line-height:1.55;tab-size:2;white-space:pre;word-wrap:normal;overflow:auto;}
.luau-hl-pre{position:absolute;inset:0;z-index:1;color:#c8c2b8;pointer-events:none;background:transparent;overflow:hidden;}
.luau-hl-code{display:block;font:inherit;color:inherit;background:transparent;transition:opacity .12s ease;}
.luau-hl-textarea{position:relative;z-index:2;background:transparent!important;color:transparent!important;-webkit-text-fill-color:transparent;caret-color:#e8e2d6;resize:vertical;outline:none;box-shadow:none!important;border:none!important;}
.luau-hl-textarea::placeholder{color:rgba(116,109,97,.55)!important;-webkit-text-fill-color:rgba(116,109,97,.55);}
.luau-hl-textarea::selection{background:rgba(111,77,45,.45);color:#fffaf1;-webkit-text-fill-color:#fffaf1;}
.lh-keyword{color:#c586c0;font-weight:600;}
.lh-builtin{color:#4fc1ff;}
.lh-func{color:#dcdcaa;}
.lh-string{color:#ce9178;}
.lh-number{color:#b5cea8;}
.lh-comment{color:#6a9955;font-style:italic;}
.lh-op{color:#d4d4d4;}
/* insert / delete pulse on editor chrome */
@keyframes luauInsertPulse{
  0%{box-shadow:0 0 0 0 rgba(45,111,82,0);border-color:var(--rule);}
  35%{box-shadow:0 0 0 4px rgba(45,111,82,0.28);border-color:#2d6f52;}
  100%{box-shadow:0 0 0 0 rgba(45,111,82,0);border-color:var(--rule);}
}
@keyframes luauDeletePulse{
  0%{box-shadow:0 0 0 0 rgba(138,45,45,0);border-color:var(--rule);}
  35%{box-shadow:0 0 0 4px rgba(138,45,45,0.28);border-color:#8a2d2d;}
  100%{box-shadow:0 0 0 0 rgba(138,45,45,0);border-color:var(--rule);}
}
.luau-hl-wrap.luau-anim-insert{animation:luauInsertPulse .38s ease-out;}
.luau-hl-wrap.luau-anim-delete{animation:luauDeletePulse .38s ease-out;}
/* caret-area ripple */
.luau-ripple{position:absolute;z-index:3;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;pointer-events:none;opacity:0;}
.luau-ripple.insert{background:rgba(45,111,82,0.55);animation:luauRippleIn .4s ease-out forwards;}
.luau-ripple.delete{background:rgba(200,80,80,0.5);animation:luauRippleOut .4s ease-out forwards;}
@keyframes luauRippleIn{
  0%{transform:scale(0.4);opacity:.9;}
  100%{transform:scale(2.4);opacity:0;}
}
@keyframes luauRippleOut{
  0%{transform:scale(1.6);opacity:.85;}
  100%{transform:scale(0.3);opacity:0;}
}
@media(max-width:900px){
  .luau-hl-wrap{min-height:280px;max-height:400px;}
  .luau-hl-pre,.luau-hl-textarea{min-height:280px;max-height:400px;}
}
@media(max-width:640px){
  .luau-hl-wrap{min-height:220px;}
  .luau-hl-pre,.luau-hl-textarea{min-height:220px;}
}

/* ===== Andrux UI polish & motion ===== */
:root{
  --motion: cubic-bezier(.22,1,.36,1);
  --motion-spring: cubic-bezier(.34,1.4,.64,1);
  --glow-accent: 0 10px 28px rgba(111,77,45,0.18);
  --glow-ok: 0 8px 22px rgba(45,111,82,0.2);
}

/* Page enter */
@keyframes axFadeUp{
  from{opacity:0;transform:translateY(14px);}
  to{opacity:1;transform:translateY(0);}
}
@keyframes axFadeIn{
  from{opacity:0;}
  to{opacity:1;}
}
@keyframes axScaleIn{
  from{opacity:0;transform:scale(.96);}
  to{opacity:1;transform:scale(1);}
}
@keyframes axSlideRight{
  from{opacity:0;transform:translateX(-10px);}
  to{opacity:1;transform:translateX(0);}
}
@keyframes axToastIn{
  from{opacity:0;transform:translate(-50%,12px) scale(.96);}
  to{opacity:1;transform:translate(-50%,0) scale(1);}
}
@keyframes axToastOut{
  from{opacity:1;transform:translate(-50%,0) scale(1);}
  to{opacity:0;transform:translate(-50%,8px) scale(.96);}
}
@keyframes axPulseSoft{
  0%,100%{box-shadow:0 0 0 0 rgba(32,58,51,0);}
  50%{box-shadow:0 0 0 6px rgba(32,58,51,0.12);}
}
@keyframes axShimmer{
  0%{background-position:200% 0;}
  100%{background-position:-200% 0;}
}
@keyframes axCardIn{
  from{opacity:0;transform:translateY(18px) scale(.98);}
  to{opacity:1;transform:translateY(0) scale(1);}
}
@keyframes axBtnRipple{
  to{transform:scale(2.4);opacity:0;}
}

/* Global interactive polish */
button,.nav-btn,.primary-btn,.ghost-btn,.mini-btn,.danger-btn,.sh-add-btn,.sh-exec-btn{
  transition:transform var(--speed) var(--motion),box-shadow var(--speed) var(--motion),background var(--speed) var(--motion),border-color var(--speed) var(--motion),filter var(--speed) var(--motion),opacity var(--speed) var(--motion),color var(--speed) var(--motion)!important;
}
button:active:not(:disabled),.nav-btn:active,.primary-btn:active,.mini-btn:active{
  transform:translateY(1px) scale(.98)!important;
}
.primary-btn{
  position:relative;overflow:hidden;
  box-shadow:0 6px 18px rgba(32,58,51,0.18);
}
.primary-btn:hover{
  filter:brightness(1.06);
  transform:translateY(-1px);
  box-shadow:var(--glow-ok);
}
.ghost-btn:hover{
  background:rgba(23,19,13,0.05);
  transform:translateY(-1px);
}
.danger-btn:hover,.mini-btn.danger:hover{
  filter:brightness(1.05);
  transform:translateY(-1px);
}

/* Sidebar */
.sidebar{
  transition:transform var(--speed) var(--motion),box-shadow var(--speed) var(--motion);
}
.nav-btn{
  position:relative;
  overflow:hidden;
}
.nav-btn::before{
  content:'';
  position:absolute;left:0;top:50%;transform:translateY(-50%) scaleY(0);
  width:3px;height:60%;border-radius:0 4px 4px 0;
  background:var(--accent2);
  transition:transform .28s var(--motion-spring);
}
.nav-btn:hover{
  background:rgba(32,58,51,0.06);
  transform:translateX(2px);
}
.nav-btn.active{
  background:rgba(32,58,51,0.1);
  font-weight:700;
}
.nav-btn.active::before{
  transform:translateY(-50%) scaleY(1);
}
.nav-btn .nav-code{
  transition:opacity .2s,color .2s;
}
.nav-btn:hover .nav-code{opacity:1;color:var(--accent2);}

/* Page content */
.page.active{
  animation:axFadeUp .42s var(--motion) both;
}
.page-header{
  animation:axSlideRight .4s var(--motion) both;
}
.card,.setting-card,.exec-editor-card,.exec-game-card{
  transition:transform var(--speed) var(--motion),box-shadow var(--speed) var(--motion),border-color var(--speed) var(--motion);
}
.card:hover,.setting-card:hover{
  box-shadow:0 12px 32px rgba(33,26,16,0.08);
}

/* Toast */
.toast{
  transition:none;
}
.toast.show{
  animation:axToastIn .32s var(--motion-spring) both;
}

/* Exec game list items */
.exec-game-item{
  transition:transform .22s var(--motion),border-color .22s,background .22s,box-shadow .22s,opacity .22s!important;
}
.exec-game-item:hover:not(.offline){
  transform:translateY(-2px);
  box-shadow:0 8px 20px rgba(33,26,16,0.08);
}
.exec-game-item.selected{
  box-shadow:0 0 0 2px rgba(32,58,51,0.2),0 8px 22px rgba(32,58,51,0.1);
  animation:axPulseSoft 1.6s ease-in-out 1;
}

/* Admin list items */
.admin-item{
  transition:transform .2s var(--motion),box-shadow .2s,border-color .2s,background .2s;
  animation:axCardIn .35s var(--motion) both;
}
.admin-item:hover{
  transform:translateY(-1px);
  box-shadow:0 6px 16px rgba(33,26,16,0.07);
}

/* Stagger utility for dynamically filled lists */
.ax-stagger > *:nth-child(1){animation-delay:.02s}
.ax-stagger > *:nth-child(2){animation-delay:.05s}
.ax-stagger > *:nth-child(3){animation-delay:.08s}
.ax-stagger > *:nth-child(4){animation-delay:.11s}
.ax-stagger > *:nth-child(5){animation-delay:.14s}
.ax-stagger > *:nth-child(6){animation-delay:.17s}
.ax-stagger > *:nth-child(7){animation-delay:.2s}
.ax-stagger > *:nth-child(8){animation-delay:.23s}
.ax-stagger > *:nth-child(9){animation-delay:.26s}
.ax-stagger > *:nth-child(10){animation-delay:.29s}
.ax-stagger > *:nth-child(n+11){animation-delay:.32s}

/* Switch toggles */
.switch span{
  transition:background .25s var(--motion),transform .25s var(--motion-spring)!important;
}
.switch input:checked + span{
  transition:background .25s var(--motion),transform .25s var(--motion-spring);
}

/* Lang buttons */
.lang-btn{
  transition:transform .2s var(--motion),background .2s,color .2s,box-shadow .2s!important;
}
.lang-btn:hover{transform:translateY(-1px);}
.lang-btn.active{
  box-shadow:0 4px 14px rgba(32,58,51,0.18);
}

/* Reduce motion preference */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
  }
}
body.reduce-motion *,body.reduce-motion *::before,body.reduce-motion *::after{
  animation-duration:.01ms!important;
  transition-duration:.01ms!important;
}

.ax-click-ripple{
  position:absolute;border-radius:50%;
  background:rgba(255,250,241,0.35);
  transform:scale(0);pointer-events:none;
  animation:axBtnRipple .45s ease-out forwards;
}

/* Community single channel */
.comm-single-channel{grid-template-columns:1fr!important;}
.comm-single-channel .channels{display:none!important;}
.comm-single-channel .chat-panel{min-height:min(70vh,640px);}
.comm-single-channel .chat-log{min-height:420px;}

.chat-input,textarea#messageInput,.composer textarea{
  user-select:text!important;-webkit-user-select:text!important;
  pointer-events:auto!important;
  color:var(--ink)!important;
  background:#fff!important;
  min-height:52px;
  width:100%;
  padding:12px 14px;
  border:1px solid var(--rule);
  border-radius:16px;
  resize:vertical;
}
.chat-input:focus,textarea#messageInput:focus{
  outline:none;border-color:var(--accent2);box-shadow:0 0 0 3px rgba(32,58,51,.12);
}




/* Executor: allow select/copy scripts */
#execScriptInput,
#execLuaPanel textarea,
.luau-hl-textarea,
.luau-hl-pre,
.exec-editor,
.exec-editor textarea{
  user-select:text!important;
  -webkit-user-select:text!important;
}


.dash-metric-value{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";transition:transform .25s ease,color .25s ease;}
.dash-metric-value.metric-ticking{color:var(--accent);}
.dash-metric-value.metric-pop{animation:metricPop .32s ease;}
@keyframes metricPop{0%{transform:scale(1);}40%{transform:scale(1.08);}100%{transform:scale(1);}}

.primary-btn:disabled,
.primary-btn.is-disabled,
button.primary-btn:disabled{
  opacity:0.45!important;
  filter:grayscale(0.35);
  cursor:not-allowed!important;
  pointer-events:none!important;
  box-shadow:none!important;
}

.exec-tabs-bar{display:flex;align-items:center;gap:6px;margin-bottom:10px;flex-wrap:wrap;}
.exec-tabs-list{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1;min-width:0;}
.exec-tab{
  display:inline-flex;align-items:center;gap:6px;max-width:160px;
  padding:6px 10px;border-radius:10px;border:1px solid var(--rule);
  background:rgba(255,250,241,0.65);color:var(--muted);font-size:12px;font-weight:600;
  cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.exec-tab:hover{border-color:var(--accent);color:var(--ink);}
.exec-tab.active{background:rgba(111,77,45,0.12);border-color:var(--accent);color:var(--ink);}
.exec-tab-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:110px;}
.exec-tab-close{
  flex-shrink:0;width:16px;height:16px;border:none;border-radius:50%;
  background:transparent;color:var(--muted);cursor:pointer;font-size:12px;line-height:1;padding:0;
}
.exec-tab-close:hover{background:rgba(138,45,45,0.15);color:var(--bad);}
.exec-tab-add{
  width:32px;height:32px;border-radius:10px;border:1px dashed var(--rule);
  background:transparent;color:var(--muted);font-size:18px;line-height:1;cursor:pointer;
}
.exec-tab-add:hover{border-color:var(--accent);color:var(--ink);}

.exec-tab-menu{
  position:fixed;z-index:2147483000;min-width:140px;
  background:#fffaf1;border:1px solid var(--rule);border-radius:12px;
  box-shadow:0 12px 40px rgba(33,26,16,0.18);padding:6px;display:flex;flex-direction:column;gap:2px;
}
.exec-tab-menu button{
  border:none;background:transparent;text-align:left;padding:10px 12px;border-radius:8px;
  font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;
}
.exec-tab-menu button:hover{background:rgba(111,77,45,0.1);}
.exec-tab-menu button.danger{color:var(--bad);}
.exec-tab-menu button.danger:hover{background:rgba(138,45,45,0.12);}

.exec-input-menu{
  position:fixed;z-index:2147483000;min-width:140px;
  background:#fffaf1;border:1px solid var(--rule);border-radius:12px;
  box-shadow:0 12px 40px rgba(33,26,16,0.18);padding:6px;display:flex;flex-direction:column;gap:2px;
}
.exec-input-menu button{
  border:none;background:transparent;text-align:left;padding:10px 12px;border-radius:8px;
  font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;
}
.exec-input-menu button:hover{background:rgba(111,77,45,0.1);}
.exec-input-menu button.danger{color:var(--bad);}
.exec-input-menu button.danger:hover{background:rgba(138,45,45,0.12);}

/* 右键/长按菜单渐入 */
.ax-ctx-menu,
.exec-input-menu,
.exec-tab-menu,
.context-menu{
  opacity:0;
  transform:translateY(6px) scale(0.96);
  transition:opacity .16s ease, transform .18s cubic-bezier(.2,.8,.2,1);
  transform-origin:top left;
}
.ax-ctx-menu.is-open,
.exec-input-menu.is-open,
.exec-tab-menu.is-open,
.context-menu.is-open,
.context-menu.show{
  opacity:1;
  transform:translateY(0) scale(1);
}


/* ===== Custom modal (replace native confirm/alert/prompt) ===== */
.ax-modal-root{
  position:fixed !important; left:0 !important; top:0 !important; right:0 !important; bottom:0 !important;
  z-index:2147483646 !important; display:flex !important; align-items:center; justify-content:center;
  padding:20px; background:rgba(33,26,16,0.5); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .18s ease, visibility .18s ease;
}
.ax-modal-root.is-open{
  opacity:1 !important; visibility:visible !important; pointer-events:auto !important;
}
.ax-modal-card{
  width:min(420px,100%); max-width:100%; background:#fffaf1 !important; border:1px solid rgba(33,26,16,0.12);
  border-radius:18px; box-shadow:0 24px 64px rgba(33,26,16,0.28);
  padding:22px 22px 16px; color:#211a10;
  transform:translateY(12px) scale(.96);
  transition:transform .2s cubic-bezier(.2,.8,.2,1);
}
.ax-modal-root.is-open .ax-modal-card{ transform:translateY(0) scale(1); }
.ax-modal-title{ margin:0 0 10px; font-size:17px; font-weight:700; letter-spacing:-0.02em; }
.ax-modal-body{ margin:0 0 18px; font-size:14px; line-height:1.65; white-space:pre-wrap; word-break:break-word; }
.ax-modal-input{
  width:100%; box-sizing:border-box; margin:0 0 16px; padding:10px 12px; border-radius:12px;
  border:1px solid rgba(33,26,16,0.15); background:#fff; font-size:14px; outline:none;
}
.ax-modal-input:focus{ border-color:#6f4d2d; box-shadow:0 0 0 3px rgba(111,77,45,0.12); }
.ax-modal-input.hidden{ display:none !important; }
.ax-modal-actions{ display:flex; justify-content:flex-end; gap:10px; flex-wrap:wrap; }
.ax-modal-actions button{ min-width:88px; cursor:pointer; }


/* ===== Custom select (replace native dropdown) ===== */
select.ax-select-native-hidden{
  position:absolute !important; opacity:0 !important; pointer-events:none !important;
  width:1px !important; height:1px !important; margin:0 !important; padding:0 !important;
  border:0 !important; clip:rect(0,0,0,0) !important;
}
.ax-select{
  position:relative; display:inline-block; vertical-align:middle;
  min-width:132px; max-width:200px; width:auto;
  font-family:var(--font); user-select:none; flex:0 0 auto;
}
.setting-card .ax-select{ max-width:168px; }
.ax-select-trigger{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  width:100%; min-height:40px; padding:8px 12px;
  border-radius:14px; border:1px solid var(--rule); background:#fffaf1;
  color:var(--ink); font-size:14px; font-weight:600; cursor:pointer;
  box-shadow:0 6px 18px rgba(33,26,16,0.06);
  transition:border-color .15s ease, box-shadow .15s ease;
}
.ax-select-trigger:hover{ border-color:rgba(111,77,45,0.35); }
.ax-select.is-open .ax-select-trigger{
  border-color:var(--accent); box-shadow:0 0 0 3px rgba(111,77,45,0.12);
}
.ax-select-value{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; text-align:left; }
.ax-select-caret{
  flex-shrink:0; width:16px; text-align:center; color:var(--muted);
  transition:transform .18s ease; font-size:12px; line-height:1;
}
.ax-select.is-open .ax-select-caret{ transform:rotate(180deg); }
.ax-select-menu{
  z-index:2147483640 !important; box-sizing:border-box;
  max-height:220px; overflow:auto; padding:6px;
  border-radius:14px; border:1px solid var(--rule); background:#fffaf1 !important;
  box-shadow:0 16px 40px rgba(33,26,16,0.18);
  opacity:0; transform:translateY(6px) scale(.98); pointer-events:none;
  transition:opacity .16s ease, transform .18s cubic-bezier(.2,.8,.2,1);
}
.ax-select.is-open ~ .ax-select-menu,
.ax-select.is-open .ax-select-menu,
body > .ax-select-menu{
  /* shown when parent open: controlled via JS class on wrap + menu visibility */
}
.ax-select.is-open + .ax-select-menu,
body > .ax-select-menu{
  opacity:0; pointer-events:none;
}
/* menu visible when select open: JS toggles class on menu */
.ax-select-menu.is-open{
  opacity:1 !important; transform:translateY(0) scale(1) !important; pointer-events:auto !important;
}
.ax-select-option{
  display:block; width:100%; box-sizing:border-box; text-align:left; border:none; background:transparent;
  padding:10px 12px; border-radius:10px; font-size:13px; font-weight:600;
  color:var(--ink); cursor:pointer; white-space:nowrap;
}
.ax-select-option:hover{ background:rgba(111,77,45,0.1); }
.ax-select-option.is-active{
  background:rgba(111,77,45,0.14); color:var(--accent);
}

/* ===== Site announcement banner ===== */
.ax-announce-banner{
  margin:0 0 16px; border-radius:16px; border:1px solid rgba(154,107,29,0.28);
  background:linear-gradient(135deg,rgba(154,107,29,0.12),rgba(111,77,45,0.08));
  box-shadow:0 10px 28px rgba(33,26,16,0.08);
}
.ax-announce-inner{
  display:flex; align-items:flex-start; gap:12px; padding:12px 14px;
}
.ax-announce-tag{
  flex-shrink:0; font-size:11px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  padding:3px 8px; border-radius:999px; background:rgba(154,107,29,0.18); color:#9a6b1d;
}
.ax-announce-text{
  flex:1; font-size:14px; line-height:1.55; color:var(--ink); white-space:pre-wrap; word-break:break-word;
}
.ax-announce-close{
  flex-shrink:0; width:28px; height:28px; border:none; border-radius:10px;
  background:transparent; color:var(--muted); font-size:18px; cursor:pointer; line-height:1;
}
.ax-announce-close:hover{ background:rgba(33,26,16,0.06); color:var(--ink); }

/* Cloudflare Turnstile */
.cf-turnstile-box{margin-top:12px;min-height:65px;display:flex;justify-content:center;}
.human-gate.ok{border-color:rgba(45,111,82,0.35);}
.human-gate.ok #humanGateState{color:var(--ok);}
