*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
[data-theme="black-dark"]{--cp:#E8E8E8;--cop:#000;--cbg:#000;--cobg:#F0F0F0;--cs:#080808;--cos:#F0F0F0;--csv:#111;--cosv:#606060;--co:rgba(255,255,255,0.07)}
[data-theme="black-light"]{--cp:#111;--cop:#fff;--cbg:#F2F2F2;--cobg:#111;--cs:#fff;--cos:#111;--csv:#E8E8E8;--cosv:#555;--co:rgba(0,0,0,0.08)}
[data-theme="candy-dark"]{--cp:#D0BCFF;--cop:#0F0A1A;--cbg:#0A0614;--cobg:#EDE8F5;--cs:#130D20;--cos:#EDE8F5;--csv:#1E1530;--cosv:#9988BB;--co:rgba(255,255,255,0.07)}
[data-theme="candy-light"]{--cp:#6750A4;--cop:#fff;--cbg:#FFFBFE;--cobg:#1C1B1F;--cs:#F3EEF8;--cos:#1C1B1F;--csv:#EAE3F2;--cosv:#49454F;--co:rgba(0,0,0,0.08)}
[data-theme="nautical-dark"]{--cp:#75D1EC;--cop:#001F29;--cbg:#000D12;--cobg:#E0E2E4;--cs:#001820;--cos:#E0E2E4;--csv:#002633;--cosv:#6A8B9A;--co:rgba(255,255,255,0.07)}
[data-theme="nautical-light"]{--cp:#006781;--cop:#fff;--cbg:#F0FAFF;--cobg:#001F29;--cs:#E0F4FB;--cos:#001F29;--csv:#C8EBF6;--cosv:#41484D;--co:rgba(0,0,0,0.08)}
[data-theme="grey-dark"]{--cp:#9E9E9E;--cop:#121212;--cbg:#0A0A0A;--cobg:#E0E0E0;--cs:#141414;--cos:#E0E0E0;--csv:#1C1C1C;--cosv:#707070;--co:rgba(255,255,255,0.07)}
[data-theme="grey-light"]{--cp:#424242;--cop:#fff;--cbg:#F5F5F5;--cobg:#212121;--cs:#FAFAFA;--cos:#212121;--csv:#EEEEEE;--cosv:#555;--co:rgba(0,0,0,0.08)}
body{--color-primary:var(--cp);--color-on-primary:var(--cop);--color-background:var(--cbg);--color-on-background:var(--cobg);--color-surface:var(--cs);--color-on-surface:var(--cos);--color-surface-variant:var(--csv);--color-on-surface-variant:var(--cosv);--color-outline:var(--co);font-family:'Inter',sans-serif;background:var(--color-background);color:var(--color-on-background);min-height:100vh;overflow-x:hidden;transition:background-color 0.4s,color 0.4s}
#bg-canvas{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}
#splash{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--color-background);transition:opacity 0.6s,transform 0.6s}
.splash-rings{position:relative;display:flex;align-items:center;justify-content:center;width:160px;height:160px}
.splash-ring1{position:absolute;width:160px;height:160px;border-radius:50%;border:1px solid var(--color-primary);opacity:0.25;animation:sRing 2.2s ease-out infinite}
.splash-ring2{position:absolute;width:140px;height:140px;border-radius:50%;border:1px solid var(--color-primary);opacity:0.4;animation:sRing 2.2s ease-out 0.35s infinite}
.splash-logo-box{width:112px;height:112px;border-radius:28px;background:#000;border:1px solid color-mix(in srgb,var(--color-primary) 30%,transparent);box-shadow:0 0 60px color-mix(in srgb,var(--color-primary) 25%,transparent),0 1px 0 rgba(255,255,255,0.18) inset;display:flex;align-items:center;justify-content:center;overflow:hidden;animation:sPop 0.7s cubic-bezier(0.34,1.56,0.64,1) both}
.splash-logo-box img{width:96px;height:96px;object-fit:contain;border-radius:20px}
.splash-name{font-family:'Syne',sans-serif;font-size:1.75rem;font-weight:800;letter-spacing:-0.5px;color:var(--color-on-surface);margin-top:20px;animation:sFade 0.6s 0.25s ease both}
.splash-tag{font-size:0.8rem;color:var(--color-on-surface-variant);margin-top:5px;animation:sFade 0.6s 0.4s ease both;letter-spacing:0.5px}
@keyframes sPop{from{transform:scale(0.3) rotate(-12deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
@keyframes sFade{from{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes sRing{0%{transform:scale(0.7);opacity:0.5}100%{transform:scale(1.8);opacity:0}}
.navbar{position:fixed;top:12px;left:12px;right:12px;z-index:100;background:color-mix(in srgb,var(--color-surface) 55%,transparent);backdrop-filter:blur(28px) saturate(2);-webkit-backdrop-filter:blur(28px) saturate(2);border:1px solid color-mix(in srgb,var(--color-primary) 16%,rgba(255,255,255,0.08));border-radius:22px;box-shadow:0 1px 0 rgba(255,255,255,0.10) inset,0 8px 40px rgba(0,0,0,0.3);height:3.4rem;padding:0 1rem;display:flex;align-items:center;justify-content:space-between}
.nav-brand{display:flex;align-items:center;gap:9px;text-decoration:none}
.nav-logo{width:30px;height:30px;border-radius:9px;overflow:hidden;background:#000;flex-shrink:0}
.nav-logo img{width:100%;height:100%;object-fit:cover}
.nav-title{font-family:'Syne',sans-serif;font-size:1rem;font-weight:800;color:var(--color-on-surface);letter-spacing:-0.2px;white-space:nowrap}
.nav-actions{display:flex;align-items:center;gap:0.35rem}
.nav-link{padding:0.45rem 0.875rem;border-radius:12px;font-size:0.82rem;font-weight:600;color:var(--color-on-surface-variant);text-decoration:none;transition:all 0.2s;white-space:nowrap}
.nav-link:hover{color:var(--color-on-surface);background:color-mix(in srgb,var(--color-primary) 10%,transparent)}
.nav-btn{width:34px;height:34px;border-radius:11px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-primary);position:relative;overflow:hidden;background:color-mix(in srgb,var(--color-primary) 13%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--color-primary) 20%,transparent);transition:transform 0.18s cubic-bezier(0.34,1.56,0.64,1),filter 0.18s;font-family:'Inter',sans-serif;font-size:0.7rem;font-weight:700;letter-spacing:0.5px}
.nav-btn::before{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(160deg,rgba(255,255,255,0.2) 0%,transparent 55%);pointer-events:none}
.nav-btn:hover{transform:translateY(-2px) scale(1.08);filter:brightness(1.12)}
.nav-btn:active{transform:scale(0.92)}
.nav-avatar{width:34px;height:34px;border-radius:11px;border:1px solid color-mix(in srgb,var(--color-primary) 25%,transparent);object-fit:cover}
#user-avatar-wrap{display:flex;align-items:center;gap:0.35rem}
.material-symbols-outlined{font-family:'Material Symbols Outlined';font-size:1.1rem;font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 24}
.spin{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.settings-panel{position:fixed;inset:0;z-index:500;background:rgba(0,0,0,0.55);backdrop-filter:blur(8px);display:none;align-items:flex-end;justify-content:center;padding:0 0 16px}
.settings-panel.open{display:flex}
.s-sheet{background:color-mix(in srgb,var(--color-surface) 90%,transparent);backdrop-filter:blur(28px) saturate(2);border:1px solid color-mix(in srgb,var(--color-primary) 16%,rgba(255,255,255,0.08));border-radius:24px;padding:1.25rem 1rem 1rem;width:calc(100% - 32px);max-width:440px;box-shadow:0 1px 0 rgba(255,255,255,0.10) inset,0 -8px 40px rgba(0,0,0,0.3);animation:slideUp 0.3s cubic-bezier(0.34,1.4,0.64,1) both}
@keyframes slideUp{from{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}
.s-title{font-family:'Syne',sans-serif;font-size:0.78rem;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--color-on-surface-variant);margin-bottom:0.875rem;text-align:center}
.s-group{font-size:0.7rem;font-weight:600;text-transform:uppercase;letter-spacing:0.9px;color:var(--color-on-surface-variant);margin:0.75rem 0 0.4rem}
.s-row{display:flex;gap:0.4rem;flex-wrap:wrap}
.s-btn{flex:1;min-width:calc(25% - 0.3rem);padding:0.5rem 0.3rem;border-radius:12px;border:1px solid var(--color-outline);background:color-mix(in srgb,var(--color-surface-variant) 55%,transparent);color:var(--color-on-surface-variant);font-family:'Inter',sans-serif;font-size:0.74rem;font-weight:600;cursor:pointer;transition:all 0.18s;display:flex;align-items:center;justify-content:center;gap:4px}
.s-btn:hover{border-color:var(--color-primary);color:var(--color-on-surface)}
.s-btn.active{background:color-mix(in srgb,var(--color-primary) 18%,transparent);color:var(--color-primary);border-color:var(--color-primary)}
.s-close{width:100%;margin-top:0.75rem;padding:0.8rem;border-radius:14px;border:none;cursor:pointer;background:color-mix(in srgb,var(--color-surface-variant) 65%,transparent);color:var(--color-on-surface);font-family:'Inter',sans-serif;font-size:0.875rem;font-weight:600;transition:opacity 0.2s}
.s-close:hover{opacity:0.75}
main{position:relative;z-index:1;max-width:1100px;margin:0 auto;padding:5.5rem 1rem 4rem;display:flex;flex-direction:column;gap:1.5rem}
.hero{text-align:center;padding:3rem 1rem 2rem;display:flex;flex-direction:column;align-items:center;gap:1.25rem;max-width:600px;margin:0 auto}
.hero-badge{display:inline-flex;align-items:center;gap:7px;padding:0.4rem 1rem;border-radius:100px;border:1px solid color-mix(in srgb,var(--color-primary) 30%,transparent);background:color-mix(in srgb,var(--color-primary) 8%,transparent);color:var(--color-primary);font-size:0.75rem;font-weight:600;letter-spacing:0.5px}
.hero-title{font-family:'Syne',sans-serif;font-size:clamp(2.2rem,7vw,3.5rem);font-weight:800;letter-spacing:-1.5px;line-height:1.05;color:var(--color-on-surface)}
.hero-title .accent{color:var(--color-primary)}
.hero-desc{font-size:1rem;line-height:1.7;color:var(--color-on-surface-variant);max-width:500px}
.hero-subnote{font-size:0.78rem;color:var(--color-on-surface-variant);max-width:420px;margin-top:0.5rem}
.hero-logo-wrap{position:relative;width:100px;height:100px;margin-bottom:0.5rem}
.hero-logo-ring{position:absolute;inset:-14px;border-radius:50%;border:1px solid color-mix(in srgb,var(--color-primary) 25%,transparent);animation:heroRing 3s ease-in-out infinite}
.hero-logo-ring2{position:absolute;inset:-7px;border-radius:50%;border:1px solid color-mix(in srgb,var(--color-primary) 15%,transparent);animation:heroRing 3s ease-in-out 1s infinite}
@keyframes heroRing{0%,100%{transform:scale(1);opacity:0.6}50%{transform:scale(1.05);opacity:1}}
.hero-logo{width:100px;height:100px;border-radius:26px;overflow:hidden;background:#000;border:1px solid color-mix(in srgb,var(--color-primary) 25%,transparent);box-shadow:0 0 50px color-mix(in srgb,var(--color-primary) 20%,transparent)}
.hero-logo img{width:100%;height:100%;object-fit:cover}
.btn-primary{display:inline-flex;align-items:center;gap:8px;padding:0.875rem 1.5rem;border-radius:16px;border:none;cursor:pointer;text-decoration:none;font-family:'Inter',sans-serif;font-size:0.9rem;font-weight:700;position:relative;overflow:hidden;background:color-mix(in srgb,var(--color-primary) 60%,transparent);color:var(--color-on-primary);backdrop-filter:blur(16px) saturate(2);box-shadow:0 1px 0 rgba(255,255,255,0.22) inset,0 -1px 0 rgba(0,0,0,0.12) inset,0 6px 24px color-mix(in srgb,var(--color-primary) 28%,transparent);transition:transform 0.18s cubic-bezier(0.34,1.56,0.64,1),filter 0.18s,box-shadow 0.18s}
.btn-primary::before{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(155deg,rgba(255,255,255,0.22) 0%,transparent 52%);pointer-events:none}
.btn-primary:hover{transform:translateY(-3px) scale(1.03);filter:brightness(1.1)}
.btn-primary:active{transform:scale(0.97)}
.btn-discord{background:#5865F2;color:#fff;box-shadow:0 1px 0 rgba(255,255,255,0.22) inset,0 -1px 0 rgba(0,0,0,0.12) inset,0 6px 24px rgba(88,101,242,0.4)}
.btn-secondary{display:inline-flex;align-items:center;gap:8px;padding:0.7rem 1.1rem;border-radius:14px;border:none;cursor:pointer;text-decoration:none;font-family:'Inter',sans-serif;font-size:0.85rem;font-weight:600;background:color-mix(in srgb,var(--color-surface-variant) 60%,transparent);color:var(--color-on-surface);box-shadow:0 1px 0 rgba(255,255,255,0.08) inset,0 0 0 1px var(--color-outline);transition:transform 0.18s cubic-bezier(0.34,1.56,0.64,1),filter 0.18s}
.btn-secondary:hover{transform:translateY(-2px);filter:brightness(1.08)}
.btn-danger{display:inline-flex;align-items:center;gap:8px;padding:0.7rem 1.1rem;border-radius:14px;border:1px solid rgba(239,68,68,0.3);cursor:pointer;background:rgba(239,68,68,0.12);color:#ef4444;font-family:'Inter',sans-serif;font-size:0.85rem;font-weight:600;transition:all 0.18s}
.btn-danger:hover{background:rgba(239,68,68,0.2)}
.card{background:color-mix(in srgb,var(--color-surface) 45%,transparent);border:1px solid color-mix(in srgb,var(--color-primary) 12%,rgba(255,255,255,0.06));border-radius:24px;padding:1.75rem;backdrop-filter:blur(20px) saturate(1.6);box-shadow:0 1px 0 rgba(255,255,255,0.07) inset,0 4px 32px rgba(0,0,0,0.2);position:relative;overflow:hidden}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--color-primary) 35%,transparent),transparent);pointer-events:none}
.card-header{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1.5rem}
.card-icon{width:52px;height:52px;border-radius:16px;flex-shrink:0;background:color-mix(in srgb,var(--color-primary) 14%,transparent);border:1px solid color-mix(in srgb,var(--color-primary) 22%,transparent);display:flex;align-items:center;justify-content:center;font-size:1.6rem}
.card-title-wrap{flex:1}
.card-label{font-size:0.7rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--color-primary);margin-bottom:4px}
.card-title{font-family:'Syne',sans-serif;font-size:1.4rem;font-weight:800;letter-spacing:-0.4px;color:var(--color-on-surface);line-height:1.2}
.card-subtitle{font-size:0.825rem;color:var(--color-on-surface-variant);margin-top:3px}
.guild-list{display:flex;flex-direction:column;gap:0.6rem}
.guild-item{display:flex;align-items:center;gap:1rem;padding:0.875rem 1rem;border-radius:16px;background:color-mix(in srgb,var(--color-surface-variant) 50%,transparent);border:1px solid var(--color-outline);cursor:pointer;transition:all 0.18s;text-decoration:none;color:inherit}
.guild-item:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--color-primary) 35%,transparent);background:color-mix(in srgb,var(--color-primary) 8%,transparent)}
.guild-icon{width:44px;height:44px;border-radius:12px;flex-shrink:0;background:var(--color-surface-variant);object-fit:cover}
.guild-icon-placeholder{width:44px;height:44px;border-radius:12px;flex-shrink:0;background:color-mix(in srgb,var(--color-primary) 18%,transparent);display:flex;align-items:center;justify-content:center;font-family:'Syne',sans-serif;font-weight:800;color:var(--color-primary);font-size:1.1rem}
.guild-meta-text{flex:1;min-width:0}
.guild-name-row{font-family:'Syne',sans-serif;font-size:1rem;font-weight:700;color:var(--color-on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.guild-sub{font-size:0.75rem;color:var(--color-on-surface-variant);margin-top:2px}
.guild-arrow{color:var(--color-on-surface-variant);flex-shrink:0}
.loading-row{display:flex;align-items:center;justify-content:center;gap:8px;padding:1.5rem;color:var(--color-on-surface-variant);font-size:0.875rem}
.dashboard-header{padding:0.5rem 0}
.dashboard-title{font-family:'Syne',sans-serif;font-size:clamp(1.6rem,4vw,2.2rem);font-weight:800;color:var(--color-on-surface);margin-top:6px}
.guild-page{max-width:1200px}
.guild-header{display:flex;align-items:center;gap:1.25rem;padding:0.5rem 0 1rem;flex-wrap:wrap}
.guild-icon-large{width:80px;height:80px;border-radius:20px;border:1px solid color-mix(in srgb,var(--color-primary) 25%,transparent);object-fit:cover;flex-shrink:0}
.guild-name{font-family:'Syne',sans-serif;font-size:clamp(1.6rem,4vw,2.2rem);font-weight:800;color:var(--color-on-surface);margin-top:6px}
.guild-meta{font-size:0.85rem;color:var(--color-on-surface-variant);margin-top:4px}
.guild-layout{display:grid;grid-template-columns:240px 1fr;gap:1rem;align-items:start}
.modules-sidebar{display:flex;flex-direction:column;gap:0.3rem;background:color-mix(in srgb,var(--color-surface) 45%,transparent);border:1px solid color-mix(in srgb,var(--color-primary) 12%,rgba(255,255,255,0.06));border-radius:20px;padding:0.75rem;position:sticky;top:5.5rem;backdrop-filter:blur(20px) saturate(1.6)}
.module-btn{display:flex;align-items:center;gap:10px;padding:0.7rem 0.875rem;border-radius:12px;border:none;cursor:pointer;background:transparent;color:var(--color-on-surface-variant);font-family:'Inter',sans-serif;font-size:0.875rem;font-weight:600;text-align:left;transition:all 0.18s}
.module-btn:hover{background:color-mix(in srgb,var(--color-primary) 8%,transparent);color:var(--color-on-surface)}
.module-btn.active{background:color-mix(in srgb,var(--color-primary) 16%,transparent);color:var(--color-primary)}
.module-icon{font-size:1.2rem;width:24px;text-align:center}
.module-name{flex:1}
.module-content{background:color-mix(in srgb,var(--color-surface) 45%,transparent);border:1px solid color-mix(in srgb,var(--color-primary) 12%,rgba(255,255,255,0.06));border-radius:24px;padding:1.75rem;backdrop-filter:blur(20px) saturate(1.6);min-height:400px}
.form-group{margin-bottom:1.25rem}
.form-label{display:block;font-size:0.78rem;font-weight:600;color:var(--color-on-surface-variant);margin-bottom:0.4rem;letter-spacing:0.3px}
.form-input,.form-textarea,.form-select{width:100%;padding:0.7rem 0.875rem;border-radius:12px;border:1px solid var(--color-outline);background:color-mix(in srgb,var(--color-surface-variant) 50%,transparent);color:var(--color-on-surface);font-family:'Inter',sans-serif;font-size:0.875rem;transition:border-color 0.18s,background 0.18s}
.form-input:focus,.form-textarea:focus,.form-select:focus{outline:none;border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 5%,transparent)}
.form-textarea{min-height:80px;resize:vertical}
.form-hint{font-size:0.72rem;color:var(--color-on-surface-variant);margin-top:0.3rem;line-height:1.5}
.form-toggle-row{display:flex;align-items:center;gap:10px;padding:0.7rem 0.875rem;border-radius:12px;border:1px solid var(--color-outline);background:color-mix(in srgb,var(--color-surface-variant) 50%,transparent);margin-bottom:0.4rem;cursor:pointer;transition:all 0.18s}
.form-toggle-row:hover{border-color:color-mix(in srgb,var(--color-primary) 30%,transparent)}
.form-toggle-icon{font-size:1.1rem;width:24px;text-align:center}
.form-toggle-text{flex:1;font-size:0.875rem;font-weight:500}
.form-toggle-switch{width:38px;height:22px;border-radius:100px;background:var(--color-surface-variant);position:relative;flex-shrink:0;transition:background 0.18s}
.form-toggle-switch::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform 0.18s}
.form-toggle-row.on .form-toggle-switch{background:var(--color-primary)}
.form-toggle-row.on .form-toggle-switch::after{transform:translateX(16px)}
.form-actions{display:flex;gap:0.6rem;flex-wrap:wrap;margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--color-outline)}
.diag-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0.75rem;margin-top:1rem}
.diag-item{background:color-mix(in srgb,var(--color-surface-variant) 45%,transparent);border:1px solid var(--color-outline);border-radius:14px;padding:1rem}
.diag-item.ok{border-color:rgba(34,197,94,0.3);background:rgba(34,197,94,0.05)}
.diag-emoji{font-size:1.4rem;margin-bottom:6px}
.diag-title{font-family:'Syne',sans-serif;font-size:0.95rem;font-weight:700;color:var(--color-on-surface);margin-bottom:4px}
.diag-status{font-size:0.78rem;color:var(--color-on-surface-variant);line-height:1.5}
.diag-status .green{color:#22c55e}
.diag-status .red{color:#ef4444}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(120%);background:color-mix(in srgb,var(--color-surface) 95%,transparent);border:1px solid color-mix(in srgb,var(--color-primary) 25%,transparent);border-radius:14px;padding:0.75rem 1.25rem;font-size:0.875rem;font-weight:600;color:var(--color-on-surface);backdrop-filter:blur(20px);box-shadow:0 8px 32px rgba(0,0,0,0.4);z-index:1000;transition:transform 0.3s cubic-bezier(0.34,1.56,0.64,1)}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.success{border-color:rgba(34,197,94,0.4)}
.toast.error{border-color:rgba(239,68,68,0.4)}
footer{position:relative;z-index:1;text-align:center;padding:1rem 1rem 2.5rem;font-size:0.78rem;color:var(--color-on-surface-variant)}
footer a{color:var(--color-primary);text-decoration:none}
@media(max-width:900px){.guild-layout{grid-template-columns:1fr}.modules-sidebar{position:relative;top:0;flex-direction:row;overflow-x:auto;padding:0.5rem;gap:0.3rem}.module-btn{white-space:nowrap;flex-shrink:0;padding:0.5rem 0.75rem}.module-name{font-size:0.8rem}}
@media(max-width:600px){.navbar{left:8px;right:8px;top:8px}main{padding:5rem 0.75rem 3rem;gap:1rem}.card,.module-content{padding:1.25rem}.hero{padding:1.5rem 0.5rem 1rem}.nav-link{display:none}}
