// ============================================================ // Roll & Confrontation dialogs — Steampunk theme // Targets .ecryme-roll-dialog, .ecryme-confront-start-dialog, // .ecryme-confrontation-dialog (AppV2 root classes) // ============================================================ // Common container mixin .steam-dialog-window() { // Title bar — brass plate .window-header { .brass-gradient(); border-bottom: 2px solid @steam-brass-dark; color: @steam-dark; text-shadow: 0 1px 1px rgba(255, 220, 80, 0.4); .window-title { font-family: @font-primary; font-size: 1rem; font-weight: bold; color: @steam-dark; letter-spacing: 0.04em; } // Close button — rivet look .header-button, button[data-action="close"] { color: @steam-dark; background: none; border: none; font-size: 1rem; opacity: 0.7; &:hover { opacity: 1; color: @steam-rust; } } } // Content area — aged parchment .window-content { background: @steam-parchment; color: @steam-rust; } } // ============================================================ // Apply to all three dialog app containers // ============================================================ .ecryme-roll-dialog, .ecryme-confront-start-dialog, .ecryme-confrontation-dialog { .steam-dialog-window(); // Outer window frame border: 2px solid @steam-brass-dark; box-shadow: inset 4px 4px 0 1px @steam-rivet, inset -4px 4px 0 1px @steam-rivet, inset 4px -4px 0 1px @steam-rivet, inset -4px -4px 0 1px @steam-rivet, 0 4px 14px rgba(0, 0, 0, 0.6); // ---- Actor header row ---- .roll-dialog-header { background: linear-gradient( 90deg, @steam-parchment-dk 0%, @steam-parchment 60% ); border-bottom: 1px solid @steam-brass-dark; border-radius: 0; padding: 6px 8px; margin-bottom: 6px; display: flex; align-items: center; gap: 8px; .actor-icon { border: 2px solid @steam-brass-dark; border-radius: 2px; box-shadow: 0 0 4px rgba(0, 0, 0, 0.35); background: @steam-parchment-dk; width: 44px; height: 44px; padding: 1px; flex-shrink: 0; } .roll-dialog-actor-title { font-family: @font-primary; font-size: 1rem; font-weight: bold; color: @steam-dark; letter-spacing: 0.03em; } } // ---- Form labels ---- .roll-dialog-label { color: @steam-rust; font-size: 0.88rem; font-weight: 600; } // ---- Row separator ---- .flexrow { border-bottom: 1px solid rgba(@steam-brass-dark, 0.15); padding: 3px 0; &:last-child { border-bottom: none; } } // ---- Selects & inputs ---- select, input[type="text"], input[type="number"] { background: @steam-cream; color: @steam-dark; border: 1px solid @steam-brass-dark; border-radius: 2px; padding: 2px 5px; font-size: 0.85rem; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12); &:focus { outline: none; border-color: @steam-brass; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.12), 0 0 4px rgba(@steam-brass, 0.5); } } select[multiple] { min-height: 60px; } // ---- Headings inside content ---- h3, h4 { font-family: @font-primary; color: @steam-brass-dark; font-size: 0.9rem; margin: 6px 0 3px; border-bottom: 1px solid rgba(@steam-brass-dark, 0.3); padding-bottom: 2px; } // ---- Footer ---- .sheet-footer { border-top: 2px solid @steam-brass-dark; background: @steam-parchment-dk; padding: 6px 4px; margin-top: 6px; button { background: linear-gradient(180deg, mix(@steam-brass, @steam-dark, 50%) 0%, mix(@steam-brass-dark, @steam-dark, 65%) 100% ); border: 1px solid @steam-brass-dark; border-radius: 2px; color: @steam-parchment; font-family: @font-primary; font-size: 0.85rem; letter-spacing: 0.04em; padding: 5px 10px; cursor: pointer; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.7); box-shadow: inset 0 1px 0 rgba(255, 215, 80, 0.2), 0 2px 4px rgba(0, 0, 0, 0.35); transition: background 0.15s; &:hover { background: linear-gradient(180deg, mix(@steam-brass-light, @steam-dark, 60%) 0%, mix(@steam-brass, @steam-dark, 50%) 100% ); color: @steam-cream; } &:active { position: relative; top: 1px; } &[disabled] { opacity: 0.5; cursor: default; box-shadow: none; &:hover { background: none; } } } } } // ============================================================ // Confrontation dialog — dice / bonus pool areas // ============================================================ .ecryme-confrontation-dialog { // Area containers (execution, preservation, pool) .confront-area { background: @steam-parchment-dk; border: 1px solid @steam-brass-dark; border-radius: 3px; min-height: 60px; padding: 4px; flex-wrap: wrap; gap: 4px; margin-bottom: 4px; } // Execution area — slight warm tint .confront-execution-area { border-left: 3px solid @steam-brass; } // Preservation area — slight cool tint .confront-preservation-area { border-left: 3px solid @steam-copper; } // Pool list area .pool-list { border-left: 3px solid @steam-metal-mid; min-height: 50px; } // Individual dice container .confront-dice-container { display: flex; flex-direction: column; align-items: center; gap: 2px; cursor: grab; padding: 3px; border-radius: 2px; transition: background 0.1s; &:hover { background: rgba(@steam-brass, 0.18); } // Dice image .confront-dice { border: 1px solid @steam-brass-dark; border-radius: 2px; box-shadow: 0 0 4px rgba(0, 0, 0, 0.3); background: @steam-parchment-dk; width: 38px; height: 38px; } // Dice value label .confront-dice-centered, .confront-bonus-centered { font-family: @font-primary; font-size: 0.85rem; font-weight: bold; color: @steam-brass-dark; text-align: center; margin: 0; } } // Bonus spec — acid tint .bonus-spec .confront-dice { border-color: @steam-acid; background-color: mix(@steam-parchment, @steam-acid, 88%); box-shadow: 0 0 4px rgba(@steam-acid, 0.3); } }