*{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#fdf3e7;--accent:#3d1a00;--accent2:#c4822a;--accent3:#d4a017;
  --soft:#f5e6cc;--softer:#fdf6ec;--muted:#6b3a1f;--danger:#c0392b;
  --border:#e8c4b8;--pill:#fff8f0;--green:#27ae60;--blue:#2980b9;
  --radius:20px;
}
html,body{height:100%;}
body{font-family:'Nunito',sans-serif;background:linear-gradient(135deg,#fce8d0 0%,#fdf3e7 55%,#fce0d5 100%);min-height:100vh;min-height:100dvh;display:flex;align-items:flex-start;justify-content:center;padding:0;}
#root{width:100%;max-width:480px;min-height:100vh;min-height:100dvh;position:relative;display:flex;flex-direction:column;}
@media (min-width:768px){#root{max-width:560px;box-shadow:0 12px 48px rgba(61,26,0,.12);background:var(--bg);border-radius:0;}}
@media (min-width:1200px){#root{max-width:620px;}}

/* ─── PANELS ─── */
.panel{display:none;flex-direction:column;min-height:100vh;animation:fadeUp .38s ease both;}
.panel.active{display:flex;}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes popIn{0%{transform:scale(.7);opacity:0}70%{transform:scale(1.05)}100%{transform:scale(1);opacity:1}}
@keyframes shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
@keyframes bodyBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes tailWag{0%,100%{transform:rotate(-18deg)}50%{transform:rotate(18deg)}}
@keyframes pawWave{0%,100%{transform:rotate(0)}30%{transform:rotate(-28deg)}70%{transform:rotate(8deg)}}
@keyframes pawBeg{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-7px) rotate(6deg)}}
@keyframes eyeBlink{0%,85%,100%{transform:scaleY(1)}88%,94%{transform:scaleY(.06)}}
@keyframes wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-9deg)}75%{transform:rotate(9deg)}}
@keyframes floatUp{0%{transform:translateY(0);opacity:1}100%{transform:translateY(-70px);opacity:0}}
@keyframes heartbeat{0%,100%{transform:scale(1)}40%{transform:scale(1.3)}60%{transform:scale(1.1)}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes bgRise{0%{transform:translateY(100%);opacity:0}10%{opacity:.08}90%{opacity:.08}100%{transform:translateY(-120%);opacity:0}}
@keyframes confettiFall{0%{transform:translateY(-10px) rotate(0);opacity:1}100%{transform:translateY(260px) rotate(720deg);opacity:0}}
@keyframes rainbowName{0%{color:#3d1a00}25%{color:#c0392b}50%{color:#d4a017}75%{color:#27ae60}100%{color:#3d1a00}}
@keyframes shimmerText{0%,100%{color:#3d1a00}33%{color:#c0392b}66%{color:#d4a017}}
@keyframes notifSlide{from{transform:translateX(120%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes msgIn{from{transform:scale(.85) translateY(8px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}
.bodybob{animation:bodyBob 2.2s ease-in-out infinite;}
.bodywiggle{animation:wiggle .42s ease-in-out!important;}

/* ─── TYPOGRAPHY / COMMON ─── */
h2{font-family:'Fredoka One',cursive;font-size:24px;color:var(--accent);letter-spacing:.2px;}
label{display:block;font-weight:800;font-size:11px;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:6px;margin-top:16px;}

input[type=text],input[type=email],input[type=password],input[type=number],textarea,select{
  width:100%;padding:12px 16px;border:1.5px solid var(--border);border-radius:14px;
  font-family:'Nunito',sans-serif;font-size:15px;font-weight:700;color:var(--accent);
  background:#ffffff;outline:none;transition:border-color .2s,box-shadow .2s,background .2s;
  box-shadow:0 2px 6px rgba(61,26,0,.03);
}
input:focus,textarea:focus,select:focus{
  border-color:#ff7a65;
  background:#ffffff;
  box-shadow:0 0 0 3.5px rgba(255,122,101,.18);
}
textarea{resize:vertical;min-height:85px;line-height:1.6;}
select{
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b3a1f' stroke-width='2' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:38px;
}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 28px;border:none;border-radius:50px;
  font-family:'Nunito',sans-serif;font-weight:900;font-size:15px;
  cursor:pointer;transition:all .22s cubic-bezier(0.34, 1.56, 0.64, 1);
  letter-spacing:.3px;text-decoration:none;
}
.btn-block{width:100%;}

.btn-main{
  background:linear-gradient(135deg, var(--accent) 0%, #572502 100%);
  color:#ffffff;
  box-shadow:0 6px 18px rgba(61,26,0,.22);
}
.btn-main:hover{
  background:linear-gradient(135deg, #572502 0%, #291000 100%);
  transform:translateY(-2px);
  box-shadow:0 10px 24px rgba(61,26,0,.32);
}
.btn-main:active{transform:translateY(1px);box-shadow:0 3px 10px rgba(61,26,0,.2);}

.btn-danger{
  background:linear-gradient(135deg, var(--danger) 0%, #a93226 100%);
  color:#ffffff;
  box-shadow:0 4px 14px rgba(192,57,43,.25);
}
.btn-danger:hover{
  background:linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
  transform:translateY(-2px);
  box-shadow:0 8px 20px rgba(192,57,43,.35);
}

.btn-sec{
  background:#ffffff;
  color:var(--accent);
  border:1.5px solid var(--border);
  box-shadow:0 2px 8px rgba(61,26,0,.05);
}
.btn-sec:hover{
  border-color:#ff7a65;
  background:var(--softer);
  transform:translateY(-2px);
  box-shadow:0 6px 16px rgba(61,26,0,.1);
}

.btn-ghost{
  background:none;
  border:1.5px solid var(--border);
  color:var(--muted);
}
.btn-ghost:hover{
  border-color:var(--accent);
  color:var(--accent);
  background:rgba(255,255,255,.6);
}

.btn-sm{padding:8px 18px;font-size:13px;}
.err{color:var(--danger);font-weight:800;font-size:13px;margin-top:6px;display:block;animation:shake .4s ease;}
.succ{color:var(--green);font-weight:800;font-size:13px;margin-top:6px;display:block;}
.hint{color:var(--muted);font-size:13px;font-weight:600;text-align:center;margin-top:12px;}
.hint a{color:#ff7a65;cursor:pointer;font-weight:800;text-decoration:underline;}

.chip{
  display:inline-flex;align-items:center;gap:6px;
  background:#ffffff;border:1.5px solid var(--border);
  border-radius:20px;padding:6px 14px;font-size:12px;font-weight:800;
  color:var(--muted);cursor:pointer;transition:all .2s;
  box-shadow:0 2px 6px rgba(61,26,0,.04);
}
.chip.on,.chip:hover{
  background:var(--accent);color:#ffffff;border-color:var(--accent);
  transform:translateY(-1px);box-shadow:0 4px 12px rgba(61,26,0,.15);
}

.badge{
  display:inline-block;font-size:10px;font-weight:900;
  padding:3px 10px;border-radius:20px;letter-spacing:1px;text-transform:uppercase;
}
.badge-gold{background:linear-gradient(135deg,#f39c12,#d4a017);color:#ffffff;}
.badge-green{background:#d5f5e3;color:#1e8449;}
.badge-red{background:#fadbd8;color:#78281f;}

.divider{height:1px;background:var(--border);margin:18px 0;}
.row{display:flex;gap:10px;align-items:center;}
.row-between{display:flex;gap:10px;align-items:center;justify-content:space-between;}
.scroll-y{overflow-y:auto;-webkit-overflow-scrolling:touch;}

/* ─── TOP NAV ─── */
.topnav{
  background:rgba(255,255,255,0.92);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border-bottom:1.5px solid var(--border);
  padding:12px 18px;
  display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;z-index:100;
  box-shadow:0 4px 20px rgba(61,26,0,.04);
}
.topnav-logo{
  font-family:'Fredoka One',cursive;
  font-size:22px;color:var(--accent);
  cursor:pointer;display:flex;align-items:center;gap:6px;
  letter-spacing:.3px;
}
.topnav-actions{display:flex;gap:8px;align-items:center;}
.nav-icon-btn{
  background:#ffffff;
  border:1.5px solid var(--border);
  border-radius:50%;width:40px;height:40px;
  display:flex;align-items:center;justify-content:center;
  font-size:17px;cursor:pointer;position:relative;
  transition:all .2s;
  box-shadow:0 2px 8px rgba(61,26,0,.05);
}
.nav-icon-btn:hover{
  border-color:#ff7a65;
  background:var(--softer);
  transform:scale(1.08) translateY(-1px);
  box-shadow:0 6px 14px rgba(61,26,0,.1);
}
.nav-badge{
  position:absolute;top:-3px;right:-3px;
  background:var(--danger);color:#ffffff;
  font-size:9px;font-weight:900;
  min-width:16px;height:16px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  border:2px solid #ffffff;
  box-shadow:0 2px 6px rgba(192,57,43,.3);
}

/* ─── BOTTOM TAB BAR ─── */
.tabbar-wrapper {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 100;
  padding: 0 16px max(14px, env(safe-area-inset-bottom));
  pointer-events: none;
}

.tabbar {
  pointer-events: auto;
  background: #ffffff;
  border-radius: 40px;
  padding: 6px 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  box-shadow: 0 12px 35px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.03);
  max-width: 440px;
  margin: 0 auto;
  position: relative;
}

.tabbar-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  padding: 4px 6px;
  border-radius: 14px;
  border: none;
  background: none;
  cursor: pointer;
  color: #b0b0b0;
  transition: all .2s ease;
  position: relative;
  font-family: 'Nunito', sans-serif;
  flex: 1;
}

.tabbar-svg {
  transition: transform .2s ease, stroke .2s ease;
  stroke: #b0b0b0;
}

.tabbar-label {
  font-size: 10px;
  font-weight: 800;
  color: #a0a0a0;
  letter-spacing: .2px;
  transition: color .2s ease;
}

.tabbar-item:hover .tabbar-svg {
  stroke: #ff7a65;
  transform: scale(1.08);
}
.tabbar-item:hover .tabbar-label {
  color: #ff7a65;
}

.tabbar-item.on .tabbar-svg {
  stroke: #ff7a65;
  transform: scale(1.1);
}
.tabbar-item.on .tabbar-label {
  color: #ff7a65;
}

/* Center raised coral action button */
.tabbar-item--create {
  width: auto;
  height: auto;
  overflow: visible;
  position: relative;
  top: -16px;
  margin: 0 4px;
}

.tabbar-create-btn {
  width: 58px;
  height: 58px;
  background: linear-gradient(135deg, #ff8c77 0%, #ff6b54 100%);
  border-radius: 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 10px 24px rgba(255, 107, 84, 0.4), 0 4px 10px rgba(255, 107, 84, 0.2);
  transition: transform .22s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow .22s ease;
}

.tabbar-item--create:hover .tabbar-create-btn,
.tabbar-item--create.on .tabbar-create-btn {
  transform: scale(1.08) translateY(-2px);
  box-shadow: 0 14px 28px rgba(255, 107, 84, 0.5), 0 6px 14px rgba(255, 107, 84, 0.25);
}

.tabbar-item--create:active .tabbar-create-btn {
  transform: scale(0.95) translateY(0);
}

/* ─── SKELETON LOADING SYSTEM ─── */
.skel {
  background: linear-gradient(90deg, #f5e6cc 25%, #fdf6ec 50%, #f5e6cc 75%);
  background-size: 200% 100%;
  animation: skelShimmer 1.5s infinite linear;
  border-radius: 12px;
  pointer-events: none;
  user-select: none;
}
@keyframes skelShimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.skel-card {
  background: #ffffff;
  border: 1.5px solid var(--border);
  border-radius: 20px;
  padding: 16px;
  margin-bottom: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: 0 4px 12px rgba(61,26,0,.04);
}
.skel-header {
  display: flex;
  align-items: center;
  gap: 12px;
}
.skel-avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  flex-shrink: 0;
}
.skel-lines {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.skel-line {
  height: 14px;
  border-radius: 8px;
}
.skel-line-short { width: 40%; height: 12px; }
.skel-line-medium { width: 65%; height: 14px; }
.skel-line-long { width: 90%; height: 14px; }
.skel-pill {
  height: 36px;
  border-radius: 14px;
  width: 100%;
}
.skel-actions {
  display: flex;
  gap: 8px;
}
.skel-btn {
  height: 34px;
  border-radius: 20px;
  flex: 1;
}

.skel-mini-card {
  min-height: 100px;
  background: #ffffff;
  border: 1.5px solid var(--border);
  border-radius: 16px;
  padding: 12px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.skel-notif-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px;
  border-radius: 16px;
  background: #ffffff;
  border: 1px solid var(--border);
  margin-bottom: 8px;
}


