/* FBOSYSTEM Client Portal */
:root{
  --navy:#0b1f3a; --navy-2:#13305a; --ink:#1b2430; --muted:#5d6b7e; --line:#e3e8ef;
  --bg:#f4f6f9; --card:#fff; --accent:#e8a317; --accent-d:#c98a0b; --danger:#b42318; --ok:#1d6f42;
  --radius:12px; --shadow:0 1px 2px rgba(16,24,40,.06),0 4px 16px rgba(16,24,40,.06);
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}
a{color:var(--navy-2)}
h1,h2{line-height:1.2;margin:0 0 .4em}
h1{font-size:1.75rem;letter-spacing:-.01em}
h2{font-size:1.1rem}
.wrap{width:100%;max-width:1160px;margin:0 auto;padding:0 20px}
.muted{color:var(--muted)} .small{font-size:.875rem}
.inline{display:inline}

/* brand */
.brand{display:flex;align-items:baseline;gap:0;text-decoration:none;color:#fff;font-weight:800;letter-spacing:.06em}
.brand-mark{color:var(--accent);font-weight:800;letter-spacing:.06em}
.brand-word{font-weight:800;letter-spacing:.06em}
.brand-sub{margin-left:14px;padding-left:14px;border-left:1px solid rgba(255,255,255,.25);font-weight:500;letter-spacing:.02em;font-size:.9rem;color:#c8d3e3}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:8px 14px;font:inherit;font-size:.9rem;font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}
.btn:hover{border-color:#c5cfdc;background:#f8fafc}
.btn-primary{background:var(--accent);border-color:var(--accent);color:#1a1300}
.btn-primary:hover{background:var(--accent-d);border-color:var(--accent-d)}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.3);color:#fff}
.btn-ghost:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.5)}
.btn-small{padding:5px 10px;font-size:.8rem}
.btn-block{width:100%;padding:12px;font-size:1rem;margin-top:8px}

/* auth page */
body.auth{background:radial-gradient(1200px 600px at 80% -10%,#21457a 0%,transparent 60%),linear-gradient(160deg,#0b1f3a 0%,#081629 100%)}
.auth-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 16px}
.auth-card{width:100%;max-width:400px;background:#fff;border-radius:16px;padding:36px 32px 28px;box-shadow:0 20px 50px rgba(0,0,0,.35)}
.auth-brand{font-size:1.6rem;margin-bottom:18px;color:var(--navy);font-weight:800;letter-spacing:.06em}
.auth-card h1{font-size:1.35rem}
.auth-card label{display:block;font-size:.85rem;font-weight:600;margin:16px 0 6px}
.auth-card input{width:100%;padding:11px 12px;border:1px solid #cfd7e2;border-radius:8px;font:inherit;font-size:1rem;background:#fbfcfe}
.auth-card input:focus{outline:none;border-color:var(--navy-2);box-shadow:0 0 0 3px rgba(19,48,90,.15);background:#fff}
.auth-card form{margin-top:8px}
.back{margin-top:18px}.back a{color:#c8d3e3;text-decoration:none;font-size:.9rem}.back a:hover{color:#fff}
.alert{margin:14px 0 4px;padding:10px 12px;border-radius:8px;background:#fef3f2;border:1px solid #fecdca;color:var(--danger);font-size:.9rem}
.alert-info{background:#ecfdf3;border-color:#abefc6;color:var(--ok)}
body.auth .foot{color:#8fa0b8}

/* app shell */
.topbar{background:var(--navy);color:#fff;position:sticky;top:0;z-index:5;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;height:64px;gap:12px}
.userbox{display:flex;align-items:center;gap:12px}
.who{font-size:.9rem;color:#c8d3e3}
.main{flex:1;padding-top:28px;padding-bottom:40px}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px}
.eyebrow{margin:0 0 4px;color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.lead{color:var(--muted);margin:0;max-width:760px}
.crumbs{font-size:.875rem;color:var(--muted);margin-bottom:10px}
.crumbs a{text-decoration:none}.crumbs span{margin:0 6px;color:#aab4c3}
.empty{background:#fff;border:1px dashed #cfd7e2;border-radius:var(--radius);padding:40px;text-align:center;color:var(--muted)}
.foot{text-align:center;color:var(--muted);font-size:.8rem;padding:18px}

/* dashboard */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}
.card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;text-decoration:none;color:inherit;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s}
.card:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(16,24,40,.12)}
.card-cover{aspect-ratio:16/9;background:#e9edf3;display:flex;align-items:center;justify-content:center;overflow:hidden}
.card-cover img{width:100%;height:100%;object-fit:cover;display:block}
.cover-ph{font-weight:800;font-size:2rem;color:#b8c3d3;letter-spacing:.1em}
.card-body{padding:16px 18px 18px}
.card-body p{margin:0 0 12px;color:var(--muted);font-size:.92rem}
.meta{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.8rem;color:var(--muted)}
.meta span{background:#f1f4f8;border-radius:999px;padding:2px 10px}

/* project page */
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:20px;box-shadow:var(--shadow)}
.panel-accent{border-left:4px solid var(--accent)}
.panel h2{margin-bottom:14px}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}
.gallery figure{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fafbfc;display:flex;flex-direction:column}
.gallery figure>a{display:block;aspect-ratio:4/3;background:#fff;overflow:hidden}
.gallery img{width:100%;height:100%;object-fit:contain;display:block;transition:transform .2s}
.gallery figure>a:hover img{transform:scale(1.03)}
.gallery figcaption{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}
.files{list-style:none;margin:0;padding:0}
.file{display:flex;align-items:center;gap:14px;padding:12px 4px;border-top:1px solid var(--line)}
.file:first-child{border-top:0}
.fname{flex:1;min-width:0;font-weight:600;font-size:.9rem;overflow-wrap:anywhere}
.fname small{display:block;font-weight:400;color:var(--muted);font-size:.8rem;word-break:normal}
.badge{flex:0 0 auto;width:48px;text-align:center;font-size:.7rem;font-weight:800;letter-spacing:.04em;border-radius:6px;padding:6px 0;background:#eef2f7;color:var(--navy-2)}
.badge-cad{background:#e8f1ff;color:#1849a9}
.badge-model{background:#f4ebff;color:#6941c6}
.badge-data{background:#ecfdf3;color:#1d6f42}
.badge-document{background:#fef3f2;color:#b42318}
.badge-package{background:#fff6e0;color:#93620a}

@media (max-width:640px){
  h1{font-size:1.4rem}
  .brand-sub{display:none}
  .who{display:none}
  .grid{grid-template-columns:1fr}
  .gallery{grid-template-columns:1fr 1fr;gap:10px}
  .gallery figcaption{flex-direction:column;align-items:stretch}
  .panel{padding:14px}
  .auth-card{padding:28px 22px}
}
@media (max-width:400px){.gallery{grid-template-columns:1fr}}
