/* PySpellbook standalone spell lookup — styled to match the current PyRoller UI. */
html,body{font-family:Arial,Helvetica,sans-serif;}
.pyspellbook-container{max-width:1460px;padding-top:22px;padding-bottom:48px;}
.pyspellbook-topbar{box-shadow:0 8px 24px var(--py-header-shadow);}
.pyspellbook-hero{display:block;margin-bottom:20px;overflow:hidden;position:relative;}
.pyspellbook-hero::after{content:"";position:absolute;right:-70px;top:-120px;width:260px;height:260px;border-radius:999px;border:38px solid var(--py-hero-orb-border);pointer-events:none;}
.pyspellbook-title{font-size:48px;line-height:1.02;margin:12px 0 10px;color:var(--py-text-strong);letter-spacing:-.04em;font-weight:900;}
.pyspellbook-lede{font-size:20px;line-height:1.35;color:var(--py-muted);max-width:1050px;margin:0;font-weight:800;}
.spell-browser-panel{padding:18px 20px;margin-bottom:20px;}
.panel-heading-row{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;}
.browser-heading{font-size:30px;line-height:1.05;margin:0;color:var(--py-text-strong);font-weight:900;}
.spell-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.basic-search-grid{display:grid;grid-template-columns:minmax(280px,1.4fr) minmax(170px,.7fr) minmax(220px,.8fr) minmax(220px,.8fr);gap:14px;align-items:end;}
.field{display:grid;gap:6px;color:var(--py-muted);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;}
.field input,.field select{width:100%;min-height:46px;border:2px solid var(--line);border-radius:12px;background:var(--py-input-bg,var(--py-panel));color:var(--py-text-strong);font:inherit;font-size:14px;font-weight:800;padding:9px 12px;outline:none;}
.field input::placeholder{color:var(--py-muted);font-weight:800;}
.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--py-hover-ring);}
.description-search-field{grid-column:1 / -1;}
.description-search-field input{text-transform:none;}

.advanced-filters{margin-top:16px;border:2px solid var(--py-border-soft);border-radius:16px;background:var(--py-panel-soft);overflow:hidden;}
.advanced-filters summary{padding:13px 16px;font-size:17px;font-weight:900;color:var(--py-text-strong);cursor:pointer;list-style-position:inside;}
.advanced-filters[open] summary{border-bottom:1px solid var(--py-border-soft);}
.spell-advanced-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:16px 16px 0;}
.advanced-filter-blocks{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px;}
.filter-group{border:2px solid var(--py-border-soft);border-radius:14px;background:var(--py-panel);padding:14px 16px;margin:0;}
.filter-group legend{font-size:17px;font-weight:900;color:var(--py-text-strong);padding:0 8px;}
.inline-group{display:flex;gap:14px 18px;flex-wrap:wrap;align-items:center;}
.check-row{display:inline-flex;align-items:center;gap:8px;font-size:15px;font-weight:900;color:var(--py-text);text-transform:none;letter-spacing:0;}
.check-row input{width:18px;height:18px;accent-color:var(--accent);}
.spell-results-panel{padding:20px;margin-bottom:20px;}
.results-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;}
.result-count{white-space:nowrap;}
.spell-table-head,.spell-result-main{display:grid;grid-template-columns:82px minmax(260px,1.7fr) minmax(150px,.85fr) minmax(150px,.85fr) minmax(130px,.75fr);gap:12px;align-items:center;}
.spell-table-head{padding:0 14px 8px;color:var(--py-muted);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;}
.spell-list{display:grid;gap:10px;}
.spell-result-card{border:2px solid var(--line);border-radius:16px;background:var(--py-panel-soft);overflow:hidden;box-shadow:0 1px 3px var(--py-header-shadow);transition:box-shadow .14s ease,border-color .14s ease,transform .14s ease,background .14s ease;}
.spell-result-card:hover,.spell-result-card.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--py-hover-ring);}
.spell-result-card.selected{background:var(--py-panel-tint);}
.spell-result-main{padding:12px 14px;}
.spell-level-badge{display:inline-flex;align-items:center;justify-content:center;min-width:58px;border:2px solid var(--py-primary-border-alpha-strong);background:var(--py-primary-glass);color:var(--accent);border-radius:999px;padding:7px 8px;font-weight:900;}
.spell-name-btn{appearance:none;border:0;background:transparent;color:var(--py-text-strong);font:inherit;font-size:18px;line-height:1.15;font-weight:900;text-align:left;padding:0;cursor:pointer;}
.spell-name-btn:hover,.spell-name-btn:focus-visible{text-decoration:underline;outline:none;color:var(--accent);}
.spell-subline{margin-top:5px;color:var(--py-muted);font-size:13px;font-weight:800;display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.spell-inline-pill{display:inline-flex;align-items:center;border:1px solid var(--py-border-soft);background:var(--py-panel);color:var(--py-muted);border-radius:999px;padding:3px 7px;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;}
.spell-school,.spell-casting,.spell-range{font-weight:850;color:var(--py-text);font-size:14px;}
.pagination{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:16px;}
.page-btn{border:2px solid var(--line);background:var(--py-panel);color:var(--py-text-strong);border-radius:11px;padding:8px 12px;font-weight:900;cursor:pointer;}
.page-btn.active,.page-btn:hover{background:var(--accent);border-color:var(--accent);color:var(--py-on-primary);}
.page-btn:disabled{opacity:.45;cursor:not-allowed;}
.page-info{color:var(--py-muted);font-weight:850;padding:0 4px;}
.no-results{border:2px dashed var(--py-border-soft);border-radius:16px;background:var(--py-panel-soft);padding:22px;text-align:center;color:var(--py-muted);}
.no-results h3{margin:0 0 8px;color:var(--py-text-strong);}
.spell-inspection-drawer{position:fixed;top:0;right:0;height:100vh;width:min(520px,94vw);transform:translateX(104%);transition:transform .22s ease;z-index:1000;pointer-events:none;}
.spell-inspection-drawer.open{transform:translateX(0);pointer-events:auto;}
.spell-inspection-card{height:100%;background:var(--py-panel-glass);border-left:2px solid var(--line);box-shadow:-12px 0 28px var(--py-shadow-panel);display:grid;grid-template-rows:auto 1fr;}
.spell-inspection-header{padding:18px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border-bottom:2px solid var(--py-border-faint);}
.spell-inspection-title{font-size:24px;font-weight:900;margin-top:4px;color:var(--py-text-strong);line-height:1.08;}
.spell-inspection-body{padding:18px;overflow:auto;line-height:1.6;font-size:15px;}
.spell-detail-card{display:grid;gap:14px;}
.spell-detail-header{border:2px solid var(--line);border-radius:18px;background:linear-gradient(135deg,var(--py-panel),var(--py-panel-soft));padding:18px;box-shadow:var(--shadow);}
.spell-detail-name-row{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;}
.spell-detail-name{font-size:34px;line-height:1;margin:0;color:var(--py-text-strong);letter-spacing:-.04em;}
.spell-detail-subtitle{margin-top:8px;color:var(--py-muted);font-weight:900;}
.spell-source-pill{white-space:nowrap;border:2px solid var(--py-border-soft);background:var(--py-panel);border-radius:999px;color:var(--py-muted);padding:7px 11px;font-size:13px;font-weight:900;}
.spell-pill-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.spell-flag-pill{display:inline-flex;align-items:center;border:2px solid var(--py-primary-border-alpha-strong);background:var(--py-primary-glass);color:var(--accent);border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900;}
.spell-section{border:2px solid var(--py-border-soft);border-radius:16px;background:var(--py-panel);padding:16px;}
.spell-section h3{margin:0 0 10px;font-size:21px;color:var(--py-text-strong);font-weight:900;}
.spell-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.spell-meta-card{border:1px solid var(--py-border-soft);border-radius:14px;background:var(--py-panel-soft);padding:11px 12px;min-width:0;}
.spell-meta-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:900;color:var(--py-muted);}
.spell-meta-value{margin-top:5px;font-size:15px;line-height:1.35;color:var(--py-text-strong);font-weight:900;overflow-wrap:anywhere;}
.spell-control-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:12px;}
.spell-control-grid.two{grid-template-columns:1fr 1fr;}
.spell-control-grid .field{min-width:0;}
.spell-chip-grid{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.spell-info-chip,.roll-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--py-border-soft);border-radius:999px;background:var(--py-panel-soft);color:var(--py-text-strong);padding:6px 9px;font-size:13px;font-weight:900;}
.spell-info-chip span{color:var(--py-muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;}
.roll-chip{border:2px solid var(--py-primary-border-alpha-strong);background:var(--py-primary-glass);color:var(--accent);cursor:pointer;}
.roll-chip:hover{background:var(--accent);border-color:var(--accent);color:var(--py-on-primary);}
.roll-chip:hover span{color:var(--py-on-primary);}
.spell-description{font-size:16px;line-height:1.5;color:var(--py-text);white-space:normal;}
.spell-description p{margin:0 0 12px;}
.spell-description p:last-child{margin-bottom:0;}
.spell-description .higher-levels{display:block;margin-top:10px;padding:10px 12px;border-left:4px solid var(--accent);background:var(--py-panel-soft);border-radius:10px;color:var(--py-text);font-weight:800;}
.spell-description .higher-levels strong{color:var(--py-text-strong);}
.spell-class-groups{display:grid;gap:10px;}
.spell-class-row{border:1px solid var(--py-border-soft);border-radius:12px;background:var(--py-panel-soft);padding:10px 12px;}
.spell-class-row strong{display:block;color:var(--py-text-strong);margin-bottom:6px;}
.spell-class-pills{display:flex;gap:6px;flex-wrap:wrap;}
.spell-class-pill{display:inline-flex;align-items:center;border:1px solid var(--py-border-soft);background:var(--py-panel);border-radius:999px;color:var(--py-muted);padding:4px 8px;font-size:12px;font-weight:900;}
.roll-toast{position:fixed;left:50%;right:auto;bottom:44px;transform:translate(-50%,20px);width:min(560px,calc(100vw - 40px));background:rgba(18,58,99,.96);color:var(--py-on-primary);border:0;border-radius:18px;padding:22px 26px;box-shadow:0 18px 48px rgba(0,0,0,.35);font-weight:800;opacity:0;transition:.18s ease;pointer-events:none;z-index:1200;}
.roll-toast.show{opacity:1;transform:translate(-50%,0);}
.roll-popup-eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:13px;opacity:.68;font-weight:900;}
.roll-popup-title{font-size:28px;line-height:1.1;font-weight:900;margin-top:4px;}
.roll-popup-total{font-size:52px;line-height:1;font-weight:900;margin:18px 0 6px;}
.roll-popup-equation{font-size:17px;font-weight:800;opacity:.95;}
.roll-popup-meta{font-size:16px;font-weight:900;opacity:.75;margin-top:12px;}
[data-py-mode="dark"] .roll-toast{background:rgba(8,13,23,.96);}
@media (max-width:1120px){.spell-table-head{display:none;}.spell-result-main{grid-template-columns:82px minmax(0,1fr) 120px;}.spell-casting,.spell-range{display:none;}.basic-search-grid,.spell-advanced-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.advanced-filter-blocks{grid-template-columns:1fr;}.spell-control-grid.two{grid-template-columns:1fr;}}
@media (max-width:720px){.pyspellbook-container{padding:18px;}.pyspellbook-title{font-size:38px;}.pyspellbook-lede{font-size:17px;}.panel-heading-row,.results-toolbar{align-items:stretch;flex-direction:column;}.spell-actions{display:grid;grid-template-columns:1fr 1fr;}.basic-search-grid,.spell-advanced-grid{grid-template-columns:1fr;}.spell-result-main{grid-template-columns:1fr;}.spell-school{display:none;}.spell-meta-grid{grid-template-columns:1fr;}.spell-detail-name-row{display:block;}.spell-source-pill{display:inline-flex;margin-top:12px;}.roll-toast{bottom:20px;}}

/* v0.3: tighten spellbook filters, side panel, and roll popup to match PyRoller/PyMonsters patterns. */
.spell-advanced-grid{grid-template-columns:repeat(4,minmax(180px,1fr));}
.spell-advanced-grid .field{min-width:0;}
.field select option{font-weight:500;text-transform:none;letter-spacing:0;}
.spell-inspection-drawer{width:min(480px,94vw);z-index:1000;}
.spell-inspection-card{background:var(--py-panel-glass);}
.spell-inspection-header,.spell-inspection-body{background:var(--py-panel-glass);}
.spell-inspection-title{font-weight:900;color:var(--py-text-strong);}
.spell-inspection-body{padding:18px 20px;}
.spell-detail-card{display:block;color:var(--py-text);}
.spell-detail-header,.spell-meta-grid,.spell-meta-card,.spell-source-pill,.spell-class-row{border:0!important;background:transparent!important;box-shadow:none!important;padding:0!important;}
.spell-detail-flags{margin:0 0 14px;}
.spell-detail-list{display:block;margin:0 0 16px;}
.spell-detail-line{margin:0 0 7px;font-size:15px;line-height:1.42;color:var(--py-text);}
.spell-detail-line strong{color:var(--py-text-strong);font-weight:900;}
.spell-section{border:0;background:transparent;padding:16px 0 0;margin:16px 0 0;border-top:1px solid var(--py-border-soft);border-radius:0;}
.spell-section h3{font-size:12px;font-weight:900;color:var(--py-muted-strong,var(--py-muted));text-transform:uppercase;letter-spacing:.08em;margin:0 0 10px;}
.spell-control-grid{margin-bottom:10px;}
.spell-control-grid.two{grid-template-columns:repeat(2,minmax(0,1fr));}
.spell-chip-grid{gap:8px;}
.spell-info-chip,.roll-chip{font-size:13px;padding:5px 9px;}
.spell-description{font-size:15px;line-height:1.5;color:var(--py-text);}
.spell-description p{margin:0 0 11px;}
.spell-description .higher-levels{margin:8px 0 0;padding:0 0 0 12px;border-left:4px solid var(--accent);background:transparent;border-radius:0;font-weight:800;}
.spell-class-groups{display:block;}
.spell-class-pills{display:flex;gap:7px;flex-wrap:wrap;}
.spell-class-pill{background:var(--py-panel-soft);border-color:var(--py-border-soft);color:var(--py-muted-strong,var(--py-muted));}
.roll-toast{bottom:22px!important;width:min(520px,calc(100vw - 36px))!important;padding:14px 20px 15px!important;border-radius:16px!important;background:rgba(14,55,94,.96)!important;color:white!important;box-shadow:0 16px 38px rgba(0,0,0,.34)!important;text-align:left!important;z-index:1600!important;}
.roll-toast.show{opacity:1;transform:translate(-50%,0)!important;}
.roll-popup-eyebrow{font-size:11px!important;letter-spacing:.1em!important;text-transform:uppercase!important;opacity:.65!important;font-weight:950!important;}
.roll-popup-main{display:flex!important;align-items:baseline!important;justify-content:space-between!important;gap:18px!important;margin-top:2px!important;}
.roll-popup-title{font-size:22px!important;line-height:1.05!important;margin:0!important;min-width:0!important;font-weight:950!important;}
.roll-popup-total{font-size:40px!important;line-height:.95!important;margin:0!important;flex:0 0 auto!important;font-weight:950!important;}
.roll-popup-equation{font-size:15px!important;line-height:1.15!important;margin-top:5px!important;font-weight:850!important;opacity:1!important;}
.roll-popup-meta{font-size:12px!important;line-height:1.15!important;margin-top:5px!important;opacity:.72!important;font-weight:850!important;}
[data-py-mode="dark"] .spell-inspection-card,
[data-py-mode="dark"] .spell-inspection-header,
[data-py-mode="dark"] .spell-inspection-body{background:var(--py-panel-glass)!important;}
[data-py-mode="dark"] .roll-toast{background:rgba(8,13,23,.96)!important;}
@media (max-width:1120px){.spell-advanced-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.spell-control-grid.two{grid-template-columns:1fr;}}
@media (max-width:820px){.roll-popup-main{display:block!important;}.roll-popup-total{margin-top:4px!important;}}

/* savertest v0.2: linked spell roll popups stay above encounter drawers. */
.roll-toast { z-index: 12000 !important; }
