*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#1a1a1e;--surface:#222228;--surface2:#2a2a32;--surface3:#32323c;
  --border:#505060;--text:#d4d4d8;--text-dim:#9999b0;--text-bright:#f0f0f4;
  --accent:#5b8dd9;--accent-dim:#3a5a8a;--accent-bright:#7aabf0;
  --green:#4caf50;--red:#c55;--yellow:#ca3;
  --str:#e06050;--per:#50a0e0;--end:#e0a030;--chr:#e0c040;--int:#a070d0;--agi:#e08040;--lck:#60c0a0;
}
html{font-size:22px}
body{background:var(--bg);color:var(--text);font-family:'Segoe UI',system-ui,-apple-system,sans-serif;min-height:100vh;padding:12px}

h1{font-size:1.3rem;color:var(--text-bright);font-weight:600;letter-spacing:.5px;display:flex;align-items:baseline;gap:6px}
h1 span{color:var(--accent);font-weight:400}
.frost-logo{height:1.8rem;align-self:center}
.app-version{font-size:.6rem;color:var(--text-dim);font-weight:400}
.title-block{display:flex;flex-direction:column;gap:2px}
.mod-versions{font-size:14px;color:var(--text-dim);letter-spacing:.3px}

/* Header */
.header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:6px;margin-bottom:10px;flex-wrap:wrap;gap:8px}
.header-controls{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.header-controls-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.youre-special-toggle{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--text-dim);cursor:pointer;user-select:none}
.youre-special-toggle input{accent-color:var(--accent);width:14px;height:14px;cursor:pointer}
.bobble-btn{width:28px;height:28px;border:1px solid var(--border);background:var(--surface2);border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;padding:2px;flex-shrink:0;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.bobble-btn:hover{border-color:var(--accent)}
.bobble-btn.active{background:var(--accent);border-color:var(--accent-bright)}
.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:0;padding:2px 6px;font-size:.85rem;text-align:center;-moz-appearance:textfield}
.level-selector input::-webkit-inner-spin-button,.level-selector input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.level-btn{width:28px;height:28px;border:1px solid var(--border);background:var(--surface2);color:var(--text);border-radius:4px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:all .15s}
.level-btn:hover{background:var(--surface3);border-color:var(--accent)}

/* Header actions */
.header-actions{display:flex;gap:6px;align-items:center}

/* Share */
.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)}

/* Reset */
.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)}

/* SPECIAL stat (inside perk-col) */
.special-stat{display:flex;align-items:center;justify-content:center;gap:4px;padding:4px 6px;background:var(--surface);border:1px solid var(--border);border-radius:6px;position:relative;min-width:0;flex-wrap:wrap}
.special-stat .label{font-size:.7rem;font-weight:700;letter-spacing:1px;flex-shrink:0;width:35px}
.special-stat .value{font-size:1.2rem;font-weight:700;color:var(--text-bright);line-height:1;flex-shrink:0}
.special-stat .bonus{font-size:.65rem;color:var(--accent)}
.special-stat .stat-buttons{display:flex;gap:4px;align-items:center;flex-shrink:0}
.special-stat .controls{display:flex;gap:2px;flex-shrink:0}
.special-stat .controls button{width:28px;height:28px;border:1px solid var(--border);background:var(--surface2);color:var(--text);border-radius:4px;cursor:pointer;font-size:1.1rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0}
.special-stat .controls button:hover:not(:disabled){background:var(--surface3);border-color:var(--accent)}
.special-stat .controls button:disabled{opacity:.3;cursor:default}
/* Training row in perk grid */
.train-cell{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--yellow);border-radius:4px;padding:4px 6px;display:flex;justify-content:space-between;align-items:center}
.train-cell .train-title{font-size:.7rem;font-weight:700;color:var(--yellow);letter-spacing:.5px}
.train-cell .train-controls{display:flex;gap:4px;align-items:center}
.train-cell .train-controls button{width:22px;height:20px;border:1px solid var(--yellow);background:var(--surface2);color:var(--yellow);border-radius:3px;cursor:pointer;font-size:.85rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .15s}
.train-cell .train-controls button:hover:not(:disabled){background:var(--surface3);color:var(--text-bright)}
.train-cell .train-controls button:disabled{opacity:.3;cursor:default}
.train-cell .train-label{font-size:.75rem;font-weight:700;color:var(--yellow);min-width:18px;text-align:center}

.special-stat.str .label{color:var(--str)}.special-stat.str .value{color:var(--str)}
.special-stat.per .label{color:var(--per)}.special-stat.per .value{color:var(--per)}
.special-stat.end .label{color:var(--end)}.special-stat.end .value{color:var(--end)}
.special-stat.chr .label{color:var(--chr)}.special-stat.chr .value{color:var(--chr)}
.special-stat.int .label{color:var(--int)}.special-stat.int .value{color:var(--int)}
.special-stat.agi .label{color:var(--agi)}.special-stat.agi .value{color:var(--agi)}
.special-stat.lck .label{color:var(--lck)}.special-stat.lck .value{color:var(--lck)}

/* Perk grid */
.perk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.perk-col{display:flex;flex-direction:column;gap:3px;min-width:0}

.perk-cell{position:relative;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--green);border-radius:4px;padding:4px 5px;cursor:pointer;transition:all .15s;min-height:44px;display:flex;flex-direction:column;justify-content:space-between;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.perk-cell:hover{border-color:var(--green);border-left-color:var(--green);background:var(--surface2)}
.perk-cell.locked{cursor:default;border-left:3px solid rgba(200,60,60,.5);opacity:.55}
.perk-cell.locked:hover{border-color:var(--border);border-left-color:rgba(200,60,60,.2);background:var(--surface)}
.perk-cell .perk-header{display:flex;justify-content:space-between;align-items:flex-start;gap:2px}
.perk-cell .perk-name{font-size:.7rem;font-weight:600;color:var(--text-bright);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.perk-cell .perk-req{font-size:.6rem;color:var(--text-dim);white-space:nowrap;flex-shrink:0}
.perk-cell .perk-ranks{display:flex;gap:3px;margin-top:3px}
.perk-cell .rank-dot{width:14px;height:14px;border-radius:50%;border:2px solid #707080;background:#2a2a34;transition:all .15s;flex-shrink:0}
.perk-cell .rank-dot.filled{background:var(--accent);border-color:var(--accent-bright)}
.perk-cell .rank-dot:hover{border-color:var(--accent)}
.perk-cell .rank-dot.level-locked{opacity:.35;cursor:default}
.perk-cell .rank-dot.level-locked:hover{border-color:#707080}
.perk-cell.locked .rank-dot:hover{border-color:var(--border)}

/* Color accents per column */
.perk-col.str .perk-cell:not(.locked):hover{border-color:var(--green);border-left-color:var(--green)}.perk-col.str .rank-dot.filled{background:var(--str);border-color:var(--str)}
.perk-col.per .perk-cell:not(.locked):hover{border-color:var(--green);border-left-color:var(--green)}.perk-col.per .rank-dot.filled{background:var(--per);border-color:var(--per)}
.perk-col.end .perk-cell:not(.locked):hover{border-color:var(--green);border-left-color:var(--green)}.perk-col.end .rank-dot.filled{background:var(--end);border-color:var(--end)}
.perk-col.chr .perk-cell:not(.locked):hover{border-color:var(--green);border-left-color:var(--green)}.perk-col.chr .rank-dot.filled{background:var(--chr);border-color:var(--chr)}
.perk-col.int .perk-cell:not(.locked):hover{border-color:var(--green);border-left-color:var(--green)}.perk-col.int .rank-dot.filled{background:var(--int);border-color:var(--int)}
.perk-col.agi .perk-cell:not(.locked):hover{border-color:var(--green);border-left-color:var(--green)}.perk-col.agi .rank-dot.filled{background:var(--agi);border-color:var(--agi)}
.perk-col.lck .perk-cell:not(.locked):hover{border-color:var(--green);border-left-color:var(--green)}.perk-col.lck .rank-dot.filled{background:var(--lck);border-color:var(--lck)}

/* Tooltip */
.tooltip{display:none;position:fixed;z-index:1000;background:#1e1e24;border:1px solid var(--accent-dim);border-radius:6px;padding:8px 10px;max-width:340px;min-width:200px;pointer-events:none;box-shadow:0 4px 20px rgba(0,0,0,.5)}
.tooltip.visible{display:block}
.tooltip.touch-active{pointer-events:auto}
.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-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)}

/* Non-special section */
.non-special{margin-top:10px}
.non-special h2{font-size:.9rem;color:var(--text-dim);margin-bottom:6px;font-weight:600;letter-spacing:.5px}
.non-special-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:3px}
.ns-cell{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--green);border-radius:4px;padding:4px 6px;cursor:pointer;transition:all .15s;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.ns-cell:hover{border-color:var(--green);border-left-color:var(--green);background:var(--surface2)}
.ns-cell.locked{cursor:default;border-left:3px solid rgba(200,60,60,.5);opacity:.55}
.ns-cell.locked:hover{border-color:var(--border);border-left-color:rgba(200,60,60,.2);background:var(--surface)}
.ns-cell .ns-info{display:flex;flex-direction:column}
.ns-cell .ns-name{font-size:.72rem;font-weight:600;color:var(--text-bright);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ns-cell .ns-req{font-size:.6rem;color:var(--text-dim)}
.ns-cell .perk-ranks{display:flex;gap:3px}
.ns-cell .rank-dot{width:14px;height:14px;border-radius:50%;border:2px solid #707080;background:#2a2a34;transition:all .15s}
.ns-cell .rank-dot.filled{background:var(--accent);border-color:var(--accent-bright)}
.ns-cell .rank-dot:hover{border-color:var(--accent)}

/* Footer */
.footer{margin-top:12px;padding:8px 0;display:flex;flex-wrap:wrap;gap:16px;justify-content:center;font-size:.7rem}
.footer a{color:var(--text-dim);text-decoration:none;transition:color .15s;display:flex;align-items:center;gap:4px}
.footer a:hover{color:var(--accent)}
.footer .copyright{width:100%;text-align:center;color:var(--text-dim);font-size:.6rem;opacity:.6}

/* Responsive */
@media(max-width:1100px){
  .perk-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));row-gap:12px}
  .mod-versions{display:none}
}
