/* Never Forget pages (/gifts/*). Soft pastels for surfaces, dark warm brown for all text. */
:root{
  --cream:#FFF9F3;--peach:#F5C6AE;--coral:#E99578;--lavender:#DCD3F4;--sky:#CDE5F5;--mint:#CDE9D9;--rose:#F7CFDA;--honey:#F7E5B0;--stone:#E6DED5;
  --ink:#443B37;--muted:#5F524B;--card:#FFFFFF;--line:#E9DDD2;--edge:#8A786C;--ok:#2B6248;--bad:#A8231B;--sale:#A8231B;
  color-scheme:light;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--ink);font-family:Anuphan,"Noto Sans Thai",system-ui,sans-serif;font-size:18px;line-height:1.6}
main{max-width:760px;margin:0 auto;padding:24px 16px 64px}
main.wide{max-width:1040px}
h1,h2,h3,.btn,button,.price{font-family:Mitr,sans-serif}
a{color:var(--ink);text-decoration-color:var(--coral);text-underline-offset:3px}
:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
[hidden]{display:none!important}
a,img,svg{-webkit-user-drag:none}

.top{display:flex;justify-content:flex-end;align-items:center;gap:12px;margin-bottom:16px;font-size:16px}
.top a{color:var(--muted)}
.top .brand{font-family:Mitr,sans-serif;color:var(--ink);font-size:20px;margin-right:auto;text-decoration:none}
.kicker{font-family:Mitr,sans-serif;color:var(--ok);margin:0 0 6px;font-size:15px;letter-spacing:.04em}
h1{font-weight:700;font-size:clamp(36px,7vw,56px);line-height:1;margin:0 0 14px}
h1 em{font-style:normal;text-decoration:underline;text-decoration-color:var(--coral);text-decoration-thickness:6px;text-underline-offset:6px;text-decoration-skip-ink:none}
.lede{font-size:clamp(18px,2.4vw,21px);color:var(--muted);margin:0 0 18px;max-width:38ch}
.glance{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 22px;padding:0;font:500 16px/1.25 Mitr,sans-serif;text-align:center}
.glance li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 6px}
.glance span{display:block;font-size:22px;margin-bottom:4px}
h2{font-size:24px;font-weight:600;margin:0 0 4px;display:flex;align-items:center;gap:10px}
h2 .n{display:inline-grid;place-items:center;height:30px;padding:0 12px;border-radius:999px;white-space:nowrap;font-size:15px;background:var(--c,var(--lavender));color:var(--ink);flex:none}
h2 .hint{flex:none;aspect-ratio:1}                                      /* stays a circle when the heading is tight */
@media (max-width:560px){h2{font-size:clamp(15px,4.5vw,21px);gap:6px;white-space:nowrap}h2 .n{height:26px;padding:0 9px;font-size:13px}}
.sub{color:var(--muted);margin:0 0 18px;font-size:16px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px 18px;margin-bottom:22px}
.small{color:var(--muted);font-size:16px}

/* Experience cards: the picture carries the feeling, one sentence says what they'll do. Always 2 columns, inside a framed gallery
   with its own scroll bar (drawn here, because phones hide the real one until you scroll). */
.gallery{position:relative;border:2px solid var(--line);border-radius:18px;background:var(--cream);padding:10px 26px 10px 10px;box-shadow:inset 0 2px 6px rgba(68,59,55,.08)}
.templates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:10px;max-height:min(560px,64vh);overflow-y:auto;overscroll-behavior:contain;padding:2px;scrollbar-width:none}
.templates::-webkit-scrollbar{display:none}
.gallery-bar{position:absolute;top:12px;bottom:12px;right:8px;width:10px;border-radius:5px;background:var(--stone);touch-action:none;cursor:pointer}
.gallery-bar.none{display:none}
.gallery-thumb{position:absolute;left:0;right:0;top:0;min-height:28px;border-radius:5px;background:var(--edge)}
.gallery:has(.templates[hidden]){display:none}
.tpl{position:relative;display:flex;flex-direction:column;border:3px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;background:var(--card)}
.tpl:has(input:checked){border-color:var(--coral)}
.tpl:has(input:focus-visible){outline:3px solid var(--ink);outline-offset:2px}
.tpl input{position:absolute;opacity:0;pointer-events:none}
.tpl .art{position:relative;display:block;aspect-ratio:5/3}
.tpl .art img{display:block;width:100%;height:100%;object-fit:cover}
.tick{display:none;position:absolute;z-index:1;left:6px;top:6px;width:28px;height:28px;border-radius:50%;place-items:center;background:var(--ok);color:#fff;font:700 17px/1 Mitr,sans-serif;box-shadow:0 0 0 2px #fff}
.tpl:has(input:checked) .tick{display:grid}
.views{position:absolute;z-index:1;left:6px;top:6px;display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px 0 6px;border-radius:12px;background:rgba(68,59,55,.78);color:#fff;font:600 13px/1 Anuphan,"Noto Sans Thai",sans-serif;pointer-events:none}                 /* Mitr draws a slashed zero */
.views svg{flex:none}
.tpl:has(input:checked) .views{left:40px}                               /* beside the tick when picked */
.tpl .tpl-body{display:flex;flex-direction:column;gap:3px;padding:8px 10px 10px;flex:1}
.tpl h3{margin:0;font-size:17px;font-weight:600;line-height:1.25}
.tpl p{margin:0 0 6px;font-size:15px;line-height:1.35;color:var(--ink)}
.tpl .tag{font-size:13px;padding:1px 9px}
.tpl .price{font-size:15px}
@media (min-width:760px){.tpl{flex-direction:row}.tpl .art{flex:0 0 42%;aspect-ratio:auto;min-height:130px}.tpl .art img{position:absolute;inset:0}}     /* wide screens: picture beside the words */
@media (max-width:560px){.tpl .tpl-body{padding:6px 8px 8px}.tpl h3{font-size:15px}.tpl p{font-size:13px}.tpl .row{flex-wrap:wrap}}
.tpl .row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:auto}
.tpl .tags{display:flex;flex-wrap:wrap;gap:4px}
.tag{display:inline-block;padding:2px 12px;border-radius:999px;background:var(--stone);color:var(--ink);font:500 15px/1.5 Anuphan,sans-serif}
.tag[data-occ="birthday"]{background:var(--lavender)}
.tag[data-occ="thanksgiving"]{background:var(--peach)}
.tag[data-occ="christmas"]{background:var(--mint)}
.tag[data-occ="thank-you"]{background:var(--sky)}
.tag[data-occ="valentine"]{background:var(--rose)}
.tag[data-occ="new-year"]{background:var(--honey)}
.tag[data-occ="anniversary"]{background:var(--coral)}
.tag[data-occ="best-friend"]{background:var(--stone)}
.family{border:1px solid var(--line);border-radius:12px;padding:10px 14px 4px;margin:0 0 16px}
.family legend{font:500 17px/1.4 Mitr,sans-serif;padding:0 6px}
.family legend .opt{font:400 15px Anuphan,sans-serif;color:var(--muted);margin-left:4px}
.family label{display:block;white-space:nowrap;font-size:16px;margin-bottom:4px}
.family input[type=number]{min-height:46px}
.family-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.family .field{margin:0}
.family select,.family input{width:100%}
.family-note{margin:2px 0 8px}
.family .kids-at{margin:8px 0 2px}
.tag.faith{background:#FFF3D6;box-shadow:inset 0 0 0 1.5px #D9A440;color:#7A4F22;font-weight:600}
.play{position:absolute;right:6px;bottom:6px;width:32px;height:32px;border-radius:50%;border:2px solid #fff;padding:0;background:var(--ink);cursor:pointer}
.play::after{content:"";position:absolute;inset:-4px}                   /* 44px target */
.play::before{content:"";position:absolute;left:11px;top:8px;width:11px;height:12px;background:#fff;clip-path:polygon(0 0,100% 50%,0 100%)}
.price{color:var(--ink);font-size:17px;white-space:nowrap}

/* ? buttons and their bubble */
.hint{display:inline-grid;place-items:center;width:26px;height:26px;padding:0;margin:0 2px;border-radius:50%;border:2px solid var(--muted);background:var(--card);color:var(--ink);font:600 15px/1 Mitr,sans-serif;cursor:pointer;vertical-align:middle;position:relative}
.hint::after{content:"";position:absolute;inset:-9px}                   /* a 44px target around the small circle */
.art .hint{position:absolute;top:6px;right:6px;margin:0;width:28px;height:28px;font-size:16px;border-color:var(--ink)}
.art .hint::after{inset:-6px}
.hint[aria-expanded="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.hint-pop{position:fixed;z-index:20;width:min(300px,calc(100vw - 32px));padding:10px 12px;border-radius:10px;background:var(--ink);color:#fff;font-size:16px;line-height:1.45;box-shadow:0 6px 20px rgba(68,59,55,.35)}

/* Form */
.field{margin-bottom:16px}
.field label,.lbl{display:flex;justify-content:space-between;gap:8px;font-weight:500;margin-bottom:4px}
.field label .opt,.count{color:var(--muted);font-weight:400;font-size:15px}
.count.over{color:var(--bad)}
input[type=text],input[type=email],input[type=date],input[type=number],textarea{width:100%;min-width:0;max-width:100%;font:inherit;font-size:17px;color:var(--ink);background:var(--card);border:2px solid var(--edge);border-radius:10px;padding:10px 12px}
textarea{min-height:96px;resize:vertical}
input:focus,textarea:focus{border-color:var(--ink);outline:none}
.date-row{display:flex;align-items:center;gap:6px}
input[type=date]{-webkit-appearance:none;appearance:none;flex:1;min-height:48px}
input[type=date]::-webkit-date-and-time-value{text-align:left}
.icon-x{flex:none;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--muted);font:400 24px/1 system-ui,sans-serif;cursor:pointer}
.err{color:var(--bad);font-size:16px;margin:4px 0 0;min-height:0}
.invalid{border-color:var(--bad)!important}
.two{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
@media (max-width:560px){.two{grid-template-columns:1fr}}

.msg{border:2px dashed var(--edge);border-radius:12px;padding:14px 14px 2px;margin-bottom:12px;position:relative}
.msg .head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-family:Mitr,sans-serif;color:var(--ink)}
.link{background:none;border:0;color:var(--ink);font:inherit;font-size:16px;text-decoration:underline;cursor:pointer;padding:4px}

.btn,button.btn{display:inline-block;font-size:17px;text-decoration:none;border-radius:10px;padding:10px 18px;border:2px solid var(--ink);color:var(--ink);background:transparent;cursor:pointer;line-height:1.3}
.btn.primary{background:var(--coral);border-color:var(--coral);color:var(--ink)}
.btn.big{width:100%;font-size:20px;padding:14px}
.btn.small{font-size:16px;padding:8px 14px}
.btn:disabled{opacity:.55;cursor:wait}
.actions{display:flex;gap:10px;flex-wrap:wrap}

.code-row{display:flex;gap:10px}
.code-row input{flex:1;min-width:0;text-transform:uppercase}
.code-row select{flex:1;min-width:0}
.summary{display:grid;grid-template-columns:1fr auto;gap:4px 0;margin:18px 0;padding:14px;border-radius:10px;background:var(--cream)}
.summary>:nth-child(even){text-align:right}
#sum-disc,#sum-disc-l{color:var(--sale)}
.summary .total{font-family:Mitr,sans-serif;font-size:20px;border-top:1px solid var(--line);padding-top:8px;margin-top:4px}
.ok{color:var(--ok)}
.notice{border-left:4px solid var(--coral);background:var(--cream);padding:12px 14px;border-radius:6px;margin-bottom:22px}

/* Result */
.result{border:3px solid var(--coral)}
.copy-row{display:flex;gap:8px;margin:8px 0 14px}
.copy-row input{flex:1;min-width:0}

/* Preview overlay */
.overlay{position:fixed;inset:0;background:rgba(44,37,34,.92);z-index:10;display:flex;flex-direction:column;padding:12px}
.overlay .bar{display:flex;justify-content:space-between;align-items:center;color:#fff;font-family:Mitr,sans-serif;margin-bottom:8px;gap:10px}
.overlay .bar .btn{color:#fff;border-color:#fff}
.overlay iframe{flex:1;width:100%;max-width:520px;margin:0 auto;border:0;border-radius:14px;background:#000}

.modal .filter-h{margin:14px 0 0;font-size:16px;padding:0}
.filter-list{margin:4px 0 6px}
.filter-list label{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}
.filter-list input{width:22px;height:22px;flex:none;margin:0;accent-color:var(--coral)}
.filter-list .tag-n{margin-left:auto;color:var(--muted);font-size:16px}
.filter-actions{margin-top:10px}
.filter-actions .btn{flex:1}

footer{color:var(--muted);font-size:16px;border-top:1px solid var(--line);padding-top:18px;margin-top:40px;display:flex;flex-wrap:wrap;gap:6px 16px}
footer a{color:var(--muted)}

/* Legal pages */
.prose h1{font-size:clamp(30px,6vw,42px)}
.prose h2{font-size:20px;margin:28px 0 6px}
.prose p,.prose li{color:var(--ink)}
.prose ul{padding-left:20px}

/* Theme suggestions, under the game list */
.suggest-row{margin:14px 0 0;font-size:16px;color:var(--muted)}
.suggest-row .link{padding:0;font-size:16px}

/* Dialog bits (survey, lost link) */
.modal h3{margin:0 0 12px;font-size:19px;font-weight:600;padding-right:44px}
.modal .kicker{margin:0 0 2px;font-size:15px}
.sheet-x{position:absolute;top:10px;right:10px}
#survey-open{text-align:left;padding:0;color:var(--ink)}
.pay-list{display:grid;gap:10px;margin:14px 0}
.pay-opt{width:100%;justify-content:center;padding:13px;font-size:16px}
.survey-pop{position:relative;overflow:hidden;background:var(--card);border:2px solid var(--coral);border-radius:14px;padding:16px 18px;margin:-8px 0 22px;animation:surveyIn .45s cubic-bezier(.2,1.3,.4,1)}
.survey-pop h3{margin:0 0 12px;font-size:17px;font-weight:600;padding-right:56px}
.survey-pop .kicker{margin:0 0 2px;font-size:15px}
.survey-pop.thanked{min-height:112px;display:flex;align-items:center;justify-content:center;text-align:center}
.survey-pop.leaving{opacity:0;transition:opacity .45s}
.survey-thanks{position:relative;z-index:1;margin:0;padding:8px 16px;border-radius:999px;background:var(--card);font-size:21px;font-weight:700;color:var(--ink);animation:surveyThanks .7s cubic-bezier(.2,1.5,.4,1)}
.survey-heart{position:absolute;bottom:-24px;font-size:20px;pointer-events:none;animation:surveyHeart 2.4s ease-out both}
@keyframes surveyIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
@keyframes surveyThanks{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@keyframes surveyHeart{0%{opacity:0;transform:translateY(0) scale(.6)}15%{opacity:1}100%{opacity:0;transform:translateY(-130px) scale(1.2) rotate(24deg)}}
@media (prefers-reduced-motion:reduce){.survey-pop,.survey-thanks{animation:none}.survey-heart{display:none}}
.choices{display:flex;flex-wrap:wrap;gap:8px}
.choices .btn.picked{background:var(--coral);color:var(--ink)}

/* Template finder */
.find-row{display:flex;gap:8px;margin:10px 0}
.search{position:relative;flex:1;min-width:0;display:flex;align-items:center}
.search svg,.icon-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.search svg{position:absolute;left:12px;color:var(--muted);pointer-events:none}
.search .icon-x{position:absolute;right:4px}
.search input[type=search]{padding-left:40px;padding-right:42px}
input[type=search]::-webkit-search-cancel-button{display:none}
.icon-btn{position:relative;flex:none;width:48px;height:48px;display:grid;place-items:center;border-radius:10px;border:2px solid var(--edge);background:var(--card);color:var(--ink);cursor:pointer}
.count-dot{position:absolute;top:-8px;right:-8px;min-width:22px;height:22px;padding:0 5px;border-radius:999px;background:var(--coral);color:var(--ink);font:600 14px/22px Mitr,sans-serif}
.picked-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0 0 12px}
.match{font-size:16px;color:var(--muted)}
input[type=search]{width:100%;font:inherit;font-size:17px;color:var(--ink);background:var(--card);border:2px solid var(--edge);border-radius:10px;padding:10px 12px}
input[type=search]:focus{border-color:var(--ink);outline:none}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{border:2px solid var(--ink);padding:4px 12px;min-height:40px;cursor:pointer}
select{width:100%;font:inherit;font-size:17px;color:var(--ink);background:var(--card);border:2px solid var(--edge);border-radius:10px;padding:9px 10px}
select:focus{border-color:var(--ink);outline:none}
/* Styleable menus (Chromium): "In use" sits at the right of the line. Other browsers show the plain text. */
@supports (appearance:base-select){
  .msg select,.msg select::picker(select){appearance:base-select}
  .msg select::picker(select){background:var(--card);color:var(--ink);border:2px solid var(--line);border-radius:10px;padding:4px}
  .msg option{display:flex;justify-content:flex-start;align-items:center;gap:12px;padding:6px 10px;border-radius:6px}
  .msg option:checked{font-weight:500}
  .msg option:disabled{color:var(--muted);opacity:.65}
  .msg option .sep{display:none}
  .msg option .in-use{margin-left:auto;font-size:15px;white-space:nowrap}
  .msg optgroup{font-weight:600;padding:6px 10px 2px;color:var(--muted)}
}
.verse-text{font-style:italic;margin:6px 0 0}

/* Message tabs: one message at a time */
.msg-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 12px}
.msg-tab{min-width:44px;height:44px;padding:0 10px;border-radius:10px;border:2px solid var(--edge);background:var(--card);color:var(--ink);font:600 16px Mitr,sans-serif;cursor:pointer;position:relative}
.msg-tab[aria-selected="true"]{border-color:var(--ink);background:var(--peach);text-decoration:underline}
.msg-tab.filled::after{content:"";position:absolute;right:4px;top:4px;width:9px;height:9px;border-radius:50%;background:var(--coral);box-shadow:0 0 0 1px var(--ink)}
.msg-tab.has-err{border-color:var(--bad);color:var(--bad)}
.msg-tab.has-err::before{content:"!";margin-right:2px}
.extra-row{display:flex;align-items:center;gap:6px}
.extra-opt{display:flex;align-items:center;gap:10px;min-height:44px;margin:10px 0 4px;font-weight:600;cursor:pointer}
.extra-opt input{width:22px;height:22px;flex:none;margin:0}
.msg-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:4px 0 14px}
.msg-nav .btn:disabled{opacity:.35;cursor:default}

/* Launch price: the regular price crossed out, the real price large and red */
.was{color:var(--muted);text-decoration:line-through;text-decoration-thickness:2px;font-size:.85em;margin-right:6px}
.now{color:var(--sale);font-family:Mitr,sans-serif;font-size:1.25em;font-weight:700}
.summary .launch{color:var(--sale);font-family:Mitr,sans-serif;font-weight:700}

/* Lost-your-link dialog */
.modal{width:min(520px,calc(100% - 32px));max-height:calc(100% - 32px);overflow:auto;background:var(--card);color:var(--ink);border:2px solid var(--line);border-radius:16px;padding:22px 18px 16px}
.modal::backdrop{background:rgba(68,59,55,.6)}
.modal h2{padding-right:56px}

/* FAQ */
.faq details{border-top:1px solid var(--line);padding:10px 0}
.faq details:first-of-type{border-top:0}
.faq summary{cursor:pointer;font-family:Mitr,sans-serif;font-weight:500}
.faq details p{margin:8px 0 0;color:var(--muted)}
