/* FNM Labs customer area: "Harbor" theme, shared with the admin. Deep blue band, white cards, logo colours. */
:root{
  --band:#123a8f; --ink:#0c1a2e; --ink-2:#13294a; --ink-3:#1d3a63; --blue:#1b6ef3; --blue-d:#1457c4; --sky:#1fb6ff;
  --paper:#eef2f9; --shadow:0 10px 30px rgba(18,58,143,.14); --shadow-s:0 2px 8px rgba(18,58,143,.07); --sheet:#fff; --line:#dbe3ee; --line-2:#eaeff6; --mute:#586a80; --text:#14233a;
  --ok:#0f7a4f; --okbg:#e2f5eb; --due:#8a5a00; --duebg:#fff1d0; --bad:#b3261e; --badbg:#fde7e5; --mutebg:#e8edf4;
  --font:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --display:"Segoe UI Variable Display","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--text);font:16px/1.55 var(--font);min-height:100vh;display:flex;flex-direction:column}
a{color:var(--blue-d)}a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--sky);outline-offset:2px;border-radius:4px}
h1,h2,h3{font-family:var(--display);color:var(--ink);line-height:1.15;margin:0}
h1{font-size:clamp(26px,3.4vw,34px);font-weight:800;letter-spacing:-.025em}
h2{font-size:19px;font-weight:700;letter-spacing:-.01em}
p{margin:0 0 .8em}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--mute)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* header on the blue band */
.head{position:relative;z-index:30;display:flex;align-items:center;gap:22px;height:68px;padding:0 max(32px,calc((100vw - 1120px)/2 + 32px));background:var(--band);color:#fff}
.head-brand{margin-right:6px;display:flex;align-items:center}
.head-brand img{height:32px;width:auto;display:block}
.topnav{display:flex;align-items:center;gap:2px;margin-right:auto}
.topnav a{display:block;padding:8px 14px;border-radius:10px;color:#cfe0ff;font-weight:600;text-decoration:none}
.topnav a:hover{background:rgba(255,255,255,.1);color:#fff}
.topnav a[aria-current=page]{background:rgba(255,255,255,.18);color:#fff;font-weight:700}
.acct{position:relative}
.acct>summary{list-style:none;cursor:pointer;display:block;border-radius:12px}
.acct>summary::-webkit-details-marker{display:none}
.avatar{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:11px;background:#fff;color:var(--band);font-size:13px;font-weight:800}
.acct-panel{position:absolute;right:0;top:calc(100% + 10px);min-width:230px;padding:16px;background:#fff;border-radius:16px;box-shadow:0 24px 60px rgba(12,26,46,.3);z-index:60;color:var(--text)}
.acct-panel strong{display:block;color:var(--ink)}
.acct-panel small{display:block;color:var(--mute);margin-bottom:12px;overflow-wrap:anywhere}
.acct-panel form{margin:0}
.acct-panel .btn{width:100%}
.linkbtn{background:none;border:0;padding:6px 2px;color:var(--blue-d);font:inherit;font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.flashbar{background:var(--band);padding:0 max(32px,calc((100vw - 1120px)/2 + 32px)) 4px}
.flashbar .flash{margin:0 0 8px;background:#fff}
.tabbar{display:none}

main{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:0 32px 64px}

/* the title sits on the band; what follows overlaps its lower edge */
main>.page-head:first-child,main>.under:first-child,main>.statement:first-child{margin:0 -32px;padding-left:32px;padding-right:32px;background-color:var(--band);box-shadow:0 0 0 100vmax var(--band);clip-path:inset(0 -100vmax)}
main>.page-head:first-child{display:block;padding-top:6px;padding-bottom:62px;margin-bottom:0}
main>.page-head:first-child h1{color:#fff}
main>.page-head:first-child p{color:#b9d0ff;margin:6px 0 0}
main>.page-head:first-child+*,main>.under:first-child+*,main>.statement:first-child+*{position:relative;margin-top:-34px}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.page-head p{margin:6px 0 0;color:var(--mute)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:8px;border:2px solid var(--blue);background:var(--blue);color:#fff;font:inherit;font-weight:700;text-decoration:none;cursor:pointer;line-height:1.2;min-height:44px}
.btn:hover{background:var(--blue-d);border-color:var(--blue-d);color:#fff}
.btn.ghost{background:transparent;color:var(--blue-d)}.btn.ghost:hover{background:#eaf1fe;color:var(--blue-d)}
.btn.light{background:#fff;color:var(--ink);border-color:#fff}.btn.light:hover{background:#e8f1ff;border-color:#e8f1ff;color:var(--ink)}
.btn.danger{background:var(--bad);border-color:var(--bad)}.btn.danger:hover{background:#8e1d17;border-color:#8e1d17}
.btn.sm{padding:6px 12px;min-height:36px;font-size:14px}
.under .btn{background:#fff;border-color:#fff;color:var(--band)}.under .btn:hover{background:#e8f1ff;border-color:#e8f1ff;color:var(--band)}
.under .btn.ghost{background:transparent;border-color:rgba(255,255,255,.55);color:#fff}.under .btn.ghost:hover{background:rgba(255,255,255,.12);color:#fff}

/* flash + notices */
.flash{padding:12px 16px;border-radius:8px;margin-bottom:18px;font-weight:600}
.flash.ok{background:var(--okbg);color:var(--ok)}.flash.err{background:var(--badbg);color:var(--bad)}
.notice{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:14px 18px 14px 20px;border-radius:14px;margin-bottom:12px;border:0;border-left:6px solid;box-shadow:var(--shadow-s)}
.notice p{margin:0}.notice strong{display:block}
.notice.due{background:var(--duebg);border-left-color:#e0a21b;color:#5e3d00}
.notice.bad{background:var(--badbg);border-left-color:var(--bad);color:#7e1a14}

/* status pills */
.pill{display:inline-block;padding:2px 10px;border-radius:99px;font-size:13px;font-weight:700;white-space:nowrap}
.pill.ok{background:var(--okbg);color:var(--ok)}.pill.due{background:var(--duebg);color:var(--due)}
.pill.bad{background:var(--badbg);color:var(--bad)}.pill.muted{background:var(--mutebg);color:var(--mute)}

/* the statement: the one bold moment on the overview, set on the band */
.statement{position:relative;color:#fff;padding-top:8px;padding-bottom:96px;
  background-image:linear-gradient(#1b6ef3,#1b6ef3),linear-gradient(#1fb6ff,#1fb6ff),linear-gradient(#5b9bff,#5b9bff);background-repeat:no-repeat;background-position:right 32px top 10px,right 122px top 70px,right 104px top 4px;background-size:112px 112px,64px 64px,36px 36px}
.statement i{display:none}
.statement .lead{color:#b9d0ff;margin:0 0 4px;font-size:16px;max-width:calc(100% - 150px)}
.statement .big{font-family:var(--display);font-size:clamp(40px,6vw,64px);font-weight:800;letter-spacing:-.035em;line-height:1.08;margin:0;color:#fff}
.statement .big small{font-size:.42em;font-weight:700;letter-spacing:0;color:#b9d0ff;margin-left:8px}
.statement .st-sub{margin:12px 0 20px;color:#d7e5ff}
.statement .actions{display:flex;gap:12px;flex-wrap:wrap}
.statement .totals{display:flex;flex-wrap:wrap;gap:0 28px}
.statement .totals .big+.big{font-size:clamp(22px,3vw,28px)}

/* two-column blocks */
.cols{display:grid;grid-template-columns:3fr 2fr;gap:0 28px;align-items:start;margin-top:30px}
main>.statement:first-child+.cols{margin-top:0}
.statement:has(+.cols){padding-bottom:36px}
.block-head{display:flex;justify-content:space-between;align-items:baseline;margin:6px 0 10px}
.block-head a{font-size:14px;font-weight:600}

/* lists */
.rows{list-style:none;margin:0;padding:0}
.rows li{display:flex;gap:16px;justify-content:space-between;align-items:center;padding:14px 18px;margin-bottom:8px;background:var(--sheet);border-radius:14px;box-shadow:var(--shadow-s)}
.rows .main{min-width:0}.rows .title{font-weight:700;color:var(--ink)}.rows .meta{color:var(--mute);font-size:14px}
.rows .amt{text-align:right;font-weight:800;color:var(--ink);white-space:nowrap}
.rows .amt .meta{font-weight:500}
.empty{padding:20px 22px;background:var(--sheet);border-radius:14px;box-shadow:var(--shadow-s);color:var(--mute)}
.empty strong{display:block;color:var(--ink);margin-bottom:2px}
main>.page-head:first-child+.empty,main>.page-head:first-child+.tabs+.empty{margin-top:-34px}

/* tabs */
.tabs{display:inline-flex;gap:4px;margin:0 0 16px;padding:4px;background:var(--sheet);border-radius:12px;box-shadow:var(--shadow-s)}
.tabs a{padding:7px 16px;text-decoration:none;color:var(--mute);font-weight:600;border-radius:9px}
.tabs a:hover{color:var(--ink)}
.tabs a[aria-current=page]{background:#e3eeff;color:var(--blue-d);font-weight:700}

/* tables */
.tbl{width:100%;border-collapse:collapse;background:var(--sheet);border-radius:14px;overflow:hidden;border:0;box-shadow:var(--shadow-s)}
.tbl th{font-size:13px;color:var(--mute);font-weight:700;text-align:left;padding:11px 14px;background:#eaeff7;border-bottom:1px solid var(--line)}
.tbl td{padding:14px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl .r{text-align:right}.tbl .acts{text-align:right;white-space:nowrap}
.tbl .acts a{margin-left:14px;font-weight:600}
.tbl tbody tr:hover td{background:#f9fbfe}

/* subscriptions */
.sub{background:var(--sheet);border:0;border-left:6px solid var(--blue);border-radius:16px;box-shadow:var(--shadow-s);padding:20px 22px;margin-bottom:14px}
.sub.bad{border-left-color:var(--bad)}.sub.muted{border-left-color:#aab6c6}.sub.due{border-left-color:#e0a21b}
.sub-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}
.sub h2{font-size:20px}
.sub .code{color:var(--mute);font-size:14px}
.sub .price{font-family:var(--display);font-size:26px;font-weight:800;color:var(--ink);letter-spacing:-.02em;text-align:right}
.sub .price small{display:block;font-size:13px;font-weight:600;letter-spacing:0;color:var(--mute)}
.facts{display:flex;gap:10px 40px;flex-wrap:wrap;margin:16px 0 4px}
.facts dt{font-size:13px;color:var(--mute)}.facts dd{margin:0;font-weight:700;color:var(--ink)}
.sub details{margin-top:12px;font-size:15px}
.sub summary{cursor:pointer;color:var(--blue-d);font-weight:600}
.sub .breakdown{margin:10px 0 0;border-top:1px solid var(--line-2)}
.sub .breakdown div{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line-2)}
.sub-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px;align-items:center}

/* invoice as a document */
.sheet{background:var(--sheet);border:0;border-radius:18px;padding:36px 40px;box-shadow:var(--shadow)}
.sheet-head{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;align-items:flex-start;margin-bottom:28px}
.sheet-head img{height:44px;width:auto;display:block;margin-bottom:10px}
.sheet-head .co{font-size:14px;color:var(--mute);line-height:1.5}
.sheet-head .docno{text-align:right}
.sheet-head .docno h1{font-size:30px}
.parties{display:flex;gap:40px;flex-wrap:wrap;margin-bottom:26px}
.parties h3{font-size:14px;color:var(--mute);font-weight:600;margin-bottom:4px;font-family:var(--font)}
.items{width:100%;border-collapse:collapse;margin-bottom:6px}
.items th{text-align:left;font-size:13px;color:var(--mute);padding:8px 0;border-bottom:2px solid var(--ink)}
.items td{padding:12px 0;border-bottom:1px solid var(--line-2);vertical-align:top}
.items .r{text-align:right}
.items th:not(:last-child),.items td:not(:last-child){padding-right:16px}
.sheet .rows li{box-shadow:none;border:1px solid var(--line-2)}
.sum{margin-left:auto;width:min(340px,100%);margin-top:10px}
.sum div{display:flex;justify-content:space-between;padding:6px 0}
.sum .grand{border-top:2px solid var(--ink);margin-top:6px;padding-top:12px;font-family:var(--display);font-size:22px;font-weight:800;color:var(--ink)}
.sum .owing{font-weight:800;color:var(--ink)}
.howto{margin-top:26px;padding:18px 20px;background:#eef4ff;border-left:6px solid var(--blue);border-radius:12px}
.howto h3{font-size:16px;margin-bottom:6px}.howto p:last-child{margin:0}
.paid-note{margin-top:26px;padding:16px 20px;background:var(--okbg);color:var(--ok);border-radius:12px;font-weight:600}
.under{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 18px}
main>.under:first-child{margin-bottom:0;padding-top:6px;padding-bottom:70px}

/* forms */
.panel{background:var(--sheet);border:0;border-radius:16px;box-shadow:var(--shadow-s);padding:24px 26px;margin-bottom:20px}
.panel h2{margin-bottom:14px}
.field{margin-bottom:16px}
.field label{display:block;font-weight:700;margin-bottom:5px;color:var(--ink)}
.field input{width:100%;max-width:420px;padding:11px 12px;border:1.5px solid #b9c6d8;border-radius:8px;font:inherit;background:#fff;min-height:44px}
.field input:disabled{background:#f1f4f9;color:var(--mute)}
.field .hint{font-size:14px;color:var(--mute);margin-top:4px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
dl.facts-list{display:grid;grid-template-columns:150px 1fr;gap:8px 16px;margin:0}
dl.facts-list dt{color:var(--mute)}dl.facts-list dd{margin:0}

/* dialog */
dialog{border:0;border-radius:18px;padding:26px 28px;max-width:440px;width:calc(100% - 32px);box-shadow:0 20px 60px rgba(12,26,46,.35)}
dialog::backdrop{background:rgba(12,26,46,.55)}
dialog h2{margin-bottom:10px}
dialog .dlg-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:22px;flex-wrap:wrap}

/* footer */
.foot{border-top:1px solid var(--line);margin-top:auto}
.foot-in{max-width:1120px;margin:0 auto;padding:22px 32px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:14px;color:var(--mute)}
.foot strong{color:var(--ink)}

/* sign-in / public pages */
.split{display:grid;grid-template-columns:minmax(300px,5fr) 6fr;min-height:100vh}
.split .brandside{background:var(--band);color:#fff;padding:48px 44px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.split .brandside::before,.split .brandside::after,.split .brandside i{content:"";position:absolute;border-radius:6px}
.split .brandside::before{width:112px;height:112px;right:48px;top:40px;background:var(--blue)}
.split .brandside::after{width:64px;height:64px;right:138px;top:112px;background:var(--sky)}
.split .brandside i{width:36px;height:36px;right:120px;top:34px;background:#5b9bff}
.brandside img{width:min(300px,80%);height:auto;display:block}
.brandside h2{color:#fff;font-size:clamp(24px,3vw,34px);font-weight:800;letter-spacing:-.025em;max-width:14em}
.brandside p{color:#cfe0ff;max-width:26em;margin-top:12px}
.formside{background:var(--paper);display:flex;align-items:center;justify-content:center;padding:40px 24px}
.formbox{width:100%;max-width:400px}
.formbox h1{font-size:28px;margin-bottom:6px}
.formbox .field input{max-width:none}
.formbox .btn{width:100%}
.formbox .alt{margin-top:18px;font-size:15px}
.center-band{background:var(--band);padding:34px 20px 110px;text-align:center;background-image:linear-gradient(#1b6ef3,#1b6ef3),linear-gradient(#1fb6ff,#1fb6ff);background-repeat:no-repeat;background-position:right max(20px,calc(50% - 480px)) top 14px,right calc(max(20px,calc(50% - 480px)) + 90px) top 66px;background-size:96px 96px,52px 52px}
.center-band img{height:36px;width:auto}
.center-card{max-width:520px;margin:-72px auto 48px;padding:0 20px;position:relative}
.center-card .flash{box-shadow:var(--shadow-s)}
.center-card .panel{box-shadow:var(--shadow);padding:28px 30px}

@media (max-width:960px){
  body.portal{padding-bottom:96px}
  .head{height:60px;padding:0 16px;gap:8px}
  .head-brand img{height:28px}
  .topnav{display:none}
  .head-brand{margin-right:auto}
  .flashbar{padding:0 16px 4px}
  main{padding:0 16px 40px}
  main>.page-head:first-child,main>.under:first-child,main>.statement:first-child{margin:0 -16px;padding-left:16px;padding-right:16px}
  main>.page-head:first-child{padding-bottom:54px}
  main>.page-head:first-child+*,main>.under:first-child+*,main>.statement:first-child+*{margin-top:-28px}
  h1{font-size:26px}
  .statement{padding-bottom:84px;background-size:64px 64px,38px 38px,22px 22px;background-position:right 16px top 6px,right 74px top 46px,right 60px top 0}
  .statement .lead{max-width:calc(100% - 90px)}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);align-items:center;position:fixed;left:14px;right:14px;bottom:max(14px,env(safe-area-inset-bottom));z-index:40;height:62px;border-radius:22px;background:var(--ink);box-shadow:0 12px 30px rgba(12,26,46,.4);padding:0 4px}
  .tabbar a{display:grid;place-items:center;height:48px;color:#9db4d2;border-radius:15px;margin:0 3px;text-decoration:none}
  .tabbar a span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .tabbar a:hover{color:#fff}
  .tabbar [aria-current=page]{background:var(--blue);color:#fff}
  .foot{padding-bottom:0}
}
@media (max-width:860px){
  .cols{grid-template-columns:1fr;gap:6px}
  .grid2{grid-template-columns:1fr}
  .split{grid-template-columns:1fr}
  .split .brandside{padding:28px 24px 30px;gap:26px}
  .split .brandside::before{width:56px;height:56px;right:24px;top:20px}.split .brandside::after{width:32px;height:32px;right:70px;top:60px}.split .brandside i{display:none}
  .brandside img{width:200px}
  .sheet{padding:22px 18px}
  .sheet-head .docno{text-align:left}.sheet-head .docno h1{font-size:22px;overflow-wrap:anywhere}
  .tbl.stack{background:none;box-shadow:none;border-radius:0}
  .tbl.stack thead{display:none}
  .tbl.stack,.tbl.stack tbody,.tbl.stack tr,.tbl.stack td{display:block;width:100%}
  .tbl.stack tr{padding:12px 16px;margin-bottom:10px;background:var(--sheet);border-radius:14px;box-shadow:var(--shadow-s)}
  .tbl.stack td{padding:3px 0;border:0;text-align:left!important}
  .tbl.stack td[data-label]::before{content:attr(data-label) ": ";color:var(--mute);font-size:13px}
  .tbl.stack .acts{margin-top:8px}.tbl.stack .acts a{margin:0 16px 0 0}
  .tbl tbody tr:hover td{background:none}
}
@media print{
  .head,.flashbar,.foot,.under,.btn,.flash,.tabbar{display:none!important}
  body{background:#fff}main{padding:0;max-width:none}
  main>.page-head:first-child{background:none;box-shadow:none;clip-path:none;margin:0;padding:0}main>.page-head:first-child h1{color:#000}
  main>.page-head:first-child+*,main>.under:first-child+*{margin-top:0}
  .sheet{border:0;box-shadow:none;padding:0}
}
@media (prefers-reduced-motion:no-preference){
  .btn,.topnav a,.tabs a{transition:background-color .15s,color .15s,border-color .15s}
}
