/* ---- v1.16: seasons - the chip beside the clock and the Season Journal */
.seachip{cursor:pointer;padding:0 4px;border-radius:8px;font-weight:600}.seachip:hover{background:rgba(255,255,255,.12)}.seachip.trn{animation:seaPulse 3s ease-in-out infinite}
@keyframes seaPulse{50%{background:rgba(255,200,120,.22)}}
.seaev{margin:0 2px;animation:seaPulse 2.4s ease-in-out infinite;border-radius:8px;padding:0 3px}
.sj-head{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:16px;background:linear-gradient(135deg,color-mix(in srgb,var(--sc) 32%,transparent),rgba(255,255,255,.04));border:1px solid color-mix(in srgb,var(--sc) 50%,transparent)}
.sj-head h3{margin:0;font-size:22px}.sj-head small{color:var(--ink-dim)}.sj-em{font-size:46px;line-height:1}
.sj-days{display:flex;align-items:center;gap:5px;margin:12px 2px 4px;flex-wrap:wrap}
.sd{display:block;width:30px;height:10px;border-radius:5px;background:rgba(255,255,255,.14)}.sd.past{background:rgba(255,255,255,.4)}.sd.now{background:var(--gold);box-shadow:0 0 8px var(--gold)}.sd.trn{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.0) 0 4px,rgba(255,170,90,.35) 4px 8px)}
.sj-lab{flex-basis:100%;font-size:11.5px;color:var(--ink-dim);margin-top:2px}
.sj-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:6px 14px;margin-top:12px}
.sj-r{display:flex;justify-content:space-between;gap:12px;padding:8px 12px;border-radius:10px;background:rgba(255,255,255,.05)}.sj-r b{color:#fff}
.sev{padding:8px 12px;border-radius:10px;background:rgba(255,200,90,.12);border:1px solid rgba(255,200,90,.3);margin-bottom:6px}.sev small{color:var(--ink-dim);margin-left:6px}
.sj-year{display:flex;gap:8px}.sy{flex:1;text-align:center;padding:8px 4px;border-radius:12px;background:rgba(255,255,255,.05);border:2px solid transparent;opacity:.7}.sy span{font-size:24px;display:block}.sy small{font-size:11.5px}.sy.on{opacity:1;border-color:var(--sc);background:color-mix(in srgb,var(--sc) 20%,transparent)}
.sj-tips{margin:0;padding-left:20px;line-height:1.7;color:#dfe9ee}
.sj-fish{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.fcard.sf .s{font-size:11px;line-height:1.3;min-height:28px}

#heatOverlay{position:fixed;inset:0;pointer-events:none;z-index:4;opacity:0;background:radial-gradient(ellipse at 50% 42%,rgba(255,170,60,0) 38%,rgba(255,110,30,.34) 100%);mix-blend-mode:soft-light}
.hb-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.05);margin-bottom:8px}
.hb-row .ic{font-size:26px}.hb-row .tx{flex:1}.hb-row .tx b{display:block}.hb-row .tx small{color:var(--ink-dim)}
.hb-bar{height:8px;border-radius:5px;background:rgba(255,255,255,.12);overflow:hidden;margin-top:6px}.hb-bar i{display:block;height:100%;background:linear-gradient(90deg,#6ee09a,#ffd86b)}
.hb-sw{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.hb-sw button{width:30px;height:30px;border-radius:50%;border:2px solid rgba(255,255,255,.4);cursor:pointer}.hb-sw button:hover{border-color:#fff;transform:scale(1.1)}

/* staff badge on name tags + the players list; Settings > Name tags off hides every name tag (chat bubbles stay) */
.rb{display:inline-block;text-decoration:none;font-style:normal;font-size:9px;font-weight:700;letter-spacing:.09em;line-height:1;padding:2px 6px 2px 5px;border-radius:99px;vertical-align:1px;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.rb:before{content:'\2605';margin-right:3px;font-size:9px}
.rb-admin{background:linear-gradient(135deg,#8fe9df,#3fb8ae);color:#04302d}
.rb-owner{background:linear-gradient(135deg,#ffe08a,#ff9f43);color:#3a2100}
.rb-mod{background:linear-gradient(135deg,#d7c2ff,#9a78f0);color:#1d0b45}
.np .tag .rb{margin-right:1px}
body.no-tags .np .tag{display:none}

/* ---- the Talewyn Shipyard ledger (ui7.js) */
.yd-head{display:flex;gap:14px;align-items:center;margin-bottom:10px}
.yd-big{font:700 54px var(--font);line-height:1;color:#ffd86b;min-width:92px;text-align:center}.yd-big small{font-size:22px;margin-left:2px}
.yd-hx{flex:1;min-width:0}.yd-hx b{font-size:17px}.yd-hx span{color:var(--ink-dim);font-size:12.5px}
.yd-bar{position:relative;height:16px;border-radius:9px;background:rgba(255,255,255,.12);overflow:hidden;margin:6px 0}
.yd-bar i{display:block;height:100%;background:linear-gradient(90deg,#4fd1c5,#ffd86b)}
.yd-bar u{position:absolute;top:0;bottom:0;width:2px;background:rgba(0,0,0,.35)}
.yd-note{padding:9px 12px;border-radius:12px;background:rgba(255,255,255,.06);font-size:13px;margin-bottom:10px}
.yd-note.go{background:rgba(95,216,160,.18);border:1px solid rgba(95,216,160,.4);font-size:14px}
.yd-row{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:12px;background:rgba(255,255,255,.05);margin-bottom:7px}
.yd-row.full{background:rgba(95,216,160,.12)}
.yd-row .ic{font-size:26px;width:34px;text-align:center}.yd-row .tx{flex:1;min-width:0}.yd-row .tx b{display:block}
.yd-row .tx b small{color:var(--ink-dim);font-weight:500;margin-left:6px}.yd-row .tx span{font-size:12px;color:var(--ink-dim)}.yd-row .tx span b{display:inline}
.yd-btns{display:flex;gap:6px}.yd-done{color:#7dffb0;font-weight:700}
.yd-lists{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}
.yd-who{display:block;font-size:13.5px;padding:2px 0}.yd-who i{display:inline-block;width:20px;text-align:center;font-style:normal;color:#ffd86b;font-weight:700}.yd-who small{color:var(--ink-dim);margin-left:4px}
@media (max-width:640px){.yd-lists{grid-template-columns:1fr}.yd-big{font-size:42px;min-width:70px}.yd-row{flex-wrap:wrap}}

/* the Sky-Dock window: balloon colour swatches */
.sk-sws{display:flex;gap:8px;flex-wrap:wrap}.sk-sw{width:46px;height:30px;border-radius:15px;border:3px solid rgba(255,255,255,.25);cursor:pointer;padding:0}.sk-sw.on{border-color:#ffd86b;box-shadow:0 0 0 2px rgba(255,216,107,.35)}

/* status badges on the name plate: NEW / BUSY / AFK / typing... (v1.28) - under body.ios the animation below is switched off with every other one */
.np .tag .bds{display:inline-flex;gap:4px;align-items:center;font-style:normal}
.np .tag .bds:empty{display:none}
.bd{display:inline-block;text-decoration:none;font-style:normal;font-size:9px;font-weight:700;letter-spacing:.08em;line-height:1;padding:2px 6px;border-radius:99px;box-shadow:0 1px 4px rgba(0,0,0,.35);vertical-align:1px}
.bd-new{background:linear-gradient(135deg,#9bf5b4,#35c46b);color:#052d14}
.bd-busy{background:linear-gradient(135deg,#ffd29a,#f08a2e);color:#3a1d00}
.bd-afk{background:linear-gradient(135deg,#d5dbe4,#8c97a6);color:#1b222c}
.bd-typing{background:#fff8e4;color:#3a2a1c;letter-spacing:.02em;font-weight:600;font-size:10px}
.bd-typing s{text-decoration:none;display:inline-block;animation:bdDot 1.2s infinite}
.bd-typing s:nth-child(2){animation-delay:.2s}.bd-typing s:nth-child(3){animation-delay:.4s}
@keyframes bdDot{0%,60%,100%{opacity:.3}30%{opacity:1}}
.cl.emote{opacity:.92;font-style:italic}
.plname .bd{margin-left:3px}
.btn.tpon{background:linear-gradient(135deg,#ffb36b,#e8563f);color:#2a0d05;border-color:transparent}

/* the game's own confirmation box (ui.confirm) - no blur / animation, so it is safe on iOS too */
#gconfirm{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(2,10,16,.6);z-index:70}
#gconfirm.on{display:flex}
#gconfirm .gc{width:min(430px,calc(100vw - 32px));padding:22px 24px 20px;border-radius:18px;background:rgba(10,28,42,.97);border:1px solid rgba(255,255,255,.2);box-shadow:0 24px 70px rgba(0,0,0,.6);text-align:center}
#gconfirm h3{font-size:21px;font-weight:700;color:#ffd86b;margin:0 0 10px}
#gconfirm p{font-size:14.5px;line-height:1.5;color:#dbe9f3;margin:0 0 18px;white-space:pre-line}
#gconfirm .gcb{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
#gconfirm .gcb .btn{min-width:130px}
#gconfirm .btn.danger{background:linear-gradient(135deg,#ffb36b,#e8563f);color:#2a0d05;border-color:transparent}

/* v1.42.0 the Wildflower Community Farm: the matrix of parcels (no transitions or animations - the phone shows this too) */
.fm{display:grid;grid-template-columns:minmax(210px,1fr) minmax(260px,1.3fr);gap:14px;align-items:start}
.fm-map{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(74px,auto);gap:5px;padding:8px;border-radius:16px;background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.1);position:sticky;top:0}
.fm-t{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-radius:10px;border:2px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);color:var(--ink);padding:14px 3px 4px;cursor:pointer;min-height:74px}
.fm-t b{position:absolute;top:3px;left:6px;font-size:10.5px;letter-spacing:.06em;color:rgba(255,255,255,.7)}
.fm-t i{font-style:normal;font-size:20px;line-height:1.1}
.fm-t small{font-size:10px;color:var(--ink-dim);text-align:center;line-height:1.15}
.fm-t.free{background:rgba(124,197,90,.18)}.fm-t.mine{background:rgba(232,201,90,.28);border-color:rgba(232,201,90,.6)}.fm-t.taken{background:rgba(160,120,90,.22)}
.fm-t.sel{border-color:#ffd24a;box-shadow:0 0 0 2px rgba(255,210,74,.35)}
.fm-gate{text-align:center;font-size:10.5px;color:var(--ink-dim);padding-top:4px}
.fm-detail{min-width:0}
@media(max-width:760px){.fm{grid-template-columns:1fr}.fm-map{position:static}}

/* v1.43.0 Lilymere Stables: the stall cards and the care bars (no transitions or animations - the phone shows this too) */
.st-card{padding:12px 14px;margin:0 0 10px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1)}
.st-card.ride{border-color:rgba(232,201,90,.55);background:rgba(232,201,90,.1)}
.st-h{display:flex;align-items:center;gap:10px;margin-bottom:8px}.st-h .big{font-size:28px;line-height:1}.st-h b{font-size:15px}.st-h small{display:block;color:var(--ink-dim);font-size:11.5px}
.st-need{display:grid;grid-template-columns:96px 1fr 40px;gap:8px;align-items:center;margin:3px 0;font-size:12.5px}.st-need b{text-align:right;font-size:12px}
.st-bar{height:9px}

/* v1.44.0 the big cart window (no transitions or animations - the phone shows this too) */
.ct-seats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}
.ct-seats>div{padding:9px 12px;border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:2px}
.ct-seats>div.taken{background:rgba(232,201,90,.14);border-color:rgba(232,201,90,.45)}.ct-seats b{font-size:12.5px}.ct-seats span{color:var(--ink-dim);font-size:12.5px}
.ct-btns{display:flex;flex-wrap:wrap;gap:4px;align-items:center;justify-content:flex-end;max-width:330px}.ct-btns .btn{padding:5px 9px;font-size:12px}.ct-btns i{width:8px}
.ct-n{color:var(--ink);font-weight:700;display:inline!important}
