/* ---------------- Theme: Modern lab (clean layout, comic punch) ---------------- */
:root{--m-ink:#14171f;--m-bg:#f6f1e4;--m-card:#fff;--m-mut:#4b5361;--m-portal:#97ce4c;--m-portal-d:#3f7d12;--m-morty:#ffd84d;--m-rick:#a9e4f7;--m-pink:#ff9cc2;--m-b:2.5px solid var(--m-ink);--m-sh:4px 4px 0 var(--m-ink);--m-r:18px;
  --txt:var(--m-ink);--mut:var(--m-mut);--acc:var(--m-portal);--ink:var(--m-ink);--card:#fff;--panel:var(--m-bg)}
html,body{font-family:"Nunito",system-ui,sans-serif;background:var(--m-bg) radial-gradient(#dcd3bd 1.1px,transparent 1.4px) 0 0/18px 18px!important;background-attachment:fixed!important;color:var(--m-ink);-webkit-font-smoothing:antialiased}
h1,h2,h3,#roomTitle,.tabs span,.btn{font-family:"Fredoka","Nunito",system-ui,sans-serif!important}
#app{max-width:560px;margin:0 auto}
#panel{background:transparent!important;padding:16px 16px calc(116px + var(--sab))!important}
:focus-visible{outline:3px solid var(--m-portal-d)!important;outline-offset:3px}

/* header */
header{background:transparent!important;border:0!important;box-shadow:none!important;padding:calc(10px + var(--sat)) 16px 12px!important;gap:12px}
#roomTitle{color:var(--m-ink)!important;text-shadow:none!important;font-weight:700;font-size:22px;letter-spacing:-.3px}
header small,#roomSub{color:var(--m-mut)!important;font-weight:700;font-size:12.5px}
.avatar{width:50px!important;height:50px!important;border:var(--m-b)!important;border-radius:50%!important;background:var(--m-rick)!important;box-shadow:3px 3px 0 var(--m-ink)!important;padding:2px!important;overflow:hidden}
.avatar img{border-radius:50%!important}
.xp,.coins{background:var(--m-morty)!important;border:var(--m-b)!important;border-radius:999px!important;box-shadow:3px 3px 0 var(--m-ink)!important;color:var(--m-ink)!important;font-weight:800;padding:7px 14px!important;min-height:40px;box-sizing:border-box;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.ib{border:var(--m-b)!important;background:#fff!important;border-radius:50%!important;box-shadow:3px 3px 0 var(--m-ink)!important;width:44px;height:44px}

/* room: framed hero card */
#room{margin:0 14px 0 12px;border:3px solid var(--m-ink)!important;border-radius:26px!important;box-shadow:5px 5px 0 var(--m-ink)!important;height:44vh!important}

/* status strip: dark pill inside the room's bottom edge */
#care{margin:-54px 26px 18px 24px!important;border-radius:16px;background:rgba(20,23,31,.84)!important;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:2px solid var(--m-ink);box-shadow:none!important;color:#fff!important;font-size:13px!important;font-weight:700}
#care .line{padding:9px 14px!important;min-height:36px}
#care .line::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--m-portal);box-shadow:0 0 0 3px rgba(151,206,76,.3);flex:none}
#care .acts button{border-radius:999px!important;border:0!important;background:rgba(255,255,255,.14)!important;padding:7px 12px!important;font-size:12px!important;min-height:32px}
#care .acts button.gold{background:rgba(255,216,77,.3)!important}

/* floating bottom nav */
.tabs{position:fixed!important;z-index:40;left:50%;transform:translateX(-50%);bottom:calc(10px + var(--sab));width:calc(100% - 20px);max-width:540px;box-sizing:border-box;background:var(--m-ink)!important;border:0!important;border-radius:24px;box-shadow:0 10px 30px rgba(20,23,31,.35)!important;padding:6px!important;gap:2px}
.tabs button{flex:1 1 0;min-width:0;border:0!important;background:transparent!important;border-radius:18px!important;padding:6px 2px 5px!important;color:#c3cad6!important;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:58px;transition:background .2s,color .2s}
.tabs button img{width:30px!important;height:30px!important;object-fit:contain;transform:none!important;transition:transform .2s}
.tabs button span{font-size:10.5px!important;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.tabs button.on{background:var(--m-portal)!important;color:var(--m-ink)!important}
.tabs button.on img{transform:translateY(-2px) scale(1.1) rotate(-4deg)!important}
.tabs button.on::after{content:none!important}
.tabs .badge{border:2px solid var(--m-ink)!important;background:#ff3b5c!important}

/* section titles: slime highlighter */
h3{display:inline-block!important;width:auto!important;background:linear-gradient(transparent 60%,var(--m-portal) 60%,var(--m-portal) 92%,transparent 92%)!important;border:0!important;box-shadow:none!important;padding:0 4px!important;margin:6px 0 8px!important;color:var(--m-ink)!important;text-shadow:none!important;font-size:22px!important;font-weight:700!important;letter-spacing:-.3px;border-radius:0!important}
.muted,small{color:var(--m-mut)!important}
p.muted{font-size:14px;line-height:1.45;font-weight:600}

/* cards */
.goal,.friend,.rw,.shopc,.adv,.cheerbox,.pc,.md,.vrow,#modal .card,.ship,.rail,.alldone,.slot,.neonsign{background:var(--m-card)!important;color:var(--m-ink)!important;border:var(--m-b)!important;border-radius:var(--m-r)!important;box-shadow:var(--m-sh)!important}
.moodchip{background:var(--m-morty)!important;border:var(--m-b)!important;border-radius:16px!important;box-shadow:var(--m-sh)!important;color:var(--m-ink)!important;min-height:56px;font-weight:800;margin-bottom:12px!important}
.moodchip + .moodchip{background:var(--m-rick)!important}
.moodchip.set{background:var(--m-portal)!important}
.moodchip img{background:#fff;border-radius:50%;padding:3px;box-sizing:border-box;border:2px solid var(--m-ink)}
.moodchip .muted{color:var(--m-ink)!important}

/* goal card */
.goal{padding:14px!important;gap:12px!important;margin-bottom:14px!important;align-items:center}
.goal .ico{width:50px!important;height:50px!important;border:2px solid var(--m-ink)!important;border-radius:14px!important;background:var(--m-rick)!important;box-shadow:none!important;font-size:24px}
.goal:nth-of-type(3n+1) .ico{background:var(--m-morty)!important}.goal:nth-of-type(3n+2) .ico{background:var(--m-pink)!important}
.goal .t span{font-weight:800;font-size:16px}
.goal .t small{font-weight:800;font-size:12.5px}
.goal .bar,.xpbar{height:12px!important;border:2px solid var(--m-ink)!important;border-radius:999px!important;background:#fff!important;box-shadow:none!important;overflow:hidden;box-sizing:border-box}
.goal .bar i,.xpbar i{background:var(--m-portal)!important;border-right:2px solid var(--m-ink);box-sizing:border-box}
.goal .bar i[style*="width:0%"]{border:0}
.goal .week{gap:5px!important}
.goal .week b{width:12px!important;height:12px!important;border:1.5px solid var(--m-ink)!important;background:#fff!important;border-radius:50%;box-sizing:border-box}
.goal .week b.d{background:var(--m-portal)!important}.goal .week b.t{box-shadow:0 0 0 2.5px var(--m-morty)}
.goal .act{gap:8px!important;align-items:center}
.goal .act button{border:2px solid var(--m-ink)!important;border-radius:50%!important;width:36px!important;height:36px!important;min-width:36px;background:#fff!important;color:var(--m-ink)!important;box-shadow:2px 2px 0 var(--m-ink)!important;font-size:20px;font-weight:800;padding:0!important;display:grid;place-items:center}
.goal .act .plus{width:52px!important;height:52px!important;background:var(--m-portal)!important;border-width:2.5px!important;box-shadow:3px 3px 0 var(--m-ink)!important}
.goal .act .plus img{display:none}
.goal .act .plus::before{content:"";width:22px;height:22px;background:var(--m-ink);-webkit-mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 4v16M4 12h16" stroke="black" stroke-width="3.6" stroke-linecap="round"/></svg>') center/contain no-repeat;mask:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 4v16M4 12h16" stroke="black" stroke-width="3.6" stroke-linecap="round"/></svg>') center/contain no-repeat}
.goal .act .plus.did::before{-webkit-mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 12.5l4.5 4.5L19 7.5" fill="none" stroke="black" stroke-width="3.6" stroke-linecap="round" stroke-linejoin="round"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 12.5l4.5 4.5L19 7.5" fill="none" stroke="black" stroke-width="3.6" stroke-linecap="round" stroke-linejoin="round"/></svg>')}
.goal .act button:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--m-ink)!important}
.goal.done{background:#eaf6d9!important}

/* buttons */
.btn,.btn.primary,.ship .go{border:var(--m-b)!important;border-image:none!important;border-radius:16px!important;padding:13px 22px!important;min-height:50px;font-weight:600!important;font-size:17px;text-shadow:none!important;background:var(--m-portal)!important;color:var(--m-ink)!important;box-shadow:var(--m-sh)!important;transition:transform .08s,box-shadow .08s}
.btn:not(.primary){background:#fff!important}
.btn.danger{background:#ff5a5a!important;color:var(--m-ink)!important}
.btn.small{padding:7px 16px!important;min-height:40px;font-size:14px;border-radius:12px!important;box-shadow:3px 3px 0 var(--m-ink)!important}
.btn:active,.ship .go:active{transform:translate(3px,3px)!important;box-shadow:1px 1px 0 var(--m-ink)!important;filter:none!important}
#tab-goals > .btn.primary{width:100%;margin-top:6px}
.link{color:var(--m-portal-d)!important;font-weight:800}

/* chips + category tabs */
.chip,.stab{border:2px solid var(--m-ink)!important;border-image:none!important;border-radius:999px!important;background:#fff!important;color:var(--m-ink)!important;box-shadow:2px 2px 0 var(--m-ink)!important;padding:8px 16px!important;font-weight:800;font-size:13px!important;min-height:40px;text-shadow:none!important}
.chip.on,.stab.on{background:var(--m-ink)!important;color:var(--m-portal)!important}
.stab.neon{background:#1b1f3a!important;color:#7ff3ff!important}
.shoptabs{padding:4px 4px 8px!important;gap:8px!important}

/* inputs */
#authForm input,.add input,#modal .card input,select,textarea{background:#fff!important;color:var(--m-ink)!important;border:var(--m-b)!important;border-radius:14px!important;box-shadow:inset 0 3px 0 rgba(20,23,31,.06)!important;min-height:52px;font-family:"Nunito",sans-serif;font-weight:700}
#authForm input:focus,#modal .card input:focus{box-shadow:0 0 0 4px rgba(151,206,76,.45)!important;outline:none}

/* shop */
.shopc{padding:10px!important}
.shopc.owned{background:#eaf6d9!important}
.shopc span{font-weight:800}
.shopc small{font-weight:800}
.alldone{padding:18px!important;text-align:center}

/* speech bubble: comic */
.bubble{background:#fff!important;border:var(--m-b)!important;border-radius:18px!important;box-shadow:3px 3px 0 var(--m-ink)!important;color:var(--m-ink)!important;font-family:"Nunito",sans-serif;font-weight:800!important}
.bubble::after{border-top-color:var(--m-ink)!important}

/* modal + toast */
#modal{background:rgba(20,23,31,.55)!important}
#modal .card{border-width:3px!important;border-radius:24px!important;box-shadow:6px 6px 0 var(--m-ink)!important}
#modal .close{background:#fff!important;border:2px solid var(--m-ink)!important;border-radius:50%!important;width:40px;height:40px;box-shadow:2px 2px 0 var(--m-ink)!important}
#modal .close img{display:none}
#modal .close::before{content:"\00d7";font-size:26px;line-height:34px;color:var(--m-ink);font-weight:800}
#toast,.toast{background:var(--m-ink)!important;color:#fff!important;border:2px solid var(--m-portal)!important;border-radius:16px!important;box-shadow:4px 4px 0 var(--m-portal)!important;font-weight:800;bottom:calc(100px + var(--sab))!important}

/* auth */
#auth{background:radial-gradient(circle at 50% 26%,rgba(151,206,76,.55) 0,rgba(151,206,76,.18) 22%,transparent 40%),var(--m-bg) radial-gradient(#dcd3bd 1.1px,transparent 1.4px) 0 0/18px 18px!important}
#auth .hero{filter:drop-shadow(4px 4px 0 rgba(20,23,31,.9))!important}
#auth h1{color:var(--m-ink)!important;text-shadow:3px 3px 0 var(--m-portal)!important;font-weight:700;letter-spacing:-.5px}
#auth p,#auth .sub{color:var(--m-mut)!important;font-weight:700}
#authForm{background:#fff;border:3px solid var(--m-ink);border-radius:24px;padding:18px;box-shadow:6px 6px 0 var(--m-ink)}
#authForm .btn{width:100%}

@media (min-width:768px){#room{height:48vh!important}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation-duration:.01ms!important}}
#auth h1{margin:8px 0 22px!important}
#authErr:empty{display:none}
