/* Doveware Card - brand: blue, gold, white, black (logo blue #0230A0) */
:root{
  --dv-blue:#0230A0; --dv-deep:#011C6B; --dv-bright:#1A5CE0;
  --dv-gold:#D4AF37; --dv-gold-d:#B8921C; --dv-black:#0B0F1A; --dv-white:#fff;
  --dv-bg:#F3F5FA; --dv-line:#E2E6F0; --dv-muted:#6B7280;
  --bs-primary:#0230A0; --bs-primary-rgb:2,48,160; --bs-link-color:#0230A0; --bs-link-hover-color:#011C6B;
  --bs-body-font-family:"Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;
  --bs-border-radius:.6rem;
}
body{background:var(--dv-bg);color:var(--dv-black);font-size:.95rem}
h1,h2,h3,h4,h5{font-weight:650;letter-spacing:-.01em}
.text-gold{color:var(--dv-gold)!important}
.text-blue{color:var(--dv-blue)!important}

/* top bar */
.dv-nav{background:linear-gradient(90deg,var(--dv-deep),var(--dv-blue));border-bottom:3px solid var(--dv-gold)}
.dv-brand{display:flex;align-items:center;gap:.6rem;color:#fff;text-decoration:none;font-weight:700;font-size:1.15rem}
.dv-brand:hover{color:#fff}
.dv-brand img{width:38px;height:38px;border-radius:50%;box-shadow:0 0 0 2px rgba(212,175,55,.8)}
.dv-brand em{font-style:normal;color:var(--dv-gold)}
.dv-nav .nav-link,.dv-nav .navbar-text{color:#cfdcff}
.dv-nav .nav-link:hover{color:#fff}
.lang-switch{display:inline-flex;border:1px solid rgba(255,255,255,.35);border-radius:999px;overflow:hidden}
.lang-switch a{padding:.15rem .7rem;font-size:.78rem;font-weight:700;color:#cfdcff;text-decoration:none}
.lang-switch a.on{background:var(--dv-gold);color:var(--dv-black)}
.lang-switch.dark{border-color:var(--dv-line)}
.lang-switch.dark a{color:var(--dv-muted)}
.lang-switch.dark a.on{background:var(--dv-blue);color:#fff}

/* buttons */
.btn{font-weight:600}
.btn-dv{background:var(--dv-blue);color:#fff;border:1px solid var(--dv-blue)}
.btn-dv:hover,.btn-dv:focus{background:var(--dv-deep);border-color:var(--dv-deep);color:#fff}
.btn-gold{background:var(--dv-gold);color:var(--dv-black);border:1px solid var(--dv-gold)}
.btn-gold:hover{background:var(--dv-gold-d);border-color:var(--dv-gold-d);color:var(--dv-black)}
.btn-outline-dv{border:1px solid var(--dv-blue);color:var(--dv-blue);background:#fff}
.btn-outline-dv:hover{background:var(--dv-blue);color:#fff}

.btn-outline-warning{--bs-btn-color:#b86e00;--bs-btn-border-color:#e8890c;--bs-btn-hover-bg:#e8890c;--bs-btn-hover-border-color:#e8890c;--bs-btn-hover-color:#fff;--bs-btn-active-bg:#e8890c;--bs-btn-active-border-color:#e8890c;--bs-btn-active-color:#fff}

/* cards + stats */
.card{border:1px solid var(--dv-line);border-radius:.8rem;box-shadow:0 1px 3px rgba(2,48,160,.06)}
.card-h{font-weight:650;padding:.8rem 1rem;border-bottom:1px solid var(--dv-line);background:#fff;border-radius:.8rem .8rem 0 0}
.stat{background:#fff;border:1px solid var(--dv-line);border-top:3px solid var(--dv-gold);border-radius:.7rem;padding:.7rem .9rem;height:100%}
.stat .n{font-size:1.45rem;font-weight:700;color:var(--dv-blue);line-height:1.15}
.stat .l{font-size:.72rem;color:var(--dv-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:.1rem}
.stat.good{border-top-color:#198754}.stat.good .n{color:#198754}
.stat.bad{border-top-color:#dc3545}.stat.bad .n{color:#dc3545}
.table>:not(caption)>*>*{padding:.55rem .7rem}
.table thead th{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--dv-muted);background:#fafbfe;border-bottom:1px solid var(--dv-line)}
.badge-yes,.badge-paid{background:#198754}.badge-no,.badge-unpaid{background:#dc3545}
.badge-maybe,.badge-partial{background:#e8890c}.badge-pending,.badge-none{background:#6c757d}.badge-gift{background:var(--dv-blue)}
.progress{height:.55rem;background:#e9edf7}
.progress-bar{background:var(--dv-blue)}
.progress-bar.gold{background:var(--dv-gold)}

/* event header + tabs */
.ev-head h3{margin:0}
.ev-tabs{display:flex;gap:.25rem;overflow-x:auto;border-bottom:2px solid var(--dv-line);margin:1rem 0 1.3rem;white-space:nowrap}
.ev-tabs a{padding:.55rem .95rem;color:var(--dv-muted);font-weight:600;text-decoration:none;border-bottom:3px solid transparent;margin-bottom:-2px}
.ev-tabs a:hover{color:var(--dv-blue)}
.ev-tabs a.on{color:var(--dv-blue);border-bottom-color:var(--dv-gold)}
.ev-tabs a i{margin-right:.3rem}

.dv-foot{color:var(--dv-muted);font-size:.78rem;text-align:center;padding:1.5rem 1rem 2rem}
.dv-foot b{color:var(--dv-blue)}

/* login */
.auth-wrap{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.auth-brand{background:radial-gradient(circle at 30% 20%,#1A5CE0 0%,var(--dv-blue) 45%,var(--dv-deep) 100%);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}
.auth-brand img{width:min(280px,60%);border-radius:1.2rem;box-shadow:0 12px 40px rgba(0,0,0,.35)}
.auth-brand h2{margin-top:1.6rem;font-weight:700}
.auth-brand p{max-width:360px;color:#cfdcff}
.auth-brand .gold-line{width:70px;height:3px;background:var(--dv-gold);margin:.8rem auto}
.auth-form{display:flex;align-items:center;justify-content:center;padding:2rem;background:#fff;position:relative}
.auth-form .box{width:100%;max-width:380px}
.auth-form .lang-top{position:absolute;top:1rem;right:1rem}
@media(max-width:820px){.auth-wrap{grid-template-columns:1fr}.auth-brand{padding:1.5rem 1rem}.auth-brand img{width:140px}.auth-brand p{display:none}.auth-brand h2{margin-top:.8rem;font-size:1.2rem}}

/* guest-facing cards */
.inv-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:#e9edf5}
.inv-card{max-width:440px;width:100%;background:#fff;border-radius:20px;overflow:hidden;box-shadow:0 14px 44px rgba(0,0,0,.2);text-align:center}
.inv-head{padding:2rem 1.5rem 1.6rem;color:#fff;position:relative}
.inv-head .kicker{letter-spacing:.25em;text-transform:uppercase;font-size:.72rem;opacity:.85}
.inv-head h1{font-family:Georgia,'Times New Roman',serif;font-size:1.9rem;margin:.6rem 0 .2rem;font-weight:700}
.inv-head::after{content:"";position:absolute;left:50%;bottom:0;width:70px;height:3px;background:var(--dv-gold);transform:translateX(-50%)}
.theme-gold .inv-head{background:linear-gradient(135deg,#0B0F1A,#2c2410 60%,#8a6d12)}
.theme-blue .inv-head{background:linear-gradient(135deg,var(--dv-deep),var(--dv-bright))}
.theme-green .inv-head{background:linear-gradient(135deg,#0b3d2e,#1f8a5b)}
.theme-rose .inv-head{background:linear-gradient(135deg,#6d1a36,#d6568a)}
.inv-body{padding:1.4rem 1.5rem}
.inv-guest{font-family:Georgia,serif;font-size:1.4rem;color:var(--dv-blue);font-weight:700}
.inv-qr{width:190px;height:190px;border:6px solid #fff;box-shadow:0 0 0 1px var(--dv-line);border-radius:8px}
.inv-foot{padding:.7rem;background:var(--dv-black);color:#9aa3b8;font-size:.72rem;display:flex;gap:.5rem;align-items:center;justify-content:center}
.inv-foot img{width:22px;height:22px;border-radius:50%}
.inv-foot b{color:var(--dv-gold)}
.inv-lang{position:absolute;top:.7rem;right:.7rem}

.inv-pic{width:100%;border-radius:12px;box-shadow:0 6px 20px rgba(0,0,0,.18);display:block}

/* design editor */
@font-face{font-family:"dv-script";src:url("../fonts/script.ttf")}
@font-face{font-family:"dv-serif";src:url("../fonts/serif.ttf")}
@font-face{font-family:"dv-sans";src:url("../fonts/sans.ttf")}
.design-stage{position:relative;max-width:520px;margin:0 auto;touch-action:none;user-select:none;-webkit-user-select:none;line-height:0}
.design-stage>img{width:100%;display:block;border-radius:.6rem;box-shadow:0 6px 24px rgba(2,48,160,.18)}
.mk{position:absolute;transform:translate(-50%,-50%);cursor:grab;outline:2px dashed var(--dv-gold);outline-offset:3px;white-space:nowrap;line-height:1.1}
.mk:active{cursor:grabbing}
.mk-name{padding:0 .2em;text-shadow:0 0 1px rgba(0,0,0,.25)}
.mk-msg{white-space:pre-wrap;text-align:center;line-height:1.25}
.mk-qr{background:#fff;display:flex;align-items:center;justify-content:center;color:#111;border-radius:6px}
.step{width:1.7rem;height:1.7rem;border-radius:50%;background:var(--dv-blue);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;margin-right:.5rem}

.tint-btn{border:1px solid var(--dv-line);background:#fff;border-radius:999px;padding:.25rem .7rem .25rem .35rem;font-size:.85rem;font-weight:600;display:inline-flex;align-items:center;gap:.4rem}
.tint-btn.on{border-color:var(--dv-blue);box-shadow:0 0 0 2px rgba(2,48,160,.25)}
.tint-dot{width:1.2rem;height:1.2rem;border-radius:50%;border:1px solid rgba(0,0,0,.2);display:inline-block}
.tint-range{--track:linear-gradient(to right,#fff,#0230A0)}
.tint-range::-webkit-slider-runnable-track{background:var(--track);border:1px solid var(--dv-line);height:.7rem;border-radius:999px}
.tint-range::-moz-range-track{background:var(--track);border:1px solid var(--dv-line);height:.7rem;border-radius:999px}

/* scanner */
#reader{max-width:420px;margin:auto;border-radius:.8rem;overflow:hidden}
.scan-result{border-radius:14px;padding:1.2rem;text-align:center;font-size:1.15rem;color:#fff;display:none}
.scan-result b{font-size:1.5rem;letter-spacing:.05em}
.scan-valid{background:#198754}.scan-already_used{background:#e8890c}.scan-invalid{background:#dc3545}

/* receipt */
.receipt{max-width:560px;margin:0 auto;background:#fff;border:1px solid var(--dv-line);border-radius:.8rem;overflow:hidden;position:relative}
.receipt-head{background:linear-gradient(90deg,var(--dv-deep),var(--dv-blue));color:#fff;padding:1rem 1.3rem;display:flex;align-items:center;gap:.9rem;border-bottom:3px solid var(--dv-gold)}
.receipt-head img{width:54px;height:54px;border-radius:50%}
.receipt-amount{font-size:2rem;font-weight:800;color:var(--dv-blue)}
.receipt dl{display:grid;grid-template-columns:150px 1fr;gap:.35rem 1rem;margin:0}
.receipt dt{color:var(--dv-muted);font-weight:500}
.receipt .void-mark{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:5rem;font-weight:900;color:rgba(220,53,69,.25);transform:rotate(-18deg);pointer-events:none}

@media print{
  .no-print,.dv-nav,.ev-tabs,.dv-foot{display:none!important}
  body{background:#fff}.card,.receipt{box-shadow:none}
}
