:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.markdown-content{color:inherit;line-height:1.65;word-break:break-word}.markdown-content>:first-child{margin-top:0}.markdown-content>:last-child{margin-bottom:0}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{line-height:1.3;margin:1.2em 0 .55em;font-weight:700}.markdown-content h1{font-size:1.5rem}.markdown-content h2{font-size:1.3rem}.markdown-content h3{font-size:1.15rem}.markdown-content p{margin:.7em 0}.markdown-content ul,.markdown-content ol{margin:.65em 0;padding-left:1.4em}.markdown-content li+li{margin-top:.2em}.markdown-content blockquote{margin:1em 0;padding:.7em .9em;border-left:3px solid rgba(99,102,241,.7);background:#6366f11a;border-radius:0 8px 8px 0}.markdown-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.9em;background:#0f172aa6;border:1px solid rgba(148,163,184,.25);border-radius:6px;padding:.1em .35em}.markdown-content pre{margin:.9em 0;padding:.85em;background:#020617bf;border:1px solid rgba(148,163,184,.2);border-radius:10px;overflow:auto}.markdown-content pre code{background:transparent;border:0;padding:0}.markdown-content a{color:#93c5fd;text-decoration:underline;text-underline-offset:2px}.markdown-content a:hover{color:#bfdbfe}.markdown-content hr{border:0;border-top:1px solid rgba(148,163,184,.35);margin:1.2em 0}.markdown-content table{width:100%;border-collapse:collapse;margin:.9em 0}.markdown-content th,.markdown-content td{border:1px solid rgba(148,163,184,.3);padding:.45em .6em;text-align:left}.markdown-content th{background:#1e293b99}.markdown-content img{max-width:100%;height:auto;border-radius:8px;display:block;margin:.9em 0}.account-link-card{display:flex;align-items:center;gap:1rem;background:#ffffff0d;padding:1rem 1.25rem;border-radius:12px;border:1px solid rgba(255,255,255,.1)}.account-link-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#ffffff1a;border-radius:10px}.account-link-info{flex:1}.account-link-name{color:#fff;font-size:1rem;font-weight:500;margin:0 0 .125rem}.account-link-status{color:#ffffff80;font-size:.8rem;margin:0}.account-link-error{color:#fca5a5;font-size:.75rem;margin:.25rem 0 0}.account-link-btn,.account-unlink-btn{padding:.5rem 1rem;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;border:none}.account-link-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.account-link-btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.account-unlink-btn{background:transparent;border:1px solid rgba(255,255,255,.2);color:#ffffffb3}.account-unlink-btn:hover:not(:disabled){background:#ffffff0d;border-color:#ffffff4d}.account-link-btn:disabled,.account-unlink-btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:480px){.account-link-card{flex-wrap:wrap;padding:.875rem 1rem;gap:.75rem}.account-link-icon{width:36px;height:36px}.account-link-info{flex:1;min-width:0}.account-link-name{font-size:.9rem}.account-link-status{font-size:.75rem}.account-link-btn,.account-unlink-btn{padding:.4rem .75rem;font-size:.8rem}}@media(max-width:360px){.account-link-card{padding:.75rem}.account-link-icon{width:32px;height:32px}.account-link-icon svg{width:16px;height:16px}.account-link-name{font-size:.85rem}.account-link-btn,.account-unlink-btn{padding:.35rem .625rem;font-size:.75rem}}.language-selector{display:flex;gap:.5rem}.language-btn{padding:.5rem 1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:#ffffffb3;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s}.language-btn:hover{background:#ffffff1a;border-color:#fff3}.language-btn.active{background:#6366f14d;border-color:#6366f180;color:#fff}.settings-modal-overlay{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:2000;padding:max(1rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left))}.settings-modal{background:linear-gradient(135deg,#1a1a2e,#16213e);border:1px solid rgba(102,126,234,.3);border-radius:16px;width:100%;max-width:600px;max-height:85vh;max-height:calc(100dvh - 2rem - env(safe-area-inset-top) - env(safe-area-inset-bottom));display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080}.settings-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.settings-modal-header h2{margin:0;font-size:1.25rem;color:#fff}.settings-modal-close{width:36px;height:36px;border:none;background:#ffffff1a;color:#ffffffb3;border-radius:8px;font-size:1.5rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.settings-modal-close:hover{background:#ffffff26;color:#fff}.settings-modal-content{flex:1;overflow-y:auto;padding:1.5rem;-webkit-overflow-scrolling:touch}.settings-section{margin-bottom:2rem}.settings-section h3{font-size:1.1rem;color:#fff;margin:0 0 .75rem}.settings-section-desc{color:#fff9;font-size:.85rem;margin:-.25rem 0 .75rem}.settings-message{padding:.75rem 1rem;border-radius:8px;margin-bottom:1.25rem;font-size:.9rem}.settings-message-success{background:#22c55e33;border:1px solid rgba(34,197,94,.5);color:#86efac}.settings-message-error{background:#ef444433;border:1px solid rgba(239,68,68,.5);color:#fca5a5}.profile-card{display:flex;align-items:center;gap:1rem;background:#ffffff0d;padding:1.25rem;border-radius:12px;border:1px solid rgba(255,255,255,.1)}.profile-avatar{width:56px;height:56px;border-radius:50%;object-fit:cover}.profile-info{flex:1}.profile-name{color:#fff;font-size:1.05rem;font-weight:500;margin:0}.profile-name-display{display:flex;align-items:center;gap:.75rem;margin-bottom:.25rem}.profile-name-edit-btn{padding:.25rem .5rem;background:transparent;border:1px solid rgba(255,255,255,.2);color:#ffffffb3;border-radius:4px;font-size:.75rem;cursor:pointer;transition:all .2s}.profile-name-edit-btn:hover{background:#ffffff1a;border-color:#ffffff4d}.profile-name-edit{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.25rem}.profile-name-input{padding:.5rem .75rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#fff;font-size:1rem;outline:none;transition:border-color .2s}.profile-name-input:focus{border-color:#fff6}.profile-name-input::placeholder{color:#fff6}.profile-name-error{color:#fca5a5;font-size:.8rem;line-height:1.3}.profile-name-actions{display:flex;gap:.5rem}.profile-name-save-btn{padding:.375rem .75rem;background:#22c55ecc;border:none;color:#fff;border-radius:4px;font-size:.85rem;cursor:pointer;transition:all .2s}.profile-name-save-btn:hover:not(:disabled){background:#22c55e}.profile-name-save-btn:disabled{opacity:.5;cursor:not-allowed}.profile-name-cancel-btn{padding:.375rem .75rem;background:transparent;border:1px solid rgba(255,255,255,.2);color:#ffffffb3;border-radius:4px;font-size:.85rem;cursor:pointer;transition:all .2s}.profile-name-cancel-btn:hover:not(:disabled){background:#ffffff1a}.profile-name-cancel-btn:disabled{opacity:.5;cursor:not-allowed}.profile-email{color:#fff9;font-size:.85rem;margin:0}.account-cards{display:flex;flex-direction:column;gap:.75rem}.account-actions{display:flex;gap:.75rem;flex-wrap:wrap}.logout-btn{padding:.6rem 1.25rem;background:#ef444433;border:1px solid rgba(239,68,68,.5);color:#fca5a5;border-radius:8px;font-size:.9rem;cursor:pointer;transition:all .2s}.logout-btn:hover{background:#ef44444d;border-color:#ef4444b3}.delete-account-btn{padding:.6rem 1.25rem;background:transparent;border:1px solid rgba(255,255,255,.2);color:#fff9;border-radius:8px;font-size:.9rem;cursor:pointer;transition:all .2s}.delete-account-btn:hover{background:#ef44441a;border-color:#ef444480;color:#fca5a5}.character-loading-inline{display:flex;justify-content:center;padding:1rem}.spinner-small{width:24px;height:24px;border:2px solid rgba(255,255,255,.1);border-top-color:#fff9;border-radius:50%;animation:spin .8s linear infinite}.character-list-settings{display:flex;flex-direction:column;gap:.6rem}.character-item{display:flex;align-items:center;gap:.75rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.75rem;transition:all .2s}.character-item:hover{background:#ffffff14}.character-item.active{border-color:#667eea80;background:#667eea1a}.character-item-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:1rem;font-weight:700;color:#fff;flex-shrink:0;overflow:hidden}.character-item-avatar img{width:100%;height:100%;object-fit:cover}.character-item-info{flex:1;display:flex;flex-direction:column;gap:.125rem}.character-item-name{color:#fff;font-weight:500;font-size:.95rem}.character-item-class{font-size:.72rem;color:#667eeaf2}.character-item-active{font-size:.7rem;color:#667eeae6}.character-item-actions{display:flex;gap:.375rem;align-items:center}.character-switch-btn{padding:.35rem .7rem;background:#667eeacc;border:none;color:#fff;border-radius:5px;font-size:.75rem;cursor:pointer;transition:all .2s}.character-switch-btn:hover{background:#667eea}.character-edit-btn-small,.character-delete-btn-small{width:26px;height:26px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid rgba(255,255,255,.2);color:#fff9;border-radius:5px;cursor:pointer;transition:all .2s}.character-edit-btn-small:hover{background:#ffffff1a;border-color:#ffffff4d;color:#fff}.character-delete-btn-small:hover{background:#ef444433;border-color:#ef444480;color:#fca5a5}.character-add-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.7rem;background:transparent;border:1px dashed rgba(255,255,255,.2);border-radius:10px;color:#fff9;font-size:.85rem;cursor:pointer;transition:all .2s}.character-add-btn:hover{background:#ffffff0d;border-color:#667eea80;color:#fff}.character-add-btn .character-add-icon{font-size:1.25rem;font-weight:300}.achievements-list{display:flex;flex-direction:column;gap:.6rem}.achievement-badge{display:flex;align-items:center;gap:.75rem;background:linear-gradient(135deg,#fbbf2433,#f59e0b1a);border:1px solid rgba(251,191,36,.3);border-radius:10px;padding:.875rem}.achievement-icon{font-size:1.75rem}.achievement-info{display:flex;flex-direction:column;gap:.2rem}.achievement-name{color:#fbbf24;font-weight:600;font-size:.95rem}.achievement-desc{color:#fff9;font-size:.8rem}.hero-appearance-list{display:flex;gap:.75rem;flex-wrap:wrap}.hero-appearance-item{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.75rem;background:#ffffff0d;border:2px solid rgba(255,255,255,.1);border-radius:10px;cursor:pointer;transition:all .2s;min-width:100px}.hero-appearance-item:hover{background:#ffffff14;border-color:#fff3}.hero-appearance-item.selected{border-color:#667eeab3;background:#667eea26}.hero-appearance-preview{width:64px;height:64px;object-fit:cover;border-radius:8px}.hero-appearance-name{color:#fff;font-size:.8rem;font-weight:500}.hero-appearance-selected{font-size:.7rem;color:#667eeae6;background:#667eea33;padding:.15rem .4rem;border-radius:4px}.controls-grid{display:grid;grid-template-columns:1fr;gap:1rem}.controls-group{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1rem;grid-column:1 / -1}.controls-grid:has(.controls-group:nth-child(2)) .controls-group{grid-column:auto}.controls-group-title{margin:0 0 .75rem;color:#ffffffe6;font-size:.95rem;font-weight:600}.controls-toggle{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.65rem .25rem;color:#ffffffd9}.controls-label{font-size:.9rem}.controls-toggle input[type=checkbox],.controls-toggle input[type=radio]{width:18px;height:18px;accent-color:rgba(102,126,234,1)}@media(min-width:520px){.controls-grid{grid-template-columns:1fr 1fr}}.sound-settings{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1rem;display:flex;flex-direction:column;gap:1rem}.sound-setting-row{display:flex;align-items:center;gap:1rem}.sound-toggle{display:flex;align-items:center;gap:.5rem;min-width:120px;cursor:pointer}.sound-toggle input[type=checkbox]{width:18px;height:18px;accent-color:rgba(102,126,234,1);cursor:pointer}.sound-label{color:#ffffffd9;font-size:.9rem}.sound-slider{flex:1;height:6px;-webkit-appearance:none;appearance:none;background:#ffffff26;border-radius:3px;outline:none;cursor:pointer}.sound-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;background:#667eea;border-radius:50%;cursor:pointer;transition:transform .15s}.sound-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.sound-slider::-moz-range-thumb{width:18px;height:18px;background:#667eea;border-radius:50%;border:none;cursor:pointer}.sound-slider:disabled{opacity:.4;cursor:not-allowed}.sound-slider:disabled::-webkit-slider-thumb{cursor:not-allowed}.sound-slider:disabled::-moz-range-thumb{cursor:not-allowed}.settings-version{text-align:center;color:#ffffff4d;font-size:.75rem;padding:.75rem 0;margin-top:.5rem}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2100;padding:1rem}.modal-content{background:#1a1a2e;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.25rem;max-width:360px;width:100%}.modal-content h3{color:#fff;margin:0 0 .75rem;font-size:1.1rem}.modal-content p{color:#ffffffb3;font-size:.85rem;line-height:1.5;margin:0 0 1.25rem}.modal-actions{display:flex;gap:.6rem;justify-content:flex-end}.modal-cancel-btn{padding:.5rem .9rem;background:transparent;border:1px solid rgba(255,255,255,.2);color:#fffc;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .2s}.modal-delete-btn{padding:.5rem .9rem;background:#ef4444cc;border:none;color:#fff;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .2s}.modal-input{width:100%;padding:.65rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;font-size:.95rem;margin-bottom:1rem;outline:none;transition:border-color .2s;box-sizing:border-box}.character-class-label{margin:0 0 .45rem;color:#ffffffd9;font-size:.82rem}.character-class-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;margin-bottom:.45rem}.character-class-item{background:#ffffff0d;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:.45rem .3rem;color:#ffffffe6;font-size:.72rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.35rem;transition:all .2s}.character-class-preview{width:44px;height:44px;border-radius:6px;object-fit:cover}.character-class-help{margin:0 0 .9rem;color:#ffffff8c;font-size:.72rem}.modal-confirm-btn{padding:.5rem .9rem;background:#667eeacc;border:none;color:#fff;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .2s}@media(max-width:600px){.settings-modal{border-radius:12px}.settings-modal-header,.settings-modal-content{padding:1rem 1.25rem}.character-class-list{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-card{flex-direction:column;text-align:center;gap:.75rem}.profile-name-display{justify-content:center;flex-wrap:wrap}.account-actions{flex-direction:column}.logout-btn,.delete-account-btn{width:100%;justify-content:center}.modal-actions{flex-direction:column-reverse}.modal-cancel-btn,.modal-delete-btn,.modal-confirm-btn{width:100%}}.header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:#0009;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.1);position:fixed;top:0;left:0;right:0;z-index:300}.header-left{display:flex;align-items:center;gap:.75rem}.header-logo{font-size:1.5rem;font-weight:700;color:#fff;text-decoration:none}.header-version{font-size:.7rem;color:#ffffff80;background:#ffffff1a;padding:.2rem .5rem;border-radius:4px}.header-right{display:flex;align-items:center;gap:1rem}.header-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.header-name{color:#fff;font-size:.9rem}.header-settings-btn{display:flex;align-items:center;justify-content:center;padding:.5rem;background:transparent;border:none;color:#fff;cursor:pointer;border-radius:8px;transition:background .2s}.header-settings-btn:hover{background:#ffffff1a}@media(max-width:480px){.header{padding:.75rem 1rem}.header-left{gap:.5rem}.header-logo{font-size:1.25rem}.header-version{font-size:.6rem;padding:.15rem .4rem}.header-right{gap:.5rem}.header-avatar{width:28px;height:28px}.header-name{display:none}.header-settings-btn{padding:.375rem}}@media(max-width:360px){.header{padding:.625rem .75rem}.header-logo{font-size:1.1rem}.header-version{font-size:.55rem}.header-avatar{width:26px;height:26px}}.header-announcements-btn{position:relative;display:flex;align-items:center;justify-content:center;padding:.5rem;background:transparent;border:none;color:#fff;cursor:pointer;border-radius:8px;transition:background .2s;touch-action:manipulation}.header-announcements-btn:hover{background:#ffffff1a}.header-announcements-count{position:absolute;top:0;right:0;background:#ef4444;color:#fff;font-size:.65rem;font-weight:600;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px}.header-announcements-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:2100;padding:1rem}.header-announcements-modal{background:#1e293b;border:1px solid rgba(255,255,255,.1);border-radius:12px;max-width:500px;width:100%;max-height:80vh;display:flex;flex-direction:column}.header-announcements-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.1)}.header-announcements-modal-header h2{color:#fff;margin:0;font-size:1.25rem}.header-announcements-modal-close{background:transparent;border:none;color:#fff9;font-size:1.75rem;cursor:pointer;padding:0;line-height:1}.header-announcements-modal-close:hover{color:#fff}.header-announcements-modal-content{flex:1;overflow-y:auto;padding:1rem 1.25rem}.announcements-list{display:flex;flex-direction:column;gap:.75rem}.announcements-empty{margin:0;color:#ffffffa6;font-size:.95rem}.announcement-list-item{padding:1rem;background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:8px;cursor:pointer;transition:all .2s}.announcement-list-item:hover{background:#ffffff0f;border-color:#6366f14d}.announcement-list-title{color:#fff;margin:0 0 .25rem;font-size:1rem;font-weight:500}.announcement-list-date{color:#fff6;font-size:.8rem}.announcement-detail{display:flex;flex-direction:column}.announcement-back-btn{align-self:flex-start;background:transparent;border:none;color:#a5b4fc;font-size:.9rem;cursor:pointer;padding:0;margin-bottom:1rem}.announcement-back-btn:hover{color:#c7d2fe}.announcement-detail-title{color:#fff;margin:0 0 .5rem;font-size:1.25rem;font-weight:600}.announcement-detail-date{color:#fff6;font-size:.85rem;margin-bottom:1rem;display:block}.announcement-detail-content{color:#ffffffd9;font-size:.95rem;line-height:1.6;overflow-wrap:anywhere}@media(max-width:480px){.header-announcements-btn{padding:.375rem}.header-announcements-count{font-size:.6rem;min-width:14px;height:14px}.header-announcements-modal{margin:0 .5rem;max-height:85vh}.header-announcements-modal-header{padding:.875rem 1rem}.header-announcements-modal-header h2{font-size:1.1rem}.header-announcements-modal-content{padding:.875rem 1rem}.announcement-list-item{padding:.875rem}.announcement-detail-title{font-size:1.1rem}}.vote-buttons{display:flex;align-items:center;gap:.25rem}.vote-buttons.vertical{flex-direction:column}.vote-buttons.horizontal{flex-direction:row}.vote-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;background:transparent;color:#ffffff80;border-radius:4px;cursor:pointer;transition:all .15s}.vote-btn svg{display:block;color:inherit;stroke:currentColor}.vote-btn svg *{stroke:currentColor}.vote-btn:hover:not(:disabled){background:#ffffff1a}.vote-btn:disabled{opacity:.4;cursor:not-allowed}.vote-btn.upvote.active{color:#f97316}.vote-btn.downvote.active{color:#3b82f6}.vote-btn.upvote:hover:not(:disabled):not(.active){color:#f97316b3}.vote-btn.downvote:hover:not(:disabled):not(.active){color:#3b82f6b3}.vote-count{font-size:.85rem;font-weight:600;color:#fffc;min-width:20px;text-align:center}.vote-count.positive{color:#f97316}.vote-count.negative{color:#3b82f6}.comment-item{padding-top:.75rem}.comment-item:first-child{padding-top:0}.comment-main{display:flex;gap:.5rem}.comment-vote{flex-shrink:0}.comment-content-wrapper{flex:1;min-width:0}.comment-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.comment-author{font-size:.85rem;font-weight:600;color:#ffffffe6}.comment-time{font-size:.75rem;color:#fff6}.comment-body{font-size:.9rem;color:#fffc;line-height:1.5;word-wrap:break-word;white-space:pre-wrap}.comment-body.deleted{color:#fff6;font-style:italic}.comment-actions{display:flex;gap:.75rem;margin-top:.5rem}.comment-action-btn{background:none;border:none;color:#ffffff80;font-size:.8rem;cursor:pointer;padding:0;transition:color .15s}.comment-action-btn:hover{color:#fffc}.comment-action-btn.delete:hover{color:#ef4444}.comment-reply-form{margin-top:.75rem;padding:.75rem;background:#ffffff08;border-radius:8px}.comment-reply-form textarea{width:100%;padding:.75rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#fff;font-size:.9rem;font-family:inherit;resize:vertical;min-height:80px;box-sizing:border-box}.comment-reply-form textarea:focus{outline:none;border-color:#667eea80}.comment-reply-form textarea::placeholder{color:#fff6}.comment-reply-form textarea:disabled{opacity:.5}.comment-reply-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}.comment-reply-actions .cancel-btn{padding:.5rem 1rem;background:transparent;border:1px solid rgba(255,255,255,.2);color:#ffffffb3;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .15s}.comment-reply-actions .cancel-btn:hover:not(:disabled){background:#ffffff1a}.comment-reply-actions .submit-btn{padding:.5rem 1rem;background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .15s}.comment-reply-actions .submit-btn:hover:not(:disabled){transform:translateY(-1px)}.comment-reply-actions .submit-btn:disabled{opacity:.5;cursor:not-allowed}.comment-replies{margin-left:1rem;padding-left:1rem;border-left:2px solid rgba(255,255,255,.1);margin-top:.75rem}.comment-item.depth-3 .comment-replies,.comment-item.depth-4 .comment-replies,.comment-item.depth-5 .comment-replies,.comment-item.depth-6 .comment-replies,.comment-item.depth-7 .comment-replies,.comment-item.depth-8 .comment-replies,.comment-item.depth-9 .comment-replies,.comment-item.depth-10 .comment-replies{margin-left:.5rem;padding-left:.5rem}@media(max-width:480px){.comment-replies{margin-left:.5rem;padding-left:.5rem}}.comment-list{margin-top:2rem}.comment-list-title{font-size:1.1rem;color:#fff;margin:0 0 1rem;padding-bottom:.75rem;border-bottom:1px solid rgba(255,255,255,.1)}.comment-form{margin-bottom:1.5rem}.comment-form textarea{width:100%;padding:1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:#fff;font-size:.95rem;font-family:inherit;resize:vertical;min-height:100px;box-sizing:border-box;transition:border-color .2s}.comment-form textarea:focus{outline:none;border-color:#667eea80}.comment-form textarea::placeholder{color:#fff6}.comment-form textarea:disabled{opacity:.5}.comment-form-actions{display:flex;justify-content:flex-end;margin-top:.75rem}.comment-form-actions .submit-btn{padding:.6rem 1.25rem;background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;border-radius:8px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.comment-form-actions .submit-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.comment-form-actions .submit-btn:disabled{opacity:.5;cursor:not-allowed}.comment-login-notice{background:#fbbf241a;border:1px solid rgba(251,191,36,.3);color:#fbbf24;padding:.75rem 1rem;border-radius:8px;font-size:.9rem;text-align:center;margin-bottom:1.5rem}.comments-container{display:flex;flex-direction:column}.no-comments{text-align:center;color:#ffffff80;padding:2rem;font-size:.95rem}.board-overlay{position:fixed;inset:0;background:#000000d9;display:flex;align-items:center;justify-content:center;z-index:2000;padding:1rem}.board-container{background:linear-gradient(135deg,#1a1a2e,#16213e);border:1px solid rgba(102,126,234,.3);border-radius:16px;width:100%;max-width:700px;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080}.board-header{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.board-back-btn{width:36px;height:36px;border:none;background:#ffffff1a;color:#fffc;border-radius:8px;font-size:1.25rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.board-back-btn:hover{background:#ffffff26;color:#fff}.board-title{flex:1;font-size:1.2rem;color:#fff;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-close-btn{width:36px;height:36px;border:none;background:#ffffff1a;color:#ffffffb3;border-radius:8px;font-size:1.5rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.board-close-btn:hover{background:#ffffff26;color:#fff}.board-content{flex:1;overflow-y:auto;padding:1rem 1.25rem}.board-loading,.board-error{text-align:center;padding:3rem;color:#fff9}.board-error{color:#fca5a5}.board-list{display:flex;flex-direction:column;gap:.75rem}.board-item{display:block;width:100%;text-align:left;padding:1rem 1.25rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:10px;cursor:pointer;transition:all .2s}.board-item:hover{background:#ffffff14;border-color:#667eea4d}.board-item-name{font-size:1.05rem;font-weight:600;color:#fff;margin-bottom:.25rem}.board-item-desc{font-size:.85rem;color:#ffffff80}.post-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.sort-tabs{display:flex;gap:.5rem}.sort-tab{padding:.5rem 1rem;background:transparent;border:1px solid rgba(255,255,255,.15);color:#fff9;border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .2s}.sort-tab:hover{background:#ffffff0d;color:#fffc}.sort-tab.active{background:#667eea33;border-color:#667eea66;color:#fff}.create-post-btn{padding:.5rem 1rem;background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.create-post-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.post-list{display:flex;flex-direction:column;gap:.5rem}.no-posts{text-align:center;color:#ffffff80;padding:3rem}.post-item{display:flex;gap:.75rem;padding:.75rem;background:#ffffff08;border-radius:8px;transition:background .15s}.post-item:hover{background:#ffffff0f}.post-vote{flex-shrink:0}.post-content{flex:1;min-width:0;cursor:pointer}.post-title{font-size:1rem;font-weight:500;color:#fff;margin-bottom:.35rem;line-height:1.4}.post-preview{font-size:.85rem;color:#ffffffa6;line-height:1.4;margin-bottom:.35rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-meta{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.8rem;color:#ffffff80}.post-author{color:#ffffffb3}.post-view{padding-bottom:1rem}.post-view-header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid rgba(255,255,255,.1)}.post-view-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;font-size:.85rem;color:#ffffff80}.post-view-meta .post-author{color:#fffc;font-weight:500}.delete-post-btn{background:none;border:none;color:#ef4444;font-size:.85rem;cursor:pointer;padding:0}.delete-post-btn:hover{text-decoration:underline}.post-view-content{font-size:.95rem;color:#ffffffd9;line-height:1.7;white-space:pre-wrap;word-wrap:break-word}.create-post-form{display:flex;flex-direction:column;gap:1rem}.create-post-title{width:100%;padding:.9rem 1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:#fff;font-size:1rem;font-weight:500;box-sizing:border-box}.create-post-title:focus{outline:none;border-color:#667eea80}.create-post-title::placeholder{color:#fff6;font-weight:400}.create-post-content{width:100%;padding:1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;color:#fff;font-size:.95rem;font-family:inherit;resize:vertical;min-height:200px;box-sizing:border-box}.create-post-content:focus{outline:none;border-color:#667eea80}.create-post-content::placeholder{color:#fff6}.create-post-content:disabled,.create-post-title:disabled{opacity:.5}.create-post-actions{display:flex;gap:.75rem;justify-content:flex-end}.create-post-actions .cancel-btn{padding:.75rem 1.25rem;background:transparent;border:1px solid rgba(255,255,255,.2);color:#fffc;border-radius:8px;font-size:.95rem;cursor:pointer;transition:all .2s}.create-post-actions .cancel-btn:hover:not(:disabled){background:#ffffff1a}.create-post-actions .submit-btn{padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s}.create-post-actions .submit-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.create-post-actions .submit-btn:disabled,.create-post-actions .cancel-btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:600px){.board-container{max-height:90vh;border-radius:12px;margin:.5rem}.board-header{padding:.75rem 1rem}.board-title{font-size:1.1rem}.board-content{padding:.75rem 1rem}.post-list-header{flex-direction:column;align-items:stretch;gap:.75rem}.sort-tabs{justify-content:center}.create-post-btn{width:100%;padding:.6rem}.post-item{padding:.5rem}.create-post-actions{flex-direction:column-reverse}.create-post-actions .cancel-btn,.create-post-actions .submit-btn{width:100%}}.chat-overlay{position:fixed;left:16px;bottom:16px;width:340px;max-width:calc(100vw - 32px);z-index:200;color:#fff}.social-dock{position:fixed;left:max(12px,env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));z-index:220;display:flex;flex-direction:column;gap:10px;color:#fff}.social-dock-btn{position:relative;width:52px;height:52px;border-radius:14px;background:#0009;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12);color:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .15s}.social-dock-btn:hover{background:#000000b3;transform:translateY(-1px)}.social-dock-btn:active{transform:translateY(0)}.social-dock-badge{position:absolute;top:-7px;right:-7px;background:#ef4444;color:#fff;font-size:.7rem;font-weight:800;min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;border:2px solid rgba(0,0,0,.55);box-sizing:border-box}.chat-header{width:100%;display:flex;align-items:center;background:#0009;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12);color:inherit;cursor:pointer;transition:background .2s;border-radius:12px;overflow:hidden}.chat-overlay.open .chat-header{border-radius:12px 12px 0 0}.chat-header:hover{background:#000000b3}.chat-toggle{flex:1;display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;background:transparent;border:none;border-radius:0;color:inherit;cursor:pointer}.chat-title{flex:1;text-align:left;font-size:.9rem;font-weight:600}.chat-unread{background:#ef4444;color:#fff;font-size:.65rem;font-weight:700;min-width:18px;height:18px;padding:0 6px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center}.chat-body{background:#0000008c;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12);border-top:none;border-radius:0 0 12px 12px;padding:.6rem;display:flex;flex-direction:column;gap:.5rem}.chat-messages{max-height:240px;overflow-y:auto;display:flex;flex-direction:column;gap:.35rem;padding:.25rem .15rem}.chat-message{display:flex;gap:.4rem;align-items:baseline;font-size:.85rem;color:#ffffffe6}.chat-message-name{font-weight:600;color:#a5b4fc;white-space:nowrap}.chat-message-text{flex:1;word-break:break-word}.chat-message-time{font-size:.7rem;color:#ffffff73;white-space:nowrap}.chat-error{font-size:.8rem;color:#fca5a5;padding:0 .15rem}.chat-input-row{display:flex;gap:.5rem;margin:0}.chat-input{flex:1;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:10px;padding:.55rem .65rem;color:#fff;outline:none}.chat-input:focus{border-color:#667eeaa6;box-shadow:0 0 0 2px #667eea2e}.chat-send{width:40px;height:40px;padding:0;line-height:0;border-radius:10px;border:1px solid rgba(102,126,234,.35);background:#667eea40;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s}.chat-send svg{display:block;stroke:currentColor}.chat-send:hover{background:#667eea59;transform:translateY(-1px)}.chat-hint{display:flex;align-items:center;gap:.35rem;font-size:.7rem;color:#ffffff73;padding:0 .15rem}.chat-hint svg{flex:0 0 auto;stroke:currentColor}@media(pointer:coarse),(max-width:480px){.chat-overlay{left:0!important;right:0!important;bottom:var(--chat-keyboard-offset, 0px);width:100%!important;max-width:none!important;margin:0;padding:0;box-sizing:border-box}.chat-header{border-radius:0;border-left:none;border-right:none}.chat-toggle{padding:.7rem .9rem}.chat-body{border-radius:0;border-left:none;border-right:none;padding:.6rem .9rem;padding-bottom:calc(.6rem + env(safe-area-inset-bottom))}.chat-messages{max-height:min(45dvh,360px)}}.app{position:relative;min-height:100vh}.game-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0}.game-background canvas{display:block;touch-action:none;-webkit-user-select:none;user-select:none}.app-overlay{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column;pointer-events:none}.app-overlay>*{pointer-events:auto}.main-content{flex:1;pointer-events:none}.main-content>*{pointer-events:auto}.connection-lost-overlay{position:fixed;inset:0;z-index:40000;display:flex;align-items:center;justify-content:center;background:#050810c7;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:24px}.connection-lost-modal{width:min(460px,100%);border-radius:16px;padding:24px 20px;text-align:center;background:linear-gradient(180deg,#181b26fa,#11131cfa);border:1px solid rgba(255,255,255,.12);box-shadow:0 20px 48px #00000073;color:#f5f7ff}.connection-lost-modal h2{margin:0 0 12px;font-size:22px;font-weight:800}.connection-lost-modal p{margin:0 0 20px;color:#f5f7ffdb;line-height:1.45}.connection-lost-refresh-btn{width:100%;height:46px;border:0;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;color:#fff;background:linear-gradient(135deg,#4c77ff,#3358d4)}.connection-lost-refresh-btn:hover{filter:brightness(1.08)}.connection-lost-refresh-btn:active{transform:translateY(1px)}.auth-loading{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460);color:#ffffffb3}.auth-loading .spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.1);border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;gap:1.25rem}.login-title-image{display:block;width:100%;height:auto;filter:drop-shadow(0 0 14px rgba(102,126,234,.3)) drop-shadow(0 4px 8px rgba(0,0,0,.35))}.login-container{background:#000000b3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:20px;padding:2rem 3rem;width:calc(100% - 2rem);max-width:400px;text-align:center;border:1px solid rgba(255,255,255,.15);box-sizing:border-box}.login-brand{width:min(320px,100%);margin:0 auto .75rem}.login-subtitle{color:#ffffffb3;margin:0 0 1.5rem}.login-error{background:#ef444433;border:1px solid rgba(239,68,68,.5);color:#fca5a5;padding:.75rem 1rem;border-radius:8px;margin-bottom:1.5rem;font-size:.9rem}.login-buttons{display:flex;flex-direction:column;gap:1rem}.login-btn{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.875rem 1.5rem;border-radius:12px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s;border:none}.login-btn:disabled{opacity:.6;cursor:not-allowed}.login-btn-google{background:#fff;color:#333}.login-btn-google:hover:not(:disabled){background:#f5f5f5;transform:translateY(-1px)}.login-btn-apple{background:#000;color:#fff}.login-btn-apple:hover:not(:disabled){background:#1a1a1a;transform:translateY(-1px)}.login-btn-guest{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.3)}.login-btn-guest:hover:not(:disabled){background:#ffffff1a;border-color:#ffffff80}.login-divider{display:flex;align-items:center;gap:1rem;color:#ffffff80;font-size:.875rem}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:#fff3}.login-guest-note{color:#ffffff80;font-size:.75rem;margin:.5rem 0 0}@media(max-width:480px){.login-page{padding:1.5rem;padding-left:max(1.5rem,env(safe-area-inset-left));padding-right:max(1.5rem,env(safe-area-inset-right));gap:1rem}.login-container{padding:1.5rem;border-radius:16px}.login-brand{width:min(260px,100%);margin-bottom:.5rem}.login-subtitle{font-size:.9rem;margin-bottom:1.25rem}.login-btn{padding:.75rem 1rem;font-size:.9rem;border-radius:10px}.login-error{padding:.625rem .875rem;font-size:.85rem}.login-guest-note{font-size:.7rem}}@media(max-width:360px){.login-page{padding:1rem;padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));gap:.75rem}.login-container{padding:1.25rem;border-radius:12px}.login-brand{width:min(220px,100%)}.login-btn{padding:.625rem .875rem;font-size:.85rem;gap:.5rem}.login-btn svg{width:18px;height:18px}}.character-select-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}.character-loading{text-align:center;color:#ffffffb3}.character-loading .spinner{margin:0 auto 1rem}.character-select-container{width:100%;max-width:600px;text-align:center;background:#0009;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:20px;border:1px solid rgba(255,255,255,.1);padding:2rem}.character-select-title{font-size:2rem;font-weight:700;color:#fff;margin:0 0 .5rem;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.character-select-subtitle{color:#ffffffb3;margin:0 0 2rem}.character-error{background:#ef444433;border:1px solid rgba(239,68,68,.5);color:#fca5a5;padding:.75rem 1rem;border-radius:8px;margin-bottom:1.5rem;font-size:.9rem}.character-list{display:flex;flex-direction:column;gap:1rem}.character-card{display:flex;align-items:center;gap:1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.25rem;transition:all .2s}.character-card:hover{background:#ffffff14;border-color:#fff3}.character-card.active{border-color:#667eea80;background:#667eea1a}.character-card-new{justify-content:center;cursor:pointer;border-style:dashed;color:#fff9;font-size:.95rem}.character-card-new:hover{color:#fff;border-color:#667eea80}.character-add-icon{font-size:1.5rem;font-weight:300}.character-avatar{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}.character-avatar img{width:100%;height:100%;object-fit:cover}.character-info{flex:1;text-align:left}.character-name{color:#fff;font-size:1.125rem;font-weight:500;margin:0 0 .25rem}.character-class{color:#667eeaf2;font-size:.8rem;margin:0 0 .25rem}.character-date{color:#ffffff80;font-size:.85rem;margin:0}.character-actions{display:flex;gap:.5rem;align-items:center}.character-select-btn{padding:.5rem 1rem;background:#667eeacc;border:none;color:#fff;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s}.character-select-btn:hover{background:#667eea}.character-edit-btn,.character-delete-btn{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid rgba(255,255,255,.2);color:#fff9;border-radius:6px;cursor:pointer;transition:all .2s}.character-edit-btn:hover{background:#ffffff1a;border-color:#ffffff4d;color:#fff}.character-delete-btn:hover{background:#ef444433;border-color:#ef444480;color:#fca5a5}.modal-content{background:#1a1a2e;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem;max-width:400px;width:100%}.modal-content h3{color:#fff;margin:0 0 1rem;font-size:1.25rem}.modal-content p{color:#ffffffb3;font-size:.9rem;line-height:1.5;margin:0 0 1.5rem}.modal-input{width:100%;padding:.75rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;font-size:1rem;margin-bottom:1.25rem;outline:none;transition:border-color .2s;box-sizing:border-box}.modal-input:focus{border-color:#667eea80}.modal-input::placeholder{color:#fff6}.character-class-label{margin:0 0 .5rem;color:#ffffffd9;font-size:.85rem}.character-class-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-bottom:.5rem}.character-class-item{background:#ffffff0d;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:.5rem .35rem;color:#ffffffe6;font-size:.75rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.35rem;transition:all .2s}.character-class-item:hover{border-color:#ffffff59;background:#ffffff1a}.character-class-item.selected{border-color:#667eeabf;background:#667eea33}.character-class-preview{width:48px;height:48px;border-radius:6px;object-fit:cover}.character-class-help{margin:0 0 1rem;color:#ffffff8c;font-size:.75rem}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.modal-cancel-btn{padding:.5rem 1rem;background:transparent;border:1px solid rgba(255,255,255,.2);color:#fffc;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s}.modal-cancel-btn:hover:not(:disabled){background:#ffffff1a}.modal-confirm-btn{padding:.5rem 1rem;background:#667eeacc;border:none;color:#fff;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s}.modal-confirm-btn:hover:not(:disabled){background:#667eea}.modal-confirm-btn:disabled{opacity:.5;cursor:not-allowed}.modal-delete-btn{padding:.5rem 1rem;background:#ef4444cc;border:none;color:#fff;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s}.modal-delete-btn:hover:not(:disabled){background:#ef4444}.modal-delete-btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:480px){.character-select-page{padding:1rem}.character-select-title{font-size:1.5rem}.character-select-subtitle{font-size:.9rem;margin-bottom:1.5rem}.character-card{padding:1rem;flex-wrap:wrap}.character-avatar{width:48px;height:48px}.character-info{flex:1;min-width:0}.character-name{font-size:1rem}.character-date{font-size:.8rem}.character-actions{width:100%;justify-content:flex-end;margin-top:.5rem}.modal-content{padding:1.25rem;margin:0 .5rem}.character-class-list{grid-template-columns:repeat(2,minmax(0,1fr))}.modal-actions{flex-direction:column-reverse}.modal-cancel-btn,.modal-confirm-btn,.modal-delete-btn{width:100%}}@media(max-width:360px){.character-select-page{padding:.75rem}.character-select-title{font-size:1.35rem}.character-card{padding:.875rem}.character-avatar{width:44px;height:44px}}.oauth-callback{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff}.oauth-callback-container{background:#0009;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:16px;border:1px solid rgba(255,255,255,.1);padding:2rem 3rem;text-align:center}.oauth-callback-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.2);border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}@keyframes spin{to{transform:rotate(360deg)}}.admin-page{min-height:100vh;padding:2rem}.admin-login{max-width:400px;margin:4rem auto;padding:2rem;background:#000000b3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.15);border-radius:12px;text-align:center}.admin-login h1{color:#fff;margin:0 0 1.5rem;font-size:1.5rem}.admin-error{background:#ef444433;border:1px solid rgba(239,68,68,.5);color:#fca5a5;padding:.75rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.admin-password-input{width:100%;padding:.75rem 1rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;font-size:1rem;margin-bottom:1rem;box-sizing:border-box}.admin-password-input:focus{outline:none;border-color:#fff6}.admin-login-btn{width:100%;padding:.75rem;background:#6366f1cc;border:none;color:#fff;border-radius:8px;font-size:1rem;cursor:pointer;transition:all .2s}.admin-login-btn:hover:not(:disabled){background:#6366f1}.admin-login-btn:disabled{opacity:.5;cursor:not-allowed}.admin-container{max-width:1200px;margin:0 auto}.admin-title{color:#fff;margin:0 0 2rem;font-size:2rem}.admin-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:1px solid rgba(255,255,255,.1);padding-bottom:.5rem}.admin-tab{padding:.5rem 1rem;background:transparent;border:none;color:#fff9;font-size:.95rem;cursor:pointer;border-radius:6px;transition:all .2s}.admin-tab:hover{background:#ffffff0d;color:#fffc}.admin-tab.active{background:#6366f133;color:#fff}.admin-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.stat-card{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem}.stat-card h3{color:#fff9;font-size:.85rem;font-weight:500;margin:0 0 .5rem;text-transform:uppercase;letter-spacing:.05em}.stat-value{color:#fff;font-size:2.5rem;font-weight:700;line-height:1}.stat-label{color:#ffffff80;font-size:.85rem;margin-top:.25rem}.stat-sub{color:#fff6;font-size:.8rem;margin-top:.5rem}.admin-table-wrapper{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}.admin-table th,.admin-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid rgba(255,255,255,.05)}.admin-table th{color:#fff9;font-weight:500;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.admin-table td{color:#fffc}.admin-table tr.deleted{opacity:.5}.user-cell{display:flex;align-items:center;gap:.5rem}.user-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover}.status-active{color:#86efac;font-size:.8rem}.status-deleted{color:#fca5a5;font-size:.8rem}.admin-feedback-list{display:flex;flex-direction:column;gap:1rem}.no-data{color:#ffffff80;text-align:center;padding:2rem}.admin-feedback-item{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:1rem}.feedback-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.feedback-user{color:#fff;font-weight:500;font-size:.9rem}.feedback-time{color:#fff6;font-size:.8rem}.feedback-text{color:#fffc;font-size:.9rem;margin:0 0 .75rem;white-space:pre-wrap;line-height:1.5}.feedback-delete-btn{padding:.25rem .75rem;background:transparent;border:1px solid rgba(239,68,68,.3);color:#fca5a5;border-radius:4px;font-size:.8rem;cursor:pointer;transition:all .2s}.feedback-delete-btn:hover{background:#ef44441a;border-color:#ef444480}.admin-table tr.banned{background:#ef44440d}.status-banned{color:#f97316;font-size:.8rem}.ban-btn{padding:.25rem .75rem;background:transparent;border:1px solid rgba(239,68,68,.3);color:#fca5a5;border-radius:4px;font-size:.8rem;cursor:pointer;transition:all .2s}.ban-btn:hover{background:#ef44441a;border-color:#ef444480}.unban-btn{padding:.25rem .75rem;background:transparent;border:1px solid rgba(34,197,94,.3);color:#86efac;border-radius:4px;font-size:.8rem;cursor:pointer;transition:all .2s}.unban-btn:hover{background:#22c55e1a;border-color:#22c55e80}.admin-bans-list{display:flex;flex-direction:column;gap:1rem}.admin-ban-item{background:#ffffff08;border:1px solid rgba(239,68,68,.15);border-radius:8px;padding:1rem}.ban-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.ban-user-info{display:flex;align-items:center;gap:.75rem}.ban-user-name{display:block;color:#fff;font-weight:500;font-size:.95rem}.ban-date{display:block;color:#fff6;font-size:.8rem;margin-top:.1rem}.ban-reason{color:#fffc;font-size:.9rem;margin-bottom:.75rem}.ban-appeal{background:#6366f11a;border:1px solid rgba(99,102,241,.2);border-radius:6px;padding:.75rem;margin-top:.75rem}.ban-appeal strong{color:#a5b4fc;font-size:.85rem}.ban-appeal p{color:#fffc;font-size:.9rem;margin:.5rem 0 0;white-space:pre-wrap;line-height:1.5}.modal-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:#1e293b;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.5rem;max-width:450px;width:100%}.modal-content h3{color:#fff;margin:0 0 .5rem;font-size:1.25rem}.modal-content>p{color:#ffffffb3;margin:0 0 1rem;font-size:.9rem}.ban-reason-input{width:100%;padding:.75rem;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:8px;color:#fff;font-size:.95rem;resize:vertical;min-height:100px;box-sizing:border-box;margin-bottom:1rem}.ban-reason-input:focus{outline:none;border-color:#ef444480}.ban-reason-input::placeholder{color:#fff6}.modal-actions{display:flex;justify-content:flex-end;gap:.75rem}.modal-cancel-btn{padding:.6rem 1.25rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#fffc;font-size:.9rem;cursor:pointer;transition:all .2s}.modal-cancel-btn:hover:not(:disabled){background:#ffffff26}.modal-cancel-btn:disabled{opacity:.5;cursor:not-allowed}.modal-ban-btn{padding:.6rem 1.25rem;background:#ef4444cc;border:none;border-radius:6px;color:#fff;font-size:.9rem;cursor:pointer;transition:all .2s}.modal-ban-btn:hover:not(:disabled){background:#ef4444}.modal-ban-btn:disabled{opacity:.5;cursor:not-allowed}.admin-announcements{display:flex;flex-direction:column;gap:1rem}.announcements-header{display:flex;justify-content:flex-end;margin-bottom:.5rem}.create-announcement-btn{padding:.6rem 1.25rem;background:#6366f1cc;border:none;border-radius:6px;color:#fff;font-size:.9rem;cursor:pointer;transition:all .2s}.create-announcement-btn:hover{background:#6366f1}.admin-announcements-list{display:flex;flex-direction:column;gap:1rem}.admin-announcement-item{background:#ffffff08;border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:1rem}.announcement-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.announcement-title-row{display:flex;align-items:center;gap:.75rem}.announcement-title{color:#fff;font-weight:600;font-size:1rem}.announcement-status{padding:.2rem .5rem;border-radius:4px;font-size:.7rem;font-weight:500;text-transform:uppercase}.announcement-status.published{background:#22c55e33;color:#86efac}.announcement-status.draft{background:#ffffff1a;color:#ffffff80}.announcement-date{color:#fff6;font-size:.8rem}.announcement-content-preview{color:#ffffffb3;font-size:.9rem;margin:0 0 .75rem;line-height:1.5;max-height:100px;overflow:hidden;position:relative}.announcement-content-preview:after{content:"";position:absolute;left:0;right:0;bottom:0;height:22px;background:linear-gradient(to bottom,#1e293b00,#1e293b);pointer-events:none}.announcement-content-preview>:first-child{margin-top:0}.announcement-content-preview>:last-child{margin-bottom:0}.announcement-actions{display:flex;gap:.5rem}.announcement-edit-btn{padding:.25rem .75rem;background:transparent;border:1px solid rgba(99,102,241,.3);color:#a5b4fc;border-radius:4px;font-size:.8rem;cursor:pointer;transition:all .2s}.announcement-edit-btn:hover{background:#6366f11a;border-color:#6366f180}.announcement-delete-btn{padding:.25rem .75rem;background:transparent;border:1px solid rgba(239,68,68,.3);color:#fca5a5;border-radius:4px;font-size:.8rem;cursor:pointer;transition:all .2s}.announcement-delete-btn:hover{background:#ef44441a;border-color:#ef444480}.announcement-modal{max-width:550px}.announcement-title-input{width:100%;padding:.75rem;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:8px;color:#fff;font-size:1rem;margin-bottom:.75rem;box-sizing:border-box}.announcement-title-input:focus{outline:none;border-color:#6366f180}.announcement-title-input::placeholder{color:#fff6}.announcement-content-input{width:100%;padding:.75rem;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:8px;color:#fff;font-size:.95rem;resize:vertical;min-height:150px;box-sizing:border-box;margin-bottom:.75rem}.announcement-content-input:focus{outline:none;border-color:#6366f180}.announcement-content-input::placeholder{color:#fff6}.announcement-publish-label{display:flex;align-items:center;gap:.5rem;color:#fffc;font-size:.9rem;margin-bottom:1rem;cursor:pointer}.announcement-publish-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.announcement-markdown-help{margin:0 0 .9rem;color:#ffffff8c;font-size:.82rem}.announcement-markdown-preview{border:1px solid rgba(255,255,255,.1);background:#0f172a59;border-radius:8px;margin-bottom:1rem}.announcement-markdown-preview-label{padding:.5rem .75rem;border-bottom:1px solid rgba(255,255,255,.1);color:#fff9;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}.announcement-markdown-preview-body{padding:.75rem;max-height:220px;overflow:auto;color:#ffffffdb;font-size:.88rem}.modal-save-btn{padding:.6rem 1.25rem;background:#6366f1cc;border:none;border-radius:6px;color:#fff;font-size:.9rem;cursor:pointer;transition:all .2s}.modal-save-btn:hover:not(:disabled){background:#6366f1}.modal-save-btn:disabled{opacity:.5;cursor:not-allowed}@media(max-width:768px){.admin-page{padding:1rem}.admin-login{margin:2rem auto;padding:1.5rem}.admin-title{font-size:1.5rem;margin-bottom:1.5rem}.admin-tabs{flex-wrap:wrap;gap:.25rem}.admin-tab{padding:.4rem .75rem;font-size:.85rem}.stat-card{padding:1rem}.stat-value{font-size:2rem}.admin-table th,.admin-table td{padding:.5rem .75rem;font-size:.8rem}.user-cell{min-width:120px}.admin-feedback-item,.admin-ban-item{padding:.875rem}.feedback-header,.ban-header{flex-direction:column;align-items:flex-start;gap:.5rem}.modal-content{padding:1.25rem;margin:0 .5rem}}@media(max-width:480px){.admin-page{padding:.75rem}.admin-login{padding:1.25rem}.admin-login h1{font-size:1.25rem}.admin-title{font-size:1.35rem}.admin-tabs{overflow-x:auto;flex-wrap:nowrap;padding-bottom:.75rem;-webkit-overflow-scrolling:touch}.admin-tab{white-space:nowrap;flex-shrink:0}.admin-stats{grid-template-columns:1fr 1fr;gap:.75rem}.stat-card{padding:.875rem}.stat-card h3{font-size:.75rem}.stat-value{font-size:1.5rem}.admin-table{font-size:.75rem}.admin-table th,.admin-table td{padding:.4rem .5rem}.user-avatar{width:24px;height:24px}.ban-btn,.unban-btn,.feedback-delete-btn{padding:.2rem .5rem;font-size:.7rem}.modal-actions{flex-direction:column-reverse}.modal-cancel-btn,.modal-ban-btn{width:100%}}.banned-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem}.banned-loading{color:#fff9;font-size:1rem}.banned-container{max-width:500px;width:100%;text-align:center;background:#000000b3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:16px;border:1px solid rgba(255,255,255,.1);padding:2rem}.banned-icon{color:#ef4444;margin-bottom:1.5rem}.banned-title{color:#fff;font-size:1.75rem;margin:0 0 .5rem}.banned-subtitle{color:#fff9;font-size:1rem;margin:0 0 2rem}.banned-reason-box{background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;text-align:left}.banned-reason-box h3{color:#ffffffb3;font-size:.85rem;font-weight:500;margin:0 0 .5rem;text-transform:uppercase;letter-spacing:.05em}.banned-reason{color:#fca5a5;font-size:1rem;margin:0 0 .75rem;line-height:1.5}.banned-date{color:#fff6;font-size:.8rem}.banned-message{padding:.75rem;border-radius:6px;margin-bottom:1.5rem;font-size:.9rem}.banned-message-success{background:#22c55e33;border:1px solid rgba(34,197,94,.5);color:#86efac}.banned-message-error{background:#ef444433;border:1px solid rgba(239,68,68,.5);color:#fca5a5}.banned-appeal{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;text-align:left}.banned-appeal h3{color:#fff;font-size:1rem;margin:0 0 .5rem}.banned-appeal-desc{color:#fff9;font-size:.9rem;margin:0 0 1rem}.banned-appeal-textarea{width:100%;padding:.75rem;background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:8px;color:#fff;font-size:.95rem;resize:vertical;min-height:120px;box-sizing:border-box;margin-bottom:.75rem}.banned-appeal-textarea:focus{outline:none;border-color:#6366f180}.banned-appeal-textarea::placeholder{color:#fff6}.banned-appeal-btn{width:100%;padding:.75rem;background:#6366f1cc;border:none;border-radius:8px;color:#fff;font-size:.95rem;cursor:pointer;transition:all .2s}.banned-appeal-btn:hover:not(:disabled){background:#6366f1}.banned-appeal-btn:disabled{opacity:.5;cursor:not-allowed}.banned-appeal-submitted{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);border-radius:12px;padding:1rem;margin-bottom:1.5rem}.banned-appeal-submitted p{color:#86efac;margin:0;font-size:.95rem}.banned-logout-btn{padding:.75rem 2rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fffc;font-size:.95rem;cursor:pointer;transition:all .2s}.banned-logout-btn:hover{background:#ffffff26;color:#fff}@media(max-width:480px){.banned-page{padding:1rem}.banned-title{font-size:1.5rem}.banned-subtitle{font-size:.9rem;margin-bottom:1.5rem}.banned-reason-box{padding:1rem;border-radius:10px}.banned-reason{font-size:.9rem}.banned-appeal{padding:1rem;border-radius:10px}.banned-appeal h3{font-size:.95rem}.banned-appeal-desc{font-size:.85rem}.banned-appeal-textarea{min-height:100px}}@media(max-width:360px){.banned-page{padding:.75rem}.banned-title{font-size:1.35rem}.banned-icon svg{width:56px;height:56px}.banned-reason-box,.banned-appeal{padding:.875rem}}
