:root{--navy:#13294b;--navy-2:#0b1a33;--blue:#1f5fae;--gold:#d4af37;--gold-2:#f3dc8b;--gold-3:#a8841f;--paper:#f6efdc;--paper-2:#efe4c8;--ink:#1d2633;--muted:#6b7280;--line:#e5e7eb;--bg:#f3f4f7;--card:#ffffff;--ok:#1b7f4b;--err:#b3261e;--warn:#b26a00;--radius:14px;--shadow:0 10px 30px rgba(15,23,42,0.12);--font:var(--font-sarabun),"Sarabun",system-ui,-apple-system,"Segoe UI",sans-serif;--serif:"Georgia","Times New Roman",var(--font-sarabun),serif;--mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--pw:min(40vw,410px,calc((100dvh - 250px) / 1.42));--ph:calc(var(--pw) * 1.42)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.5}a{color:var(--blue);text-decoration:none}button{font-family:inherit}img{max-width:100%}.mono{font-family:var(--mono);letter-spacing:.02em}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.grow{flex:1 1}.center-screen{min-height:100dvh;display:grid;place-items:center}.btn{--b:var(--navy);display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:10px;border:1px solid transparent;background:#e9edf5;color:var(--ink);font-weight:600;font-size:.95rem;cursor:pointer;transition:transform .08s,background .2s,box-shadow .2s;text-decoration:none}.btn:hover{filter:brightness(1.03)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--navy);color:#fff}.btn.danger{background:var(--err);color:#fff}.btn.danger.ghost{background:transparent;color:var(--err);border-color:#f1c8c5}.btn.ghost{background:transparent;border-color:var(--line)}.btn.ghost.light{color:#dbe4f5;border-color:rgba(255,255,255,.25)}.btn.gold{background:linear-gradient(180deg,#f6dc7d,#d4af37 55%,#b8901e);color:#2b1f00;box-shadow:0 6px 18px rgba(212,175,55,.35),inset 0 1px 0 rgba(255,255,255,.6)}.btn.big{padding:14px 28px;font-size:1.05rem;border-radius:999px}.btn.sm{padding:6px 12px;font-size:.85rem;border-radius:8px}.btn.block{width:100%;margin-top:12px}.btn.round{width:46px;height:46px;border-radius:50%;padding:0;font-size:1.6rem;background:#fff;box-shadow:var(--shadow)}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:10px;border:none;background:transparent;cursor:pointer;font-size:1.1rem;color:inherit}.icon-btn:hover{background:rgba(0,0,0,.06)}.input{width:100%;min-width:0;padding:10px 12px;border-radius:10px;border:1px solid #d5dae3;background:#fff;font:inherit;color:inherit;transition:border-color .15s,box-shadow .15s}.input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(31,95,174,.15)}.input.big{font-size:1.4rem;padding:12px 14px;text-align:center;letter-spacing:.3em}.input.sm{padding:5px 8px;font-size:.85rem;width:auto}textarea.input{resize:vertical}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.field-label{font-size:.85rem;font-weight:600;color:#374151;margin-bottom:4px;display:block}.field-hint{font-size:.78rem;color:var(--muted)}.field-error{font-size:.8rem;color:var(--err)}.row2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:12px}.row2,.row3{display:grid;gap:12px}.row3{grid-template-columns:repeat(3,1fr);grid-gap:12px}.row-btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row-btns.end{justify-content:flex-end;margin-top:12px}.check{display:flex;gap:8px;align-items:center;margin:8px 0}.alert,.check{font-size:.92rem}.alert{padding:10px 14px;border-radius:10px;margin:12px 0}.alert.err{background:#fdecea;color:#8a1c13;border:1px solid #f5c6c1}.alert.ok{background:#e8f5ee;color:#0f5132;border:1px solid #b7e1c8}.alert.warn{background:#fff4e0;color:#7a4a00;border:1px solid #f3d29a}.alert.m{margin:20px}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:700;letter-spacing:.02em;background:#eef1f6;color:#374151;margin-right:4px;white-space:nowrap}.b-active,.b-valid{background:#e3f2ea;color:#0f5132}.b-completed{background:linear-gradient(90deg,#f6e4a0,#e7c45a);color:#4a3700}.b-draft,.b-pending{background:#eef1f6;color:#475569}.b-cancelled,.b-closed,.b-expired{background:#f3f4f6;color:#6b7280}.b-locked,.b-voided{background:#fdecea;color:#8a1c13}.b-claimed{background:#e7effa;color:#1f4f8f}.pill{padding:6px 12px;border-radius:999px;font-weight:700;font-size:.85rem}.pill.ok{background:#e3f2ea;color:#0f5132}.pill.off{background:#fdecea;color:#8a1c13}.spinner-wrap{display:flex;gap:10px;align-items:center;justify-content:center;padding:30px;color:var(--muted)}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid rgba(19,41,75,.15);border-top:3px solid var(--navy);animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}.lang-toggle{display:inline-flex;border:1px solid rgba(0,0,0,.12);border-radius:999px;padding:2px;background:rgba(255,255,255,.6);cursor:pointer;font-size:.75rem;font-weight:700}.lang-toggle span{padding:3px 8px;border-radius:999px;color:var(--muted)}.lang-toggle span.on{background:var(--navy);color:#fff}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:inherit}.brand-mark{color:var(--gold);font-size:1.2em}.toasts{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:1000;width:min(92vw,420px)}.toast{padding:12px 16px;border-radius:12px;background:var(--navy);color:#fff;box-shadow:var(--shadow);animation:toastIn .25s ease-out;font-size:.92rem}.toast.err{background:var(--err)}@keyframes toastIn{0%{opacity:0;transform:translateY(10px)}}.modal-backdrop{position:fixed;inset:0;background:rgba(8,14,28,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:500;padding:16px;animation:fadeIn .2s}@keyframes fadeIn{0%{opacity:0}}.modal{background:#fff;border-radius:18px;width:min(100%,480px);max-height:92dvh;display:flex;flex-direction:column;box-shadow:0 30px 80px rgba(0,0,0,.35);animation:modalIn .25s cubic-bezier(.2,.9,.3,1.2)}.modal.wide{width:min(100%,920px)}@keyframes modalIn{0%{opacity:0;transform:translateY(16px) scale(.98)}}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 8px}.modal-head h3{margin:0;font-size:1.15rem}.modal-body{padding:8px 20px 18px;overflow:auto}.modal-foot{padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.pinpad{display:flex;flex-direction:column;align-items:center;gap:16px;margin:8px 0}.pinpad.disabled{opacity:.55}.pin-dots{display:flex;gap:14px}.pin-dots span{width:16px;height:16px;border-radius:50%;border:2px solid var(--navy);transition:background .15s,transform .15s}.pin-dots span.on{background:var(--navy);transform:scale(1.1)}.pin-keys{display:grid;grid-template-columns:repeat(3,72px);grid-gap:12px;gap:12px}.pin-keys button{height:60px;border-radius:16px;border:1px solid #dfe3ea;background:#fff;font-size:1.5rem;font-weight:600;cursor:pointer;box-shadow:0 2px 0 #e3e7ee;transition:background .1s,transform .05s;color:var(--ink)}.pin-keys button:active{background:#eef2f8;transform:translateY(2px);box-shadow:none}.pin-keys button.fn{font-size:1.1rem;color:var(--muted);background:#f7f8fa}.auth-shell{min-height:100dvh;flex-direction:column;padding:16px;background:radial-gradient(1200px 600px at 50% -10%,#284a80 0,var(--navy) 45%,var(--navy-2) 100%)}.auth-shell,.auth-top{display:flex;align-items:center}.auth-top{width:min(100%,460px);justify-content:space-between;padding:6px 0 18px}.auth-top,.auth-top .brand{color:#fff}.auth-card{width:min(100%,420px);background:#fffdf7;border-radius:22px;padding:26px 22px;box-shadow:0 30px 80px rgba(0,0,0,.35);position:relative}.auth-card h1{margin:6px 0 16px;text-align:center;font-size:1.4rem}.auth-booklet{display:grid;place-items:center;margin-top:-60px}.mini-cover{width:70px;height:96px;border-radius:4px 9px 9px 4px;background:linear-gradient(135deg,#1c3a68,var(--navy) 60%);box-shadow:0 10px 25px rgba(0,0,0,.35),inset 4px 0 0 rgba(0,0,0,.25);display:grid;place-items:center;border:1px solid rgba(212,175,55,.5)}.mini-cover span{color:var(--gold);font:700 .55rem var(--serif);letter-spacing:.2em}.auth-footer{margin-top:18px;display:flex;flex-direction:column;align-items:center;gap:8px;color:#c9d4ea;font-size:.92rem}.auth-footer a{color:var(--gold-2)}.auth-footer a.muted{color:#9fb0cf}.sales-app{min-height:100dvh;background:linear-gradient(180deg,#e9ecf3,#f6f4ee 40%)}.sales-header{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;justify-content:space-between;align-items:center;padding:max(10px,env(safe-area-inset-top)) 16px 10px;background:var(--navy);color:#fff;box-shadow:0 2px 12px rgba(0,0,0,.2)}.sh-left,.sh-right{display:flex;align-items:center;gap:10px}.sh-left .icon-btn{color:#fff}.sh-title{font-weight:700}.sh-user{font-size:.85rem;color:#cfd8ea}.sales-header .lang-toggle{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2)}.sales-header .lang-toggle span{color:#cfd8ea}.sales-header .lang-toggle span.on{background:var(--gold);color:#2b1f00}.menu{position:relative}.menu>summary{list-style:none;cursor:pointer}.menu>summary::-webkit-details-marker{display:none}.menu-pop{position:absolute;right:0;top:110%;background:#fff;color:var(--ink);border-radius:12px;box-shadow:var(--shadow);min-width:180px;padding:6px;display:flex;flex-direction:column;z-index:60}.menu-pop a,.menu-pop button{text-align:left;padding:9px 12px;border-radius:8px;border:0;background:none;color:var(--ink);cursor:pointer;font-size:.92rem}.menu-pop a:hover,.menu-pop button:hover{background:#f1f4f9}.menu-pop .danger{color:var(--err)}@media (max-width:600px){.sh-user{display:none}}.shelf-page{max-width:1180px;margin:0 auto;padding:24px 16px 60px}.shelf-head h1{margin:0;font-family:var(--serif);letter-spacing:.02em}.empty-shelf{padding:40px;text-align:center;color:var(--muted);background:#fff;border-radius:var(--radius);border:1px dashed #cfd5df}.shelf{margin-top:24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:34px 26px;gap:34px 26px;padding:26px 16px 40px}.plank{height:14px;margin:-4px -13px 0;position:relative;z-index:1;background:linear-gradient(180deg,#a07a4c,#6e5032 60%,#4d3622);border-radius:2px;box-shadow:0 10px 14px -6px rgba(0,0,0,.35)}.shelf-book{background:none;border:0;padding:0;cursor:pointer;text-align:left;color:inherit;perspective:1200px}.book-3d{position:relative;width:100%;aspect-ratio:1/1.42;transform-style:preserve-3d;transform:rotateY(-18deg) rotateX(2deg);transition:transform .45s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(14px 18px 18px rgba(0,0,0,.35))}.shelf-book:hover .book-3d{transform:rotateY(-6deg) translateY(-8px) scale(1.02)}.book-spine{position:absolute;left:-14px;top:0;width:14px;height:100%;transform:rotateY(-90deg);transform-origin:right;filter:brightness(.7);border-radius:3px 0 0 3px}.shelf-book.opening .book-3d{transform:rotateY(0) scale(1.15) translateY(-10px);transition-duration:.5s}.shelf-book.opening .passport-cover{transform-origin:left;animation:coverOpen .55s ease-in forwards}@keyframes coverOpen{to{transform:perspective(900px) rotateY(-75deg)}}.shelf-book.st-draft .book-3d,.shelf-book.st-expired .book-3d{filter:grayscale(.55) drop-shadow(14px 18px 18px rgba(0,0,0,.3))}.shelf-seal{position:absolute;right:-10px;top:14px;transform:rotate(14deg);background:linear-gradient(180deg,#f6dc7d,#d4af37);color:#3a2a00;font-weight:800;font-size:.72rem;padding:5px 10px;border-radius:6px;box-shadow:0 4px 10px rgba(0,0,0,.3);letter-spacing:.08em}.shelf-meta{margin-top:14px;background:rgba(255,255,255,.92);border-radius:12px;padding:10px 12px;box-shadow:0 4px 12px rgba(0,0,0,.08)}.sm-title{font-weight:700;line-height:1.3}.sm-row{display:flex;justify-content:space-between;align-items:center;margin:6px 0}.sm-count b{font-size:1.15rem;color:var(--navy)}.progress{height:6px;border-radius:999px;background:#e4e7ee;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--gold));border-radius:inherit;transition:width .6s}.passport-cover{position:relative;width:100%;height:100%;border-radius:4px 14px 14px 4px;overflow:hidden;background:var(--cover);color:var(--foil);box-shadow:inset 8px 0 14px -6px rgba(0,0,0,.55),inset -1px 0 0 rgba(255,255,255,.06);-webkit-user-select:none;-moz-user-select:none;user-select:none;container-type:inline-size}.cover-leather{position:absolute;inset:0;background:radial-gradient(120% 80% at 30% 20%,rgba(255,255,255,.12),transparent 60%),radial-gradient(100% 100% at 80% 100%,rgba(0,0,0,.35),transparent 60%),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.55 0'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");mix-blend-mode:soft-light}.security-pattern{position:absolute;inset:0;width:100%;height:100%}.cover-frame{position:absolute;inset:4.5%;border:1.5px solid color-mix(in srgb,var(--foil) 70%,transparent);border-radius:3px 8px 8px 3px;box-shadow:inset 0 0 0 4px transparent,inset 0 0 0 5px color-mix(in srgb,var(--foil) 40%,transparent)}.cover-content{position:absolute;inset:8%;display:flex;flex-direction:column;align-items:center;text-align:center}.foil-text{background:linear-gradient(100deg,color-mix(in srgb,var(--foil) 70%,#6b4b00) 0,var(--foil) 25%,color-mix(in srgb,var(--foil) 40%,#fff) 45%,var(--foil) 60%,color-mix(in srgb,var(--foil) 75%,#5a3e00) 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 1px 0 rgba(0,0,0,.35));animation:foilShine 6s ease-in-out infinite}@keyframes foilShine{0%,to{background-position:0 0}50%{background-position:100% 0}}.cover-kicker{font:700 4.4cqw var(--serif);letter-spacing:.32em;margin-top:4%}.cover-title{font:700 9cqw/1.15 var(--serif);letter-spacing:.06em;margin-top:7%;text-transform:uppercase}.cover-subtitle{font:600 5cqw var(--font);margin-top:2%;letter-spacing:.08em}.cover-emblem-wrap{flex:1 1;display:grid;place-items:center;width:100%}.cover-emblem{width:52%;filter:drop-shadow(0 1px 0 rgba(0,0,0,.4))}.cover-logo{max-width:50%;max-height:38cqw;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(0,0,0,.35))}.cover-holder{font:700 6cqw var(--font);letter-spacing:.04em}.cover-emp{font:600 3.8cqw var(--mono);letter-spacing:.18em;margin-top:1%}.cover-no{font:600 3.4cqw var(--mono);letter-spacing:.2em;margin-top:4%;opacity:.85}.cover-chip{width:14%;margin-top:4%;opacity:.9}.passport-cover.back{display:grid;place-items:end center}.back-text{position:relative;font:700 3.6cqw var(--serif);letter-spacing:.3em;padding-bottom:12%}.endpaper{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--cover) 85%,#fff) 0 2px,transparent 2px 9px),repeating-linear-gradient(-45deg,color-mix(in srgb,var(--cover) 85%,#fff) 0 2px,transparent 2px 9px),var(--cover);opacity:.95}.endpaper,.paper{width:100%;height:100%}.paper{position:relative;background:radial-gradient(120% 90% at 50% 40%,var(--paper) 0,var(--paper-2) 100%);overflow:hidden;container-type:inline-size;color:#3a3226}.paper:before{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='p'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.45  0 0 0 0 0.38  0 0 0 0 0.25  0 0 0 0.22 0'/></filter><rect width='200' height='200' filter='url(%23p)'/></svg>");opacity:.55}.paper.left:after,.paper:before{content:"";position:absolute;inset:0;pointer-events:none}.paper.left:after{background:linear-gradient(270deg,rgba(0,0,0,.16),transparent 9%)}.paper.right:after{content:"";background:linear-gradient(90deg,rgba(0,0,0,.18),transparent 9%)}.paper-watermark,.paper.right:after{position:absolute;inset:0;pointer-events:none}.paper-watermark{width:100%;height:100%}.paper-inner{position:relative;height:100%;padding:7cqw 7cqw 10cqw;display:flex;flex-direction:column}.paper-no{position:absolute;bottom:3.5cqw;left:0;right:0;text-align:center;font:600 3.2cqw var(--serif);color:#8a7a5a;letter-spacing:.1em}.page-heading{font:700 3.6cqw var(--serif);letter-spacing:.22em;border-bottom:1px solid rgba(109,90,51,.35);padding-bottom:1.5cqw;margin-bottom:4cqw}.page-heading,.page-subheading{text-transform:uppercase;color:#6d5a33}.page-subheading{font:700 3.2cqw var(--serif);letter-spacing:.18em;margin:4cqw 0 2cqw}.info-grid{display:grid;grid-template-columns:26cqw 1fr;grid-gap:4cqw;gap:4cqw}.info-photo{aspect-ratio:.82;border:1px solid rgba(109,90,51,.45);border-radius:4px;display:grid;place-items:center;background:repeating-linear-gradient(135deg,rgba(109,90,51,.06) 0 4px,transparent 4px 8px)}.info-photo svg{width:70%;fill:rgba(109,90,51,.35)}.info-photo.has-img{overflow:hidden;background:#fff}.info-photo img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.92) contrast(1.02);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.holder-photo-edit{display:grid;justify-items:center;grid-gap:12px;gap:12px}.hp-canvas{width:min(240px,62vw);aspect-ratio:600/732;height:auto;border-radius:8px;border:1px solid var(--line);background:#f5f1e6;object-fit:cover;touch-action:none;cursor:-webkit-grab;cursor:grab}.hp-canvas:active{cursor:-webkit-grabbing;cursor:grabbing}.hp-empty{display:grid;place-items:center;align-content:center;grid-gap:8px;gap:8px;color:#8a7a5a;font:inherit;cursor:pointer}.hp-empty svg{width:46%;fill:rgba(109,90,51,.35)}.hp-zoom{display:flex;align-items:center;gap:10px;width:min(260px,70vw);font-size:.9rem}.hp-zoom input{flex:1 1}.holder-photo-edit p{text-align:center;margin:0;max-width:300px}.page-info dl{margin:0;display:grid;grid-gap:.4cqw;gap:.4cqw}.page-info dt{font-size:2.8cqw;color:#8a7a5a;text-transform:uppercase;letter-spacing:.08em}.page-info dd{margin:0 0 1.4cqw;font-size:4.2cqw;font-weight:600;color:#222}.info-list{margin-top:4cqw!important}.mrz{margin-top:auto;font:600 2.75cqw/1.5 var(--mono);letter-spacing:.02em;color:#2b2b2b;background:rgba(255,255,255,.35);padding:2cqw;border-radius:3px;white-space:nowrap;overflow:hidden}.page-about h3{margin:0 0 2cqw;font:700 5.2cqw var(--serif);color:var(--navy)}.about-desc{font-size:3.6cqw;margin:0;white-space:pre-line}.station-checklist{list-style:none;padding:0;margin:0;display:grid;grid-gap:1.6cqw;gap:1.6cqw}.station-checklist li{display:grid;grid-template-columns:3cqw 1fr auto 5cqw;grid-gap:2cqw;gap:2cqw;align-items:center;font-size:3.6cqw;padding-bottom:1.4cqw;border-bottom:1px dotted rgba(109,90,51,.4)}.station-checklist .dot{width:3cqw;height:3cqw;border-radius:50%}.station-checklist .scode{font:600 2.8cqw var(--mono);color:#8a7a5a}.station-checklist .check{color:var(--ok);font-weight:800}.station-checklist li.done .sname{text-decoration:line-through;-webkit-text-decoration-color:rgba(27,127,75,.5);text-decoration-color:rgba(27,127,75,.5)}.page-stamps{flex:1 1;min-height:0;display:flex;flex-direction:column}.stamp-grid{flex:1 1;min-height:0;display:grid;grid-gap:3cqw;gap:3cqw}.per-1 .stamp-grid,.per-2 .stamp-grid{grid-template-columns:1fr}.per-2 .stamp-grid{grid-template-rows:repeat(2,minmax(0,1fr))}.per-3 .stamp-grid{grid-template-columns:1fr;grid-template-rows:repeat(3,minmax(0,1fr))}.per-4 .stamp-grid{grid-template-columns:1fr 1fr;grid-template-rows:repeat(2,minmax(0,1fr))}.per-6 .stamp-grid{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,minmax(0,1fr))}.per-1 .stamp-grid{grid-template-rows:minmax(0,1fr)}.stamp-slot{position:relative;min-height:0}.stamp-slot .stamp-mark{position:absolute;inset:0;width:100%;height:100%}.stamp-slot.highlight{animation:slotGlow 2.4s ease-out;border-radius:50%}@keyframes slotGlow{0%{background:radial-gradient(circle,rgba(212,175,55,.5),transparent 60%)}to{background:transparent}}.page-notes .notes-body{white-space:pre-line;font-size:3.6cqw}.notes-lines{display:grid;grid-gap:7cqw;gap:7cqw;margin-top:4cqw}.notes-lines span{border-bottom:1px dotted rgba(109,90,51,.4);height:1px}.stamp-mark{display:block;overflow:visible}.stamp-mark .stamp-ink{mix-blend-mode:multiply;opacity:.9}.stamp-mark .stamp-arc{font:700 15px var(--font);letter-spacing:2.5px}.stamp-mark .stamp-arc.small{font-size:10px;letter-spacing:2px}.stamp-mark .stamp-title{font:800 15px var(--font);letter-spacing:1px}.stamp-mark .stamp-date{font:700 9.5px var(--mono);letter-spacing:.3px}.stamp-mark .stamp-txn{font:600 7.5px var(--mono);letter-spacing:.5px;opacity:.85}.stamp-mark .stamp-photo{filter:saturate(.85) contrast(1.05)}.stamp-mark.empty{color:#8a7a5a}.stamp-mark .stamp-empty-name{font:700 13px var(--font);fill:#8a7a5a;opacity:.75}.stamp-mark .stamp-empty-label{font:600 9.5px var(--font);fill:#8a7a5a;letter-spacing:2px;opacity:.6}.stamp-mark.stamp-in .stamp-rot{transform-box:fill-box}.stamp-mark.stamp-in{animation:stampDown .65s cubic-bezier(.3,1.6,.5,1) both}@keyframes stampDown{0%{transform:scale(2.2);opacity:0;filter:blur(3px)}55%{transform:scale(.94);opacity:1;filter:blur(0)}75%{transform:scale(1.03)}to{transform:scale(1)}}.viewer-wrap{display:flex;flex-direction:column;align-items:center;padding:14px 12px 30px;min-height:calc(100dvh - 56px);background:radial-gradient(900px 500px at 50% 30%,#f9f6ee,#dfe3ea 70%)}.viewer-wrap.is-full{position:fixed;inset:0;z-index:400;min-height:100dvh;background:radial-gradient(1200px 700px at 50% 40%,#2a3f63,#0b1426 80%);--pw:min(44vw,calc((100dvh - 190px) / 1.42))}.viewer-wrap.is-full .page-label,.viewer-wrap.is-full .swipe-hint,.viewer-wrap.is-full .viewer-bar{color:#e6ecf7}.viewer-bar{width:min(100%,calc(var(--pw) * 2 + 40px));justify-content:space-between;gap:10px;margin-bottom:14px}.vb-title,.viewer-bar{display:flex;align-items:center;flex-wrap:wrap}.vb-title{gap:8px}.vb-progress{font:700 .95rem var(--mono);color:var(--navy)}.vb-actions{display:flex;gap:6px;flex-wrap:wrap}.viewer-wrap.is-full .btn.ghost{color:#e6ecf7;border-color:rgba(255,255,255,.25)}.book-stage{-moz-user-select:none;user-select:none;-webkit-user-select:none;perspective:2600px;padding:10px 0 20px}.book{position:relative;width:calc(var(--pw) * 2);height:var(--ph);transform-style:preserve-3d;transition:transform .9s cubic-bezier(.45,.05,.25,1)}.book.closed-front{transform:translateX(calc(var(--pw) * -.5))}.book.closed-back{transform:translateX(calc(var(--pw) * .5))}.book-spine-shadow{position:absolute;left:calc(var(--pw) - 30px);width:60px;top:0;bottom:0;background:linear-gradient(90deg,transparent,rgba(0,0,0,.25) 50%,transparent);z-index:999;pointer-events:none;transform:translateZ(2px)}.leaf{position:absolute;left:var(--pw);top:0;width:var(--pw);height:var(--ph);transform-origin:left center;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.45,.05,.25,1);cursor:pointer}.leaf.flipped{transform:rotateY(-180deg)}.leaf .face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;box-shadow:0 18px 40px rgba(0,0,0,.22)}.leaf .face.front{border-radius:0 6px 6px 0}.leaf .face.back{transform:rotateY(180deg);border-radius:6px 0 0 6px}.leaf.hard .face{border-radius:4px 14px 14px 4px}.leaf.hard .face.back{border-radius:14px 4px 4px 14px}.leaf .face-shade{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .9s}.leaf.turning .face.front .face-shade{background:linear-gradient(90deg,rgba(0,0,0,.35),transparent 60%);animation:shadeIn .9s ease-in-out}.leaf.turning .face.back .face-shade{background:linear-gradient(270deg,rgba(0,0,0,.3),transparent 60%);animation:shadeIn .9s ease-in-out}@keyframes shadeIn{0%,to{opacity:0}50%{opacity:1}}.leaf.turning{transition-timing-function:cubic-bezier(.55,.08,.35,1)}.viewer-nav{display:flex;gap:18px;align-items:center;margin-top:4px}.page-label{min-width:110px;text-align:center;font:600 .9rem var(--serif);color:#5a5040;letter-spacing:.08em}.viewer-cta{margin-top:18px;text-align:center}.book-m-wrap{display:flex;flex-direction:column;align-items:center;width:100%}.book-m{-moz-user-select:none;user-select:none;-webkit-user-select:none;position:relative;width:min(88vw,calc((100dvh - 250px) / 1.42));aspect-ratio:1/1.42;perspective:1800px;touch-action:pan-y}.viewer-wrap.is-full .book-m{width:min(94vw,calc((100dvh - 150px) / 1.42))}.book-m-page{position:absolute;inset:0;border-radius:4px 12px 12px 4px;overflow:hidden;box-shadow:0 16px 40px rgba(0,0,0,.25);background:var(--paper)}.book-m-page.top{transform-origin:left center;z-index:2;-webkit-backface-visibility:hidden;backface-visibility:hidden}.book-m-page.peel-out{animation:peelOut .68s cubic-bezier(.5,.05,.3,1) forwards}.book-m-page.peel-in{animation:peelIn .68s cubic-bezier(.5,.05,.3,1) forwards}@keyframes peelOut{0%{transform:rotateY(0)}to{transform:rotateY(-115deg);opacity:.2}}@keyframes peelIn{0%{transform:rotateY(-115deg);opacity:.2}to{transform:rotateY(0);opacity:1}}.peel-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.35),transparent 70%);animation:shadeIn .68s;pointer-events:none}.book-m-dots{display:flex;gap:5px;margin-top:12px;flex-wrap:wrap;justify-content:center;max-width:90vw}.book-m-dots span{width:6px;height:6px;border-radius:50%;background:#c3c8d2;transition:all .2s}.book-m-dots span.on{width:18px;border-radius:3px;background:var(--navy)}.swipe-hint{margin:6px 0 0;font-size:.8rem;color:var(--muted)}.book-cta{position:absolute;left:50%;bottom:0;transform:translate(-50%,50%);z-index:10;white-space:nowrap}.book-cta .btn.big{padding:12px 26px;box-shadow:0 8px 22px rgba(0,0,0,.28),0 0 0 3px rgba(255,255,255,.85),inset 0 1px 0 rgba(255,255,255,.6)}.book-m-wrap.has-cta .book-m-dots{margin-top:36px}.cta-note{font-size:.85rem;color:var(--muted)}.book-cta .cta-note{background:rgba(255,255,255,.92);padding:8px 16px;border-radius:999px;box-shadow:0 6px 18px rgba(0,0,0,.18);color:#3b3b3b}@media (max-width:820px){.viewer-cta{display:none}}.station-pick{display:grid;grid-gap:8px;gap:8px;margin-top:10px}.station-opt{display:grid;grid-template-columns:40px 1fr auto;grid-gap:10px;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;border:1px solid #e3e6ec;background:#fff;cursor:pointer;text-align:left;transition:border-color .15s,transform .1s;color:var(--ink)}.station-opt:hover:not(:disabled){border-color:var(--c);transform:translateX(2px)}.station-opt:disabled{opacity:.6;cursor:default;background:#f8f9fb}.so-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--c)}.so-text{display:flex;flex-direction:column}.so-state,.so-text small{color:var(--muted)}.so-state{font-size:.85rem;font-weight:700}.station-opt.done .so-state{color:var(--ok)}.qr-panel{display:flex;flex-direction:column;align-items:center}.qr-instr{font-weight:700;margin:0 0 10px}.qr-box{position:relative;width:min(78vw,300px);aspect-ratio:1;background:#fff;padding:12px;border-radius:18px;box-shadow:0 0 0 6px #fff,0 0 0 8px var(--gold),0 10px 30px rgba(0,0,0,.15)}.qr-box img{width:100%;height:100%;image-rendering:pixelated;display:block}.qr-box.dim img{opacity:.12;filter:blur(2px)}.qr-box.skeleton{background:linear-gradient(90deg,#eee,#f8f8f8,#eee);background-size:200%;animation:shimmer 1.2s infinite}@keyframes shimmer{to{background-position:-200% 0}}.qr-overlay{position:absolute;inset:0;flex-direction:column;justify-content:center;gap:12px;text-align:center;padding:20px;font-weight:700}.qr-overlay,.qr-timer{display:flex;align-items:center}.qr-timer{gap:10px;margin-top:16px}.qr-timer .ring{width:26px;height:26px;border-radius:50%;background:conic-gradient(var(--navy) var(--p),#e3e6ec 0)}.qr-timer b{font-size:1.2rem}.qr-success{text-align:center;width:100%}.big-check{width:84px;height:84px;border-radius:50%;margin:10px auto;display:grid;place-items:center;font-size:2.6rem;color:#fff;background:var(--ok);animation:stampDown .6s both}.celebrate{position:fixed;inset:0;z-index:600;display:grid;place-items:center;background:rgba(8,14,28,.6);overflow:hidden;animation:fadeIn .3s}.confetti{position:absolute;top:-20px;width:9px;height:15px;border-radius:2px;animation:fall 2.8s linear forwards}@keyframes fall{to{transform:translateY(110vh) rotate(2turn)}}.celebrate-card{position:relative;background:#fffdf5;border-radius:22px;padding:26px;width:min(90vw,380px);text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.4);animation:modalIn .5s .2s both}.celebrate-card .seal{width:150px;margin:-90px auto 6px;color:var(--gold-3);background:#fffdf5;border-radius:50%;padding:6px;animation:stampDown .8s .5s both}.celebrate-card h2{margin:6px 0;font-family:var(--serif);color:var(--navy)}.public-stamp{min-height:100dvh;display:flex;flex-direction:column;background:radial-gradient(900px 500px at 50% -10%,#284a80,var(--navy) 50%,var(--navy-2));color:var(--ink)}.ps-head{display:flex;justify-content:space-between;align-items:center;padding:max(12px,env(safe-area-inset-top)) 16px 12px;color:#fff}.ps-head .lang-toggle{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.2)}.ps-head .lang-toggle span{color:#cfd8ea}.ps-head .lang-toggle span.on{background:var(--gold);color:#2b1f00}.ps-main{flex:1 1;width:min(100%,460px);margin:0 auto;padding:8px 14px 20px;display:flex;flex-direction:column;gap:12px}.ps-card{background:#fffdf7;border-radius:20px;padding:20px 18px;box-shadow:0 20px 50px rgba(0,0,0,.3)}.ps-card h2,.ps-card h3{margin:0 0 8px;text-align:center}.ps-card.center{display:flex;flex-direction:column;align-items:center;text-align:center}.ps-foot{text-align:center;padding:10px 16px 18px;color:#9fb0cf}.big-icon{font-size:3rem}.scanner{position:relative;width:100%;aspect-ratio:1;border-radius:16px;overflow:hidden;background:#000;margin:10px 0}.scanner video{width:100%;height:100%;object-fit:cover}.scan-frame{position:absolute;inset:14%}.scan-frame span{position:absolute;width:34px;height:34px;border:4px solid var(--gold)}.scan-frame span:first-child{top:0;left:0;border-right:0;border-bottom:0;border-radius:10px 0 0 0}.scan-frame span:nth-child(2){top:0;right:0;border-left:0;border-bottom:0;border-radius:0 10px 0 0}.scan-frame span:nth-child(3){bottom:0;left:0;border-right:0;border-top:0;border-radius:0 0 0 10px}.scan-frame span:nth-child(4){bottom:0;right:0;border-left:0;border-top:0;border-radius:0 0 10px 0}.scan-frame i{position:absolute;left:4%;right:4%;height:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent);animation:scanline 2s ease-in-out infinite}@keyframes scanline{0%,to{top:6%}50%{top:92%}}.manual{display:flex;gap:8px;margin:8px 0}.ps-ticket{background:#fff;border-radius:16px;padding:14px 16px;border-left:6px solid var(--c,var(--navy));box-shadow:0 10px 30px rgba(0,0,0,.25);display:grid;grid-gap:4px;gap:4px}.pt-row{display:flex;justify-content:space-between;gap:10px;font-size:.92rem}.pt-row span{color:var(--muted)}.pt-row b,.pt-timer{text-align:right}.pt-timer{margin-top:6px;font-size:.85rem;color:var(--muted)}.pt-timer.warn{color:var(--err)}.stamp-button{width:190px;height:190px;border-radius:50%;border:0;cursor:pointer;margin:10px 0 14px;background:radial-gradient(circle at 35% 30%,#3a6bb8,var(--navy) 65%);box-shadow:0 14px 0 #0a1730,0 24px 40px rgba(0,0,0,.4),inset 0 3px 0 rgba(255,255,255,.25);color:var(--gold-2);font:800 2.2rem var(--serif);letter-spacing:.15em;transition:transform .08s,box-shadow .08s;animation:pulse 2s infinite}.stamp-button:active{transform:translateY(10px);box-shadow:0 4px 0 #0a1730,0 10px 20px rgba(0,0,0,.4)}.stamp-button:disabled{opacity:.5;animation:none}@keyframes pulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.12)}}.selfie{position:relative;width:min(72vw,280px);aspect-ratio:1;border-radius:50%;overflow:hidden;background:#111;margin:6px 0 12px;box-shadow:0 0 0 6px #fff,0 0 0 9px var(--gold)}.selfie video{width:100%;height:100%;object-fit:cover}.selfie video.mirror{transform:scaleX(-1)}.selfie-wait{position:absolute;inset:0;display:grid;place-items:center}.selfie-actions{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;grid-gap:16px;gap:16px;width:min(72vw,280px);margin:0 0 8px}.selfie-side{display:flex;justify-content:flex-start}.selfie-side:first-child{justify-content:flex-end}.shutter{width:74px;height:74px;border-radius:50%;border:5px solid var(--gold);background:#fff;padding:5px;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.18);transition:transform .1s}.shutter span{display:block;width:100%;height:100%;border-radius:50%;background:var(--navy)}.shutter:active:not(:disabled){transform:scale(.92)}.shutter:disabled{opacity:.45;cursor:default}.selfie-count{position:absolute;inset:0;display:grid;place-items:center;font:800 4rem var(--serif);color:#fff;text-shadow:0 4px 20px rgba(0,0,0,.6)}.flash{position:absolute;inset:0;background:#fff;animation:flash .5s forwards}@keyframes flash{0%{opacity:1}to{opacity:0}}.photo-circle{width:150px;height:150px;border-radius:50%;overflow:hidden;box-shadow:0 0 0 5px #fff,0 0 0 8px var(--gold),0 10px 25px rgba(0,0,0,.25);margin:12px 0}.photo-circle img{width:100%;height:100%;object-fit:cover}.done-stamp{width:220px}.ps-card.done h2{color:var(--ok)}.admin{display:grid;grid-template-columns:250px 1fr;min-height:100dvh}.admin-nav{background:linear-gradient(180deg,var(--navy),var(--navy-2));color:#dbe4f5;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100dvh}.an-brand{padding:20px 18px;font-weight:700;font-size:1.05rem;color:#fff}.an-brand small{display:block;color:var(--gold);font-weight:600;letter-spacing:.2em;font-size:.7rem;margin-left:26px}.admin-nav nav{display:flex;flex-direction:column;padding:0 10px;gap:2px;flex:1 1}.admin-nav nav a{color:#c6d1e6;padding:10px 12px;border-radius:10px;display:flex;gap:10px;align-items:center;font-size:.93rem}.admin-nav nav a:hover{background:rgba(255,255,255,.07)}.admin-nav nav a.active{background:rgba(212,175,55,.16);color:#fff;box-shadow:inset 3px 0 0 var(--gold)}.ni{width:22px;text-align:center}.an-foot{padding:16px;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;align-items:center;gap:8px}.an-user{font-size:.88rem;display:flex;flex-direction:column}.an-user small{color:#8ea0c2}.admin-main{min-width:0;display:flex;flex-direction:column}.admin-top{display:flex;align-items:center;padding:10px 22px;background:#fff;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:30}.burger{display:none}.admin-content{padding:22px}.page{max-width:1250px;margin:0 auto}.page.narrow{max-width:560px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}.page-head h1{margin:0;font-size:1.5rem}.card{background:var(--card);border-radius:var(--radius);padding:18px;box-shadow:0 1px 2px rgba(0,0,0,.05),0 6px 18px rgba(15,23,42,.05);margin-bottom:18px}.card.flush{padding:0;overflow:hidden}.card h3{margin:0 0 12px;font-size:1.05rem}.card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}.card-head h3{white-space:nowrap;margin:0}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}.grid2>.card{margin-bottom:0}.grid2,.kpis{margin-bottom:18px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px}.kpi{background:#fff;border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;box-shadow:0 1px 2px rgba(0,0,0,.05);border-top:3px solid var(--navy)}.kpi.gold{border-top-color:var(--gold)}.kpi span{color:var(--muted);font-size:.85rem}.kpi b{font-size:2rem;line-height:1.2;color:var(--navy)}.kpi small{color:var(--muted)}.bars{grid-gap:10px}.bar-row,.bars{display:grid;gap:10px}.bar-row{grid-template-columns:minmax(120px,40%) 1fr 40px;grid-gap:10px;align-items:center;font-size:.88rem}.bar-row.inactive{opacity:.5}.bar-label{display:flex;gap:6px;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.bar{height:12px;background:#eef1f6;border-radius:999px;overflow:hidden}.bar span{display:block;height:100%;border-radius:inherit;transition:width .6s}.spark{display:flex;gap:6px;height:170px;align-items:flex-end}.spark-col{flex:1 1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end;gap:4px}.spark-col span{width:100%;min-height:2px;background:linear-gradient(180deg,var(--blue),var(--navy));border-radius:4px 4px 0 0}.spark-col small{font-size:.7rem;color:var(--muted)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th{text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);background:#fafbfc}.table td,.table th{padding:10px 12px;white-space:nowrap}.table td{border-bottom:1px solid #f0f2f5;vertical-align:middle}.detail-row td,.kv dd{white-space:normal}.table tr.muted td{color:#9aa1ab}.table.hover tbody tr{cursor:pointer}.table.hover tbody tr:hover{background:#f7f9fc}.table .ellipsis{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-row td{background:#fafbfc}.json-cols{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.json-cols pre{background:#0f172a;color:#d6e2ff;padding:10px;border-radius:8px;font-size:.75rem;max-height:280px;overflow:auto;margin:0}.json-cols h5{margin:0 0 4px}.pager{align-items:center;justify-content:flex-end;padding:10px 14px;font-size:.85rem;color:var(--muted)}.filters,.pager{display:flex;gap:10px}.filters{flex-wrap:wrap;margin-bottom:14px}.filters .input{width:auto;min-width:150px;flex:1 1}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px}.tabs.inline{border:0;margin:0;background:#eef1f6;border-radius:10px;padding:3px}.tabs button{border:0;background:none;padding:9px 14px;cursor:pointer;font-weight:600;color:var(--muted);text-transform:capitalize;border-bottom:2px solid transparent}.tabs button.on{color:var(--navy);border-bottom-color:var(--navy)}.tabs.inline button{border-radius:8px;border:0;padding:5px 12px}.tabs.inline button.on{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.campaign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));grid-gap:16px;gap:16px}.campaign-card{display:grid;grid-template-columns:110px 1fr;grid-gap:14px;gap:14px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px;cursor:pointer;text-align:left;color:inherit;transition:box-shadow .2s,transform .1s}.campaign-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.cc-cover{aspect-ratio:1/1.42}.cc-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.cc-stats{display:grid;grid-template-columns:1fr 1fr;grid-gap:2px 10px;gap:2px 10px;margin-top:8px;font-size:.83rem;color:var(--muted)}.cc-stats b{color:var(--navy)}.editor-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,300px);grid-gap:20px;gap:20px;align-items:start}.cover-preview{position:-webkit-sticky;position:sticky;top:80px;aspect-ratio:1/1.42;filter:drop-shadow(0 20px 30px rgba(0,0,0,.25))}.stamp-preview{background:var(--paper);border-radius:12px;padding:16px;display:grid;place-items:center;margin-bottom:12px}.stamp-preview .stamp-mark{width:220px}.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 10px;cursor:pointer;font-size:.8rem}.chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}.swatch{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);cursor:pointer}.swatch.on{box-shadow:0 0 0 2px var(--navy)}.station-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:12px;gap:12px}.sa-card{display:grid;grid-template-columns:110px 1fr;grid-gap:10px;gap:10px;border:1px solid var(--line);border-radius:12px;padding:10px;background:#fffdf8}.sa-card.inactive{opacity:.55}.sa-stamp{background:var(--paper);border-radius:10px;display:grid;place-items:center;padding:4px}.sa-body{display:flex;flex-direction:column;gap:3px}.switch-row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:12px;border-radius:12px;background:#fdecea;margin-bottom:18px}.switch-row.on{background:#e3f2ea}.toggle{width:56px;height:30px;border-radius:999px;border:0;background:#c7ccd6;position:relative;cursor:pointer;flex-shrink:0;transition:background .2s}.toggle span{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.3)}.toggle.on{background:var(--ok)}.toggle.on span{left:29px}.temp-pin{font-size:2.6rem;font-weight:800;letter-spacing:.3em;background:#fff8e1;border:2px dashed var(--gold);border-radius:14px;padding:10px;margin:10px 0}.err-list{max-height:260px;overflow:auto;font-size:.85rem;color:var(--err)}.tx-detail{display:grid;grid-template-columns:280px 1fr;grid-gap:18px;gap:18px}.tx-photo{display:flex;flex-direction:column;gap:6px}.tx-photo img{width:100%;object-fit:cover}.no-photo,.tx-photo img{border-radius:12px;aspect-ratio:1}.no-photo{background:#f1f3f6;display:grid;place-items:center;color:var(--muted);text-align:center;padding:20px}.kv{display:grid;grid-template-columns:130px 1fr;grid-gap:6px 12px;gap:6px 12px;margin:0;font-size:.9rem}.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}.tx-history,.void-box{grid-column:1/-1}.tx-history ul{margin:0;padding-left:18px;font-size:.88rem}.void-box{border-top:1px solid var(--line);padding-top:12px}.member-add{margin-bottom:16px}@media (max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}}@media (max-width:900px){.admin{grid-template-columns:1fr}.admin-nav{position:fixed;left:0;top:0;bottom:0;width:260px;z-index:200;transform:translateX(-100%);transition:transform .25s}.admin.nav-open .admin-nav{transform:none;box-shadow:0 0 0 100vmax rgba(0,0,0,.4)}.burger{display:inline-grid}.editor-split,.grid2,.json-cols,.tx-detail{grid-template-columns:1fr}.cover-preview{position:static;max-width:300px;margin:0 auto}.admin-content{padding:14px}}@media (max-width:520px){.row2,.row3{grid-template-columns:1fr}.kpis{grid-template-columns:1fr 1fr}.kpi b{font-size:1.5rem}.shelf{grid-template-columns:repeat(2,1fr);gap:24px 16px;padding:18px 8px 30px}.campaign-card{grid-template-columns:80px 1fr}.pin-keys{grid-template-columns:repeat(3,68px)}.vb-actions .btn{padding:5px 9px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media print{.sales-header,.toasts,.viewer-bar,.viewer-cta,.viewer-nav{display:none!important}}.org-logo{display:block;object-fit:contain;max-width:100%}.org-logo-plate{display:inline-flex;align-items:center;justify-content:center;background:#fff;border-radius:6px;padding:3px 7px;box-shadow:0 1px 3px rgba(0,0,0,.25)}.org-logo-plate .org-logo{height:100%;width:auto}.hdr-logo{height:34px}.hdr-logo.org-logo-plate{height:34px;padding:3px 7px}.hdr-logo.org-logo-plate .org-logo{max-height:28px;max-width:110px}img.hdr-logo{max-width:130px}.top-logo{height:28px;max-width:120px}.auth-logo{height:54px;max-width:72%;margin:4px auto 2px}.auth-org{text-align:center;font-weight:600;color:var(--muted,#5b6474);font-size:.9rem;margin-top:2px}.an-brand{display:flex;flex-direction:column;gap:12px}.an-logo{align-self:flex-start;height:40px}.an-logo.org-logo-plate{padding:5px 9px}.an-logo.org-logo-plate .org-logo{max-height:30px;max-width:170px}img.an-logo{max-width:190px}.ps-head .brand{gap:10px}.cover-org{height:12cqw;margin-top:-2%}.cover-org.org-logo-plate{padding:1.2cqw 2.4cqw;border-radius:1.6cqw}.cover-org.org-logo-plate .org-logo{max-height:9.4cqw;max-width:40cqw}img.cover-org{max-width:50cqw;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}.cover-org+.cover-kicker{margin-top:3%}.page-heading.with-logo{display:flex;justify-content:space-between;align-items:flex-end;gap:3cqw}.page-org{height:9cqw;max-width:36cqw;margin-bottom:.4cqw}.brand-slot{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.brand-preview{width:220px;max-width:100%;height:84px;border:1px dashed #c8cdd8;border-radius:10px;display:grid;place-items:center;padding:10px;background:#fff repeating-conic-gradient(#f1f3f7 0 25%,#fff 0 50%) 0 0 /16px 16px}.brand-preview.dark{background:var(--navy);border-color:transparent}.brand-preview img{max-width:100%;max-height:64px;object-fit:contain}.brand-slot .row-actions,.inline-form{display:flex;gap:8px}.inline-form{margin-bottom:8px}.inline-form .input{flex:1 1}.brand-hdr-preview{display:flex;align-items:center;gap:10px;background:var(--navy);color:#fff;font-weight:700;padding:10px 14px;border-radius:10px;margin-bottom:16px;min-height:50px}.brand-cover-preview{width:min(280px,100%);aspect-ratio:1/1.42;margin:0 auto}.cover-emblem-wrap{min-height:0}.cover-emblem,.cover-logo{max-height:100%;min-height:0}.scan-tip{margin:8px 0 0;text-align:center}.sales-thumb{width:30px;height:37px;object-fit:cover;border-radius:4px;border:1px solid var(--line);display:block;background:#f3efe4}.sales-thumb.empty{opacity:.5}.app-root{min-height:100dvh;display:flex;flex-direction:column}.app-main{flex:1 0 auto;display:flex;flex-direction:column}.app-main>*{flex:1 0 auto}.app-main>.admin,.app-main>.auth-shell,.app-main>.center-screen,.app-main>.public-stamp,.app-main>.sales-app{min-height:0}.site-footer{--footer-h:30px;box-sizing:border-box;height:calc(var(--footer-h) + env(safe-area-inset-bottom));padding:0 8px env(safe-area-inset-bottom);display:block;text-align:center;font-size:clamp(8px,2.55vw,12px);line-height:var(--footer-h);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted);background:#f6f4ee;border-top:1px solid var(--line)}.site-footer.dark{background:var(--navy-2);color:#8fa1c4;border-top-color:rgba(255,255,255,.08)}@media print{.site-footer{display:none}}@media (min-width:901px){.app-main>.admin .admin-nav{height:calc(100dvh - 30px)}}@font-face{font-family:sarabun;src:url(/_next/static/media/acd57112361b53c6-s.p.ttf) format("truetype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:sarabun;src:url(/_next/static/media/aad8844d2e9e11cd-s.p.ttf) format("truetype");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:sarabun;src:url(/_next/static/media/030a9698491e0cbf-s.p.ttf) format("truetype");font-display:swap;font-weight:700;font-style:normal}@font-face{font-family:sarabun Fallback;src:local("Arial");ascent-override:109.87%;descent-override:23.87%;line-gap-override:0.00%;size-adjust:97.21%}.__className_c4818b{font-family:sarabun,sarabun Fallback}.__variable_c4818b{--font-sarabun:"sarabun","sarabun Fallback"}