.qwrap{max-width:860px;padding-top:40px;padding-bottom:80px}
.blk{border:1px solid var(--line);background:#fff;border-radius:12px;padding:26px 24px 10px;margin:0 0 28px}
.blk legend{font-family:Oswald,sans-serif;text-transform:uppercase;letter-spacing:.08em;font-size:1.25rem;background:var(--ink);color:var(--lbrass);padding:6px 14px;border-radius:6px}
.blk .sub{color:var(--grey);font-size:.92rem;margin:-4px 0 14px}
.q{margin:0 0 24px}.ql{display:block;font-weight:700;margin-bottom:8px}.help{font-size:.86rem;color:var(--grey);margin:6px 0 0}
input[type=text],input[type=number],textarea,select{width:100%;padding:12px 14px;border:1px solid #cfc7b6;border-radius:6px;font:inherit;background:var(--paper)}
textarea{min-height:70px}input:focus,textarea:focus,select:focus{outline:2px solid var(--brass);border-color:var(--brass)}
.opts{display:flex;flex-wrap:wrap;gap:8px}.opts label{cursor:pointer}
.opts label,label.opts{position:relative}
.opts input{position:absolute;left:0;top:0;width:1px;height:1px;margin:0;opacity:0;pointer-events:none} /* pinned inside its chip so focusing it never scrolls the page */
.opts span{display:inline-block;padding:10px 14px;border:1px solid #cfc7b6;border-radius:6px;background:var(--paper);font-size:.95rem}
.opts input:checked+span{background:var(--ink);color:var(--lbrass);border-color:var(--ink)}
.opts input:focus-visible+span{outline:2px solid var(--brass)}
.opts input:disabled+span{opacity:.4;cursor:not-allowed}
.cards span{min-width:170px}.cards b{display:block}.cards small{display:block;color:inherit;opacity:.75}
.covers{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.covers span{padding:6px;text-align:center;font-size:.8rem;width:100%}
.covers img{width:100%;height:auto;aspect-ratio:2/3;object-fit:cover;display:block;border-radius:3px;margin-bottom:6px} /* reserve the space so lazy covers never push the page down */
@media(max-width:560px){.covers{grid-template-columns:repeat(2,1fr)}.cards span{min-width:0;width:100%}.cards label{flex:1 1 45%}}
.rank{list-style:none;padding:0;margin:0;counter-reset:r}.rank li{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid #cfc7b6;border-radius:6px;margin-bottom:6px;background:var(--paper);counter-increment:r}
.rank li:before{content:counter(r);font-family:Oswald,sans-serif;color:var(--brass);width:18px}.rank li b{flex:1}
.rank button{border:1px solid #cfc7b6;background:#fff;border-radius:4px;width:34px;height:30px;cursor:pointer}
.price-line{font-family:Oswald,sans-serif;font-size:1.3rem;margin:4px 0}
.err{color:#a3261b;font-weight:600;margin-left:14px}.bad{outline:2px solid #a3261b!important}
pre{background:#0c0c0c;color:#d9c08a;padding:18px;border-radius:8px;overflow:auto;font-size:.8rem;max-height:520px}
.submit-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.count{float:right;font-size:.8rem;color:var(--grey);font-weight:400}
header.top{position:relative}
.delivery-note{background:var(--cream);border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin:10px 0 6px;font-size:.92rem}
.dtbl{min-width:0;width:100%;margin:8px 0 4px;font-size:.88rem}.dtbl th{font-size:.78rem;padding:7px 8px}.dtbl td{padding:7px 8px;background:#fff}
/* 17 Oct 2026 phone fix: a <fieldset> defaults to min-width:min-content, so the delivery table made the
   "Your order" block 425px wide on a 390px iPhone. The page then scrolled sideways, mobile text inflation
   kicked in and the layout jumped while typing, so taps on the kids' text boxes missed. Keep every block inside the screen. */
fieldset,.blk{min-width:0;max-width:100%}
.delivery-note{overflow-x:auto}.dtbl{table-layout:fixed;word-break:normal;overflow-wrap:anywhere}
.dtbl th,.dtbl td{white-space:normal}
input[type=text],input[type=number],textarea,select{font-size:max(16px,1em)} /* iOS zooms into fields under 16px */
.opts label,.rank button{touch-action:manipulation}
.favs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.favs label{display:block;font-size:.85rem;color:var(--grey)}
@media(max-width:560px){.favs{grid-template-columns:1fr}}

/* 17 Oct 2026: AU paperback free-shipping badge */
.free-ship{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:10px;background:#e7f3ea;color:#1f5f33;font-size:.78rem;font-weight:600}
/* checkout summary + saved-answers banner (17 Oct 2026) */
.sumtbl{max-width:560px;table-layout:auto}.sumtbl td.num{text-align:right;width:8em}.sumtbl tr.tot td{border-top:2px solid var(--ink,#111)}
#pending{margin:0 0 18px;padding:12px 14px;border:1px solid #d8cfbd;border-radius:8px;background:#fffaf0}#pending .btn{margin:6px 6px 0 0}
.privacy-note{max-width:640px}
