/* ============================================================
   CLIENT PORTAL THEME — "Crisp"
   Single shared stylesheet for every /portal page so the client
   side matches the admin panel's Crisp theme: light blue-grey
   page, white chat-bubble cards, cyan accents, dark ink text.
   Palette mirrors [data-theme="crisp"] in admin-core.css.

   Page-specific components (chat bubbles, tax tables, timelines)
   still live in each page's inline <style>, but everything shared
   — reset, nav, cards, badges, buttons, tables, forms — is here.
   ============================================================ */

:root{
  --pg:#eef1f7;          /* page background */
  --ink:#141a26;         /* strongest heading ink */
  --ink-2:#1c2430;       /* body text */
  --ink-3:#29323f;       /* table cell text */
  --muted:#64748b;       /* muted / meta text */
  --accent:#0288b3;      /* links, active */
  --accent-hi:#00baff;   /* highlights, gradients, focus ring */
  --accent-tealo:#19b6c9;
  --line:rgba(20,30,55,0.08);
  --line-2:rgba(20,30,55,0.06);
  --danger:#c33d54;
  --danger-bg:#fdeef1;
  --card-radius:18px 18px 18px 5px;
}

*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--pg);font-family:'DM Sans',system-ui,sans-serif;color:var(--ink-2);min-height:100vh;-webkit-font-smoothing:antialiased}

/* ---- Top nav (white chrome, lifted with a shadow) ---- */
nav{background:#fff;border-bottom:1px solid var(--line);box-shadow:0 2px 16px -6px rgba(20,30,55,0.22);
    padding:0 2rem;display:flex;align-items:center;justify-content:space-between;height:64px;position:relative;z-index:5}
nav .logo{font-family:'Google Sans Flex','DM Sans',sans-serif;font-size:20px;color:var(--ink);display:flex;align-items:center}
nav .logo em{color:var(--accent);font-style:italic}
nav .logo .logo-tld{color:var(--muted);font-size:13px;margin-left:2px}
nav .right{display:flex;align-items:center;gap:1.5rem;font-size:13px}
nav .right a{color:#55627a;text-decoration:none;transition:color .12s ease}
nav .right a:hover{color:var(--accent)}
nav .right .logout-form button{background:none;border:none;color:#55627a;font:inherit;font-size:13px;cursor:pointer;padding:0}
nav .right .logout-form button:hover{color:var(--accent)}

/* ---- Layout ---- */
main{padding:2.5rem 2rem;max-width:900px;margin:0 auto}
.back{font-size:12px;color:var(--muted);text-decoration:none;display:inline-block;margin-bottom:1.25rem}
.back:hover{color:var(--accent)}

h1{font-family:'Google Sans Flex','DM Sans',sans-serif;font-weight:600;font-size:30px;color:var(--ink);margin-bottom:6px;letter-spacing:-0.01em}
h2{font-family:'Google Sans Flex','DM Sans',sans-serif;font-weight:600;font-size:20px;color:var(--ink);margin-bottom:1rem}
p.sub,.meta{color:var(--muted);font-size:13px;margin-bottom:2rem}

/* ---- Cards (chat-bubble corner, soft depth) ---- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--card-radius);padding:1.75rem;margin-bottom:1.5rem;color:var(--ink-2);
      box-shadow:0 1px 2px rgba(20,30,55,0.05),0 12px 30px -18px rgba(20,30,55,0.32);
      transition:box-shadow .18s ease,border-color .18s ease}
.card h2,.card strong{color:var(--ink)}
.card .muted{color:var(--muted)}

/* ---- Badges ---- */
.badge{display:inline-block;padding:5px 14px;border-radius:999px;font-size:10px;letter-spacing:0.06em;text-transform:uppercase;font-weight:600}
.badge-inquiry,.badge-awaiting_client,.badge-sent{background:rgba(2,136,179,0.12);color:#0e6f8b}
.badge-active,.badge-approved{background:rgba(23,179,201,0.15);color:#0e7a8b}
.badge-completed{background:rgba(99,102,241,0.14);color:#4448c9}
.badge-on_hold{background:rgba(100,116,139,0.15);color:#55627a}
.badge-declined{background:rgba(211,83,107,0.14);color:#b23a52}

/* ---- Buttons ---- */
button,.btn{font-family:inherit}
.btn,.btn-approve{border:none;padding:13px 32px;font-size:12px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;border-radius:10px;cursor:pointer;
     background:linear-gradient(135deg,var(--accent-hi),var(--accent-tealo));color:#fff;
     box-shadow:0 6px 16px -7px rgba(0,186,255,0.55),inset 0 1px 0 rgba(255,255,255,0.25);
     transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}
.btn:hover,.btn-approve:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 10px 24px -8px rgba(0,186,255,0.65),inset 0 1px 0 rgba(255,255,255,0.3)}
.btn:active,.btn-approve:active{transform:translateY(0);filter:brightness(0.98)}
.btn-ghost{background:#fff;border:1px solid #d6dced;color:#48546b;box-shadow:none;border-radius:10px;
     padding:13px 32px;font-size:12px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;cursor:pointer;
     transition:background .12s ease,border-color .12s ease,color .12s ease}
.btn-ghost:hover{background:#f3f6fc;border-color:var(--accent-hi);color:var(--ink-2)}
.btn-decline,.btn-danger{background:#fff;border:1px solid #e6b0ba;color:var(--danger);box-shadow:none;border-radius:10px;
     padding:13px 32px;font-size:12px;font-weight:600;letter-spacing:0.06em;text-transform:uppercase;cursor:pointer;
     transition:background .12s ease,border-color .12s ease}
.btn-decline:hover,.btn-danger:hover{background:var(--danger-bg);border-color:#d3536b}

/* ---- Tables ---- */
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:10px;letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);padding:8px 6px;border-bottom:1px solid var(--line)}
td{padding:10px 6px;border-bottom:1px solid var(--line-2);font-size:13px;color:var(--ink-3)}
tr:last-child td{border-bottom:none}

/* ---- Forms ---- */
input,select,textarea{background:#fff;border:1px solid #d6dced;color:var(--ink-2);border-radius:10px;padding:10px 12px;font-family:inherit;font-size:14px}
textarea{resize:vertical;max-width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent-hi);box-shadow:0 0 0 3px rgba(0,186,255,0.16)}
label{color:var(--muted);font-size:12px}

/* ---- Notices ---- */
.success{background:rgba(23,179,201,0.12);color:#0e7a8b;border:1px solid rgba(23,179,201,0.22);border-radius:10px;padding:12px 16px;font-size:13px;margin-bottom:1.25rem}
.error{background:rgba(211,83,107,0.12);color:#b23a52;border:1px solid rgba(211,83,107,0.2);border-radius:10px;padding:12px 16px;font-size:13px;margin-bottom:1.25rem}
.muted{color:var(--muted)}
a{color:var(--accent)}
a.plain{color:var(--ink-2);text-decoration:none}
a.plain:hover{color:var(--accent);text-decoration:underline}

/* ---- Mobile ---- */
@media (max-width:700px){
  nav{padding:0 1rem;height:56px;gap:.75rem}
  nav .logo{font-size:17px}
  nav .right{gap:.9rem;flex-wrap:wrap;justify-content:flex-end;row-gap:2px}
  main{padding:1.5rem 1rem}
  h1{font-size:24px}
  .card{padding:1.15rem;overflow-x:auto} /* wide tables scroll inside the card instead of clipping */
  .btn,.btn-approve,.btn-ghost,.btn-decline,.btn-danger{padding:12px 20px}
  input,select,textarea{font-size:16px} /* prevents iOS auto-zoom on focus */
}

/* ---- Scrollbars ---- */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(20,30,55,0.15);border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:var(--accent)}
*{scrollbar-width:thin;scrollbar-color:rgba(20,30,55,0.15) transparent}
