*{margin:0;padding:0;box-sizing:border-box}:root{--primary: #BC9454;--primary-dark: #967643;--primary-light: #D0B487;--accent-gold: #E5D09B;--accent-gold-light: #EAD9AF;--accent-teal: #64482C;--accent-pink: #C3B38F;--accent-blue: #6B8E9F;--accent-green: #8B9A5B;--accent-red: #B87D6B;--accent-purple: #9B7FA8;--background-cream: #F5EFE5;--background-light: #F8F4EE;--text-dark: #1F2937;--text-medium: #4B5563;--card-bg: #FFFFFF;--border-color: #D4C4B0;--font-heading: "Metamorphous", serif;--font-body: "Noto Sans", sans-serif}body.dark-mode{--background-cream: #1F2937;--background-light: #111827;--text-dark: #F9FAFB;--text-medium: #D1D5DB;--card-bg: #374151;--border-color: #4B5563;--primary-dark: #D0B487;--primary: #E5D09B;--accent-blue: #7BA3B8;--accent-green: #A4B67A;--accent-red: #C99A87;--accent-purple: #B08FC0}body{font-family:var(--font-body);background:var(--background-cream);color:var(--text-dark);line-height:1.6;min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}svg{line-height:1}figcaption{font-size:.9em;font-style:italic;padding:3px}figcaption>a{color:currentColor}.top-nav{background:var(--card-bg);padding:1.5rem 0;position:sticky;top:0;z-index:100;backdrop-filter:blur(10px);background:#fffffff2}body.dark-mode .top-nav{background:#374151f2}.nav-container{max-width:1400px;margin:0 auto;padding:0 2rem;display:flex;justify-content:space-between;align-items:center}.nav-logo{font-size:1.5rem;color:var(--primary-dark);text-decoration:none;font-weight:400;letter-spacing:.05em;transition:color .2s ease;display:flex;align-items:center;gap:.5rem}.nav-logo:hover,.nav-logo:focus{color:var(--primary);outline:none}.nav-links{display:flex;list-style:none;gap:2rem;align-items:center}.nav-links a{color:var(--text-medium);text-decoration:none;font-size:1rem;transition:color .2s ease;position:relative;display:flex;align-items:center;gap:.5rem}.nav-links a:hover,.nav-links a:focus{color:var(--primary-dark);outline:none}.nav-links a:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--primary-dark);transition:width .2s ease}.nav-links a:hover:after,.nav-links a:focus:after{width:100%}.theme-toggle{background:transparent;border:none;padding:.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;transition:transform .2s ease,opacity .2s ease;color:var(--text-medium);border-radius:4px}.theme-toggle:hover,.theme-toggle:focus{background:var(--background-light);transform:scale(1.1);outline:none}.theme-toggle .icon-sun,.theme-toggle .icon-moon{font-size:1.2rem;line-height:1}.icon,.icon>svg{color:currentColor;display:inline-block;font-style:normal;vertical-align:middle;transition:opacity .2s ease}.icon-dice{font-size:1.2rem}.icon-scroll,.icon-search,.icon-filter,.icon-sort,.icon-calendar{font-size:.9rem}.nav-links a:hover .icon,.nav-links a:focus .icon{opacity:1}.hero{width:100%;margin:0;padding:0;background:var(--card-bg)}.hero-content{width:100%;position:relative}.hero-image{width:100%;height:auto;display:block;object-fit:cover}.hero-text{text-align:center;padding:4rem 2rem;max-width:800px;margin:0 auto}.hero-title{font-size:4rem;font-weight:400;color:var(--primary-dark);margin-bottom:1rem;letter-spacing:.05em}.hero-subtitle{font-size:1.5rem;color:var(--text-medium);font-style:normal;font-weight:400;text-align:center}.main-wrapper{max-width:1400px;margin:0 auto;padding:4rem 2rem;width:100%;flex:1}.intro-seo{margin:0 0 1.5rem;max-width:42rem;line-height:1.5;color:var(--text-medium, #4B5563)}body.dark-mode .intro-seo{color:var(--text-dark, #F9FAFB)}.homepage-header-section{display:grid;grid-template-columns:1fr 350px;gap:2rem;margin-bottom:2rem;align-items:start}@media (max-width: 768px){.homepage-header-section{grid-template-columns:1fr}}.homepage-header-left{min-width:0}.homepage-npcotd-section{background:var(--card-bg, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:6px;padding:.75rem 1rem;position:sticky;top:100px;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.homepage-npcotd-section:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.homepage-npcotd-heading{font-family:var(--font-heading, "Metamorphous", serif);font-size:.875rem;margin:0 0 .5rem;color:var(--text-medium, #4B5563);line-height:1.2;font-weight:400;text-transform:uppercase;letter-spacing:.5px}.homepage-npcotd-container{margin-bottom:0}.homepage-npc-card{margin:0;padding:0;border:none;background:transparent;display:flex;align-items:center;justify-content:space-between}.homepage-npc-card .npc-name{font-size:1rem;margin:0;line-height:1.3;font-weight:600;color:var(--primary-dark);flex:1}.homepage-npc-card .npc-click-icon{width:18px;height:18px;margin-left:.5rem;opacity:.4;color:var(--text-medium, #4B5563);flex-shrink:0;transition:opacity .2s ease,color .2s ease,transform .2s ease}.homepage-npcotd-section:hover .npc-click-icon{opacity:.7;transform:translate(2px)}.homepage-npcotd-section:hover .npc-click-icon{opacity:1;color:var(--primary-dark)}.homepage-npc-card .npc-basic-info,.homepage-npc-card .npc-traits,.homepage-npc-card .npc-expandable{display:none}body.dark-mode .homepage-npc-card .npc-name{color:var(--primary-dark)}body.dark-mode .homepage-npc-card .npc-click-icon{color:var(--text-medium)}body.dark-mode .homepage-npcotd-section:hover .npc-click-icon{color:var(--primary-dark)}.homepage-npcotd-section:focus{outline:2px solid var(--primary-dark);outline-offset:2px}body.dark-mode .homepage-npcotd-section{background:var(--card-bg);border-color:var(--border-color)}body.dark-mode .homepage-npcotd-heading{color:var(--text-medium)}.npc-label-species{color:var(--accent-blue, #6B8E9F)}.npc-label-gender{color:var(--accent-purple, #9B7FA8)}.npc-label-age{color:var(--accent-green, #8B9A5B)}.npc-label-motivation{color:var(--primary-dark, #967643)}.npc-label-personality{color:var(--accent-red, #B87D6B)}.npc-label-background{color:var(--accent-teal, #64482C)}.npc-basic-info{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color, #e5e7eb)}body.dark-mode .npc-label-species{color:var(--accent-blue)}body.dark-mode .npc-label-gender{color:var(--accent-purple)}body.dark-mode .npc-label-age{color:var(--accent-green)}body.dark-mode .npc-label-motivation{color:var(--primary-dark)}body.dark-mode .npc-label-personality{color:var(--accent-red)}body.dark-mode .npc-label-background{color:#a8b5a0}body.dark-mode .npc-basic-info{border-bottom-color:var(--border-color)}.npc-card{background:var(--card-bg, #ffffff);border:1px solid var(--border-color, #e5e7eb);border-radius:8px;padding:1.5rem;transition:transform .2s ease,box-shadow .2s ease}.npc-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.npc-name{font-family:var(--font-heading, "Metamorphous", serif);font-size:1.5rem;margin:0 0 .5rem;color:var(--primary-dark)}.npc-traits{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.npc-trait{display:inline-block;padding:.25rem .75rem;background:var(--primary-color, #BC9454);color:#fff;border-radius:12px;font-size:.875rem;font-weight:500}.npc-detail{margin-bottom:.75rem;font-size:.9375rem}.npc-detail:last-child{margin-bottom:0}.npc-detail-label{font-weight:600;margin-right:.5rem}.npc-detail-value{color:var(--text-medium, #4B5563)}body.dark-mode .npc-card{background:var(--card-bg);border-color:var(--border-color)}body.dark-mode .npc-name{color:var(--primary-dark)}body.dark-mode .npc-detail-value{color:var(--text-medium)}.controls-inner{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-end;padding-bottom:2rem}.search-container{flex:1;min-width:300px;position:relative;display:flex;align-items:center}.search-container .icon-search{position:absolute;left:1rem;pointer-events:none;z-index:1}.search-input{width:100%;padding:1rem 1rem 1rem 3rem;border:none;border-bottom:2px solid transparent;font-size:1rem;font-family:inherit;background:transparent;transition:border-color .2s ease;color:var(--text-dark)}.search-input:focus{outline:none;border-bottom-color:var(--primary-dark)}.search-input::placeholder{color:var(--text-medium);opacity:.6}.filter-container,.sort-container{display:flex;flex-direction:column;gap:.5rem;min-width:150px}.filter-label{font-weight:400;color:var(--text-medium);font-size:.9rem;display:flex;align-items:center;gap:.5rem}.filter-select{padding:1rem;border:none;border-bottom:2px solid transparent;font-size:1rem;font-family:inherit;background:transparent;cursor:pointer;transition:border-color .2s ease;width:100%;color:var(--text-dark)}.filter-select:hover,.filter-select:focus,.filter-select:active,.filter-select:focus-visible{background:var(--background-light);border-bottom-color:var(--primary)}.random-quest-container,.reset-filters-container{display:flex;align-items:flex-end}.random-quest-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;background:transparent;color:var(--text-dark);border:none;cursor:pointer;transition:all .3s ease;border-radius:8px;min-width:80px;font-family:inherit;position:relative}.random-quest-btn:hover,.random-quest-btn:focus{background:var(--background-light);outline:none}.d20-icon{font-size:2rem;line-height:0;display:block;transition:transform .3s ease}.random-quest-btn:hover .d20-icon{animation:diceRoll .6s ease}.random-quest-label,.reset-label{font-size:.85rem;font-weight:400;opacity:.9}.reset-filters-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:1rem;background:transparent;color:var(--text-dark);border:none;cursor:pointer;transition:all .3s ease;border-radius:8px;min-width:80px;font-family:inherit;position:relative}.reset-filters-btn:hover,.reset-filters-btn:focus{background:var(--background-light);outline:none}.reset-icon{font-size:1.5rem;line-height:0;display:block;transition:transform .3s ease}.reset-filters-btn:hover .reset-icon{transform:rotate(-180deg)}@keyframes diceRoll{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.quests-container{display:flex;flex-direction:column;gap:3rem;margin-bottom:4rem}#questsContainer{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:3rem}.quest-card{background:var(--card-bg);padding:3rem 2rem;position:relative;animation:fadeIn .4s ease-out both;transition:transform .2s ease,opacity .2s ease;cursor:pointer;width:100%}.quest-card:hover{transform:scale(1.01);opacity:.95}.quest-card:focus{outline:2px solid var(--primary-dark);outline-offset:4px}.quest-header{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;gap:1rem;padding-bottom:1.5rem}.quest-title{font-size:1.75rem;font-weight:400;color:var(--primary-dark);margin:0;flex:1;letter-spacing:.02em;line-height:1.3;text-align:left}.quest-date{font-family:var(--font-heading);font-size:.9rem;color:var(--text-medium);white-space:nowrap;font-style:normal;font-weight:400;display:flex;align-items:center;gap:.5rem;text-align:left}.quest-content{color:var(--text-dark);margin-bottom:1.5rem;line-height:1.9;text-align:left;font-style:normal;font-weight:400}.quest-content-truncated{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.quest-categories{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;padding-top:1.5rem}.category-badge{display:inline-block;padding:.5rem 1rem;border:none;font-size:.85rem;font-weight:400;transition:transform .2s ease,opacity .2s ease;cursor:pointer;color:#fff;background:var(--accent-purple);border-radius:4px}.category-badge:hover{transform:translateY(-2px);opacity:.9}.category-badge:focus-visible{outline:2px solid currentColor;outline-offset:2px}.loading,.no-results{text-align:center;padding:0;font-size:1.25rem;color:var(--text-medium);font-style:normal;font-weight:400;width:100%}.no-results{animation:fadeIn .5s ease-out}.footer{background:var(--card-bg);margin-top:2rem;padding:4rem 2rem 2rem}.footer-content{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:3rem;margin-bottom:3rem}.footer-section{display:flex;flex-direction:column;gap:1rem}.footer-title{font-size:1.5rem;font-weight:400;color:var(--primary-dark);margin:0;letter-spacing:.05em}.footer-description{color:var(--text-medium);line-height:1.7;font-size:1rem}.footer-tagline{color:var(--text-accent);font-family:var(--font-heading);font-style:normal;font-size:3rem;line-height:1.1;text-align:center}.footer-bottom{max-width:1400px;margin:0 auto;padding-top:2rem;text-align:center;color:var(--text-medium);font-size:.9rem}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.quest-card:nth-child(1){animation-delay:.05s}.quest-card:nth-child(2){animation-delay:.1s}.quest-card:nth-child(3){animation-delay:.15s}.quest-card:nth-child(4){animation-delay:.2s}.quest-card:nth-child(5){animation-delay:.25s}.quest-card:nth-child(6){animation-delay:.3s}.quest-card:nth-child(n+7){animation-delay:.35s}.skip-link{position:absolute;top:-40px;left:0;background:var(--primary-dark);color:#fff;padding:.5rem 1rem;text-decoration:none;z-index:1000;border:var(--border-thin)}.skip-link:focus{top:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000}.modal[aria-hidden=false]{display:flex;align-items:center;justify-content:center}.modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#00000080;cursor:pointer}.modal-content{position:relative;background:var(--card-bg);border:none;max-width:800px;width:90%;max-height:90vh;overflow-y:auto;z-index:1001;margin:2rem;padding:3rem;border-radius:8px;box-shadow:0 20px 60px #0000004d}.modal-close{position:absolute;top:1.5rem;right:1.5rem;background:transparent;border:none;font-size:2rem;line-height:1;width:2.5rem;height:2.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-dark);transition:transform .2s ease,background-color .2s ease;border-radius:4px}.modal-close:hover,.modal-close:focus{background:var(--background-light);transform:scale(1.1);outline:none}.modal-close:focus{outline:2px solid var(--primary-dark);outline-offset:2px}.modal-body{padding-top:1rem}.modal-body .quest-header{margin-bottom:2rem}.modal-body .quest-title{font-size:2.5rem}.modal-body .quest-content{font-size:1.15rem;line-height:1.9}.modal-view-page-link{display:inline-block;margin-top:1.25rem;font-size:.8125rem;color:var(--text-medium, #6b7280);text-decoration:none}.modal-view-page-link:hover{color:var(--primary-dark);text-decoration:underline}.modal-body .quest-npcs-section{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border-color, #e5e7eb)}.modal-body .npcs-heading{font-family:var(--font-heading, "Metamorphous", serif);font-size:1.5rem;margin:0 0 1.5rem;color:var(--primary-dark)}.modal-body .npcs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.5rem}.modal-body .npc-card{background:var(--card-bg, #f9fafb);border:1px solid var(--border-color, #e5e7eb);border-radius:8px;padding:1.25rem}.modal-body .npc-name{font-family:var(--font-heading, "Metamorphous", serif);font-size:1.125rem;margin:0 0 .75rem;color:var(--primary-dark, #967643)}.modal-body .npc-traits{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.modal-body .npc-trait{display:inline-block;padding:.25rem .75rem;background:var(--primary-color, #BC9454);color:#fff;border-radius:12px;font-size:.875rem;font-weight:500}.modal-body .npc-detail{margin-bottom:.75rem;font-size:.9375rem}.modal-body .npc-detail:last-child{margin-bottom:0}.modal-body .npc-detail-label{font-weight:600;color:var(--text-dark, #1F2937);margin-right:.5rem}.modal-body .npc-detail-value{color:var(--text-medium, #4B5563)}body.dark-mode .modal-body .quest-npcs-section{border-top-color:var(--border-color)}body.dark-mode .modal-body .npc-card{background:var(--card-bg);border-color:var(--border-color)}body.dark-mode .modal-body .npcs-heading,body.dark-mode .modal-body .npc-name{color:var(--primary-dark)}body.dark-mode .modal-body .npc-detail-label{color:var(--text-dark)}body.dark-mode .modal-body .npc-detail-value{color:var(--text-medium)}.npc-modal-header{margin-bottom:2rem;text-align:center}.npc-modal-name{font-family:var(--font-heading, "Metamorphous", serif);font-size:2rem;margin:0 0 .5rem;color:var(--primary-dark)}.npc-modal-subtitle{font-size:.875rem;color:var(--text-medium, #4B5563);text-transform:uppercase;letter-spacing:.5px}.npc-modal-content{display:flex;flex-direction:column;gap:2rem}.npc-modal-section{padding-bottom:1.5rem;border-bottom:1px solid var(--border-color, #e5e7eb)}.npc-modal-section:last-of-type{border-bottom:none;padding-bottom:0}.npc-modal-basic-info{margin-bottom:1rem}.npc-modal-traits{display:flex;flex-wrap:wrap;gap:.5rem}.npc-modal-footer{margin-top:1rem;padding-top:1.5rem;border-top:1px solid var(--border-color, #e5e7eb);text-align:center}.npc-modal-link{color:var(--primary-dark);text-decoration:none;font-weight:600}.npc-modal-link:hover{text-decoration:underline}body.dark-mode .npc-modal-name{color:var(--primary-dark)}body.dark-mode .npc-modal-subtitle{color:var(--text-medium)}body.dark-mode .npc-modal-section{border-bottom-color:var(--border-color)}body.dark-mode .npc-modal-footer{border-top-color:var(--border-color)}body.dark-mode .npc-modal-link{color:var(--primary-dark)}*:focus-visible{outline:2px solid var(--primary-dark);outline-offset:2px}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--primary-dark);outline-offset:2px}@media (max-width: 768px){.nav-container{padding:0 1.5rem;flex-direction:column;gap:1rem}.nav-links{gap:1.5rem}.hero-text{padding:3rem 1.5rem}.hero-title{font-size:2.5rem}.hero-subtitle{font-size:1.25rem}.main-wrapper{padding:3rem 1.5rem}.controls-inner{flex-direction:column;gap:1rem}.search-container,.filter-container,.sort-container{width:100%}.quests-container{gap:2rem}.quest-card{padding:1.5rem}.random-quest-container,.reset-filters-container,.random-quest-btn,.reset-filters-btn{width:100%}.footer{padding:3rem 1.5rem 1.5rem}.footer-content{grid-template-columns:1fr;gap:2rem}.modal-content{width:95%;margin:1rem;padding:2rem}.modal-body .quest-title{font-size:1.75rem}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
