*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #111;--bg-card: #1a1a1a;--text: #e0e0e0;--text-muted: #888;--gold: #c9a84c;--red: #a33;--red-hover: #c44;--border: #2a2a2a;--overlay: rgba(0, 0, 0, .7);--radius: 8px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}button,a,select,input{-webkit-tap-highlight-color:transparent;touch-action:manipulation}header{display:flex;align-items:center;justify-content:center;padding:1.5rem 1rem 1rem;position:relative}.logo{display:block;width:100px;height:100px}.btn-rolls{position:absolute;right:1rem;top:1.5rem;background:var(--red);color:#fff;border:none;padding:.5rem 1.25rem;border-radius:var(--radius);font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-rolls:hover{background:var(--red-hover)}main{max-width:700px;margin:0 auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.roll-card{background:var(--bg-card);border:1px solid var(--gold);border-radius:var(--radius);padding:1rem;position:relative;-webkit-user-select:none;user-select:none;transition:border-color .15s,box-shadow .15s}.roll-card.selected{border-color:#fff;box-shadow:0 0 0 2px #c9a84c66}.card-actions{position:absolute;top:.5rem;right:.5rem;display:flex;align-items:center;gap:.4rem}.card-checkbox{width:18px;height:18px;cursor:pointer;accent-color:var(--gold);display:none}body.select-mode .card-checkbox,.roll-card.selected .card-checkbox{display:inline-block}.btn-card-share{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;padding:.15rem .35rem;border-radius:4px;line-height:1}.btn-card-share:hover{color:var(--gold);background:rgba(201,168,76,.1)}.selection-bar{position:fixed;left:50%;bottom:1rem;transform:translate(-50%,150%);background:var(--bg-card);border:1px solid var(--gold);border-radius:var(--radius);padding:.6rem .85rem;display:flex;align-items:center;gap:.6rem;z-index:250;box-shadow:0 6px 20px #00000080;transition:transform .2s ease}.selection-bar.visible{transform:translate(-50%)}.selection-count{color:var(--text);font-size:.9rem;font-weight:600}.selection-bar .btn-primary{padding:.4rem .9rem;font-size:.9rem}.btn-secondary{padding:.4rem .9rem;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;font-weight:600;cursor:pointer}.btn-secondary:hover{color:var(--text);border-color:var(--text-muted)}.cards-error{text-align:center;color:var(--text-muted);padding:2rem 1rem}body.cards-view main{padding-top:.5rem}.roll-card .message{margin-bottom:.75rem;line-height:1.6}.roll-card .message strong{color:var(--gold)}.roll-card .dice{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.roll-card .dice img{height:auto;border-radius:4px}.roll-card .dice img.highest{width:48px}.roll-card .dice img.lower{width:40px}.sidenav{position:fixed;top:0;right:-320px;width:320px;height:100%;background:var(--bg-card);border-left:1px solid var(--border);z-index:200;transition:right .3s ease;overflow-y:auto;display:flex;flex-direction:column}.sidenav.open{right:0}.sidenav-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.sidenav-header h2{color:var(--gold);font-size:1.25rem}.sidenav-close{background:none;border:none;color:var(--text-muted);font-size:1.5rem;cursor:pointer}.sidenav-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:199;display:none}.sidenav-overlay.visible{display:block}.roll-section{border-bottom:1px solid var(--border)}.roll-section-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;cursor:pointer;text-transform:capitalize;font-weight:600;color:var(--text);transition:color .2s}.roll-section-header:hover{color:var(--gold)}.roll-section-header .chevron{transition:transform .2s;color:var(--text-muted)}.roll-section.open .roll-section-header .chevron{transform:rotate(180deg)}.roll-section-body{display:none;padding:0 1.25rem 1rem}.roll-section.open .roll-section-body{display:block}.param-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.param-row label{text-transform:capitalize;font-size:.9rem;color:var(--text-muted)}.stepper{display:flex;align-items:center;gap:.5rem}.stepper button{width:32px;height:32px;border-radius:4px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.stepper button:hover{border-color:var(--gold)}.stepper .stepper-value{width:2rem;text-align:center;font-size:1rem;font-weight:600}.btn-roll{width:100%;padding:.5rem;background:var(--red);color:#fff;border:none;border-radius:var(--radius);font-size:.95rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-roll:hover{background:var(--red-hover)}.btn-roll.error{background:#622}.color-add-row{display:flex;gap:.5rem;margin-bottom:.75rem}.color-add-row select{flex:1;padding:.4rem;border-radius:4px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:.9rem}.color-add-row button{padding:.4rem .75rem;border-radius:4px;border:1px solid var(--gold);background:transparent;color:var(--gold);cursor:pointer;font-size:.9rem}.color-add-row button:hover{background:var(--gold);color:var(--bg)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:300;display:flex;align-items:center;justify-content:center}.modal{background:var(--bg-card);border:1px solid var(--gold);border-radius:var(--radius);padding:2rem;max-width:400px;width:90%;text-align:center}.modal h2{color:var(--gold);margin-bottom:.75rem}.modal p{color:var(--text-muted);margin-bottom:1.5rem}.input-field{width:100%;padding:.6rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:1rem;margin-bottom:1rem;outline:none}.input-field:focus{border-color:var(--gold)}.btn-primary{padding:.6rem 1.5rem;background:var(--red);color:#fff;border:none;border-radius:var(--radius);font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-primary:hover{background:var(--red-hover)}.btn-kofi{display:block;margin:1.25rem;padding:.6rem 1rem;background:#323842;color:#fff;text-align:center;text-decoration:none;border-radius:var(--radius);font-size:.95rem;font-weight:600;transition:background .2s}.btn-kofi:hover{background:#434a54}.dice-stage{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;pointer-events:none;overflow:hidden}.firework-die{position:absolute;left:50vw;bottom:-80px;height:auto;border-radius:4px;filter:drop-shadow(0 0 12px rgba(201,168,76,.8));animation-name:firework;animation-timing-function:cubic-bezier(.15,.55,.45,1);animation-fill-mode:forwards;--dx: 0vw;--dy: -60vh;--rot-end: 360deg;opacity:0}@keyframes firework{0%{transform:translate(0) rotate(0) scale(.6);opacity:0}10%{opacity:1}70%{transform:translate(calc(var(--dx) * .95),calc(var(--dy) * 1.02)) rotate(calc(var(--rot-end) * .7)) scale(1.1);opacity:1}to{transform:translate(var(--dx),calc(var(--dy) + 30vh)) rotate(var(--rot-end)) scale(.8);opacity:0}}@media (max-width: 600px){header{padding:1rem .75rem .75rem}.logo{width:72px;height:72px}.btn-rolls{top:1rem;right:.75rem;padding:.6rem 1rem;font-size:.9rem}main{padding:.75rem;gap:.75rem}.roll-card{padding:.75rem}.roll-card .dice img.highest{width:40px}.roll-card .dice img.lower{width:32px}.sidenav{width:100%;right:-100%}.roll-section-header{padding:1rem 1.25rem;min-height:48px}.stepper button{width:44px;height:44px;font-size:1.3rem}.stepper .stepper-value{width:2.5rem;font-size:1.1rem}.btn-roll{padding:.75rem;font-size:1rem;min-height:48px}.btn-primary{padding:.75rem 1.5rem;min-height:48px}.color-add-row select{padding:.6rem;font-size:1rem;min-height:44px}.color-add-row button{padding:.6rem 1rem;font-size:1rem;min-height:44px}.sidenav-close{font-size:2rem;padding:.25rem .5rem}.input-field{font-size:1rem;padding:.75rem}}
