/* Proper GP investor platform: design Direction B, "the guided journey".
   Navy frame, amber for the next action, a five step journey tracker for investors, a persistent side navigation for admins.
   Fonts are bundled (League Gothic and Inter, SIL OFL, licences beside the files). Palette is solid colours only. */
@font-face{font-family:League;font-weight:400;font-display:swap;src:url('/portal/static/fonts/LeagueGothic.ttf') format('truetype')}
@font-face{font-family:Inter;font-weight:100 900;font-display:swap;src:url('/portal/static/fonts/Inter.ttf') format('truetype')}

:root{--paper:#F0EDE5;--warm:#F4F0E6;--ink:#14212C;--navy:#13212B;--deep:#0A1017;--amber:#F4B344;--rust:#8B5B1F;--line:#C8CDC4;--muted:#626E65;--ok:#2C5A3A;--err:#A43826;--gutter:max(60px,calc((100vw - 1448px)/2))}
*{box-sizing:border-box}
html{background:var(--paper)}
body{margin:0;color:var(--ink);background:var(--paper);font:16px/1.55 Inter,Arial,sans-serif;overflow-x:clip}
a{color:inherit;text-underline-offset:4px}
button,input,select,textarea{font:inherit}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--rust);outline-offset:4px}
h1,h2,h3,h4,p{margin:0}
h1,h2,h3{font-family:League,Impact,sans-serif;font-weight:400;line-height:1.04}
h1 em,h2 em{font-style:normal}
h2{font-size:36px;margin:0 0 22px}
h3{font-size:28px}
h4{font-size:16px;line-height:1.4;margin:20px 0 8px}
p{margin:14px 0}
small,.small,.helper{font-size:16px;line-height:1.55;color:var(--muted)}
small{display:block}
strong{font-weight:600}
code,.mono{font:16px/1.7 ui-monospace,Menlo,Consolas,monospace;overflow-wrap:anywhere;word-break:break-all}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-9999px;top:8px;z-index:50;background:var(--amber);color:var(--ink);padding:12px 18px}
.skip:focus{left:8px}
.eyebrow{display:block;margin:0;font-size:13px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--rust);line-height:1.6}
.eyebrow.pending{margin-bottom:12px}

/* ------------------------------------------------------------------ top bar and heading panel */
.topbar{display:flex;align-items:center;gap:30px;height:92px;padding:0 44px;background:var(--navy);color:var(--warm)}
.brand{display:block;width:188px;line-height:1;text-decoration:none;flex:none}
.brand svg{display:block;width:100%;height:auto}
.header-label{font-size:13px;text-transform:uppercase;letter-spacing:.1em;border-left:1px solid var(--muted);padding-left:30px;color:var(--line);line-height:1.6}
.top-links{display:flex;gap:28px;align-items:center;margin-left:auto}
.top-links>a{font-size:14px;text-decoration:none;padding:12px 0}
.top-links>a:hover{text-decoration:underline}
form.inline{display:inline;margin:0;max-width:none}
.top-links .button{font-size:14px;min-height:42px;padding:8px 18px}
.page-heading{background:var(--navy);color:var(--warm);padding:44px var(--gutter) 40px}
.page-heading .eyebrow{color:var(--amber)}
.page-heading h1{font-size:72px;letter-spacing:-.015em;margin-top:18px;max-width:1000px}
.steps{list-style:none;padding:20px 0;margin:36px 0 0;display:flex;justify-content:space-between;gap:20px;border-block:1px solid var(--muted)}
.steps li{display:flex;gap:12px;align-items:center;font-size:13px;color:var(--line)}
.steps b{font-size:13px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);width:30px;height:30px;flex:none;font-weight:600}
.steps .current{color:var(--warm);font-weight:600}
.steps .current b{background:var(--amber);border-color:var(--amber);color:var(--ink)}
.steps .complete{color:var(--warm)}
.content{padding:36px var(--gutter) 60px}
.portal-body{max-width:none;overflow-wrap:break-word}
.portal-body.admin-wide{max-width:none;box-sizing:border-box}
.page-intro{font-size:17px;line-height:1.65;max-width:760px;margin:0 0 28px}
.page-note{font-size:16px;line-height:1.65;color:var(--muted);max-width:760px;margin:28px 0 0}

/* ------------------------------------------------------------------ panels, forms, buttons */
.panel{padding:32px;background:var(--warm);border:1px solid var(--line);border-radius:8px;margin-bottom:24px;min-width:0}
.panel>h2:first-child,.panel>.eyebrow+h2{margin-top:0}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.two-col>.panel{margin:0}
.fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
form{margin:0}
.field{display:block;margin:0 0 24px;min-width:0}
.field>span{display:block;font-size:14px;font-weight:600;margin-bottom:8px;line-height:1.55}
.field input,.field select,.field textarea{display:block;width:100%;min-height:52px;background:var(--paper);border:1px solid var(--muted);border-radius:4px;color:var(--ink);padding:13px 14px;line-height:1.4;font-size:16px}
.field input[type=date],.field input[type=time]{height:52px;padding-top:0;padding-bottom:0}
.field textarea{height:104px;resize:vertical}
/* one thin chevron for every portal select, drawn in CSS so Chromium, Safari and Firefox look the same.
   Its right edge sits 18px in, level with the right edge of the date and time picker icons; the text never runs under it. */
.field select,.model-app .field select{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding-right:48px;text-overflow:ellipsis;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.25l5 5 5-5' fill='none' stroke='%2314212C' stroke-width='1.5' stroke-linecap='square'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 17px center;background-size:12px 8px}
.field select::-ms-expand{display:none}
.field select:disabled{cursor:not-allowed;opacity:.55}
.field small{margin-top:7px}
.field .error,.error{color:var(--err);font-size:16px;line-height:1.5}
small.error{margin-top:7px}
.check{display:flex;align-items:flex-start;gap:13px;margin:20px 0;font-size:16px;line-height:1.55;flex-wrap:wrap}
.check input{appearance:none;-webkit-appearance:none;background:var(--warm);width:21px;height:21px;flex:0 0 21px;margin:3px 0 0;border:1.5px solid var(--muted);border-radius:3px;cursor:pointer}
.check input:checked{background:var(--navy) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3.2 3L13 4.5' fill='none' stroke='%23F4F0E6' stroke-width='2'/%3E%3C/svg%3E") center/16px no-repeat;border-color:var(--navy)}
.check label{flex:1;min-width:0}
.check a{text-decoration:underline}
.check small.error{flex:0 0 100%;padding-left:34px}
.check.has-error input{border-color:var(--err)}
.check.has-error label{color:var(--err)}
.button{display:inline-flex;justify-content:space-between;align-items:center;gap:24px;padding:14px 22px;min-height:52px;background:var(--navy);color:var(--warm);text-decoration:none;font-size:16px;font-weight:500;line-height:1.35;border:1px solid var(--navy);border-radius:4px;text-align:left;cursor:pointer;max-width:100%}
.button .arrow{font-size:20px;line-height:1;flex:none}
.button.primary{background:var(--amber);border-color:var(--amber);color:var(--ink)}
.button.quiet,.button.secondary,.button:not(.primary){color:var(--ink);background:transparent}
.topbar .button.quiet{color:var(--warm);border-color:var(--line);background:transparent}
.button.danger{color:var(--err);border-color:var(--err);background:transparent}
.button.text-button{color:var(--ink);border:0;background:transparent;padding:8px 0;min-height:44px;gap:14px;text-decoration:underline}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:16px 0}
.actions form{margin:0}
.action-footer{margin-top:28px}
.action-footer>.button{min-width:210px}
.stack-actions{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.stack-actions .button{width:100%}
.badge{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:600;line-height:1.45;border:1px solid var(--muted);color:var(--ink);padding:6px 10px;text-transform:uppercase;letter-spacing:.035em;max-width:100%}
.badge.success,.badge.good{color:var(--ok);border-color:var(--ok)}
.badge.pending{color:var(--rust);border-color:var(--rust)}
.badge.error,.badge.warn{color:var(--err);border-color:var(--err)}
.status-row{display:flex;gap:10px;flex-wrap:wrap;margin:24px 0}
.ok{color:var(--ok);font-size:16px;line-height:1.65}
.notice{padding:24px 28px;border-left:4px solid var(--rust);background:var(--warm);margin:0 0 28px;font-size:16px;line-height:1.65}
.notice>p:first-child{margin-top:0}
.notice-row{display:flex;align-items:center;justify-content:space-between;gap:36px}
.notice-row p{margin-bottom:0}
.notice-row .button{flex:none}
.metadata{margin:24px 0}
.key-value{display:grid;grid-template-columns:155px minmax(0,1fr);gap:20px;border-bottom:1px solid var(--line);padding:11px 0}
.key-value:first-child{padding-top:0}
.key-value dt{font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding-top:3px}
.key-value dd{margin:0;overflow-wrap:anywhere}
.key-value dd .badge{text-wrap:balance}
.person>a{font-size:16px;font-weight:600}
.person small{margin-top:5px;overflow-wrap:anywhere}
.legal-text{font-size:16px;line-height:1.65}
.legal-text p{margin:12px 0}
.legal-text h3{font-size:24px}
details.raw{margin-top:6px}
details.raw summary{display:inline-block;cursor:pointer;font-size:14px;color:var(--muted);text-decoration:underline;padding:8px 0}
details.raw code{display:block;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:4px;font-size:13px}
time small.utc,.utc{display:inline;font-size:14px;color:var(--muted);margin-left:6px}
.back-link{display:inline-block;margin:0 0 26px}

/* ------------------------------------------------------------------ request, booking, terms, welcome */
.request-layout{grid-template-columns:1.05fr 1fr}
.request-layout .panel h2{margin-bottom:28px}
.slot-list .slot{display:flex;align-items:center;gap:24px;justify-content:space-between;border-top:1px solid var(--line);padding:20px 0}
.slot-list .slot:first-child{border-top:0;padding-top:0}
.slot-list .slot .button{flex:none;white-space:nowrap}
.slot-list h3{font-size:27px}
.slot-list p{margin:4px 0 0;color:var(--muted)}
.booking-states{display:grid;grid-template-columns:1.3fr 1fr;gap:32px}
.confirmation{border-top:4px solid var(--ok)}
.confirmation h2{font-size:46px}
.booking-time{border-block:1px solid var(--line);margin:30px 0;padding:26px 0}
.booking-time strong{display:block;font:400 34px League,Impact,sans-serif}
.terms-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:28px}
.terms-grid .panel{display:flex;flex-direction:column;padding:28px;margin:0}
.terms-head{display:flex;gap:20px;min-height:96px}
.terms-head h3{font-size:32px}
.section-no{font:14px/1.5 Inter,Arial,sans-serif;letter-spacing:.05em;color:var(--rust);padding-top:8px}
.terms-grid .legal-text{margin:0 0 28px}
.terms-grid .check{margin-top:auto;margin-bottom:0;padding-top:22px;border-top:1px solid var(--line)}
.welcome-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:24px}
.welcome-feature{background:var(--warm);padding:38px;border:1px solid var(--line);border-radius:8px}
.welcome-feature h2{font-size:52px;max-width:600px}
.welcome-feature p{font-size:18px;max-width:610px;margin:24px 0 30px;line-height:1.65}
.next-action{padding:38px;border:1px solid var(--navy);border-radius:8px;background:var(--navy);color:var(--warm)}
.next-action .eyebrow{color:var(--amber)}
.next-action h2{font-size:40px}
.next-action p{margin:18px 0 24px;line-height:1.65}
.next-action .button{background:var(--amber);border-color:var(--amber);color:var(--ink)}
.outline-symbol{font:50px/1 League,Impact,sans-serif;color:var(--amber);margin:28px 0}

/* ------------------------------------------------------------------ NDA signing */
.signing-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:28px;align-items:start}
.signing-layout>div>.panel:last-child{margin-bottom:0}
.signing-layout .metadata{margin-top:8px}
.nda-reader,.legal-reader{max-height:690px;overflow:auto;border:1px solid var(--muted);padding:28px;background:var(--paper);font-size:16px;scrollbar-color:var(--muted) var(--paper);scrollbar-width:thin;margin:0 0 18px}
.nda-reader h3{margin:16px 0 8px;font-size:30px}
.nda-reader section h3{font-family:Inter,Arial,sans-serif;font-size:16px;font-weight:600;line-height:1.4;margin:20px 0 8px}
.nda-reader p{font-size:16px;line-height:1.65;margin:12px 0}
.nda-entity{margin-top:8px}
.sign-form fieldset{border:0;margin:25px 0 12px;padding:0;min-width:0}
.sign-form legend{font-size:14px;font-weight:600;margin:0 0 14px;padding:0}
.sign-kind{display:flex;gap:6px 24px;flex-wrap:wrap}
.sign-kind legend{width:100%}
.radio{display:inline-flex;align-items:center;gap:8px;line-height:1.5;min-height:44px;cursor:pointer}
.radio input{accent-color:var(--navy);width:18px;height:18px;margin:0}
.sig-preview{font:italic 38px/1.6 'Snell Roundhand','Segoe Script','Brush Script MT','Lucida Handwriting',cursive;border-bottom:1px solid var(--muted);padding:4px 0 10px;margin-bottom:32px;min-height:84px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.sig-canvas,.sign-form .signature-pad{display:block;width:100%;max-width:600px;aspect-ratio:10/3;height:auto;border:1px solid var(--muted);border-radius:4px;background:#fff;touch-action:none;cursor:crosshair}
.otp-step{border-top:1px solid var(--line);margin-top:28px;padding-top:28px}
.otp-step h3{font-size:30px}
.otp-step p{margin:16px 0 22px}
.otp-step .actions{margin:0 0 24px}
.sign-status{min-height:1.4em;font-size:16px;margin:14px 0}
.sign-status.bad{color:var(--err)}

/* ------------------------------------------------------------------ documents and circle */
.document-row{display:flex;align-items:center;gap:25px;padding:26px 0;border-top:1px solid var(--line)}
.document-row:first-of-type{padding-top:20px}
.document-title{flex:1;min-width:0}
.document-title h3{font-size:30px;line-height:1.15}
.document-title p{margin:8px 0 0;color:var(--muted)}
.file-icon{display:flex;width:48px;height:62px;border:1px solid var(--muted);align-items:center;justify-content:center;font:26px League,Impact,sans-serif;flex:none}
.document-row>.actions{justify-content:flex-end;flex:none;margin:0}
.panel.documents h2{margin-bottom:22px}
.invite-layout{display:grid;grid-template-columns:1fr 1.1fr;gap:28px;align-items:start}
.invite-layout .panel{margin:0}
.invite-cards article{padding:24px 0;border-top:1px solid var(--line)}
.invite-cards article:first-child{padding-top:0;border-top:0}
.invite-cards .badge{margin:18px 0 24px}
.invite-cards article p{margin:0 0 24px}
.invite-cards .person>a,.invite-cards .person strong{font-size:20px}
.quota{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:22px;margin-top:24px}
.quota strong{font:400 50px/1 League,Impact,sans-serif}
.quota-lines{display:flex;gap:7px;width:100%;margin-top:6px}
.quota-lines i{height:4px;flex:1;background:var(--rust)}
.quota-lines .empty{background:var(--line)}
.quota+.helper{margin-bottom:28px}

/* ------------------------------------------------------------------ tables */
.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0}
body.portal .table{font-size:15px;line-height:1.5}
table.table{width:100%;border-collapse:collapse}
.table th{font-size:13px;text-transform:uppercase;letter-spacing:.04em;line-height:1.4;text-align:left;vertical-align:bottom;font-weight:600;border-bottom:1px solid var(--muted);padding:14px 12px}
.table td{font-size:16px;line-height:1.5;border-bottom:1px solid var(--line);padding:18px 8px;vertical-align:top;overflow-wrap:normal}
.table td:first-child,.table th:first-child{padding-left:0}
.table td:last-child,.table th:last-child{padding-right:0}
.table td.nowrap{white-space:nowrap}
.table td .button{font-size:14px;min-height:44px;padding:10px 14px;gap:15px}
.table td small{font-size:14px;margin-top:6px}
.table td .actions{gap:10px;margin:0}
.table td a:not(.button){text-underline-offset:4px}
.table td .person{min-width:145px}
.table td .field{margin-bottom:10px}
.table td .field input{min-width:150px}
.table td .badge{padding:5px 7px}
.table td p{margin:6px 0 0}
.table code{font-size:13px}
.email{display:inline-block;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.event-code,.table .mono{font-size:13px;color:var(--muted);margin:9px 0 5px}
.score{font:36px/1.1 League,Impact,sans-serif}
.rank{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.empty-state{display:flex;gap:15px;align-items:center;border-top:1px solid var(--line);padding-top:18px}
.empty-state>span{color:var(--ok);font-size:24px}
.placeholder-panel{border:1px dashed var(--line);padding:40px;max-width:640px;border-radius:8px}

/* ------------------------------------------------------------------ admin shell (persistent side navigation) */
body.portal-admin{display:grid;grid-template-columns:248px minmax(0,1fr)}
.sidebar{background:var(--navy);color:var(--paper);padding:34px 24px;min-height:100vh}
.sidebar .brand{width:176px}
.sidebar>.eyebrow{color:var(--amber);margin:38px 12px 14px}
.section-nav{display:flex;flex-direction:column;gap:5px}
.section-nav a{padding:14px 12px;display:flex;gap:10px;font-size:14px;line-height:1.5;text-decoration:none;border-radius:4px}
.section-nav a:hover{background:#1c3140}
.section-nav a.selected{background:var(--amber);color:var(--ink);font-weight:600}
.nav-index{font-size:13px}
.sidebar-note{border-top:1px solid var(--muted);margin:42px 12px;padding-top:22px;font-size:16px;color:var(--line)}
.page-shell{min-width:0}
.portal-admin .topbar{height:80px;padding:0 36px;background:var(--paper);color:var(--ink);border-bottom:1px solid var(--line)}
.portal-admin .header-label{color:var(--muted);border:0;padding:0}
.portal-admin .topbar .button.quiet{color:var(--ink);border-color:var(--navy)}
.portal-admin .page-heading{background:var(--paper);color:var(--ink);padding:38px 36px 28px}
.portal-admin .page-heading .eyebrow{color:var(--rust)}
.portal-admin .page-heading h1{font-size:60px;margin-top:14px}
.portal-admin .content{padding:0 36px 48px}
.portal-admin .panel{padding:24px}
.portal-admin .site-footer{padding-inline:36px}
.stats{display:grid;grid-template-columns:repeat(5,1fr);margin-bottom:30px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--warm)}
.stats>div{padding:18px;border-left:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0}
.stats>div:nth-child(5n+1){border-left:0}
.stats b{font:400 36px/1 League,Impact,sans-serif;display:block;margin-bottom:12px}
.stats span{display:block;font-size:14px;line-height:1.5}
.stats>div{position:relative}
.stats a{text-decoration:none}
.stats a::after{content:"";position:absolute;inset:0}
.stats a:hover{text-decoration:underline}
.person-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:28px;align-items:start;margin-bottom:24px}
.person-layout .panel{margin-bottom:24px}
.person-layout>div>.panel:last-child,.person-layout>.panel:last-child{margin-bottom:0}
.slots-layout .panel:first-child{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:end}
.slots-layout .panel:first-child h2{grid-column:1/-1;margin:0}
.slots-layout .panel:first-child .field{margin:0}
.slots-layout .panel:first-child .actions{grid-column:1;margin:0}
.slots-layout .panel:first-child form{display:contents}
.queue-priority{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start}
.queue-priority .metadata{grid-column:1;margin:0}
.queue-priority>.badge{justify-self:start}
.queue-priority>.button{align-self:end;justify-self:start}
.filters{display:flex;gap:20px;align-items:flex-end;flex-wrap:wrap}
.filters .field{margin:12px 0 0;flex:1;min-width:200px}
.filters .button{flex:none}
.group-origin{display:flex;align-items:center;gap:25px;margin:8px 0 24px;flex-wrap:wrap}
.circle-groups td{max-width:210px}
.audit-table th:nth-child(1){width:50px}
.audit-table th:nth-child(2){width:140px}
.audit-table th:nth-child(3){width:200px}
.audit-table th:nth-child(5){width:94px}
.signing-layout.admin-sign .key-value{display:block}
.signing-layout.admin-sign .key-value dt{margin-bottom:6px}
.signing-layout.admin-sign .key-value dd.mono{font-size:14px}

/* ------------------------------------------------------------------ gate (sign in, confirmation number) */
body.portal-gate{background:var(--navy);color:var(--paper);min-height:100svh}
.portal-gate main{max-width:620px;margin:0 auto;padding:20px 0 65px}
.portal-gate .page-heading{background:transparent;padding:24px 0}
.portal-gate .page-heading h1{font-size:68px}
.portal-gate .topbar{background:var(--navy)}
.auth-form{color:var(--ink);padding:36px 42px;margin:12px 0 0}
.auth-form .eyebrow{color:var(--rust)}
.auth-form h2{font-size:34px}
.auth-form .page-intro{font-size:17px;margin:0 0 24px}
.auth-form .button{width:100%}
.auth-form .actions{margin:0}
.auth-form p.small a,.auth-form>p a{text-decoration:underline}
.auth-motto{padding-top:22px;margin-top:24px;border-top:1px solid var(--line);font-size:16px}
.otp-input{letter-spacing:.35em;font-size:24px!important}
.auth-form .error{margin:0 0 16px}
.auth-form .error:empty{display:none}

/* ------------------------------------------------------------------ footer */
.site-footer{background:var(--deep);color:var(--paper);padding:32px var(--gutter) 36px}
.footer-bottom{display:flex;justify-content:space-between;gap:30px;border-bottom:1px solid var(--muted);padding-bottom:22px;font-size:14px;flex-wrap:wrap}
.footer-bottom nav{display:flex;gap:30px}
.site-footer a{display:inline-block;padding:4px 0}
.site-footer .disclosure{font-size:16px;line-height:1.6;color:var(--line);margin:20px 0 0;max-width:1150px}

/* tablet: let the top bar wrap instead of pushing the page wider; 1024 and up unchanged */
@media (max-width:1023px){
  .topbar{height:auto;min-height:92px;flex-wrap:wrap;gap:12px 30px;padding-top:16px;padding-bottom:16px}
  .top-links{flex-wrap:wrap;gap:4px 28px;min-width:0}
}

/* ------------------------------------------------------------------ phone: one column at 650px, 24px gutters */
@media (max-width:650px){
  :root{--gutter:24px}
  h2{font-size:34px}
  h3{font-size:28px}
  .topbar{height:auto;min-height:86px;padding:24px;flex-wrap:wrap;gap:20px}
  .brand{width:169px}
  .header-label{display:none}
  .top-links{width:100%;margin:0;gap:18px;flex-wrap:wrap}
  .top-links>a{font-size:13px;padding:10px 0}
  .top-links .button{min-height:40px;padding:8px 12px;font-size:13px;width:auto;margin-left:auto}
  .top-links .button .arrow{display:none}
  .page-heading{padding:30px 24px}
  .page-heading h1{font-size:56px;letter-spacing:0;overflow-wrap:anywhere}
  .steps{gap:8px;margin:24px 0 0;padding:18px 0 0;border-bottom:0;align-items:flex-start}
  .steps li{flex-direction:column;align-items:flex-start;gap:8px;flex:1;line-height:1.4;min-width:0}
  .steps b{width:24px;height:24px}
  .content{padding:26px 24px 38px}
  .portal-body p,.portal-body li,.portal-body dd{font-size:16px}
  .panel{padding:24px 20px;margin-bottom:22px}
  .two-col,.request-layout,.signing-layout,.invite-layout,.booking-states,.person-layout,.welcome-layout,.terms-grid,.queue-priority{display:block}
  .two-col>.panel,.invite-layout .panel{margin-bottom:22px}
  .fields-grid{display:block}
  .check{gap:12px;margin:24px 0}
  .check input{width:22px;flex-basis:22px;height:22px}
  .button{width:100%;gap:16px;min-height:54px;padding:15px 18px}
  .action-footer>.button{min-width:0}
  .actions{width:100%;gap:10px}
  .actions form{width:100%}
  .metadata{margin:20px 0}
  .key-value{display:block;padding:13px 0}
  .key-value dt{margin-bottom:7px;padding:0}
  .terms-head{min-height:0;margin-bottom:22px}
  .terms-head h3{font-size:34px}
  .terms-grid .panel{padding:24px 20px;margin-bottom:22px}
  .welcome-feature{padding:26px 22px;margin-bottom:22px}
  .welcome-feature h2{font-size:43px}
  .welcome-feature p{margin:20px 0 26px}
  .next-action{padding:26px 22px}
  .next-action h2{font-size:36px;margin:20px 0}
  .outline-symbol{margin:22px 0}
  .status-row{gap:8px;margin:22px 0}
  .nda-reader,.legal-reader{max-height:640px;padding:20px 18px}
  .signing-layout>div>.panel{margin-bottom:22px}
  .sig-preview{font-size:35px;min-height:64px}
  .document-row{display:grid;grid-template-columns:36px minmax(0,1fr);gap:18px 14px;padding:26px 0}
  .file-icon{width:36px;height:48px;font-size:23px}
  .document-title h3{font-size:28px}
  .document-row>.actions{grid-column:1/-1;flex-direction:column;align-items:stretch}
  .document-row>.actions .badge{align-self:flex-start}
  .notice{padding:22px 18px}
  .notice-row{display:block}
  .notice-row .button{margin-top:24px}
  .slot-list .slot{display:block}
  .slot-list .slot .button{margin-top:14px}
  .site-footer{padding:28px 24px 30px}
  .footer-bottom{display:block;font-size:14px}
  .footer-bottom nav{margin-top:24px;gap:24px;flex-wrap:wrap}
  .portal-gate main{padding:0 24px 32px}
  .portal-gate .page-heading{padding:30px 0}
  .portal-gate .page-heading h1{font-size:62px}
  .auth-form{padding:27px 22px;margin:5px 0 0}
  /* admin: the side navigation becomes a block above the page */
  body.portal-admin{display:block}
  .sidebar{min-height:0;padding:22px 24px}
  .sidebar>.eyebrow{margin:22px 0 10px}
  .section-nav{flex-direction:row;flex-wrap:wrap;gap:4px}
  .section-nav a{padding:10px 12px;min-height:44px;align-items:center}
  .nav-index{display:none}
  .sidebar-note{display:none}
  .portal-admin .topbar{padding:14px 24px;min-height:70px}
  .portal-admin .page-heading{padding:30px 24px 22px}
  .portal-admin .page-heading h1{font-size:56px}
  .portal-admin .content{padding:0 24px 38px}
  .portal-admin .panel{padding:24px 20px}
  .portal-admin .site-footer{padding-inline:24px}
  .stats{grid-template-columns:repeat(2,1fr)}
  .stats>div:nth-child(5n+1){border-left:1px solid var(--line)}
  .stats>div:nth-child(2n+1){border-left:0}
  .slots-layout .panel:first-child{display:block}
  .slots-layout .panel:first-child .field{margin-bottom:24px}
  table.table{min-width:620px}
  .email{max-width:220px}
  .filters{display:block}
  .filters .field{margin:0 0 20px}
  .filters .button{margin-bottom:12px}
  .otp-input{letter-spacing:.2em;font-size:24px!important}
}
@media print{.skip{display:none}}
.auth-form .eyebrow{margin-bottom:10px}
.slot-list .utc{font:400 14px/1.4 Inter,Arial,sans-serif;color:var(--muted);margin-left:10px;white-space:nowrap}
.otp-step p.small,.sign-pane p.small{color:var(--ink)}
.table .person small{overflow-wrap:normal;word-break:normal;white-space:nowrap}
@media (max-width:650px){.portal-admin .topbar .top-links{gap:14px 18px}.portal-admin .topbar form.inline{margin-left:auto}}

/* ------------------------------------------------------------------ investor overview, number tables, link cards */
[hidden]{display:none!important}
.top-links>a.current{text-decoration:underline;text-decoration-color:var(--amber);text-decoration-thickness:2px;text-underline-offset:8px;font-weight:600}
.figures{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin:0 0 28px}
.figure{background:var(--warm);border:1px solid var(--line);border-radius:8px;padding:28px;min-width:0}
.figure strong{display:block;font:400 64px/1 League,Impact,sans-serif;margin:14px 0 12px;color:var(--ink);letter-spacing:-.01em}
.figure small{font-size:15px;line-height:1.5}
.link-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:0 0 24px}
.link-card{display:flex;flex-direction:column;background:var(--navy);color:var(--warm);border:1px solid var(--navy);border-radius:8px;padding:32px;text-decoration:none;min-width:0}
.link-card .eyebrow{color:var(--amber)}
.link-card h3{font-size:40px;margin:14px 0 0}
.link-card p{color:var(--paper);margin:14px 0 24px;line-height:1.65}
.link-card .more{margin-top:auto;display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--muted);padding-top:18px;color:var(--amber);font-weight:600}
.link-card:hover .more{text-decoration:underline}
.link-card:focus-visible{outline-color:var(--amber)}
.panel.process .steps{margin-top:0;border-top:0}
.panel.process .steps li{color:var(--ink)}
.panel.process .steps b{border-color:var(--muted)}
.panel.process .steps .complete{color:var(--ink)}
.panel.process .steps .complete b{background:var(--ok);border-color:var(--ok);color:var(--warm)}
.table .num,.data-table .num{text-align:right;font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}
.table tbody th,.data-table tbody th{font-size:16px;text-transform:none;letter-spacing:0;font-weight:600;line-height:1.4;border-bottom:1px solid var(--line);padding:18px 8px 18px 0;vertical-align:top;text-align:left}
.table tbody th small,.data-table tbody th small{font-weight:400;font-size:14px;margin-top:4px}
.data-table.compact td{font-size:17px}
.data-table tbody tr:nth-child(even){background:var(--paper)}
.data-table tr.total th,.data-table tr.total td{font-weight:700;border-top:2px solid var(--navy);border-bottom:2px solid var(--navy);background:transparent}
.data-table.compact th.num,.data-table.compact td.num{padding-left:12px}
.panel.scenarios .page-intro{max-width:none}
@media (max-width:1100px){.figures{grid-template-columns:1fr 1fr}.link-cards{grid-template-columns:1fr}}
@media (max-width:650px){
  .figures{grid-template-columns:1fr 1fr;gap:12px}
  .figure{padding:18px 16px}
  .figure strong{font-size:44px}
  .link-card{padding:26px 22px}
  .panel.process .steps{flex-wrap:wrap}
  .panel.process .steps li{flex:1 1 40%}
  table.data-table.compact{min-width:0}
  .data-table.compact th,.data-table.compact td{padding-left:6px;padding-right:6px}
  .data-table.compact th.num{font-size:12px;letter-spacing:.02em}
  .data-table.compact td{font-size:16px}
  .data-table tbody th{padding-right:4px;font-size:15px}
}
.notice>p:last-child{margin-bottom:0}
@media (max-width:650px){
  .table-wrap:has(.data-table){overflow-x:auto}
  .data-table.compact th,.data-table.compact td{padding-left:3px;padding-right:3px}
  .data-table.compact td{font-size:15px}
  .data-table.compact tbody th{font-size:14px;width:26%;padding-right:2px}
  .data-table.compact tbody th small{font-size:12px}
  .data-table.compact th.num{font-size:11px;letter-spacing:0}
  .data-table.compact th:first-child{font-size:11px}
}

/* ------------------------------------------------------------------ layout review fixes, 9 Oct 2026 (colours, fonts, sizes and borders unchanged) */
/* admin top bar: label, links and the button never wrap inside the bar; if they do not fit, the links drop to a second row */
.portal-admin .topbar{height:auto;min-height:80px;padding:12px 36px;flex-wrap:wrap}
.portal-admin .header-label,.portal-admin .top-links>a,.portal-admin .top-links .button{white-space:nowrap}
.portal-admin .top-links{flex-wrap:wrap;gap:4px 22px}
.portal-admin .topbar{column-gap:24px}

/* tables that scroll sideways inside their panel show an edge shadow on the side that has more (the cover gradients hide it at either end) */
.table-wrap,.model-app .table-wrap{-webkit-overflow-scrolling:auto;background:
  linear-gradient(to right,var(--warm) 30%,rgba(244,240,230,0)) left center/44px 100% no-repeat local,
  linear-gradient(to left,var(--warm) 30%,rgba(244,240,230,0)) right center/44px 100% no-repeat local,
  radial-gradient(farthest-side at 0 50%,rgba(20,33,44,.22),rgba(20,33,44,0)) left center/14px 100% no-repeat scroll,
  radial-gradient(farthest-side at 100% 50%,rgba(20,33,44,.22),rgba(20,33,44,0)) right center/14px 100% no-repeat scroll}
/* table columns keep a sensible minimum: headers, dates, badges and row buttons stay on one line; the table scrolls instead */
.table td.nowrap,.table td .badge,.table td:last-child .actions{white-space:nowrap}
.table td:last-child .actions{flex-wrap:nowrap}
/* laptop widths: the sidebar takes 248px, so the cell padding tightens a little and the tables fit their panel from 1280 up */
@media (min-width:1024px) and (max-width:1439px){
  .portal-admin .topbar,.portal-admin .page-heading,.portal-admin .content,.portal-admin .site-footer{padding-left:28px;padding-right:28px}
  .portal-admin .panel{padding-left:20px;padding-right:20px}
}
@media (max-width:1439px){
  .table th{padding-left:7px;padding-right:7px}
  .table td{padding-left:5px;padding-right:5px}
  .table td:first-child,.table th:first-child{padding-left:0}
  .table td:last-child,.table th:last-child{padding-right:0}
}
.filters .field{min-width:140px}
.signing-layout:has(>div:only-child){grid-template-columns:minmax(0,1fr)}

/* tablet and phone: every layout that was sized for a wide screen steps down to one column below 1024.
   The admin side navigation becomes a wrapped row above the page, exactly as it already does on a phone. */
@media (max-width:1023px){
  body.portal-admin{display:block}
  .sidebar{min-height:0}
  .sidebar>.eyebrow{margin:22px 0 10px}
  .section-nav{flex-direction:row;flex-wrap:wrap;gap:4px}
  .section-nav a{padding:10px 12px;min-height:44px;align-items:center}
  .nav-index,.sidebar-note{display:none}
  .two-col,.request-layout,.booking-states,.terms-grid,.person-layout,.queue-priority,.signing-layout.admin-sign{grid-template-columns:minmax(0,1fr)}
  .queue-priority{display:grid;gap:18px}
  .terms-head{min-height:0}
  .key-value{grid-template-columns:minmax(110px,155px) minmax(0,1fr)}
}
@media (min-width:651px) and (max-width:1023px){
  .sidebar{padding:22px 36px}
  .stats{grid-template-columns:repeat(3,1fr)}
  .stats>div:nth-child(5n+1){border-left:1px solid var(--line)}
  .stats>div:nth-child(3n+1){border-left:0}
}
@media (min-width:651px) and (max-width:1100px){
  .slots-layout .panel:first-child{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* phone */
@media (max-width:650px){
  .email{max-width:none}
  .topbar{gap:6px 20px;padding:16px 24px 8px}
  .portal-admin .topbar{padding:14px 24px 8px}
  .brand{padding:10px 0;margin:-10px 0}
  .topbar .top-links,.portal-admin .topbar .top-links{flex-wrap:nowrap;overflow-x:auto;gap:22px;margin:0;padding:4px 0;scrollbar-width:none}
  /* Sign out stays pinned at the right end while the links scroll underneath it; a short fade on its left edge shows there is more */
  .top-links form.inline{position:sticky;right:0;z-index:1;flex:none;margin-left:auto;padding-left:6px;background:var(--navy)}
  .portal-admin .top-links form.inline{background:var(--paper)}
  .top-links form.inline::before{content:"";position:absolute;right:100%;top:0;bottom:0;width:30px;background:linear-gradient(to right,rgba(19,33,43,0),var(--navy))}
  .portal-admin .top-links form.inline::before{background:linear-gradient(to right,rgba(240,237,229,0),var(--paper))}
  .top-links::-webkit-scrollbar{display:none}
  .top-links>a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding:0;white-space:nowrap;flex:none}
  .top-links .button{min-height:44px;flex:none}
  .top-links>a:focus-visible,.top-links .button:focus-visible{outline-offset:0}
  .portal-admin .topbar form.inline{margin-left:auto;flex:none}
  .site-footer a{padding:12px 0}
  .person>a,.table td a:not(.button){display:inline-block;padding:12px 0;margin:-12px 0}
  .back-link{padding:12px 0;margin:-12px 0 14px}
  details.raw summary{padding:12px 0;min-width:44px}
  .stats a{display:block}
}

/* small items agreed with the server builder (markup lands on merge) */
.booking-time .utc{display:block;margin:6px 0 0;font:400 14px/1.4 Inter,Arial,sans-serif;letter-spacing:0;color:var(--muted)}
.signing-single .stack-actions{max-width:420px}
.circle-table{table-layout:fixed;min-width:860px}
body.portal-framed{padding:0 24px}
@media (max-width:650px){body.portal-framed{padding:0 16px}}
.page-note.page-note-above{margin:0 0 24px}
/* Circle tables: fixed columns, so the Sent time may wrap to two lines instead of running into the note beside it (ship-critic, final round). */
.circle-table td{overflow-wrap:anywhere}.circle-table td.nowrap{white-space:normal}
/* Booked page: the slot list stacks under the confirmation up to 1199px, so slot headings never wrap to four lines beside the button (final re-measure NEW-1, 1024). */
@media (max-width:1199px){.booking-states{grid-template-columns:minmax(0,1fr)}}

/* ------------------------------------------------------------------ help buttons in the top bar (guide on), 9 Oct 2026
   Aidan: nothing floats over the page. "Watch the video" (pages with a how-to video) and "Ask a question" sit in the top bar in
   the Sign out style: before Sign out on wide screens, beside the logo on phones (short labels; full names in aria-label).
   The Ask panel (guide.js) opens just below the top bar. Colours, font and border are the existing top bar ones. */
.topbar{position:relative}
.top-help{display:flex;align-items:center;gap:10px;flex:none}
.portal-gate .top-help{margin-left:auto}
.top-help-btn{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:8px 14px;background:transparent;color:var(--warm);border:1px solid var(--line);border-radius:4px;font-size:14px;font-weight:500;line-height:1.35;white-space:nowrap;cursor:pointer}
.top-help-btn[aria-expanded=true]{border-color:var(--amber)}
.top-help-icon{flex:none;display:inline-grid;place-items:center;width:18px;height:18px;border:1.5px solid var(--amber);border-radius:50%;color:var(--amber);font-size:11px;font-weight:700;line-height:1}
.top-help-ask .top-help-icon::before{content:"?"}
.top-help-watch .top-help-icon::before{content:"";width:0;height:0;margin-left:2px;border-style:solid;border-width:4px 0 4px 6px;border-color:transparent transparent transparent var(--amber)}
.top-help-short{display:none}
.topbar.has-help .top-links>a,.topbar.has-help .top-links .button{white-space:nowrap}
@media print{.top-help{display:none}}
/* Fitting the bar (measured at every width from 320 to 1920). Menus come in three sizes, marked by the server: none (signed
   out), nav-mid (the menu before the NDA) and nav-long (the full investor menu). The "Private investor platform" label stays
   wherever it fits and steps aside only where it would collide; the buttons take their short labels (Video, Ask) first. */
@media (max-width:1279px){.top-help-long{display:none}.top-help-short{display:inline}}
@media (min-width:1280px) and (max-width:1439px){.topbar.nav-mid .top-help-long,.topbar.nav-long .top-help-long{display:none}.topbar.nav-mid .top-help-short,.topbar.nav-long .top-help-short{display:inline}}
@media (min-width:1440px) and (max-width:1679px){.topbar.nav-long .top-help-long,.topbar.nav-long .top-help-icon{display:none}.topbar.nav-long .top-help-short{display:inline}.topbar.nav-long .top-help-btn{padding:8px 10px}.topbar.nav-long .top-links .top-help{margin-right:-12px}}
@media (min-width:1280px) and (max-width:1439px){body.portal>.topbar.nav-long .header-label{display:none}}
@media (min-width:1024px) and (max-width:1239px){body.portal>.topbar.nav-mid .header-label{display:none}}
/* Two rows where one row cannot hold everything (the full investor menu from 1024 to 1279, every menu below 1024, phones):
   row one is the logo (and the label where it fits) with the help buttons at its right, row two is the menu with Sign out. */
@media (min-width:1024px) and (max-width:1279px){
  .topbar.has-help.nav-long{height:auto;min-height:92px;flex-wrap:wrap;row-gap:10px;padding-top:16px;padding-bottom:16px}
  .topbar.has-help.nav-long .brand{display:flex;align-items:center;min-height:44px}
  .topbar.has-help.nav-long .top-links{width:100%;margin:0}
  .topbar.has-help.nav-long .top-links .top-help{position:absolute;top:17px;right:44px}
  .topbar.has-help.nav-long .top-links form.inline{margin-left:auto}
}
@media (min-width:651px) and (max-width:1023px){
  .topbar.has-help{row-gap:10px}
  .topbar.has-help .top-links{column-gap:22px}
  .portal-gate .topbar.has-help{flex-wrap:nowrap;column-gap:24px}
  .topbar.has-help .brand{display:flex;align-items:center;min-height:44px}
  .topbar.has-help .top-links{width:100%;margin:0}
  .topbar.has-help .top-links .top-help{position:absolute;top:17px;right:44px}
  .topbar.has-help .top-links form.inline{margin-left:auto}
}
/* to 760 (767 on the sign in pages) the label cannot sit on one line beside the logo and the buttons, so it steps aside
   (as it already does on phones) */
@media (min-width:651px) and (max-width:760px){.topbar.has-help .header-label{display:none}}
@media (min-width:651px) and (max-width:767px){.portal-gate .topbar.has-help .header-label{display:none}}
/* phones: the buttons sit in the first header row, right of the logo, with at least 12px clear of it from 320 to 650;
   44px targets; the links keep their scrolling row with Sign out pinned */
@media (max-width:650px){
  .topbar.has-help .brand{display:flex;align-items:center;min-height:44px;padding:0;margin:0}
  .topbar.has-help .top-links .top-help{position:absolute;top:16px;right:24px}
  .portal-gate .topbar.has-help{flex-wrap:nowrap;column-gap:12px}
  .topbar.has-help .top-help{gap:8px}
  .topbar.has-help .top-help-btn{min-height:44px;min-width:44px;justify-content:center;padding:8px 10px;gap:6px;font-size:13px}
  .topbar.has-help .top-help-btn:focus-visible{outline-offset:0}
}
@media (max-width:399px){.topbar.has-help .top-help-icon{display:none}.topbar.has-help .top-help-btn{padding:8px 12px}}
@media (max-width:349px){.topbar.has-help .top-help-btn{padding:8px 8px}.topbar.has-help .brand{width:150px}}
/* UX fixes, 21 Oct 2026: sign in doors, lost code, needs your action, folded details, phone tables */
.auth-switch{margin:-4px 0 18px;font-size:16px}
.auth-switch a,.auth-help a{text-decoration:underline}
.auth-help{margin:18px 0 0}
.gate-home{margin:22px 0 0;font-size:16px}
.gate-home a{color:var(--warm);text-decoration:underline}
.admin-pw-banner{border-left-color:var(--amber)}
.needs-action h2{margin-bottom:6px}
.action-group{margin-top:22px}
.action-group h3{font:600 15px/1.4 Inter,Arial,sans-serif;letter-spacing:.04em;text-transform:uppercase;color:var(--rust);margin:0 0 8px}
.action-group .count{display:inline-block;min-width:24px;padding:1px 7px;margin-left:6px;border-radius:12px;background:var(--amber);color:var(--ink);text-align:center;letter-spacing:0}
.action-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.action-list li{display:flex;flex-wrap:wrap;gap:4px 18px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--line)}
.action-list li a{font-weight:600;min-width:180px}
.action-list li span{color:var(--muted);font-size:15px}
.pipeline-search{display:flex;gap:14px;align-items:flex-end;margin:0 0 6px}
.pipeline-search .field{flex:1;margin:0}
details.decline-fold summary,details.past-slots summary,details.integrity summary{cursor:pointer;padding:10px 0;text-decoration:underline;color:var(--ink)}
details.past-slots{margin-top:22px}
details.integrity{margin-top:14px}
details.integrity code{overflow-wrap:anywhere}
.decline-panel{margin-top:40px;border-color:var(--err)}
.decline-panel h2{color:var(--err)}
/* Admin tables keep their columns and scroll sideways inside their own box on a phone (review B2). */
@media (max-width:650px){
  .portal-admin .table-wrap{overflow-x:auto}
  .pipeline-search{flex-direction:column;align-items:stretch}
  .action-list li a{min-width:0}
}
/* Admin top bar on a phone: the links wrap onto a second line, so Documents and View as investor are always in sight (review B3). */
@media (max-width:650px){
  .portal-admin .topbar .top-links{flex-wrap:wrap;overflow-x:visible;row-gap:0;column-gap:20px}
  .portal-admin .top-links form.inline{position:static;margin-left:0;padding-left:0}
  .portal-admin .top-links form.inline::before{display:none}
}
/* Ship-critic 21 Oct 2026: a time never breaks inside itself; on a phone admin tables become cards of labelled lines. */
.when>span{white-space:nowrap}
@media (max-width:650px){
  .portal-admin table.table.stack{min-width:0}
  .portal-admin .table-wrap:has(>.table.stack){background:none;overflow-x:visible}
  .portal-admin .table.stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .portal-admin .table.stack,.portal-admin .table.stack tbody,.portal-admin .table.stack tr,.portal-admin .table.stack td{display:block;width:auto}
  .portal-admin .table.stack tr{padding:12px 0;border-bottom:1px solid var(--line)}
  .portal-admin .table.stack td{border:0;padding:4px 0}
  .portal-admin .table.stack td:empty{display:none}
  .portal-admin .table.stack td[data-label]:not([data-label=""])::before{content:attr(data-label);display:block;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);line-height:1.5}
  .portal-admin .table.stack td[colspan]::before{display:none}
  .portal-admin .table.stack td .person{min-width:0}
  .portal-admin .table.stack td .actions{flex-wrap:wrap}
}
