:root{color-scheme:light;--bg: #14100d;--bg-alt: #211812;--panel: #2a1f18;--panel-soft: #3a2b22;--panel-border: #735a3f;--text: #efe3c8;--muted: #b7a789;--accent: #b18a45;--accent-soft: #5f4222;--error-bg: #4a1f1c;--error-border: #b95850;--shadow: 0 10px 28px rgba(0, 0, 0, .35)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(circle at top right,rgba(116,38,25,.22) 0%,transparent 28%),radial-gradient(circle at top left,rgba(176,123,55,.15) 0%,transparent 24%),linear-gradient(160deg,var(--bg) 0%,var(--bg-alt) 100%);color:var(--text);font-family:Cambria,Georgia,serif}.app-shell{min-height:100%}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;background:linear-gradient(180deg,#3a2b20,#221914);border-bottom:2px solid #80623f;box-shadow:inset 0 -1px #ffe1aa29;color:var(--text)}.header-tools{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.8px;font-size:1.125rem;text-transform:uppercase;color:#d9be86}.brand-logo{width:100px;height:100px;object-fit:cover;flex-shrink:0}.nav-list{list-style:none;display:flex;gap:8px;margin:0;padding:0}.nav-link{display:inline-block;padding:8px 12px;border-radius:8px;text-decoration:none;color:#ebd9b2;border:1px solid #6c5337;background:#49332285;font-weight:600}.nav-link:hover{border-color:#a8844f;background:#b07c3933}.nav-link.active{background:linear-gradient(180deg,#b79457,#88632f);border-color:#c7a66a;color:#1e140c}.auth-chip{display:flex;align-items:center;gap:10px;padding:6px 10px;border:1px solid #6c5337;border-radius:999px;background:#4933228f}.auth-chip-copy{font-size:.88rem;color:#ead8b0;white-space:nowrap}.auth-avatar{width:28px;height:28px;border-radius:999px;object-fit:cover;border:1px solid rgba(236,214,170,.36)}.auth-button{padding:7px 11px;white-space:nowrap}.nav-link.disabled{opacity:.55;cursor:not-allowed}.content{max-width:1200px;margin:0 auto;padding:20px}.section-header{margin-bottom:12px}.section-header h1{margin:0;font-size:1.75rem}.section-subtitle{margin:6px 0 0;color:var(--muted)}.dashboard-page{display:grid;gap:18px}.dashboard-hero{padding:20px;background:radial-gradient(circle at top right,rgba(176,124,57,.14) 0%,transparent 28%),linear-gradient(160deg,#432f1ff5,#211712f5)}.dashboard-kicker{margin:0 0 8px;font-size:.82rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#d3b57a}.dashboard-hero h1{margin:0;font-size:clamp(2rem,4vw,3rem)}.dashboard-hero-copy{max-width:700px;margin:10px 0 0;color:var(--muted);font-size:1rem;line-height:1.5}.dashboard-section{display:grid;gap:12px}.dashboard-two-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.dashboard-panel{display:grid;gap:16px;align-content:start}.dashboard-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.dashboard-panel-header h2,.dashboard-section h2{margin:0;font-size:1.35rem}.dashboard-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.dashboard-stat{padding:16px;min-height:126px;display:grid;align-content:start;gap:8px}.dashboard-stat-label{margin:0;color:var(--muted);font-size:.82rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.dashboard-stat-value{margin:0;font-size:clamp(1.8rem,3vw,2.4rem);font-weight:700;color:#f2e3be}.dashboard-stat-detail{margin:0;color:var(--muted);font-size:.88rem;line-height:1.4}.dashboard-stat a{color:#dc143c;text-decoration:none}.victory-progress-block{display:grid;gap:10px;padding:14px;border:1px solid rgba(140,111,69,.55);border-radius:10px;background:#17100c6b}.victory-progress-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.victory-progress-count{margin:2px 0 0;font-size:1.2rem;font-weight:700;color:#f2e3be}.victory-progress-percent{font-size:1rem;font-weight:700;color:var(--muted);white-space:nowrap}.rating-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.rating-summary-box{display:grid;gap:8px;padding:14px;border:1px solid rgba(140,111,69,.55);border-radius:10px;background:#17100c6b}.rating-overview-value{min-height:1.3rem}.dashboard-subsection{display:grid;gap:10px}.dashboard-subsection h3{margin:0;font-size:1rem}.dashboard-list{display:grid;gap:8px}.dashboard-inline-link{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid rgba(127,99,64,.7);border-radius:9px;background:#18110c73;color:inherit;text-decoration:none}.dashboard-inline-link:hover{border-color:#b48d4c;background:#3626188c}.distribution-list{display:grid;gap:8px}.distribution-row{display:grid;grid-template-columns:minmax(106px,132px) minmax(0,1fr) 28px;align-items:center;gap:10px}.distribution-label{white-space:nowrap}.distribution-bar-track,.race-progress-track{height:10px;border-radius:999px;background:#1e1611;border:1px solid rgba(127,99,64,.65);overflow:hidden}.distribution-bar-fill,.race-progress-fill{height:100%;background:linear-gradient(90deg,#7f5d2e,#d1ab67)}.distribution-count{text-align:right;color:var(--muted);font-size:.88rem}.race-progress-list{display:grid;gap:12px}.race-progress-row{display:grid;gap:8px;padding-bottom:10px;border-bottom:1px solid rgba(127,99,64,.32)}.race-progress-row:last-child{border-bottom:0;padding-bottom:0}.race-progress-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.race-progress-copy{margin:0;color:var(--muted);font-size:.88rem}.dashboard-lord-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.dashboard-lord-link{text-decoration:none;color:inherit}.dashboard-lord-card{display:grid;grid-template-columns:minmax(116px,140px) minmax(0,1fr);gap:14px;padding:14px;border:1px solid rgba(127,99,64,.7);border-radius:12px;background:linear-gradient(170deg,#33261d,#271d16);box-shadow:var(--shadow);min-width:0}.dashboard-lord-card.compact{grid-template-columns:1fr;padding:12px;gap:10px}.dashboard-lord-image-frame{background:#35271d;border-radius:10px;overflow:hidden;aspect-ratio:4 / 5;display:flex;align-items:center;justify-content:center}.dashboard-lord-image-frame.compact{aspect-ratio:16 / 9}.dashboard-lord-image{height:100%;object-fit:cover}.dashboard-lord-body{display:grid;gap:8px;min-width:0}.dashboard-lord-title{margin:0;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dashboard-lord-meta{margin:0;color:var(--text);font-size:.92rem;line-height:1.4;word-break:break-word}.dashboard-lord-ratings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:4px}.dashboard-lord-rating-label{display:block;margin-bottom:4px;font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.dashboard-link-button{text-decoration:none;display:inline-flex;align-items:center}.dashboard-news-panel{display:grid;align-content:start;gap:12px}.dashboard-news-list{display:grid;gap:10px}.dashboard-news-item{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px;padding:10px;border:1px solid var(--panel-border);border-radius:10px;background:linear-gradient(180deg,#3a2b1fcc,#1e1611cc);color:inherit;text-decoration:none}.dashboard-news-item:hover,.dashboard-news-item:focus-visible{border-color:#ab8551;box-shadow:0 8px 20px #0f0a0733}.dashboard-news-image,.dashboard-news-fallback{width:100%;height:74px;border-radius:8px;object-fit:cover;background:#2e221a;border:1px solid #704f2c}.dashboard-news-fallback{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.dashboard-news-copy{display:grid;gap:4px;min-width:0}.dashboard-news-date{color:var(--muted);font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.dashboard-news-copy h3{margin:0;font-size:.96rem;line-height:1.35}.dashboard-news-copy p,.empty-copy{margin:0;color:var(--muted);line-height:1.5}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;box-shadow:var(--shadow);padding:14px;position:relative}.panel:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:12px;pointer-events:none;background-image:linear-gradient(135deg,rgba(241,224,178,.05) 0%,transparent 45%)}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:16px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:.9rem;font-weight:600}.field-inline-action{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-inline-action input{flex:1 1 180px;min-width:0}.field-label{font-size:.9rem;font-weight:600}.field input,.field select{border:1px solid #806345;border-radius:8px;padding:10px;font-size:.95rem;background:#211912;color:var(--text)}.field input:focus,.field select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.field input::placeholder{color:#8f7b61}.field input[type=date]::-webkit-calendar-picker-indicator{filter:brightness(0) saturate(100%) invert(90%) sepia(17%) saturate(481%) hue-rotate(334deg) brightness(99%) contrast(90%);opacity:1}.field-help{margin:0;font-size:.78rem;color:var(--muted)}.state-message{margin-bottom:12px}.state-message.error{background:var(--error-bg);border-color:var(--error-border)}.result-count{margin:0 0 10px;color:var(--muted);font-size:.92rem}.lords-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.lord-card{background:linear-gradient(170deg,#33261d,#271d16);border:1px solid var(--panel-border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;transition:transform .12s ease,box-shadow .12s ease}.lord-card-link{text-decoration:none;color:inherit}.lord-card-link:hover .lord-card,.lord-card-link:focus-visible .lord-card{transform:translateY(-2px);box-shadow:0 12px 28px #1e160e24}.portrait-frame{background:#35271d;aspect-ratio:16 / 9;display:flex;align-items:center;justify-content:center}.portrait{width:100%;height:100%;object-fit:cover}.portrait-fallback{color:#5f594f;font-size:.9rem}.lord-body{padding:12px}.card-status-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.status-pill{display:inline-block;font-size:.75rem;padding:3px 7px;border-radius:999px;border:1px solid #7f6340;background:#3a2c21}.status-pill.played{background:#2f3f2f;border-color:#5f8f67}.status-pill.unplayed{background:#44352a;border-color:#7d6545}.status-pill.win{background:#47361e;border-color:#b48d4c}.lord-name{margin:0 0 10px;font-size:1.05rem;white-space:nowrap}.lord-details{margin:0;display:grid;gap:8px}.lord-details div{display:flex;gap:8px;align-items:center}.lord-details dt{margin:0;font-weight:600;color:var(--muted);white-space:nowrap}.lord-details dd{margin:0;min-width:0}.icon-rating{display:inline-flex;align-items:center;flex-wrap:nowrap;gap:2px;min-height:1.2rem;white-space:nowrap}.lord-details div:nth-child(2) dd{white-space:nowrap}.card-icon{font-size:.95rem;line-height:1}.card-icon.filled{color:#e6c37c;text-shadow:0 0 6px rgba(229,191,116,.24)}.card-icon.empty{color:#6a5842;text-shadow:none}.filter-actions{justify-content:flex-end}.btn.secondary{background:linear-gradient(180deg,#5b4530,#3a2a1d);border-color:#9e7d4c;color:#f1dfbc}.btn:disabled{opacity:.55;cursor:not-allowed}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.back-link{display:inline-block;margin-bottom:12px;color:#d4b271;font-weight:600}.back-link:hover{color:#e3c586}.detail-card{padding:16px}.detail-hero{display:grid;grid-template-columns:minmax(220px,360px) 1fr;gap:16px;margin-bottom:18px}.detail-portrait-frame{background:#35271d;border-radius:10px;overflow:hidden;display:flex;align-items:center;justify-content:center}.detail-portrait{width:100%;height:100%;object-fit:cover}.detail-title{margin:0 0 8px;font-size:1.7rem}.faction-badge-wrap{margin:10px 0}.faction-badge-label{margin:0 0 6px;font-size:.82rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#c9b188}.faction-badge{width:72px;height:72px;object-fit:contain;border:1px solid #876a43;border-radius:8px;background:#1b130e;padding:6px}.detail-meta{margin:4px 0}.progress-form{display:grid;gap:14px}.progress-form h2{margin:0}.checkbox-row,.choice-row{display:flex;flex-wrap:wrap;gap:12px}.checkbox-row label,.choice-row label{display:inline-flex;align-items:center;gap:6px}.stars-fieldset,.field{border:none;margin:0;padding:0}.stars-row{display:flex;flex-wrap:wrap;gap:8px}.star-btn{border:1px solid #7f6240;background:#23180f;color:var(--text);border-radius:8px;padding:8px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-width:42px}.star-btn.active{border-color:#d1ab67;background:#4b341a}.star-btn.clear{background:#35271c}.icon-wrap{line-height:1}.icon.filled{color:#e6c37c;text-shadow:0 0 6px rgba(229,191,116,.24);font-size:1.1rem}.icon.empty{color:#6a5842;font-size:1.1rem}.skull-btn .icon.filled{color:#cfbaa1;text-shadow:none}.skull-btn .icon.empty{color:#5f5142}textarea{border:1px solid #806345;border-radius:8px;padding:10px;font-size:.95rem;font-family:inherit;resize:vertical;background:#211912;color:var(--text)}.form-message{margin:0;font-size:.9rem;color:#b8cb93}.form-message.error{color:#8f1f1a}.form-actions{display:flex;flex-wrap:wrap;gap:10px;padding-top:6px}.btn{border:1px solid #8e6f45;border-radius:9px;padding:10px 14px;font-weight:600;cursor:pointer}.btn.primary{background:linear-gradient(180deg,#b38d4d,#7f5d2e);border-color:#d1b172;color:#1e1209}.btn.danger{background:#4a2721;border-color:#8f4f47;color:#f0c2bd}@media (max-width: 640px){.app-header{flex-direction:column;align-items:flex-start}.header-tools{width:100%;justify-content:space-between}.auth-chip{width:100%;justify-content:space-between;border-radius:14px}.dashboard-two-column,.dashboard-stats-grid,.rating-summary-grid,.dashboard-lord-ratings,.victory-progress-grid,.dashboard-lord-card,.dashboard-panel-header,.race-progress-head,.distribution-row{grid-template-columns:1fr}.distribution-row{display:grid}.victory-progress-head{flex-direction:column}.filter-actions{justify-content:flex-start}.lord-details div{grid-template-columns:minmax(88px,96px) minmax(0,1fr)}.detail-hero{grid-template-columns:1fr}}
