*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#1a1810;--surface:#24221a;--surface2:#2e2c22;--surface3:#38362a;
  --border:#5a5540;--text:#d4d0c8;--text-dim:#9a9580;--text-bright:#f0ece0;
  --accent:#d4943c;--accent-dim:#8a6020;--accent-bright:#f0b050;
  --green:#6a9a50;--red:#c55;--yellow:#ca3;
  --cat-combat:#d06050;--cat-survival:#d4943c;--cat-utility:#50a0d0;
  --cat-crafting:#50a080;--cat-social:#d0b040;--cat-stealth:#9070b0;
}
html{font-size:15px}
body{background:var(--bg);color:var(--text);font-family:'Segoe UI',system-ui,-apple-system,sans-serif;min-height:100vh}

/* Header */
.header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:8px;position:sticky;top:0;z-index:100}
.title-block{display:flex;flex-direction:column;gap:2px}
h1{font-size:1.3rem;color:var(--text-bright);font-weight:600;letter-spacing:.5px}
h1 span{color:var(--accent);font-weight:400}
.mod-versions{font-size:.7rem;color:var(--text-dim);letter-spacing:.3px}
.header-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.points-display{font-size:.85rem;color:var(--text-dim)}
.points-display b{color:var(--text-bright);font-size:1rem}
.points-display.over b{color:var(--red)}
.level-selector{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--text-dim)}
.level-selector input{width:50px;background:var(--surface2);border:1px solid var(--border);color:var(--text-bright);border-radius:4px;padding:2px 6px;font-size:.85rem;text-align:center}
.header-actions{display:flex;gap:6px;align-items:center}
.btn-share{background:none;border:1px solid var(--border);color:var(--text-dim);padding:3px 10px;border-radius:4px;cursor:pointer;font-size:.8rem;transition:all .15s}
.btn-share:hover{border-color:var(--accent);color:var(--accent)}
.btn-share.copied{border-color:var(--green);color:var(--green)}
.btn-reset{background:none;border:1px solid var(--border);color:var(--text-dim);padding:3px 10px;border-radius:4px;cursor:pointer;font-size:.8rem;transition:all .15s}
.btn-reset:hover{border-color:var(--red);color:var(--red)}

/* Main layout: two panels */
.main-layout{display:flex;gap:0;min-height:calc(100vh - 50px)}

/* Character panel (left) */
.char-panel{width:260px;min-width:260px;background:var(--surface);border-right:1px solid var(--border);padding:10px;overflow-y:auto;position:sticky;top:50px;height:calc(100vh - 50px)}
.char-panel h2{font-size:.85rem;color:var(--accent);margin-bottom:6px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}
.char-panel h3{font-size:.75rem;color:var(--text-dim);margin:10px 0 4px;font-weight:600;letter-spacing:.3px;text-transform:uppercase}

/* SPECIAL stats */
.special-list{display:flex;flex-direction:column;gap:3px}
.special-stat{display:flex;align-items:center;gap:6px;padding:3px 6px;background:var(--surface2);border:1px solid transparent;border-radius:4px;transition:all .15s}
.special-stat:hover{border-color:var(--border)}
.special-stat .label{font-size:.72rem;font-weight:700;letter-spacing:.5px;width:28px;color:var(--accent)}
.special-stat .value{font-size:1rem;font-weight:700;color:var(--text-bright);width:22px;text-align:center}
.special-stat .controls{display:flex;gap:2px;margin-left:auto}
.special-stat .controls button{width:22px;height:20px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:3px;cursor:pointer;font-size:.85rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .15s}
.special-stat .controls button:hover:not(:disabled){background:var(--surface3);border-color:var(--accent)}
.special-stat .controls button:disabled{opacity:.3;cursor:default}

/* Skills */
.skills-list{display:flex;flex-direction:column;gap:2px}
.skill-row{display:flex;align-items:center;gap:4px;padding:2px 6px;font-size:.72rem;border-radius:3px;transition:all .15s}
.skill-row:hover{background:var(--surface2)}
.skill-row .skill-name{flex:1;color:var(--text)}
.skill-row .skill-value{width:32px;text-align:center;font-weight:600;color:var(--text-bright);font-size:.75rem}
.skill-row input.skill-input{width:40px;background:var(--surface2);border:1px solid var(--border);color:var(--text-bright);border-radius:3px;padding:1px 4px;font-size:.72rem;text-align:center}
.skill-row .tag-btn{width:18px;height:18px;border:1px solid var(--border);background:var(--surface);color:var(--text-dim);border-radius:3px;cursor:pointer;font-size:.55rem;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}
.skill-row .tag-btn:hover{border-color:var(--accent);color:var(--accent)}
.skill-row .tag-btn.active{background:var(--accent);border-color:var(--accent-bright);color:#fff}

/* Sanity */
.sanity-row{display:flex;align-items:center;gap:6px;padding:4px 6px;margin-top:6px;background:var(--surface2);border-radius:4px}
.sanity-row label{font-size:.75rem;color:var(--text-dim);font-weight:600}
.sanity-row input{width:60px;background:var(--surface);border:1px solid var(--border);color:var(--text-bright);border-radius:3px;padding:2px 4px;font-size:.75rem;text-align:center}

/* Rads */
.rads-row{display:flex;align-items:center;gap:6px;padding:4px 6px;margin-top:4px;background:var(--surface2);border-radius:4px}
.rads-row label{font-size:.75rem;color:var(--text-dim);font-weight:600}
.rads-row input{width:60px;background:var(--surface);border:1px solid var(--border);color:var(--text-bright);border-radius:3px;padding:2px 4px;font-size:.75rem;text-align:center}

/* Perk browser (right) */
.perk-browser{flex:1;padding:10px;overflow-y:auto}

/* Filters */
.filters{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap;align-items:center}
.filters input[type="text"]{flex:1;min-width:150px;background:var(--surface);border:1px solid var(--border);color:var(--text-bright);border-radius:4px;padding:5px 10px;font-size:.8rem}
.filters input[type="text"]::placeholder{color:var(--text-dim)}
.filters select{background:var(--surface);border:1px solid var(--border);color:var(--text-bright);border-radius:4px;padding:5px 8px;font-size:.8rem;cursor:pointer}
.filters label{display:flex;align-items:center;gap:4px;font-size:.8rem;color:var(--text-dim);cursor:pointer;white-space:nowrap}
.filters label input{accent-color:var(--accent);cursor:pointer}

/* Perk grid */
.perk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px}

/* Perk card */
.perk-card{position:relative;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--green);border-radius:4px;padding:6px 8px;cursor:pointer;transition:all .15s;display:flex;flex-direction:column;gap:4px}
.perk-card:hover{border-color:var(--accent);border-left-color:var(--green);background:var(--surface2)}
.perk-card.locked{cursor:default;border-left:3px solid rgba(200,60,60,.5);opacity:.55}
.perk-card.locked:hover{border-color:var(--border);border-left-color:rgba(200,60,60,.5);background:var(--surface)}
.perk-card .perk-header{display:flex;justify-content:space-between;align-items:flex-start;gap:4px}
.perk-card .perk-name{font-size:.78rem;font-weight:600;color:var(--text-bright);line-height:1.2}
.perk-card .perk-category{font-size:.55rem;padding:1px 5px;border-radius:8px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;white-space:nowrap;flex-shrink:0;color:#fff}
.perk-card .perk-reqs{font-size:.65rem;color:var(--text-dim);line-height:1.3}
.perk-card .perk-reqs .met{color:var(--green)}
.perk-card .perk-reqs .unmet{color:var(--red)}
.perk-card .perk-bottom{display:flex;justify-content:space-between;align-items:center}
.perk-card .perk-ranks{display:flex;gap:3px}
.perk-card .rank-dot{width:14px;height:14px;border-radius:50%;border:2px solid #706850;background:var(--surface2);transition:all .15s;flex-shrink:0}
.perk-card .rank-dot.filled{border-color:var(--accent-bright)}
.perk-card .rank-dot:hover{border-color:var(--accent)}
.perk-card .rank-dot.level-locked{opacity:.35;cursor:default}
.perk-card .rank-dot.level-locked:hover{border-color:#706850}
.perk-card.locked .rank-dot:hover{border-color:#706850}
.perk-card .level-req{font-size:.6rem;color:var(--text-dim)}

/* Category-colored rank dots */
.perk-card[data-category="combat"] .rank-dot.filled{background:var(--cat-combat);border-color:var(--cat-combat)}
.perk-card[data-category="survival"] .rank-dot.filled{background:var(--cat-survival);border-color:var(--cat-survival)}
.perk-card[data-category="utility"] .rank-dot.filled{background:var(--cat-utility);border-color:var(--cat-utility)}
.perk-card[data-category="crafting"] .rank-dot.filled{background:var(--cat-crafting);border-color:var(--cat-crafting)}
.perk-card[data-category="social"] .rank-dot.filled{background:var(--cat-social);border-color:var(--cat-social)}
.perk-card[data-category="stealth"] .rank-dot.filled{background:var(--cat-stealth);border-color:var(--cat-stealth)}

/* Tooltip */
.tooltip{display:none;position:fixed;z-index:1000;background:#1e1c14;border:1px solid var(--accent-dim);border-radius:6px;padding:8px 10px;max-width:360px;min-width:220px;pointer-events:none;box-shadow:0 4px 20px rgba(0,0,0,.5)}
.tooltip.visible{display:block}
.tooltip .tt-name{font-size:.85rem;font-weight:700;color:var(--text-bright);margin-bottom:1px}
.tooltip .tt-req{font-size:.7rem;color:var(--text-dim);margin-bottom:6px}
.tooltip .tt-req .met{color:var(--green)}
.tooltip .tt-req .unmet{color:var(--red)}
.tooltip .tt-rank{font-size:.75rem;margin-bottom:4px;line-height:1.3;padding-left:6px;border-left:2px solid var(--border)}
.tooltip .tt-rank .rank-label{font-weight:700;color:var(--accent)}
.tooltip .tt-rank .level-req{color:var(--text-dim)}
.tooltip .tt-rank.active{border-left-color:var(--accent)}
.tooltip .tt-rank.level-unmet{opacity:.5}
.tooltip .tt-rank.level-unmet .level-req{color:var(--red)}

/* Responsive */
@media(max-width:900px){
  .main-layout{flex-direction:column}
  .char-panel{width:100%;min-width:auto;position:static;height:auto;border-right:none;border-bottom:1px solid var(--border)}
  .special-list{flex-direction:row;flex-wrap:wrap;gap:4px}
  .special-stat{flex:1;min-width:100px}
  .skills-list{flex-direction:row;flex-wrap:wrap;gap:3px}
  .skill-row{flex:1;min-width:140px;background:var(--surface2);border-radius:3px}
  .perk-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
}
@media(max-width:600px){
  html{font-size:13px}
  .perk-grid{grid-template-columns:1fr}
  .header{padding:6px 8px}
  .char-panel{padding:8px}
  .perk-browser{padding:8px}
}
