:root{--bg-dark: #1a1208;--bg-panel: #2d1f0f;--bg-panel-light: #3d2a15;--gold: #c9a227;--gold-light: #f0d060;--gold-dark: #8b6914;--green: #4a7c3f;--green-light: #6db85a;--red: #8b2020;--text: #e8dcc8;--text-dim: #a89878;--border: #5c4a2a;--pixel-shadow: 4px 4px 0 #0a0604;--font-pixel: "Press Start 2P", monospace;--font-body: "VT323", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:18px}body{font-family:var(--font-body);background:var(--bg-dark);background-image:radial-gradient(ellipse at 20% 50%,rgba(201,162,39,.05) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(74,124,63,.05) 0%,transparent 50%);color:var(--text);min-height:100vh;line-height:1.4}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--gold-light);text-decoration:none}a:hover{color:var(--gold)}h1,h2,h3,.logo{font-family:var(--font-pixel);line-height:1.6}h1{font-size:1rem}h2{font-size:.75rem}h3{font-size:.65rem}.pixel-border{border:3px solid var(--border);box-shadow:var(--pixel-shadow);image-rendering:pixelated}.pixel-card{background:var(--bg-panel);border:3px solid var(--border);box-shadow:var(--pixel-shadow);padding:1.25rem}.pixel-btn{font-family:var(--font-pixel);font-size:.55rem;background:var(--gold-dark);color:var(--text);border:3px solid var(--gold);padding:.75rem 1rem;cursor:pointer;box-shadow:var(--pixel-shadow);transition:transform .1s,box-shadow .1s;text-transform:uppercase;letter-spacing:.05em}.pixel-btn:hover:not(:disabled){background:var(--gold);color:var(--bg-dark);transform:translate(-1px,-1px);box-shadow:5px 5px #0a0604}.pixel-btn:active:not(:disabled){transform:translate(2px,2px);box-shadow:2px 2px #0a0604}.pixel-btn:disabled{opacity:.5;cursor:not-allowed}.pixel-btn--green{background:var(--green);border-color:var(--green-light)}.pixel-btn--green:hover:not(:disabled){background:var(--green-light);color:var(--bg-dark)}.pixel-btn--danger{background:var(--red);border-color:#c04040}.pixel-btn--small{font-size:.45rem;padding:.5rem .75rem}.pixel-input{font-family:var(--font-body);font-size:1.1rem;background:var(--bg-dark);color:var(--text);border:2px solid var(--border);padding:.5rem .75rem;width:100%}.pixel-input:focus{outline:none;border-color:var(--gold)}.pixel-label{font-family:var(--font-pixel);font-size:.45rem;color:var(--text-dim);display:block;margin-bottom:.35rem;text-transform:uppercase}.form-group{margin-bottom:1rem}.app-layout{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1;max-width:1100px;width:100%;margin:0 auto;padding:1.5rem 1rem 3rem}.navbar{background:var(--bg-panel);border-bottom:3px solid var(--border);padding:.75rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.navbar-brand{font-family:var(--font-pixel);font-size:.7rem;color:var(--gold-light);display:flex;align-items:center;gap:.5rem}.navbar-brand span{color:var(--green-light)}.navbar-links{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.navbar-links a,.navbar-links button{font-family:var(--font-pixel);font-size:.45rem;color:var(--text-dim);background:none;border:none;cursor:pointer;padding:.4rem .6rem;text-transform:uppercase}.navbar-links a:hover,.navbar-links a.active,.navbar-links button:hover{color:var(--gold-light)}.progress-bar{background:var(--bg-dark);border:2px solid var(--border);height:1.25rem;position:relative;overflow:hidden}.progress-bar__fill{background:linear-gradient(90deg,var(--green),var(--green-light));height:100%;transition:width .3s ease;image-rendering:pixelated}.progress-bar__label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-pixel);font-size:.4rem;color:var(--text);text-shadow:1px 1px 0 #000}.objective-item{display:flex;align-items:flex-start;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--border)}.objective-item:last-child{border-bottom:none}.objective-checkbox{width:1.25rem;height:1.25rem;accent-color:var(--gold);cursor:pointer;flex-shrink:0;margin-top:.15rem}.objective-label{flex:1;font-size:1.1rem}.objective-label.completed{text-decoration:line-through;color:var(--text-dim)}.objective-points{font-family:var(--font-pixel);font-size:.4rem;color:var(--gold);white-space:nowrap}.category-section{margin-bottom:1.5rem}.category-title{font-family:var(--font-pixel);font-size:.55rem;color:var(--gold-light);margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:2px solid var(--border);text-transform:uppercase}.objectives-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.objective-block{padding:0;overflow:hidden}.objective-block--wide{grid-column:1 / -1}.objective-block__header{display:flex;align-items:center;gap:1rem;width:100%;padding:1rem;background:var(--bg-panel-light);border:none;cursor:pointer;text-align:left;color:inherit;font-family:inherit;transition:background .15s}.objective-block__header:hover{background:var(--bg-dark)}.objective-block__info{flex:1;min-width:0}.objective-block__title-row{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem}.objective-block__title{font-family:var(--font-pixel);font-size:.55rem;color:var(--gold-light);text-transform:uppercase}.objective-block__count{font-family:var(--font-pixel);font-size:.4rem;color:var(--text-dim);white-space:nowrap}.objective-block__toggle{font-family:var(--font-pixel);font-size:.45rem;color:var(--gold);flex-shrink:0}.objective-block__list{padding:0 1rem 1rem;border-top:2px solid var(--border)}.objective-block__list--scroll{max-height:420px;overflow-y:auto}.objective-category-icon{flex-shrink:0;image-rendering:pixelated;image-rendering:crisp-edges;filter:drop-shadow(2px 2px 0 #0a0604)}.grid-2{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.grid-3{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.char-card{background:var(--bg-panel-light);border:3px solid var(--border);box-shadow:var(--pixel-shadow);padding:1rem;cursor:pointer;transition:transform .1s,border-color .1s}.char-card:hover{transform:translate(-2px,-2px);box-shadow:6px 6px #0a0604;border-color:var(--gold)}.char-card__name{font-family:var(--font-pixel);font-size:.6rem;color:var(--gold-light);margin-bottom:.5rem}.char-card__meta{font-size:1rem;color:var(--text-dim)}.char-card__points{font-family:var(--font-pixel);font-size:.45rem;color:var(--green-light);margin-top:.75rem}.value-up{color:var(--green-light)}.value-down{color:#d96b6b}.section-title{color:var(--gold-light);margin:1.5rem 0 .75rem}.overview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin-bottom:.5rem}.overview-card{display:flex;flex-direction:column;gap:.35rem;background:var(--bg-panel-light);border:2px solid var(--border);padding:.75rem}.overview-card__label{font-size:.85rem;color:var(--text-dim)}.overview-card__value{font-size:1.25rem;font-weight:700;color:var(--gold-light);word-break:break-word}.table-wrap{overflow-x:auto;border:2px solid var(--border)}.data-table{width:100%;border-collapse:collapse;font-size:.95rem}.data-table th,.data-table td{padding:.5rem .75rem;text-align:left;white-space:nowrap;border-bottom:1px solid var(--border)}.data-table th{background:var(--bg-panel);color:var(--gold);font-size:.85rem}.data-table tbody tr:nth-child(2n){background:#00000026}.data-table--clickable tbody tr{cursor:pointer}.data-table--clickable tbody tr:hover{background:#c9a2271f}.bar-cell{position:relative;min-width:90px;display:flex;align-items:center}.bar-cell__bar{position:absolute;left:0;top:0;bottom:0;background:#6db85a40;border-left:2px solid var(--green-light)}.bar-cell__text{position:relative;font-weight:700;color:var(--gold-light);padding:.1rem 0}.session-detail{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:start}@media(min-width:900px){.session-detail{grid-template-columns:1.4fr 1fr}}.session-detail__top{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.25rem}.session-detail__chip{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:120px;background:var(--bg-dark);border:2px solid var(--border);padding:.6rem .75rem}.session-detail__chip span{font-size:.8rem;color:var(--text-dim)}.session-detail__chip strong{font-size:1.3rem;color:var(--gold-light)}.session-detail__group{margin-bottom:1.25rem}.session-detail__group-title{color:var(--gold);font-size:1.05rem;margin-bottom:.5rem;border-bottom:1px solid var(--border);padding-bottom:.25rem}.session-detail__stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.4rem 1rem}.session-detail__stat{display:flex;justify-content:space-between;gap:.5rem;border-bottom:1px dotted var(--border);padding:.2rem 0}.session-detail__stat-label{color:var(--text-dim)}.session-detail__stat-value{color:var(--gold-light);font-weight:700}.session-detail__image{width:100%;image-rendering:pixelated;border:2px solid var(--border);background:var(--bg-dark)}.session-form__preview{width:100%;max-height:280px;object-fit:contain;image-rendering:pixelated;border:2px solid var(--border);background:var(--bg-dark)}.monster-row{display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem}.monster-row__count{width:5rem;flex:0 0 auto}.monster-row__name{flex:1}.form-row{display:flex;gap:.75rem}.form-row .form-group{flex:1}.form-row--wrap{flex-wrap:wrap}.form-row--wrap .form-group{flex:1 1 calc(50% - .75rem);min-width:120px}.ranking-row{display:grid;grid-template-columns:3rem 1fr auto;gap:1rem;align-items:center;padding:.75rem;border-bottom:1px solid var(--border)}.ranking-row:first-child{background:#c9a2271a}.ranking-rank{font-family:var(--font-pixel);font-size:.6rem;color:var(--gold);text-align:center}.ranking-points{font-family:var(--font-pixel);font-size:.5rem;color:var(--green-light)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.auth-card{width:100%;max-width:400px}.auth-title{text-align:center;margin-bottom:.5rem;color:var(--gold-light)}.auth-subtitle{text-align:center;color:var(--text-dim);font-size:1.1rem;margin-bottom:1.5rem}.auth-footer{text-align:center;margin-top:1rem;font-size:1rem;color:var(--text-dim)}.tabs{display:flex;gap:.25rem;margin-top:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.tab{font-family:var(--font-pixel);font-size:.45rem;background:var(--bg-panel-light);border:2px solid var(--border);color:var(--text-dim);padding:.5rem .75rem;cursor:pointer;text-transform:uppercase}.tab.active{background:var(--gold-dark);border-color:var(--gold);color:var(--text)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:var(--bg-panel);border:3px solid var(--border);box-shadow:var(--pixel-shadow);padding:1.5rem;width:100%;max-width:560px;max-height:90vh;overflow-y:auto}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.modal--confirm{max-width:420px}.confirm-message{color:var(--text);line-height:1.4;margin-bottom:1.25rem}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.page-header h1{color:var(--gold-light)}.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-dim);font-size:1.2rem}.empty-state p{margin-bottom:1rem}.alert{padding:.75rem 1rem;border:2px solid;margin-bottom:1rem;font-size:1rem}.alert-error{background:#8b202033;border-color:var(--red);color:#f0a0a0}.alert-success{background:#4a7c3f33;border-color:var(--green);color:var(--green-light)}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 0}.toggle-label{font-size:1.1rem}.toggle-switch{position:relative;width:3rem;height:1.5rem;background:var(--bg-dark);border:2px solid var(--border);cursor:pointer;flex-shrink:0}.toggle-switch.on{background:var(--green);border-color:var(--green-light)}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:1rem;height:calc(100% - 4px);background:var(--text);transition:left .2s}.toggle-switch.on:after{left:calc(100% - 1rem - 2px)}@media(max-width:600px){html{font-size:16px}h1{font-size:.85rem}.navbar-brand{font-size:.55rem}.ranking-row{grid-template-columns:2.5rem 1fr}.ranking-points{grid-column:2;text-align:left}}
