/* ==========================================================================
   Print Stylesheet
   Loaded with media="print" — all rules here are already scoped to print.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Page directives
   -------------------------------------------------------------------------- */

@page {
    margin: 2cm;
}

/* Character sheet overrides the default margin */
@page {
    size: A4;
    margin: 1.5cm;
}

/* --------------------------------------------------------------------------
   General print rules
   -------------------------------------------------------------------------- */

/* Base: white background, black text */
body {
    background: var(--print-color-bg) !important;
    color: var(--print-color-text) !important;
    font-size: 11pt;
    line-height: 1.4;
    display: block;
}

/* Hide non-print elements */
site-header,
nav-panel,
nav-overlay,
.skip-link,
glossary-popover,
lore-nav,
lore-see-also,
header-icon-btn {
    display: none !important;
}

/* Full-width layout: remove max-width constraints */
site-main,
site-main-inner,
site-footer-inner {
    max-width: none;
    margin-left: 0;
    margin-right: 0;
    width: 100%;
}

/* Links: ensure underline is visible */
a {
    text-decoration: underline;
    color: var(--print-color-text);
}

/* Append URL after external links */
a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 0.8em;
    color: var(--print-color-subtle);
}

/* Don't append URL for internal links */
a[href^="/"]::after,
a[href^="#"]::after {
    content: none;
}

/* Page break control: keep these elements together */
rules-section,
rule-callout,
table,
figure {
    break-inside: avoid;
}

/* Headings: avoid orphaned headings at bottom of page */
h2,
h3 {
    break-after: avoid;
}

/* Remove shadows and background colors from components */
rule-callout,
glossary-term,
lore-nav-card {
    background: none !important;
    box-shadow: none !important;
}

site-header,
nav-panel {
    box-shadow: none !important;
}

/* Tables: visible borders for print */
table {
    border-collapse: collapse;
    width: 100%;
}

th,
td {
    border: 1px solid var(--print-color-border);
    padding: 4pt 8pt;
}

rules-table th,
rules-table td {
    border: 1px solid var(--print-color-border);
}

spell-tier {
    break-inside: avoid;
    border: 1px solid var(--color-border);
}

/* --------------------------------------------------------------------------
   Character Sheet print rules
   -------------------------------------------------------------------------- */

/* Hide site chrome and interactive-only elements */
site-footer,
gift-reference,
#cs-generate-rolls-btn {
    display: none !important;
}

site-main,
site-main-inner {
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    width: 100% !important;
}

/* Character sheet: full width, compact type for paper */
tool-page {
    max-width: none;
    width: 100%;
    font-size: 9pt;
    line-height: 1.3;
}

tool-page h1 {
    font-size: 14pt;
    color: var(--print-color-text);
    margin-bottom: 4pt;
}

/* Hide placeholder text in print */
tool-page input::placeholder,
tool-page textarea::placeholder {
    color: transparent !important;
}

/* Hide default option text in selects (shows blank for handwriting) */
tool-page-field select option[value=""] {
    color: transparent;
}

/* Force Background and caste row to start on a new page */
#cs-background-caste {
    break-before: page;
}

/* Sections: remove background, clean borders, avoid breaks */
tool-page-section {
    background: none !important;
    border: 1px solid var(--print-color-border);
    padding: 4pt 6pt;
    margin-bottom: 4pt;
    break-inside: avoid;
}

tool-page-section > h2 {
    font-size: 10pt;
    color: var(--print-color-text);
    margin-bottom: 3pt;
    border-bottom: 1px solid var(--print-color-border);
    padding-bottom: 2pt;
}

/* Header fields: 2 columns */
character-sheet-header-fields {
    grid-template-columns: 1fr 1fr;
    gap: 4pt;
}

/* Fame category in print: no background fill */
fame-category {
    background-color: transparent;
    padding: 0;
}

/* Hide XP enable button in print */
#cs-xp-enable-btn {
    display: none;
}

/* Combat + Health two-column row in print */
tool-page-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4pt;
    margin-bottom: 4pt;
}

tool-page-row > tool-page-section {
    margin-bottom: 0;
}

/* Labels: black text for print */
tool-page-field label {
    font-size: 8pt;
    color: var(--print-color-text);
}

/* Text inputs: remove borders, show value as plain text, underline for empty */
tool-page-field input {
    border: none;
    border-bottom: 1px solid var(--print-color-muted);
    border-radius: 0;
    background: none !important;
    padding: 2px 0;
    font-size: 9pt;
    color: var(--print-color-text);
    min-height: 18pt;
}

tool-page-field input[type="number"] {
    width: 7ch;
    min-height: 18pt;
}

/* Health field as blank underlined field in print */
#cs-health-pct {
    width: 5ch;
    min-height: 18pt;
}

/* Hide health bar and condition in print */
health-tracker-bar-wrap,
health-tracker-condition {
    display: none !important;
}

health-tracker-unit {
    font-size: 8pt;
    color: var(--print-color-text);
}

/* Select dropdowns: display as plain text */
tool-page-field select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    border: none;
    border-bottom: 1px solid var(--print-color-muted);
    border-radius: 0;
    background: none !important;
    padding: 2px 0;
    font-size: 9pt;
    color: var(--print-color-text);
}

/* Make select text transparent when showing default option */
tool-page-field select:has(option[value=""]:checked) {
    color: transparent;
}

/* Textareas: show as lined areas with room to write, sized to content */
tool-page textarea {
    border: none;
    border-bottom: 1px solid var(--print-color-muted);
    border-radius: 0;
    background: transparent;
    padding: 2px 0;
    font-size: 9pt;
    color: var(--print-color-text);
    min-height: unset;
    resize: none;
    overflow: hidden;
    height: auto;
    max-height: none;
    field-sizing: content;
    outline: none;
}

/* Dot-fill buttons: remove button styling, show as circles */
dot-fill-dot {
    border: 1.5px solid var(--print-color-border);
    width: 10px;
    height: 10px;
    cursor: default;
    padding: 0;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

dot-fill-dot[variant="filled"] {
    background-color: var(--print-color-text) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

dot-fill-label {
    font-size: 8pt;
    color: var(--print-color-text);
}

/* Skills grid with column gap in print */
skills-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 3pt;
    column-gap: var(--space-6);
}

skill-category h3 {
    font-size: 8pt;
    color: var(--print-color-text);
    margin-bottom: 2pt;
    border-bottom: 1px solid var(--print-color-border);
}

skill-category dot-fill-label {
    min-width: 10ch;
    font-size: 8pt;
}

/* Gift block */
gift-block legend {
    font-size: 8pt;
    color: var(--print-color-text);
}

/* Combat reference */
combat-ref {
    gap: 3pt;
}

combat-ref-term {
    font-size: 8pt;
    color: var(--print-color-text);
}

/* Inventory slots */
inventory-slot[variant="empty"] {
    display: none !important;
}

inventory-slot[variant="occupied"] {
    border: none;
    padding: 0;
    min-height: 0;
    min-width: 0;
}

inventory-bullet {
    background: none;
    border: none;
    border-radius: 0;
    padding: 0;
    font-size: 8pt;
    color: var(--print-color-text);
    cursor: default;
}

inventory-bullet button {
    display: none !important;
}

inventory-container {
    height: auto;
    border: none;
    background: none !important;
    padding: 2pt;
}

inventory-container-name {
    font-size: 8pt;
    color: var(--print-color-text);
}

inventory-container-grid {
    gap: 2pt;
}

inventory-container[variant="permanent"],
inventory-container[variant="unequipped"] {
    border: none;
}

/* Magic and Identity sections */
magic-section,
identity-section {
    gap: 3pt;
}

/* Appearance fields: 2 columns */
character-sheet-appearance-fields {
    grid-template-columns: 1fr 1fr;
    gap: 4pt;
}

/* Hide XP badge in print */
xp-badge,
gift-dots-badge {
    display: none;
}

/* Hide custom spell dialog in print */
#cs-custom-spell-dialog {
    display: none;
}

/* Hide "Create custom spell" button in print */
#cs-add-custom-spell-btn {
    display: none;
}

/* Hide custom spell delete buttons in print */
custom-spell-item button {
    display: none;
}

/* Hide carry item catalog in print */
inventory-catalog {
    display: none !important;
}

/* Hide remove buttons in print */
inventory-container-header button[inventory-action="remove"] {
    display: none !important;
}

inventory-container-footer {
    display: none !important;
}

/* Spell list items: clean spacing in print */
known-spells-list li {
    padding: 1pt 0;
}

/* Spell links: plain black text in print — no underline, no link color */
known-spells-list a {
    color: inherit;
    text-decoration: none;
}

/* Custom spell items: look like base spell items in print */
known-spells-list custom-spell-item {
    display: block;
    font-size: 9pt;
    color: var(--print-color-text);
}

/* XP management print overrides */

/* Unaffordable dots: print normally — no dimming on paper */
dot-fill-dot[unaffordable] {
    opacity: 1;
    cursor: default;
}

/* Background-granted dots: preserve distinct fill so player can see the split */
dot-fill-dot[background] {
    background-color: var(--color-warm) !important;
    border-color: var(--color-warm-hover) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

/* Locked container: remove locked state in print */
dot-fill[locked] {
    opacity: 1;
    pointer-events: auto;
}

/* Lock message: hidden in print */
lock-message {
    display: none;
}

/* Mindset gauge print styles */

mindset-gauge-track button {
    width: auto;
    height: auto;
    padding: 0;
    cursor: default;
}

mindset-gauge-track button::before {
    border: 1.5px solid var(--print-color-border);
    background-color: transparent;
    width: 20px;
    height: 20px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

mindset-gauge-track button[active]::before {
    background-color: var(--print-color-text) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

mindset-gauge-label {
    font-size: 8pt;
    color: var(--print-color-text);
}

tool-page-field[variant="mindset"] {
    align-items: center;
}

mindset-gauge-track {
    flex-grow: unset;
}

/* Hide image picker dialog in print */
#cs-image-dialog {
    display: none;
}

/* Image picker button: remove interactivity in print */
#cs-image-picker-btn {
    max-width: var(--print-profile-image-size);
    max-height: var(--print-profile-image-size);
    border: none;
    cursor: default;
}

/* Profile image: constrain for print */
#cs-profile-image {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

mindset-gauge {
    gap: var(--space-1);
}

mindset-gauge-row {
    padding-bottom: var(--space-1);
}

glossary-term[resolved] {
    text-decoration: none;
}

auto-textarea textarea {
    height: auto !important;
    max-height: none;
    overflow: visible;
}
