/* Tokens match the mobile prototype's light theme exactly. */
:root{--bg:#F2F6F4;--surface:#FFFFFF;--surface-2:#E6EFEB;--ink:#110F58;--ink-2:#495F5A;--line:#D5E1DC;--accent:#74D3A7;--accent-soft:#DDF3E9;--on-accent:#0E2A2F;--hero:#10262E;--hero-ink:#EFECE3;--paper:#FFFDF8;--paper-ink:#1D1B45;--pos:#17754F;--danger:#B3342B;--brand-ink:#10272F;--brand-mint:#5FC49E;--cream:#EFECE3;--stage:#DCE7E3;--gift-row:#C8F0DD;
 /* aliases kept for the pages */
 --green:var(--pos);--green-deep:#0F6B47;--mint:var(--accent);--mint-pale:var(--accent-soft);--muted:var(--ink-2);--muted-2:#6F857F;--radius:16px;color-scheme:light}
/* Dark, the prototype's tokens. Chosen in Settings (Dark, or Auto to follow the device); nv.js sets data-theme before the page paints. */
:root[data-theme="dark"]{--bg:#0B1A20;--surface:#122830;--surface-2:#1A3640;--ink:#EFECE3;--ink-2:#9FB8B1;--line:#26454F;--accent-soft:#17382F;--hero:#173842;--pos:#74D3A7;--danger:#F08A80;--stage:#050D10;--brand-ink:#EFECE3;--brand-mint:#98D8B8;--gift-row:#1E4C3D;--green-deep:#98D8B8;--muted-2:#7E9891;color-scheme:dark}
:root[data-theme="dark"] .chip.on,:root[data-theme="dark"] .btn.dark,:root[data-theme="dark"] .toast{color:var(--bg)}
:root[data-theme="dark"] .status{background:#1E4C3D;color:#C8F0DD}
:root[data-theme="dark"] .status.pending{background:#4A3A12;color:#F3E2A9}
:root[data-theme="dark"] .status.failed{background:#4A1F1C;color:#F8C7C2}
:root[data-theme="dark"] img.logo-light{filter:invert(1) hue-rotate(180deg)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Schibsted Grotesk',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--green)}
h1,h2,h3{font-family:'Fraunces',Georgia,serif;font-weight:500;letter-spacing:-.01em;margin:0}
h1{font-size:34px;line-height:1.15}
h2{font-size:22px;line-height:1.25}
h3{font-size:18px}
p{margin:0}
.wrap{max-width:560px;margin:0 auto;padding:0 16px 56px}
.wrap.wide{max-width:980px}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 0 20px}
.wordmark{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--brand-ink);font-family:'Poppins',sans-serif;font-weight:600;font-size:20px;letter-spacing:-.01em}
.wordmark svg{width:30px;height:25px;flex-shrink:0}
.pill{display:inline-block;background:var(--mint-pale);color:var(--green);font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;letter-spacing:.02em}
.card-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.card-box+.card-box{margin-top:14px}
.muted{color:var(--muted)}
.small{font-size:13px}
.row{display:flex;gap:12px;align-items:center}
.row.between{justify-content:space-between}
.stack>*+*{margin-top:12px}
label.f{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:0 0 6px}
input[type=text],input[type=email],input[type=tel],input[type=search],input[type=date],input[type=number],textarea,select{width:100%;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;outline:none}
input:focus,textarea:focus,select:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(116,211,167,.35)}
textarea{min-height:110px;resize:vertical;font-family:'Fraunces',Georgia,serif;font-size:17px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-weight:650;font-size:16px;min-height:50px;border-radius:999px;padding:0 22px;border:1px solid transparent;cursor:pointer;text-decoration:none;transition:transform .12s,opacity .2s}
.btn:active{transform:scale(.98)}
/* Primary buttons wear the prototype's .fab: the flowing rainbow with the dark ring. */
.btn.primary{color:var(--on-accent);background:linear-gradient(100deg,#7BD5AA,#C9DFF2,#E3DDF6,#F4D3CB,#F3E2A9,#7BD5AA);background-size:300% 100%;
  box-shadow:0 10px 22px rgba(16,38,46,.2),0 0 0 2px var(--ink),0 0 0 7px rgba(123,213,170,.16);animation:nvflow 7s linear infinite}
.btn.primary:hover{transform:translateY(-1px)}
.btn.primary:active{transform:scale(.98)}
.btn.primary[disabled]{opacity:.42;cursor:not-allowed;animation:none;transform:none}
.btn.primary.sm{box-shadow:0 6px 14px rgba(16,38,46,.16),0 0 0 2px var(--ink),0 0 0 5px rgba(123,213,170,.16)}
@keyframes nvflow{0%{background-position:0% 50%}100%{background-position:100% 50%}}
@media (prefers-reduced-motion:reduce){.btn.primary{animation:none}}
.btn.dark{background:var(--ink);color:var(--bg)}
.btn.ghost{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line);border-color:transparent}
.btn.ghost:hover{box-shadow:inset 0 0 0 1.5px #B9CCC5}
.btn.block{width:100%}
.btn.sm{min-height:38px;padding:0 15px;font-size:14.5px}
.err{color:var(--danger);font-size:14px;margin-top:8px}
.note{background:var(--mint-pale);border-radius:12px;padding:12px 14px;font-size:14px;color:var(--ink)}
.note.warn{background:#FBF1DD;color:#5A4206}
.hr{height:1px;background:var(--line);margin:18px 0}
.foot{margin-top:40px;font-size:13px;color:var(--muted-2);text-align:center}
.foot a{color:var(--muted-2)}

/* choice chips */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font:inherit;font-weight:600;padding:10px 16px;border-radius:999px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.chip.on .sub{color:#CFE7DB}
.chip .sub{display:block;font-weight:400;font-size:12px;color:var(--muted)}

/* choice list */
.opt{display:flex;gap:12px;align-items:flex-start;border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;cursor:pointer;background:var(--surface)}
.opt+.opt{margin-top:8px}
.opt.on{border-color:var(--ink)}
.opt input{accent-color:var(--ink)}
.opt input{margin-top:4px}
.opt .t{font-weight:600}
.opt .s{font-size:13px;color:var(--muted)}

/* summary lines */
.lines .ln{display:flex;justify-content:space-between;padding:6px 0;font-size:15px}
.lines .ln.total{border-top:1px solid var(--line);margin-top:6px;padding-top:12px;font-weight:600;font-size:17px}

/* card designs grid */
.designs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.design{border:2px solid transparent;border-radius:12px;padding:4px;background:var(--surface);cursor:pointer;text-align:left}
.design.on{border-color:var(--ink)}
.design .art{aspect-ratio:5/3;border-radius:8px;overflow:hidden;background:#eee}
.design .art svg{width:100%;height:100%;display:block}
.design .nm{font-size:12px;margin:6px 2px 2px;color:var(--muted);line-height:1.2}

/* the card itself */
.card{width:100%;aspect-ratio:5/7;border-radius:16px;overflow:hidden;background:var(--paper);box-shadow:0 14px 30px rgba(16,38,46,.2);display:flex;flex-direction:column}
.card.lp{background-color:#FBF8F1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.4' numOctaves='2' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .38 0 0 0 0 .28 0 0 0 .12 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)'/%3E%3C/svg%3E")}
.card-art{flex:0 0 40%;position:relative}
.card-art svg{position:absolute;inset:0;width:100%;height:100%}
.card-body{flex:1;min-height:0;padding:14px 16px;display:flex;flex-direction:column;justify-content:space-between;color:var(--paper-ink);overflow:hidden}
.card-msg{flex:1;min-height:0;overflow:hidden;font-family:'Fraunces',Georgia,serif;font-size:14px;line-height:1.45;white-space:pre-wrap}
.card-msg.ph{color:#8A8A9A;font-style:italic}
.card-from{font-family:'Fraunces',Georgia,serif;font-style:italic;font-size:14px;margin-top:6px}
.card-wrap{max-width:260px;margin:0 auto}

/* dashboard table */
table.gifts{width:100%;border-collapse:collapse;font-size:14px}
table.gifts th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;letter-spacing:.03em;text-transform:uppercase;padding:8px 10px;border-bottom:1px solid var(--line)}
table.gifts td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}
table.gifts td.amt{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.gifts th.amt{text-align:right}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.stat .v{font-family:'Fraunces',Georgia,serif;font-size:28px;line-height:1.1}
.stat .k{font-size:13px;color:var(--muted);margin-top:4px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 9px;border-radius:999px;background:var(--gift-row);color:var(--pos)}
.status.pending{background:#FBF1DD;color:#5A4206}
.status.failed{background:#F8E1DE;color:var(--danger)}
.qr{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px;width:176px;height:176px}
.qr svg{width:100%;height:100%}
.modal{position:fixed;inset:0;background:rgba(16,39,47,.55);display:none;align-items:center;justify-content:center;padding:20px;z-index:10}
.modal.open{display:flex}
.modal .inner{background:var(--bg);border-radius:20px;padding:20px;max-width:360px;width:100%}
.link-box{display:flex;gap:8px;align-items:center;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:14px;word-break:break-all}
.link-box span{flex:1}
@media (max-width:640px){h1{font-size:28px}.stats{grid-template-columns:1fr 1fr}.designs{grid-template-columns:repeat(3,1fr)}.card-box{padding:16px}}
@media print{.noprint{display:none !important}body{background:#fff}}
