:root{--fw-bg-deep:#1a1410;--fw-bg-container:rgba(30, 24, 18, 0.85);--fw-bg-header:rgba(40, 30, 20, 0.75);--fw-bg-card:rgba(30, 24, 18, 0.65);--fw-bg-card-highlight:rgba(40, 32, 22, 0.75);--fw-bg-input:rgba(20, 16, 12, 0.6);--fw-text-primary:#f0ebe4;--fw-text-secondary:#dcc898;--fw-text-muted:#a89878;--fw-text-link:#dcc898;--fw-text-link-hover:#d4953a;--fw-accent-primary:#d4953a;--fw-accent-info:#8bb8d0;--fw-accent-danger:#b03030;--fw-accent-success:#4a9e5a;--fw-border-subtle:rgba(255, 255, 255, 0.08);--fw-border-accent:#9a7e58;--fw-radius-sm:8px;--fw-radius-md:12px;--fw-radius-lg:15px;--fw-shadow-card:0 4px 12px rgba(0, 0, 0, 0.4);--fw-transition-fast:0.15s ease;--fw-transition-normal:0.25s ease}html{margin:0;padding:0;height:100%;width:100%;background-color:var(--fw-bg-deep)}html::before{content:'';position:fixed;top:0;left:0;width:100%;height:100%;background-image:url('../img/webpage/index_background.png');background-size:cover;background-position:center;background-repeat:no-repeat;z-index:-1}body{color:var(--fw-text-primary);margin:0;padding:0;height:100%;width:100%;align-items:center;background:0 0;overflow-x:hidden}h1,h2,h3{font-family:Cinzel,Georgia,serif}.main-center{display:flex;flex-direction:column;align-items:stretch;width:100%;margin:auto}.main-header{top:0;left:0;width:100%;display:flex;justify-content:center;z-index:1000;background:0 0;margin:0;padding:0}.container{justify-content:center;background-color:var(--fw-bg-container);padding:30px;border-radius:var(--fw-radius-lg);box-shadow:var(--fw-shadow-card);max-width:800px;width:100%;text-align:center}.container--narrow{max-width:400px}.headerLinks{background-color:var(--fw-bg-header);padding:5px;border-radius:var(--fw-radius-lg);box-shadow:var(--fw-shadow-card);max-width:800px;width:100%;text-align:center}.header-item.active a{color:var(--fw-accent-primary);border-bottom:2px solid var(--fw-accent-primary);padding-bottom:2px}a:link,a:visited{color:var(--fw-text-link);text-decoration:none;transition:color var(--fw-transition-fast)}a:hover{color:var(--fw-text-link-hover);text-decoration:none}a:active{color:var(--fw-accent-primary);text-decoration:none}.center-form{background-color:var(--fw-bg-card);padding:20px;border-radius:10px;box-shadow:0 4px 8px rgba(0,0,0,.1);text-align:center}.form-control{background-color:var(--fw-bg-input);color:var(--fw-text-primary);border:1px solid var(--fw-border-subtle);transition:border-color var(--fw-transition-fast),box-shadow var(--fw-transition-fast)}.form-control:focus{background-color:var(--fw-bg-input);color:var(--fw-text-primary);border-color:var(--fw-accent-primary);box-shadow:0 0 0 .2rem rgba(212,149,58,.25)}.btn-fw-primary{display:inline-block;padding:10px 24px;font-weight:600;color:#fff;background:linear-gradient(135deg,#d4953a,#b8792a);border:1px solid #9a7e58;border-radius:var(--fw-radius-sm);cursor:pointer;transition:background var(--fw-transition-fast),box-shadow var(--fw-transition-fast);text-decoration:none;text-align:center}.btn-fw-primary:hover{background:linear-gradient(135deg,#e0a54a,#c88a35);box-shadow:0 0 12px rgba(212,149,58,.4);color:#fff;text-decoration:none}.btn-fw-primary.disabled,.btn-fw-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn-fw-outline{display:inline-block;padding:10px 24px;font-weight:500;color:var(--fw-text-secondary);background:0 0;border:1px solid var(--fw-border-accent);border-radius:var(--fw-radius-sm);cursor:pointer;transition:background var(--fw-transition-fast),color var(--fw-transition-fast),border-color var(--fw-transition-fast);text-decoration:none;text-align:center}.btn-fw-outline:hover{background:rgba(154,126,88,.2);color:var(--fw-accent-primary);border-color:var(--fw-accent-primary);text-decoration:none}.card-fw{background:var(--fw-bg-card);border:1px solid var(--fw-border-subtle);border-radius:var(--fw-radius-md);box-shadow:var(--fw-shadow-card);color:var(--fw-text-primary);text-align:left;transition:border-color var(--fw-transition-normal),box-shadow var(--fw-transition-normal)}.card-fw>div>p,.card-fw>p{padding-left:.5rem}.card-fw p a{color:var(--fw-accent-primary);text-decoration:underline;text-underline-offset:2px}.card-fw p a:hover{color:var(--fw-text-link-hover)}.card-fw:hover{border-color:var(--fw-border-accent);box-shadow:0 6px 20px rgba(0,0,0,.5)}.card-fw--highlight{background:var(--fw-bg-card-highlight);border-color:var(--fw-border-accent)}.card-roadmap{background:var(--fw-bg-card);border:1px solid var(--fw-border-subtle);border-radius:var(--fw-radius-md);box-shadow:var(--fw-shadow-card);color:var(--fw-text-primary)}.card-roadmap--ideas{background:rgba(84,48,80,.35);border-color:rgba(160,100,160,.2)}.roadmap-icon{color:var(--fw-accent-info)}.roadmap-date{color:var(--fw-text-muted)}.roadmap-subtitle{color:var(--fw-accent-info);text-transform:uppercase;letter-spacing:1px;font-size:.75em}.roadmap-description{color:var(--fw-text-secondary);font-size:.9em}.roadmap-heading-year{color:#aaa;font-size:.6em}.roadmap-heading-version{color:#ccc;font-size:.6em}[data-bs-toggle=collapse][aria-expanded=true] .bi-chevron-down{transform:rotate(180deg)}.bi-chevron-down{transition:transform .3s}.hero-section{text-align:center;padding:2rem 1rem 1.5rem}.hero-tagline{font-family:Cinzel,Georgia,serif;font-size:1.15rem;color:var(--fw-text-secondary);margin:.5rem 0 1.5rem;letter-spacing:1px}.hero-cta{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;margin-top:1rem}.screenshot-gallery-wrap{position:relative}.screenshot-gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:grab}.screenshot-gallery.grabbing{cursor:grabbing;scroll-snap-type:none}.screenshot-gallery::-webkit-scrollbar{display:none}.screenshot-gallery img,.screenshot-gallery video{flex-shrink:0;width:100%;height:auto;border-radius:var(--fw-radius-md);border:1px solid var(--fw-border-subtle);scroll-snap-align:start;user-select:none;background:#000;object-fit:contain}.screenshot-gallery img{image-rendering:pixelated;image-rendering:crisp-edges}.gallery-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;background:rgba(0,0,0,.6);color:var(--fw-text-primary);border:1px solid var(--fw-border-subtle);border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.1rem;transition:background var(--fw-transition-fast),opacity var(--fw-transition-fast);opacity:.7}.gallery-arrow:hover{background:rgba(0,0,0,.85);opacity:1}.gallery-arrow--left{left:8px}.gallery-arrow--right{right:8px}.diff-section{background:var(--fw-bg-card);border:1px solid var(--fw-border-subtle);border-radius:var(--fw-radius-md);padding:1.5rem 1.25rem;text-align:center}.diff-heading{font-family:Cinzel,Georgia,serif;color:var(--fw-text-secondary);font-size:1.1rem;letter-spacing:1px;margin-bottom:1.25rem}.diff-heading em{color:var(--fw-accent-primary);font-style:normal}.diff-table{width:100%;border-collapse:collapse;border-radius:var(--fw-radius-sm);overflow:hidden;font-size:.85em;text-align:left}.diff-th{padding:.6rem .9rem;font-size:.75em;font-weight:700;text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--fw-border-subtle)}.diff-th--other{background:rgba(255,255,255,.03);color:var(--fw-text-muted);border-right:1px solid var(--fw-border-subtle);width:50%}.diff-th--fw{background:rgba(212,149,58,.1);color:var(--fw-accent-primary)}.diff-td{padding:.5rem .9rem;border-bottom:1px solid var(--fw-border-subtle);vertical-align:middle}.diff-td--other{color:var(--fw-text-muted);background:rgba(255,255,255,.02);border-right:1px solid var(--fw-border-subtle)}.diff-td--fw{color:var(--fw-text-secondary);background:rgba(212,149,58,.04)}.diff-td--fw .bi{color:var(--fw-accent-success);font-size:.95em}tbody .diff-td:last-child,tbody tr:last-child .diff-td{border-bottom:none}.diff-quote{font-style:italic;color:var(--fw-text-muted);font-size:.85em;margin:1.1rem 0 0;padding:.5rem 1rem;border-left:2px solid var(--fw-accent-primary);text-align:left;background:rgba(212,149,58,.04);border-radius:0 var(--fw-radius-sm) var(--fw-radius-sm) 0}@media (max-width:480px){.diff-td,.diff-th{padding:.45rem .6rem;font-size:.78em}}.status-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background-color:var(--fw-accent-success);margin-right:6px;vertical-align:middle;animation:2s ease-in-out infinite pulse}@keyframes pulse{0%,100%{opacity:1;box-shadow:0 0 4px var(--fw-accent-success)}50%{opacity:.6;box-shadow:0 0 8px var(--fw-accent-success)}}html.page-login::before,html.page-register::before{background:radial-gradient(ellipse at center,#2a3a1a 0,#1a1410 100%);background-image:url('../img/webpage/login_background.png');background-size:cover;background-position:center}.login-container,.register-container{background-color:var(--fw-bg-container);max-width:440px;border:1px solid rgba(154,126,88,.25)}.input-group-password{position:relative}.input-group-password .form-control{padding-right:42px}.btn-password-toggle{position:absolute;right:0;top:0;height:100%;width:42px;display:flex;align-items:center;justify-content:center;background:0 0;border:none;color:var(--fw-text-muted);cursor:pointer;z-index:3;transition:color var(--fw-transition-fast);padding:0}.btn-password-toggle:hover{color:var(--fw-text-primary)}.remember-username{display:flex;align-items:center;gap:6px;margin-bottom:1rem;font-size:.85rem;color:var(--fw-text-muted)}.remember-username input[type=checkbox]{accent-color:var(--fw-accent-primary)}html.page-dashboard::before{background-image:url('../img/webpage/register_background.png')}.dashboard-container{background-color:var(--fw-bg-container)}.character-display{display:flex;gap:20px;align-items:flex-start;padding:20px;margin:10px 0;border-radius:var(--fw-radius-md);background-color:rgba(80,60,40,.2)}.character-display-left{flex-shrink:0;display:flex;flex-direction:column;align-items:center}.character-display-right{flex:1;min-width:0}.character-canvas{image-rendering:pixelated;image-rendering:crisp-edges;box-shadow:0 0 16px rgba(100,200,255,.15);border-radius:var(--fw-radius-sm)}.character-name{font-family:Cinzel,Georgia,serif;font-size:1.2rem;color:#fff;font-weight:600;margin-bottom:2px}.character-zone{font-size:.8rem;color:var(--fw-text-muted);margin-bottom:10px}.editor-tools-dropdown{position:absolute;top:12px;right:12px;z-index:10}.btn-editor-tools{font-size:.75rem;padding:4px 10px;display:flex;align-items:center;gap:4px}.editor-tools-menu{display:none;position:absolute;top:100%;right:0;margin-top:4px;min-width:180px;background:var(--fw-bg-card,rgba(30,22,14,.95));border:1px solid var(--fw-border-accent);border-radius:var(--fw-radius-sm);padding:6px 0;box-shadow:0 4px 12px rgba(0,0,0,.5)}.editor-tools-dropdown.open .editor-tools-menu{display:block}.editor-tools-menu a{display:block;padding:6px 14px;font-size:.8rem;color:var(--fw-text-body);text-decoration:none;white-space:nowrap}.editor-tools-menu a:hover{background:rgba(255,255,255,.08);color:var(--fw-accent-gold,#d4a843)}.dash-vitals{width:100%;margin-top:12px}.dash-vital-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.dash-vital-label{width:24px;font-size:.75rem;font-weight:600;color:var(--fw-text-muted);text-align:right}.dash-vital-bar{flex:1;height:10px;background:rgba(255,255,255,.1);border-radius:5px;overflow:hidden}.dash-vital-fill{height:100%;border-radius:5px;transition:width .3s}.dash-vital-hp{background:#4a9e4a}.dash-vital-mp{background:#4a7eb5}.dash-vital-sp{background:#b5a14a}.dash-vital-value{width:32px;font-size:.75rem;color:var(--fw-text-secondary);text-align:right}.dash-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;width:100%;margin-top:12px}.dash-stat{display:flex;justify-content:space-between;padding:4px 10px;background:rgba(255,255,255,.05);border-radius:var(--fw-radius-sm)}.dash-stat-label{font-size:.75rem;font-weight:600;color:var(--fw-text-muted)}.dash-stat-value{font-size:.85rem;color:#d4953a;font-weight:600}.dash-skills{width:100%;margin-top:12px}.dash-skills-label{font-size:.75rem;color:var(--fw-text-muted);text-transform:uppercase;margin-bottom:4px}.dash-skill-row{display:flex;justify-content:space-between;padding:2px 10px;font-size:.85rem}.dash-skill-name{color:var(--fw-text-secondary)}.dash-skill-value{color:#d4953a;font-weight:500}.btn-enter-world{font-size:1.15rem;padding:14px 40px;letter-spacing:.5px;width:100%;text-transform:uppercase;font-family:Cinzel,Georgia,serif;transition:background .2s,box-shadow .2s,border-color .2s}.btn-enter-world:hover{box-shadow:0 0 20px rgba(212,149,58,.5);border-color:var(--fw-accent-primary)}.dash-news{margin-top:16px;border:1px solid var(--fw-border-subtle);border-radius:var(--fw-radius-sm);background:rgba(255,255,255,.03)}.dash-news-header{font-size:.75rem;color:var(--fw-text-muted);text-transform:uppercase;letter-spacing:1px;padding:8px 12px;cursor:pointer;list-style:none}.dash-news-header::-webkit-details-marker{display:none}.dash-news-header::marker{content:''}.dash-news-header::before{content:'\25B8';margin-right:6px;display:inline-block;transition:transform .2s}details.dash-news[open]>.dash-news-header::before{transform:rotate(90deg)}.dash-news-list{padding:4px 12px 10px}.dash-news-item{display:flex;gap:8px;padding:3px 0;font-size:.8rem;color:var(--fw-text-secondary)}.dash-news-version{color:var(--fw-accent-primary);font-weight:600;white-space:nowrap}.dash-no-character{text-align:center;padding:30px 20px}.dash-no-character h3{font-family:Cinzel,Georgia,serif;color:var(--fw-text-secondary);margin-bottom:12px}.dash-no-character p{color:var(--fw-text-muted);margin-bottom:20px;font-size:.9rem}@media (max-width:480px){.character-display{flex-direction:column;align-items:center}.character-display-right{width:100%;text-align:center}.character-name,.character-zone{text-align:center}}.create-char-card{background:var(--fw-bg-card);border-radius:var(--fw-radius-lg)}.create-char-avatar-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:15px;margin:10px 0}.create-char-avatar-option{display:flex;flex-direction:column;align-items:center;cursor:pointer;padding:10px;border:3px solid transparent;border-radius:10px;background-color:rgba(80,60,40,.5);transition:.2s}.create-char-avatar-option:hover{background-color:rgba(100,80,50,.5);border-color:var(--fw-accent-success)}.create-char-avatar-option.selected{border-color:var(--fw-accent-success);background-color:rgba(74,158,90,.15);box-shadow:0 0 15px rgba(74,158,90,.3)}.create-char-avatar-canvas{image-rendering:pixelated;image-rendering:crisp-edges}.create-char-avatar-name{margin-top:8px;font-size:14px;color:var(--fw-text-muted)}.create-char-avatar-option.selected .create-char-avatar-name{color:var(--fw-accent-success)}.create-char-form-input{width:100%;height:32px;background-color:var(--fw-bg-input);color:var(--fw-text-primary);border:1px solid var(--fw-border-subtle);border-radius:5px;padding:0 10px}.create-char-form-input:focus{outline:rgba(212,149,58,.5) solid 2px}.create-char-btn-submit{width:100%;padding:10px;background:linear-gradient(135deg,#d4953a,#b8792a);color:#fff;border:1px solid #9a7e58;border-radius:5px;cursor:pointer;transition:background .2s,box-shadow .2s;font-weight:600}.create-char-btn-submit:hover:not(:disabled){background:linear-gradient(135deg,#e0a54a,#c88a35);box-shadow:0 0 12px rgba(212,149,58,.4)}.create-char-btn-submit:disabled{opacity:.5;cursor:not-allowed}.create-char-btn-cancel{padding:10px 16px;background-color:rgba(40,30,20,.8);color:var(--fw-text-muted);border:1px solid var(--fw-border-subtle);border-radius:5px;cursor:pointer;transition:background-color .2s;text-decoration:none;font-size:16px}.create-char-btn-cancel:hover{background-color:rgba(60,45,30,.9);color:var(--fw-text-primary)}.create-char-button-row{display:flex;gap:10px;align-items:center}.create-char-button-row .create-char-btn-submit{flex:1}.create-char-section-header{font-size:14px;color:var(--fw-text-muted);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid rgba(255,255,255,.15);padding-bottom:6px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}.create-char-points-remaining{font-weight:700;font-size:14px;transition:color .2s}.create-char-points-remaining.complete{color:var(--fw-accent-success)}.create-char-points-remaining.incomplete{color:#ff9800}.create-char-points-remaining.over{color:var(--fw-accent-danger)}.create-char-alloc-row{display:flex;align-items:center;margin-bottom:6px;gap:8px}.create-char-alloc-label{flex:1;text-align:left;font-size:13px;color:var(--fw-text-secondary)}.create-char-alloc-controls{display:flex;align-items:center;gap:4px}.create-char-alloc-btn{width:26px;height:26px;border:1px solid rgba(255,255,255,.2);background:rgba(40,30,20,.8);color:var(--fw-text-muted);border-radius:4px;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s;padding:0}.create-char-alloc-btn:hover:not(:disabled){background:rgba(80,60,40,.9);color:var(--fw-text-primary)}.create-char-alloc-btn:disabled{opacity:.3;cursor:not-allowed}.create-char-alloc-value{width:32px;text-align:center;font-size:15px;font-weight:700;color:#fff;background:0 0;border:none;pointer-events:none}.create-char-alloc-tooltip{font-size:11px;color:var(--fw-text-muted);cursor:help;margin-left:2px}.create-char-alloc-tooltip:hover{color:var(--fw-accent-primary)}.create-char-vitals-preview{display:flex;justify-content:center;gap:20px;padding:8px 0}.create-char-vital-item{text-align:center}.create-char-vital-label{font-size:11px;color:var(--fw-text-muted);text-transform:uppercase}.create-char-vital-value{font-size:18px;font-weight:700;transition:color .2s}.create-char-vital-hp{color:#e57373}.create-char-vital-mp{color:#64b5f6}.create-char-vital-sp{color:#81c784}.create-char-error-message{background:rgba(176,48,48,.15);border:1px solid rgba(176,48,48,.4);color:#ff8a80;padding:8px 12px;border-radius:5px;font-size:13px;margin-bottom:12px}.create-char-btn-reset{padding:6px 14px;background:rgba(40,30,20,.6);color:var(--fw-text-muted);border:1px solid rgba(255,255,255,.1);border-radius:4px;cursor:pointer;font-size:12px;transition:background .15s}.create-char-btn-reset:hover{background:rgba(60,45,30,.8);color:var(--fw-text-secondary)}.create-char-hidden-inputs{display:none}:focus-visible{outline:2px solid var(--fw-accent-primary);outline-offset:2px}.slow-spin{animation:3s linear infinite spin}@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width:768px){.container{padding:20px 15px;border-radius:var(--fw-radius-md)}.hero-tagline{font-size:1rem}}