/* ════════════════════════════════════════════════════════════════════
   Artellers — Ambassador Portal
   The same visual language as the Client Suite on index.html: paper and
   ink, Playfair for display, Cormorant for figures, DM Sans for text.
   ════════════════════════════════════════════════════════════════════ */
:root {
  --ink:#0A0A0A; --paper:#EFEFEC; --white:#FFFFFF;
  --charcoal:#272727; --stone:#737370; --bone:#C2C2BE; --dust:#E2E1DD;
  --good:#2D7A4F; --wait:#8A6400; --info:#4E5E7E; --bad:#9A3A2F;
  --font-display:'Playfair Display',Georgia,serif;
  --font-heading:'Cormorant Garamond',Georgia,serif;
  --font-body:'DM Sans',Arial,sans-serif;
  --ease:cubic-bezier(0.25,0,0,1);
  /* Header: tall at the top of the page, slim once you scroll (portal.js adds
     .ap-scrolled). The page always starts below the tall header, so nothing jumps. */
  --nav-full:144px; --nav-slim:60px; --nav-h:var(--nav-full);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{font-family:var(--font-body);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh;}
button,input,select,textarea{font:inherit;color:inherit;}
button{cursor:pointer;}
a{color:inherit;}
[hidden]{display:none !important;}
:focus-visible{outline:1px solid var(--ink);outline-offset:3px;}

/* ── Sign in ─────────────────────────────────────────────────────────── */
.ap-login{display:grid;grid-template-columns:40vw 1fr;min-height:100vh;}
.ap-login-left{background:var(--ink);padding:72px 56px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;}
.ap-login-quote{font-family:var(--font-display);font-size:clamp(22px,2.5vw,36px);font-weight:400;font-style:italic;color:var(--paper);line-height:1.4;max-width:360px;letter-spacing:-0.01em;}
.ap-login-attr{font-size:9px;letter-spacing:0.2em;text-transform:uppercase;color:var(--stone);margin-top:14px;}
.ap-login-logo{position:absolute;bottom:56px;left:56px;height:24px;width:120px;object-fit:contain;object-position:left;mix-blend-mode:screen;opacity:0.9;}
.ap-login-right{display:flex;align-items:center;justify-content:center;padding:80px 64px;}
.ap-login-wrap{width:100%;max-width:400px;}
.ap-eyebrow{font-size:9px;font-weight:500;letter-spacing:0.26em;text-transform:uppercase;color:var(--stone);margin-bottom:22px;}
.ap-login h1{font-family:var(--font-display);font-weight:400;font-style:italic;font-size:clamp(36px,4vw,56px);line-height:1;letter-spacing:-0.02em;margin-bottom:12px;}
.ap-login-sub{font-size:13px;font-weight:300;color:var(--stone);line-height:1.75;margin-bottom:44px;}
.ap-login form{display:flex;flex-direction:column;gap:28px;}
.ap-login-note{font-size:11px;font-weight:300;color:var(--stone);line-height:1.8;margin-top:40px;padding-top:28px;border-top:1px solid var(--dust);}
.ap-login-note a{text-underline-offset:3px;}
/* Same as StorySpace's "← Return to Artellers", in light-background colours. */
.ap-login-back{display:inline-block;margin-top:28px;font-size:9px;letter-spacing:0.2em;text-transform:uppercase;color:var(--stone);text-decoration:none;transition:color 250ms var(--ease);}
.ap-login-back:hover{color:var(--ink);}
.ap-login-mobile-logo{display:none;height:22px;width:110px;object-fit:contain;object-position:left;margin-bottom:40px;}

/* ── Form fields (sign in and dialogs) ───────────────────────────────── */
.ap-field{display:flex;flex-direction:column;gap:8px;min-width:0;}
.ap-label{font-size:9px;font-weight:500;letter-spacing:0.2em;text-transform:uppercase;color:var(--stone);}
.ap-input,.ap-select,.ap-textarea{font-size:15px;background:transparent;border:none;border-bottom:1px solid var(--bone);padding:10px 0;border-radius:0;outline:none;width:100%;transition:border-color 300ms var(--ease);}
.ap-select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--stone) 50%),linear-gradient(135deg,var(--stone) 50%,transparent 50%);background-position:calc(100% - 10px) 55%,calc(100% - 5px) 55%;background-size:5px 5px;background-repeat:no-repeat;padding-right:22px;}
.ap-textarea{min-height:84px;resize:vertical;line-height:1.6;font-size:14px;}
.ap-input:focus,.ap-select:focus,.ap-textarea:focus{border-color:var(--ink);}
.ap-input::placeholder,.ap-textarea::placeholder{color:var(--bone);}
.ap-help{font-size:11px;font-weight:300;color:var(--stone);line-height:1.6;}
.ap-error{font-size:12px;font-weight:300;color:var(--bad);line-height:1.6;min-height:0;}
.ap-error:empty{display:none;}
.ap-phone{display:grid;grid-template-columns:92px 1fr;gap:12px;align-items:end;}

/* ── Buttons ─────────────────────────────────────────────────────────── */
.ap-btn{background:var(--ink);color:var(--paper);border:none;padding:15px 30px;font-size:10px;font-weight:500;letter-spacing:0.2em;text-transform:uppercase;display:inline-flex;align-items:center;gap:12px;transition:opacity 300ms var(--ease);white-space:nowrap;}
.ap-btn:hover{opacity:0.82;}
.ap-btn:disabled{opacity:0.4;cursor:not-allowed;}
.ap-btn .ap-arrow{display:inline-block;transition:transform 350ms var(--ease);}
.ap-btn:hover:not(:disabled) .ap-arrow{transform:translateX(5px);}
.ap-btn-sm{padding:11px 20px;}
.ap-link{background:none;border:none;border-bottom:1px solid var(--bone);padding:0 0 3px;font-size:10px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;transition:border-color 300ms var(--ease);white-space:nowrap;}
.ap-link:hover{border-color:var(--ink);}
.ap-link:disabled{opacity:0.4;cursor:not-allowed;}

/* ── App shell ───────────────────────────────────────────────────────── */
.ap-nav{position:fixed;top:0;left:0;right:0;z-index:50;background:var(--ink);border-bottom:1px solid #1e1e1e;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:32px;padding:0 48px;height:var(--nav-h);transition:height 350ms var(--ease);}
html.ap-scrolled{--nav-h:var(--nav-slim);}
/* Logo on the left (smaller once the header slims on scroll), "Ambassador
   House" in the centre of the bar, the account on the right. */
.ap-nav-logo{display:block;height:28px;width:auto;mix-blend-mode:screen;opacity:0.9;transition:height 350ms var(--ease);}
html.ap-scrolled .ap-nav-logo{height:22px;}
.ap-nav-title{font-size:9px;font-weight:500;letter-spacing:0.2em;text-transform:uppercase;color:var(--stone);text-align:center;}
.ap-nav-right{display:flex;align-items:center;gap:20px;justify-self:end;}
.ap-nav-who{font-size:11px;font-weight:300;color:rgba(239,239,236,0.45);}
.ap-bell{position:relative;background:none;border:none;color:rgba(239,239,236,0.6);display:flex;align-items:center;padding:4px;}
.ap-bell:hover{color:var(--paper);}
/* The bell fills while pressed and while Notifications is open. */
.ap-bell svg path:first-child{fill:transparent;transition:fill 250ms var(--ease);}
.ap-bell:active svg path:first-child,.ap-bell.active svg path:first-child{fill:currentColor;}
.ap-bell.active{color:var(--paper);}
.ap-bell-count{position:absolute;top:-4px;right:-7px;background:var(--paper);color:var(--ink);font-size:9px;font-weight:500;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 4px;}
.ap-signout{font-size:9px;font-weight:500;letter-spacing:0.16em;text-transform:uppercase;color:var(--stone);background:transparent;border:1px solid #2a2a2a;padding:8px 16px;transition:border-color 300ms var(--ease),color 300ms var(--ease);}
.ap-signout:hover{border-color:var(--stone);color:var(--paper);}

.ap-body{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh;padding-top:var(--nav-full);}
.ap-side{border-right:1px solid var(--bone);padding:36px 32px;position:sticky;top:var(--nav-slim);height:calc(100vh - var(--nav-slim));overflow-y:auto;display:flex;flex-direction:column;}
.ap-avatar{width:44px;height:44px;background:var(--ink);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:500;color:var(--paper);letter-spacing:0.05em;margin-bottom:14px;}
.ap-side-name{font-family:var(--font-heading);font-size:20px;font-weight:400;line-height:1.2;margin-bottom:4px;}
.ap-side-code{font-size:10px;font-weight:400;letter-spacing:0.14em;text-transform:uppercase;color:var(--stone);}
.ap-rule{height:1px;background:var(--bone);margin:26px 0;}
.ap-side-label{font-size:9px;font-weight:500;letter-spacing:0.22em;text-transform:uppercase;color:var(--bone);margin-bottom:10px;}
.ap-tab{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:transparent;border:none;border-bottom:1px solid var(--dust);padding:12px 0;font-size:10px;letter-spacing:0.12em;text-transform:uppercase;color:var(--stone);transition:color 300ms var(--ease);}
.ap-tab:last-child{border-bottom:none;}
.ap-tab:hover,.ap-tab.active{color:var(--ink);}
.ap-tab.active{font-weight:500;}
.ap-tab-count{margin-left:auto;font-size:9px;font-weight:500;color:var(--paper);background:var(--ink);border-radius:8px;min-width:16px;height:16px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;letter-spacing:0;}
.ap-side-bottom{margin-top:auto;}

.ap-main{padding:56px 64px 96px;min-width:0;}
.ap-loading{font-size:12px;font-weight:300;color:var(--stone);letter-spacing:0.06em;}

/* ── Page furniture ──────────────────────────────────────────────────── */
.ap-head{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:44px;flex-wrap:wrap;}
.ap-h1{font-family:var(--font-display);font-weight:400;font-style:italic;font-size:clamp(34px,3.6vw,52px);line-height:1.02;letter-spacing:-0.02em;}
.ap-sub{font-size:13px;font-weight:300;color:var(--stone);line-height:1.75;margin-top:12px;max-width:560px;}
.ap-idline{display:flex;flex-wrap:wrap;gap:10px 36px;margin-top:22px;}
.ap-id{display:flex;flex-direction:column;gap:5px;}
.ap-id-k{font-size:9px;font-weight:500;letter-spacing:0.2em;text-transform:uppercase;color:var(--stone);}
.ap-id-v{font-size:13px;}
.ap-section{margin-bottom:56px;}
.ap-band{display:flex;align-items:baseline;justify-content:space-between;gap:20px;font-size:9px;font-weight:500;letter-spacing:0.24em;text-transform:uppercase;color:var(--stone);padding-bottom:12px;border-bottom:1px solid var(--bone);margin-bottom:24px;}
.ap-band-note{letter-spacing:0.06em;text-transform:none;font-weight:300;font-size:11px;}
.ap-muted{color:var(--stone);}
.ap-small{font-size:11px;font-weight:300;color:var(--stone);line-height:1.6;margin-top:3px;}
.ap-empty{font-size:13px;font-weight:300;color:var(--stone);line-height:1.8;padding:28px 0;}
.ap-notice{display:flex;align-items:center;justify-content:space-between;gap:24px;border-left:2px solid var(--ink);background:var(--white);padding:18px 22px;margin-bottom:40px;font-size:13px;font-weight:300;line-height:1.6;flex-wrap:wrap;}
.ap-notice.warn{border-left-color:var(--wait);}

/* Figures: counts. One number per cell, never a sum across currencies. */
.ap-figs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));border-top:1px solid var(--dust);border-left:1px solid var(--dust);}
.ap-fig{padding:22px 22px 20px;border-right:1px solid var(--dust);border-bottom:1px solid var(--dust);min-width:0;}
.ap-fig-k{font-size:9px;font-weight:500;letter-spacing:0.2em;text-transform:uppercase;color:var(--stone);min-height:2.4em;}
.ap-fig-v{font-family:var(--font-heading);font-weight:300;font-size:44px;line-height:1;margin-top:10px;}
.ap-fig-s{font-size:11px;font-weight:300;color:var(--stone);margin-top:8px;}

/* Money: one row per currency. */
.ap-ccy-block{margin-bottom:28px;}
.ap-ccy-block:last-child{margin-bottom:0;}
.ap-ccy-name{font-family:var(--font-heading);font-size:22px;margin-bottom:12px;display:flex;align-items:baseline;gap:12px;}
.ap-ccy-name span{font-family:var(--font-body);font-size:9px;letter-spacing:0.2em;text-transform:uppercase;color:var(--stone);}
.ap-money-figs{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));border-top:1px solid var(--dust);border-left:1px solid var(--dust);}
.ap-money-fig{padding:18px 20px;border-right:1px solid var(--dust);border-bottom:1px solid var(--dust);min-width:0;}
.ap-money-fig .ap-fig-k{min-height:0;}
/* Commission: Total earned, one bar of where it is (paid, to be paid,
   awaiting approval) with its three amounts, then the estimate apart. */
.ap-comm{container-type:inline-size;}
.ap-comm + .ap-comm{border-top:1px solid var(--dust);padding-top:28px;margin-top:8px;}
.ap-comm-head{display:grid;grid-template-columns:1fr;gap:22px;}
.ap-comm-total .ap-money-v{font-size:52px;margin-top:10px;}
.ap-comm-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;}
.ap-comm-split .ap-fig-k{min-height:0;}
@container (min-width:640px){
  .ap-comm-head{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:32px;}
  .ap-comm-split{border-left:1px solid var(--bone);padding-left:32px;}
}
.ap-stack{display:flex;gap:2px;height:10px;margin:26px 0 18px;background:var(--dust);}
.ap-stack i{display:block;flex-basis:0;min-width:3px;}
.ap-stack i:last-child{border-radius:0 3px 3px 0;}
.s-paid{background:var(--ink);}
.s-due{background:var(--stone);}
.s-wait{background:var(--bone);}
.ap-stack-keys{display:grid;grid-template-columns:1fr;gap:16px;}
@container (min-width:520px){.ap-stack-keys{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;}}
.ap-stack-key .ap-fig-k{min-height:0;display:flex;align-items:center;gap:8px;}
.ap-stack-key .ap-fig-k i{width:8px;height:8px;border-radius:50%;flex:none;}
.ap-stack-v{font-family:var(--font-heading);font-weight:300;font-size:26px;line-height:1.05;margin-top:8px;overflow-wrap:anywhere;}
.ap-comm-upc{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-top:26px;padding-top:18px;border-top:1px solid var(--bone);}
.ap-comm-upc .ap-fig-k{min-height:0;}
.ap-comm-upc .ap-stack-v{margin-top:0;white-space:nowrap;}
/* Overview, also in even rows. Performance: six across, two rows of three,
   or three rows of two. Revenue: three across, or one under another. */
.ap-perf,.ap-rev{container-type:inline-size;}
.ap-perf .ap-figs{grid-template-columns:repeat(2,minmax(0,1fr));}
@container (min-width:480px){.ap-perf .ap-figs{grid-template-columns:repeat(3,minmax(0,1fr));}}
@container (min-width:900px){.ap-perf .ap-figs{grid-template-columns:repeat(6,minmax(0,1fr));}}
.ap-rev .ap-money-figs{grid-template-columns:1fr;}
@container (min-width:480px){.ap-rev .ap-money-figs{grid-template-columns:repeat(3,minmax(0,1fr));}}
.ap-money-v{font-family:var(--font-heading);font-weight:300;font-size:30px;line-height:1.05;margin-top:10px;overflow-wrap:anywhere;}
.ap-ccy{font-family:var(--font-body);font-size:0.36em;letter-spacing:0.14em;font-weight:400;color:var(--stone);margin-right:6px;vertical-align:0.35em;}
.ap-amt{white-space:nowrap;font-variant-numeric:tabular-nums;}
.ap-amt .ap-ccy{font-size:9px;vertical-align:0.1em;margin-right:4px;}
.ap-amt.neg{color:var(--bad);}

/* Tables */
.ap-table-wrap{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;}
.ap-table{width:100%;border-collapse:collapse;font-size:13px;}
.ap-table th{font-size:9px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;color:var(--stone);text-align:left;padding:0 16px 12px 0;border-bottom:1px solid var(--bone);white-space:nowrap;}
.ap-table td{padding:16px 16px 16px 0;border-bottom:1px solid var(--dust);vertical-align:top;line-height:1.45;}
.ap-table th.n,.ap-table td.n{text-align:right;}
.ap-table td.d{white-space:nowrap;}
.ap-table tr.click{cursor:pointer;}
/* Hovering a lead darkens the client's name, like the sidebar items, instead of shading the row. */
.ap-table tr.click .ap-strong{color:var(--stone);transition:color 300ms var(--ease);}
.ap-table tr.click:hover .ap-strong,.ap-table tr.click:focus-visible .ap-strong{color:var(--ink);}
.ap-table .ap-strong{font-weight:500;}
.ap-list{list-style:none;}

/* Status badges: always a word, never colour alone. */
.ap-status{display:inline-block;font-size:8px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;padding:5px 10px;white-space:nowrap;color:var(--charcoal);background:rgba(10,10,10,0.06);}
.ap-status.good{color:var(--good);background:rgba(45,122,79,0.09);}
.ap-status.wait{color:var(--wait);background:rgba(184,138,0,0.10);}
.ap-status.info{color:var(--info);background:rgba(78,94,126,0.10);}
.ap-status.bad{color:var(--bad);background:rgba(154,58,47,0.09);}
.ap-status.done{color:var(--paper);background:var(--ink);}

/* Filter chips */
.ap-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px;}
.ap-chip{background:transparent;border:1px solid var(--bone);padding:8px 14px;font-size:9px;font-weight:500;letter-spacing:0.16em;text-transform:uppercase;color:var(--stone);transition:all 250ms var(--ease);}
.ap-chip:hover{border-color:var(--stone);color:var(--ink);}
.ap-chip.active{background:var(--ink);border-color:var(--ink);color:var(--paper);}

/* Charts: commission by month, one per currency */
.ap-charts{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,560px));gap:40px 56px;}
.ap-chart-title{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px;gap:16px;flex-wrap:wrap;}
.ap-legend{display:flex;gap:16px;font-size:10px;color:var(--stone);}
.ap-legend i{display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:-1px;}
.ap-bars{position:relative;display:grid;grid-template-columns:repeat(12,1fr);gap:6px;height:170px;align-items:end;border-bottom:1px solid var(--bone);}
.ap-bar{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;cursor:default;}
.ap-bar:focus{outline:none;}
.ap-bar:focus-visible{outline:1px solid var(--ink);outline-offset:2px;}
.ap-bar-seg{width:100%;min-height:0;}
.ap-bar-seg.d{background:var(--ink);border-radius:3px 3px 0 0;}
.ap-bar-seg.e{background:var(--bone);}
.ap-bar-seg.e + .ap-bar-seg.d, .ap-bar-seg.d:only-child{border-radius:3px 3px 0 0;}
.ap-bar-seg.e:first-child{border-radius:3px 3px 0 0;}
.ap-bar:hover .ap-bar-seg{opacity:0.78;}
.ap-months{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;margin-top:8px;}
.ap-months span{font-size:9px;letter-spacing:0.06em;color:var(--stone);text-align:center;}
.ap-tip{position:fixed;z-index:120;pointer-events:none;background:var(--ink);color:var(--paper);padding:10px 12px;font-size:11px;line-height:1.6;min-width:150px;box-shadow:0 8px 24px rgba(0,0,0,0.18);}
.ap-tip b{font-weight:500;display:block;margin-bottom:2px;}
.ap-tip-row{display:flex;justify-content:space-between;gap:16px;}
.ap-country-row{display:grid;grid-template-columns:minmax(120px,180px) 1fr auto;gap:16px;align-items:center;padding:12px 0;border-bottom:1px solid var(--dust);font-size:13px;}
.ap-country-bar{height:6px;background:var(--dust);position:relative;}
.ap-country-bar i{position:absolute;left:0;top:0;bottom:0;background:var(--ink);border-radius:0 3px 3px 0;}

/* Key–value lists */
.ap-kv{display:grid;grid-template-columns:minmax(140px,220px) 1fr;border-top:1px solid var(--dust);}
.ap-kv dt,.ap-kv dd{padding:13px 0;border-bottom:1px solid var(--dust);font-size:13px;line-height:1.5;}
.ap-kv dt{font-size:9px;font-weight:500;letter-spacing:0.18em;text-transform:uppercase;color:var(--stone);padding-top:16px;}
.ap-cols{display:grid;grid-template-columns:1fr 1fr;gap:56px;}

/* Notifications */
.ap-note{display:grid;grid-template-columns:10px 1fr auto;gap:16px;padding:18px 0;border-bottom:1px solid var(--dust);align-items:start;}
.ap-note-dot{width:6px;height:6px;border-radius:50%;background:transparent;margin-top:7px;}
.ap-note.unread .ap-note-dot{background:var(--ink);}
.ap-note-title{font-size:13px;}
.ap-note.unread .ap-note-title{font-weight:500;}
.ap-note-body{font-size:12px;font-weight:300;color:var(--stone);margin-top:3px;line-height:1.6;}
.ap-note-time{font-size:10px;color:var(--stone);white-space:nowrap;}

/* Materials */
.ap-file{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center;padding:18px 0;border-bottom:1px solid var(--dust);}
.ap-file-title{font-family:var(--font-heading);font-size:20px;line-height:1.2;}

/* ── Dialog ──────────────────────────────────────────────────────────── */
.ap-backdrop{position:fixed;inset:0;z-index:100;background:rgba(10,10,10,0.42);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;overflow-y:auto;opacity:0;transition:opacity 250ms var(--ease);}
.ap-backdrop.open{opacity:1;}
.ap-dialog{background:var(--paper);width:100%;max-width:640px;box-shadow:0 24px 60px rgba(0,0,0,0.25);}
.ap-dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;padding:32px 36px 0;}
.ap-dialog-title{font-family:var(--font-display);font-style:italic;font-size:30px;line-height:1.1;}
.ap-close{background:none;border:none;font-size:26px;line-height:1;color:var(--stone);padding:0 4px;}
.ap-close:hover{color:var(--ink);}
.ap-dialog-body{padding:20px 36px 8px;}
.ap-dialog-intro{font-size:13px;font-weight:300;color:var(--stone);line-height:1.75;margin-bottom:26px;}
.ap-quote{border-left:2px solid var(--ink);padding:10px 16px;background:var(--white);font-size:13px;line-height:1.6;margin-bottom:26px;}
.ap-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px 28px;}
.ap-grid .full{grid-column:1 / -1;}
.ap-dialog-foot{display:flex;justify-content:flex-end;align-items:center;gap:24px;padding:28px 36px 32px;}
.ap-dialog-foot .ap-error{margin-right:auto;}

/* ── Statement (also the printed PDF) ────────────────────────────────── */
.ap-statement-tools{display:flex;gap:20px;align-items:flex-end;flex-wrap:wrap;margin-bottom:32px;}
.ap-statement-tools .ap-field{width:220px;}
/* On paper, like the page around it; a thin edge keeps it reading as a document. */
.ap-doc{background:var(--paper);padding:56px 60px;max-width:960px;border:1px solid var(--bone);}
.ap-doc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:32px;padding-bottom:28px;border-bottom:1px solid var(--ink);margin-bottom:32px;}
.ap-doc-logo{height:22px;width:120px;object-fit:contain;object-position:left;}
.ap-doc-title{font-family:var(--font-display);font-style:normal;font-size:34px;line-height:1.05;margin-top:22px;}
.ap-doc-period{font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:var(--stone);margin-top:10px;}
.ap-doc-meta{text-align:right;font-size:11px;font-weight:300;color:var(--stone);line-height:1.8;}
.ap-doc-parties{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-bottom:36px;font-size:12px;line-height:1.7;}
.ap-doc-parties strong{font-weight:500;}
.ap-doc h3{font-size:9px;font-weight:500;letter-spacing:0.22em;text-transform:uppercase;color:var(--stone);margin:36px 0 12px;}
.ap-doc .ap-table{font-size:12px;}
.ap-doc .ap-table td{padding:11px 12px 11px 0;}
.ap-doc-foot{margin-top:40px;padding-top:18px;border-top:1px solid var(--dust);font-size:10px;font-weight:300;color:var(--stone);line-height:1.7;}
.ap-sum-row td{font-weight:500;border-bottom:1px solid var(--bone);}

/* ── Toast ───────────────────────────────────────────────────────────── */
.ap-toast{position:fixed;left:50%;bottom:32px;transform:translate(-50%,20px);background:var(--ink);color:var(--paper);font-size:12px;padding:14px 22px;z-index:130;opacity:0;transition:all 300ms var(--ease);pointer-events:none;max-width:calc(100vw - 32px);}
.ap-toast.show{opacity:1;transform:translate(-50%,0);}

/* ── Smaller screens ─────────────────────────────────────────────────── */
@media (max-width:1100px){
  .ap-main{padding:48px 40px 88px;}
  .ap-cols{grid-template-columns:1fr;gap:40px;}
}
@media (max-width:860px){
  :root{--nav-full:60px;--nav-slim:60px;}
  .ap-login{grid-template-columns:1fr;}
  .ap-login-left{display:none;}
  .ap-login-right{padding:72px 24px 48px;align-items:flex-start;}
  .ap-login-mobile-logo{display:block;}
  .ap-nav{padding:14px 16px;gap:16px;}
  .ap-nav-title,.ap-nav-who{display:none;}
  .ap-nav-logo{height:22px;}
  .ap-body{grid-template-columns:1fr;}
  .ap-side{position:sticky;top:var(--nav-slim);z-index:40;height:auto;padding:0 16px;border-right:none;border-bottom:1px solid var(--bone);background:var(--paper);flex-direction:row;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;}
  .ap-side::-webkit-scrollbar{display:none;}
  .ap-charts{grid-template-columns:1fr;}
  .ap-side-who,.ap-side .ap-rule,.ap-side-label{display:none;}
  .ap-side-top,.ap-side-bottom,#ap-tabs-bottom{display:flex;margin:0;}
  .ap-tab{width:auto;border-bottom:none;padding:16px 14px;white-space:nowrap;}
  .ap-tab.active{box-shadow:inset 0 -1px 0 var(--ink);}
  .ap-main{padding:32px 16px 72px;}
  .ap-grid{grid-template-columns:1fr;}
  .ap-dialog-head,.ap-dialog-body,.ap-dialog-foot{padding-left:22px;padding-right:22px;}
  .ap-kv{grid-template-columns:1fr;}
  .ap-kv dt{border-bottom:none;padding-bottom:0;}
  .ap-doc{padding:32px 20px;}
  .ap-doc-head{flex-direction:column;}
  .ap-doc-meta{text-align:left;}
  .ap-doc-parties{grid-template-columns:1fr;}
  .ap-fig-v{font-size:36px;}
  .ap-country-row{grid-template-columns:1fr auto;}
  .ap-country-bar{grid-column:1 / -1;order:3;}
}

/* ── Motion: pages settle in (portal.js adds these as a page opens) ──── */
@keyframes apRise{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
@keyframes apFade{from{opacity:0;}to{opacity:1;}}
@keyframes apGrowY{from{transform:scaleY(0);}to{transform:none;}}
@keyframes apGrowX{from{transform:scaleX(0);}to{transform:none;}}
.ap-rise{animation:apRise 600ms var(--ease) var(--d,0ms) both;}
.ap-fade{animation:apFade 500ms var(--ease) var(--d,0ms) both;}   /* table rows: no movement, so tables never scroll */
.ap-bar.ap-grow{transform-origin:bottom;animation:apGrowY 800ms var(--ease) var(--d,0ms) both;}
.ap-country-bar i.ap-grow,.ap-stack.ap-grow{transform-origin:left;animation:apGrowX 900ms var(--ease) var(--d,0ms) both;}
@media (prefers-reduced-motion:reduce){.ap-rise,.ap-fade,.ap-grow{animation:none !important;}}

/* ── Print: the statement only, on A4 filled edge to edge with paper ──── */
@media print{
  .ap-rise,.ap-fade,.ap-grow{animation:none !important;}
  /* No page margins, so nothing is left white. The 14 mm of space is padding
     inside the statement instead, repeated at the top and bottom of every
     page (box-decoration-break: clone). */
  @page{size:A4;margin:0;}
  html,body{background:var(--paper);}
  /* A paper layer behind the statement. A fixed element repeats on every
     printed page, and print-color-adjust (below) makes it print even when
     the print window's "Background graphics" option is off. */
  body::before{content:'';position:fixed;top:0;left:0;right:0;bottom:0;background:var(--paper);z-index:-1;}
  body > *:not(#ap-app){display:none !important;}
  .ap-nav,.ap-side,.ap-statement-tools,.ap-no-print,.ap-toast,.ap-tip{display:none !important;}
  .ap-body{display:block;padding:0;}
  .ap-main{padding:0;}
  .ap-main > *:not(.ap-print){display:none !important;}
  .ap-doc{box-shadow:none;border:none;padding:14mm;max-width:none;background:transparent;
          -webkit-box-decoration-break:clone;box-decoration-break:clone;}
  /* A4 is narrower than the phone breakpoint: keep the desktop layout. */
  .ap-doc-head{flex-direction:row;}
  .ap-doc-meta{text-align:right;}
  .ap-doc-parties{grid-template-columns:1fr 1fr;}
  /* Let long tables flow on to the next page instead of breaking early. */
  .ap-table-wrap{overflow:visible;}
  .ap-table tr{break-inside:avoid;}
  .ap-status{border:1px solid currentColor;background:none !important;}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
}
