.text-embossed{text-shadow:var(--text-embossed-shadow)}.text-metallic{background:var(--text-metallic-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:none;filter:drop-shadow(var(--text-title-shadow))}.text-carved{color:var(--text-carved-color);text-shadow:var(--text-carved-shadow);-webkit-text-stroke:var(--text-carved-stroke)}.text-title{font-family:var(--font-heading);letter-spacing:var(--tracking-heading)}.ornate-divider{display:flex;align-items:center;gap:8px;margin:16px 0;opacity:.5}.ornate-divider:before,.ornate-divider:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold-dim),transparent)}.ornate-divider .diamond{width:6px;height:6px;background:var(--gold-dim);transform:rotate(45deg);flex-shrink:0}.ornate-divider .dot{width:3px;height:3px;background:var(--gold-dim);border-radius:50%;flex-shrink:0}.btn{font-family:var(--font-ui);font-size:13px;font-weight:600;padding:10px 24px;border-radius:0;cursor:pointer;transition:all .3s ease;border:1px solid;position:relative;overflow:hidden;letter-spacing:.5px;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px}.btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,255,255,.08) 0%,transparent 50%);pointer-events:none}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(180deg,#c8a44e,#a07830);border-color:#d4b060;color:#1a1408;text-shadow:0 1px 0 rgba(255,255,255,.2);box-shadow:0 2px 8px #c8a44e4d,inset 0 1px #fff3;font-family:var(--font-ui);font-size:13px;font-weight:600;padding:10px 24px;border-radius:0;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;letter-spacing:.5px;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px}.btn-primary:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,255,255,.08) 0%,transparent 50%);pointer-events:none}.btn-primary:hover{background:linear-gradient(180deg,#d4b060,#b08840);box-shadow:0 4px 16px #c8a44e80,inset 0 1px #ffffff4d;transform:translateY(-1px)}.btn-primary:active{transform:scale(.97)}.btn-secondary{background:transparent;border:1px solid var(--gold-dim);color:var(--gold);box-shadow:0 2px 8px #0003;font-family:var(--font-ui);font-size:13px;font-weight:600;padding:10px 24px;border-radius:0;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;letter-spacing:.5px;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px}.btn-secondary:hover{background:#c8a44e1a;border-color:var(--gold);box-shadow:0 2px 12px #c8a44e33}.btn-danger{background:linear-gradient(180deg,#c0392b,#962d22);border:1px solid #d44637;color:#fff;box-shadow:0 2px 8px #c0392b4d;padding:10px 24px;border-radius:0;cursor:pointer;transition:all .3s ease;font-family:var(--font-ui);font-size:13px;font-weight:600}.btn-danger:hover{background:linear-gradient(180deg,#d44637,#a83529);box-shadow:0 4px 16px #c0392b80}.btn-success{background:linear-gradient(180deg,#27ae60,#1e8449);border:1px solid #2ecc71;color:#fff;box-shadow:0 2px 8px #27ae604d;padding:10px 24px;border-radius:0;cursor:pointer;transition:all .3s ease}.btn-success:hover{background:linear-gradient(180deg,#2ecc71,#27ae60)}.btn-ghost{background:transparent;border:1px solid transparent;color:var(--text-dim);padding:10px 24px;border-radius:0;cursor:pointer;transition:all .3s ease}.btn-ghost:hover{color:var(--text-body);background:var(--bg-hover)}.btn-sm{padding:6px 14px;font-size:11px}.btn-lg{padding:14px 36px;font-size:15px}.btn-compact{padding:6px 14px;font-size:11px;background:transparent;border:1px solid var(--border-dim);color:var(--text-dim);border-radius:0;cursor:pointer;transition:all .2s ease;font-family:var(--font-ui)}.btn-compact:hover{border-color:var(--gold-dim);color:var(--text-body);background:var(--bg-hover)}.btn-ritual{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.85rem 1.8rem;background:#c8a44e08;border:1px solid rgba(200,164,78,.2);border-radius:0;color:var(--text-dim);font-family:var(--font-heading);font-size:1rem;font-weight:700;letter-spacing:.4em;text-transform:uppercase;cursor:pointer;transition:all .8s cubic-bezier(.23,1,.32,1);position:relative;overflow:hidden}.btn-ritual:hover{background:var(--gold-primary);border-color:var(--gold-primary);box-shadow:0 0 30px #c8a44e66;color:#1a1a1a}.btn-ritual:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);transform:translate(-120%);transition:transform .6s ease}.btn-ritual:hover:after{transform:translate(120%)}.glass-card{background:var(--bg-panel);border:1px solid var(--border-dim);border-radius:0;box-shadow:var(--card-shadow);transition:all var(--transition-normal)}.glass-card:hover{border-color:var(--gold-dim);box-shadow:var(--card-shadow-hover)}.api-card{background:var(--bg-panel);border:1px solid var(--border-dim);border-radius:0;padding:1.5rem;margin-bottom:1rem;box-shadow:var(--card-shadow);transition:all .3s ease}.api-card:hover{border-color:var(--gold-dim);box-shadow:0 4px 16px #0000004d}.api-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.form-input,.api-input{width:100%;padding:10px 14px;background:var(--bg-darkest);border:1px solid var(--border-dim);border-radius:var(--radius-sm);color:var(--text-light);font-family:var(--font-ui);font-size:14px;transition:border-color .3s ease}.form-input:focus,.api-input:focus{outline:none;border-color:var(--gold-dim);box-shadow:0 0 0 2px #c8a44e1a}.form-input::placeholder,.api-input::placeholder{color:var(--text-muted)}.api-select,.fancy-select{padding:8px 32px 8px 12px;background:var(--bg-darkest);border:1px solid var(--border-dim);border-radius:var(--radius-sm);color:var(--text-light);font-family:var(--font-ui);font-size:13px;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none}.api-select:focus,.fancy-select:focus{outline:none;border-color:var(--gold-dim)}label{display:block;margin-bottom:.5rem;color:var(--text-dim);font-family:var(--font-ui);font-size:.9rem}.tag{display:inline-flex;align-items:center;padding:4px 12px;border-radius:2px;font-family:var(--font-ui);font-size:11px;font-weight:600;letter-spacing:.5px;border:1px solid}.tag-legendary{color:var(--rarity-legendary);border-color:#ff80004d;background:#ff800014}.tag-epic{color:var(--rarity-epic);border-color:#a335ee4d;background:#a335ee14}.tag-rare{color:var(--rarity-rare);border-color:#0070dd4d;background:#0070dd14}.tag-uncommon{color:var(--rarity-uncommon);border-color:#1eff004d;background:#1eff0014}.tag-common{color:var(--rarity-common);border-color:#9d9d9d4d;background:#9d9d9d14}.tag-combat{color:#e74c3c;border-color:#e74c3c4d;background:#e74c3c14}.tag-spell{color:#9b59b6;border-color:#9b59b64d;background:#9b59b614}.tag-heal{color:#2ecc71;border-color:#2ecc714d;background:#2ecc7114}.tag-arcane{color:#3498db;border-color:#3498db4d;background:#3498db14}.dice-result{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:var(--bg-panel);border:1px solid var(--border-dim);border-radius:0;font-family:var(--font-ui)}.dice-result .dr-value{font-size:24px;font-weight:700;font-family:var(--font-heading)}.dice-result .dr-label{font-size:11px;color:var(--text-dim)}.dice-result.normal .dr-value{color:var(--text-light)}.dice-result.critical .dr-value{color:var(--gold);text-shadow:0 0 10px rgba(200,164,78,.5)}.dice-result.critical{border-color:var(--gold-dim);background:#c8a44e0d;animation:critGlow 1.5s ease-in-out infinite}.dice-result.fumble .dr-value{color:var(--danger-light)}.dice-result.fumble{border-color:#c0392b4d;background:#c0392b0d}@keyframes critGlow{0%,to{box-shadow:0 0 8px #c8a44e33}50%{box-shadow:0 0 20px #c8a44e66}}.toast{position:fixed;top:60px;right:20px;padding:12px 20px;border-radius:0;font-family:var(--font-ui);font-size:13px;z-index:2000;display:none}.toast.show{display:flex;align-items:center;gap:8px}.toast-success{background:#27ae60e6;color:#fff;border:1px solid var(--success)}.toast-error{background:#c0392be6;color:#fff;border:1px solid var(--danger)}.toast-info{background:#2980b9e6;color:#fff;border:1px solid var(--info)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:3000;display:none;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-overlay.show{display:flex}.modal{width:480px;max-width:90%;background:var(--bg-panel);border:1px solid var(--border-dim);border-radius:0;padding:24px;position:relative;animation:modalIn .3s ease;box-shadow:inset 0 0 0 1px #c8a44e14,0 8px 40px #0009}@keyframes modalIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-title{font-family:var(--font-heading);font-size:20px;color:var(--gold);margin-bottom:12px}.modal-body{color:var(--text-body);font-size:15px;line-height:1.7;margin-bottom:20px}.modal-actions{display:flex;gap:12px;justify-content:flex-end}.portrait-img-frame{position:relative;display:inline-block}.portrait-img-frame img,.portrait-img-frame .portrait-placeholder{display:block;object-fit:cover;object-position:center top}.portrait-img-frame:before{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border:2px solid var(--gold);box-shadow:inset 0 0 0 1px var(--gold-dark),0 0 0 1px var(--gold-dark),0 0 8px #c8a44e33;pointer-events:none;z-index:2}.portrait-img-frame:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(200,164,78,.3);box-shadow:inset 0 0 12px #0009;border-radius:inherit;pointer-events:none;z-index:3}.portrait-img-frame.portrait-lg,.portrait-img-frame.portrait-lg img,.portrait-img-frame.portrait-lg .portrait-placeholder{width:140px;height:175px;border-radius:0}.portrait-img-frame.portrait-md,.portrait-img-frame.portrait-md img,.portrait-img-frame.portrait-md .portrait-placeholder{width:96px;height:120px;border-radius:0}.portrait-img-frame.portrait-sm,.portrait-img-frame.portrait-sm img,.portrait-img-frame.portrait-sm .portrait-placeholder{width:64px;height:80px;border-radius:0}.portrait-img-frame.portrait-xs,.portrait-img-frame.portrait-xs img,.portrait-img-frame.portrait-xs .portrait-placeholder{width:48px;height:60px;border-radius:0}.portrait-img-frame.portrait-active:before{border-color:var(--gold-light);box-shadow:inset 0 0 0 1px var(--gold),0 0 0 1px var(--gold),0 0 16px #c8a44e66,0 0 30px #c8a44e26}.portrait-placeholder{background:linear-gradient(180deg,#1a1714,#0d0b08);display:flex;align-items:center;justify-content:center;color:var(--text-dim)}.portrait-placeholder svg{opacity:.5}.portrait-img-frame.portrait-lg .portrait-corner{position:absolute;width:14px;height:14px;border-color:var(--gold-light);z-index:4;pointer-events:none}.portrait-img-frame.portrait-lg .portrait-corner.tl{top:-3px;left:-3px;border-top:2px solid;border-left:2px solid}.portrait-img-frame.portrait-lg .portrait-corner.tr{top:-3px;right:-3px;border-top:2px solid;border-right:2px solid}.portrait-img-frame.portrait-lg .portrait-corner.bl{bottom:-3px;left:-3px;border-bottom:2px solid;border-left:2px solid}.portrait-img-frame.portrait-lg .portrait-corner.br{bottom:-3px;right:-3px;border-bottom:2px solid;border-right:2px solid}.portrait-img-frame.portrait-md .portrait-corner{position:absolute;width:10px;height:10px;border-color:var(--gold-light);z-index:4;pointer-events:none}.portrait-img-frame.portrait-md .portrait-corner.tl{top:-3px;left:-3px;border-top:2px solid;border-left:2px solid}.portrait-img-frame.portrait-md .portrait-corner.tr{top:-3px;right:-3px;border-top:2px solid;border-right:2px solid}.portrait-img-frame.portrait-md .portrait-corner.bl{bottom:-3px;left:-3px;border-bottom:2px solid;border-left:2px solid}.portrait-img-frame.portrait-md .portrait-corner.br{bottom:-3px;right:-3px;border-bottom:2px solid;border-right:2px solid}.equip-item{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg-panel);border:1px solid var(--border-dim);border-radius:var(--radius-sm);transition:all .2s ease;cursor:pointer}.equip-item:hover{background:var(--bg-hover);border-color:var(--gold-dim)}.equip-item .ei-icon{font-size:20px;width:32px;text-align:center}.equip-item .ei-name{font-family:var(--font-ui);font-size:13px;font-weight:600}.equip-item .ei-type{font-family:var(--font-ui);font-size:10px;color:var(--text-dim)}.equip-item.legendary .ei-name{color:var(--rarity-legendary)}.equip-item.epic .ei-name{color:var(--rarity-epic)}.equip-item.rare .ei-name{color:var(--rarity-rare)}.equip-item.uncommon .ei-name{color:var(--rarity-uncommon)}.equip-item.common .ei-name{color:var(--rarity-common)}.toggle{width:44px;height:24px;border-radius:12px;background:var(--border-dim);cursor:pointer;position:relative;transition:all .3s ease;border:none}.toggle.on{background:var(--gold)}.toggle .toggle-knob{width:18px;height:18px;border-radius:50%;background:#fff;position:absolute;top:3px;left:3px;transition:all .3s ease;box-shadow:0 1px 3px #0000004d}.toggle.on .toggle-knob{left:23px}.range-slider{-webkit-appearance:none;width:100%;height:4px;border-radius:2px;background:var(--border-dim);outline:none}.range-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--gold);cursor:pointer;box-shadow:0 0 6px #c8a44e66}
