/* ===== leoowen.uk hub — light, warm, glassy =============================== */
body {
  background:
    radial-gradient(1000px 620px at 10% 6%, rgba(46,107,79,.10), transparent 55%),
    radial-gradient(900px 720px at 96% 102%, rgba(62,142,126,.13), transparent 55%),
    linear-gradient(160deg, #FBF8F1, #F0EBE0);
  background-attachment:fixed;
}

.hub { min-height:100vh; display:flex; flex-direction:column; max-width:900px; margin:0 auto; padding:clamp(20px,5vw,46px) clamp(18px,5vw,34px); }

.hub-top { display:flex; align-items:center; justify-content:space-between; }
.hub-brand { display:flex; align-items:center; gap:11px; font-family:'Fraunces',Georgia,serif; font-weight:600; font-size:1.12rem; color:var(--ink); }
.hub-dot { width:30px; height:30px; border-radius:10px; display:grid; place-items:center; font-weight:700; color:#fff;
  background:linear-gradient(145deg, #3a8662, #234f3b); box-shadow:0 5px 14px -4px rgba(35,79,59,.6), inset 0 1px 0 rgba(255,255,255,.35); }
.hub-top .btn.ghost, .btn.ghost { background:transparent; }

/* Frosted panel holding the greeting + launcher */
.hub-main {
  margin:auto 0; padding:clamp(2rem,4.5vw,3.1rem);
  background:rgba(255,255,255,.55);
  -webkit-backdrop-filter:blur(20px) saturate(1.12); backdrop-filter:blur(20px) saturate(1.12);
  border:1px solid rgba(255,255,255,.66); border-radius:30px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6), 0 40px 80px -30px rgba(41,37,31,.26);
}
.hub-eyebrow { color:var(--green); font-weight:600; font-size:.82rem; letter-spacing:.04em; text-transform:uppercase; margin:0 0 .55rem; }
.hub-hi { font-family:'Fraunces',Georgia,serif; font-size:clamp(2rem,5vw,2.9rem); letter-spacing:-.02em; margin:0 0 .35rem; color:var(--ink); }
.hub-sub { color:var(--muted); margin:0 0 .4rem; font-size:1.02rem; }

/* App launcher */
.hub-apps { display:flex; flex-wrap:wrap; gap:32px; margin-top:1.9rem; }
.hub-app { display:flex; flex-direction:column; align-items:center; gap:12px; width:98px; text-decoration:none; }
.hub-app-ic { position:relative; width:90px; height:90px; border-radius:25px; display:grid; place-items:center; color:#fff; overflow:hidden;
  box-shadow:0 14px 28px -10px rgba(41,37,31,.45), inset 0 1px 0 rgba(255,255,255,.4);
  transition:transform .17s, box-shadow .17s; }
.hub-app-ic::after { content:""; position:absolute; inset:0; border-radius:inherit;
  background:linear-gradient(180deg, rgba(255,255,255,.28), transparent 46%); pointer-events:none; }
.hub-app-ic.fin { background:linear-gradient(145deg, #3f9069, #234f3b); }
.hub-app-ic.ev  { background:linear-gradient(145deg, #4fa896, #2c6f63); }
.hub-app-ic.adm { background:linear-gradient(145deg, #6b7280, #374151); }
.hub-noaccess { text-align:center; margin-top:1.5rem; }
.hub-noaccess .warn-tri { display:inline-flex; align-items:center; justify-content:center; width:64px; height:64px; border-radius:50%; background:#FBF3D7; color:#C9A227; }
.hub-app-ic svg { position:relative; z-index:1; }
.hub-app:hover .hub-app-ic { transform:translateY(-5px); box-shadow:0 22px 38px -12px rgba(41,37,31,.5), inset 0 1px 0 rgba(255,255,255,.45); }
.hub-app:active .hub-app-ic { transform:translateY(-1px) scale(.97); }
.hub-app-name { font-size:.96rem; font-weight:600; color:var(--ink); }

.hub-foot { color:var(--muted); font-size:.8rem; text-align:center; padding-top:1.6rem; }
.btn.sm.ghost { color:var(--muted); }
.btn.sm.ghost:hover { color:var(--ink); }
