:root { color-scheme: light; --navy:#142235; --gold:#ffbd13; --muted:#718097; --border:#e1e8f0; }
* { box-sizing:border-box; }
body { margin:0; font-family:Inter,Segoe UI,Arial,sans-serif; color:var(--navy); background:#f1f5fa; font-size:14px; }
button,input { font:inherit; } button,a { -webkit-tap-highlight-color:transparent; } button { cursor:pointer; }
button:disabled { opacity:.5; cursor:not-allowed; } [hidden] { display:none!important; }
svg { width:22px; height:22px; flex:none; } img { max-width:100%; } h1,h2,h3,p { margin:0; }
button,a,input { outline-offset:3px; } :focus-visible { outline:3px solid #dd9e00; }
.portal-topbar { height:74px; padding:12px max(24px,calc((100vw - 1180px)/2)); background:var(--navy); display:flex; align-items:center; gap:24px; color:#c5d0df; border-bottom:3px solid var(--gold); }
.portal-topbar a { display:flex; }.portal-topbar img { width:180px; height:46px; }.portal-topbar > span { font-size:12px; border-left:1px solid #445166; padding-left:24px; }.portal-topbar button { margin-left:auto; }
.gold,.secondary,.outline-light { display:inline-flex; align-items:center; justify-content:center; gap:8px; border-radius:7px; min-height:44px; padding:10px 18px; font-weight:600; font-size:13px; text-decoration:none; }
.gold { border:1px solid var(--gold); background:var(--gold); color:var(--navy); }.gold:hover { background:#edab00; }.secondary { background:#fff; color:var(--navy); border:1px solid #d4dee9; }.secondary:hover { background:#f6f8fb; }.outline-light { background:transparent; border:1px solid #5f7087; color:#fff; }
.loading,.empty-state { padding:40px 20px; text-align:center; color:var(--muted); line-height:1.7; }.empty-state { background:#f7f9fc; border-radius:8px; }.empty-state button { margin-top:18px; }
#portalNotice:not(:empty) { position:fixed; bottom:18px; left:50%; transform:translateX(-50%); padding:12px 18px; max-width:calc(100vw - 32px); width:max-content; background:var(--navy); color:#fff; border-left:4px solid var(--gold); border-radius:8px; z-index:10; box-shadow:0 4px 24px #17233525; }
.portal-login { display:grid; grid-template-columns:1fr 420px; gap:80px; align-items:center; max-width:1100px; padding:64px 24px; margin:auto; min-height:calc(100dvh - 74px); }
.eyebrow { display:block; font-size:10px; font-weight:700; letter-spacing:1.8px; color:#9b7100; }
.login-intro h1 { font-size:54px; font-weight:800; line-height:1.13; margin:20px 0; letter-spacing:-2px; }.login-intro em { color:#b98200; font-style:normal; }.login-intro > p { color:var(--muted); max-width:400px; font-size:16px; line-height:1.7; }
.login-benefits { display:flex; flex-direction:column; gap:16px; margin-top:30px; }.login-benefits span { display:flex; align-items:center; gap:12px; color:#4e6179; }.login-benefits svg { color:#a97400; }
.login-card { background:#fff; border:1px solid var(--border); border-radius:16px; box-shadow:0 20px 60px #1422350c; padding:32px; }.login-icon { display:grid; place-items:center; height:50px; width:50px; background:#fff3cc; color:#9b7100; border-radius:12px; margin-bottom:20px; }.login-card h2 { font-size:23px; }.login-card > p { font-size:13px; color:var(--muted); line-height:1.6; margin-top:10px; }
.login-card form { margin-top:24px; }.login-card label { display:block; font-size:12px; font-weight:600; margin-bottom:18px; }.login-card input { display:block; width:100%; min-height:46px; border:1px solid #d4dee9; padding:12px; border-radius:7px; margin-top:8px; background:#f8fafc; font-size:16px; }.login-card form button { width:100%; }.form-error { color:#bd3043; font-size:12px; line-height:1.6; margin-top:12px; }.login-card .login-help { margin-top:18px; font-size:12px; text-align:center; }.admin-link { display:block; color:#718097; font-size:12px; margin-top:24px; text-align:center; text-underline-offset:3px; }
.portal-container { max-width:1180px; margin:0 auto; padding:28px 24px 48px; }
.portal-welcome { display:flex; align-items:center; justify-content:space-between; border-radius:12px; padding:28px 32px; background:linear-gradient(110deg,#142235,#263e5b); color:#fff; position:relative; overflow:hidden; }.portal-welcome .eyebrow { color:#ffce48; }.portal-welcome h1 { margin:10px 0 8px; font-size:30px; }.portal-welcome p { font-size:13px; color:#b6c4d5; }.welcome-shield { display:grid; place-items:center; width:88px; height:88px; border:1px solid #566882; border-radius:24px; transform:rotate(-8deg); color:#ffca38; }.welcome-shield svg { width:48px; height:48px; }
.portal-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin:18px 0 24px; }.portal-stats > div { display:flex; align-items:center; gap:16px; border:1px solid #dce5ef; border-radius:9px; padding:18px; background:#fff; }.portal-stats > div:nth-child(2) { background:#eef9f3; border-color:#d7eee2; }.portal-stats > div:nth-child(3) { background:#fffae8; border-color:#f4e9c8; }.portal-stats svg { width:42px; height:42px; padding:9px; background:#edf2f8; border-radius:9px; }.portal-stats > div:nth-child(2) svg { color:#228554; background:#d9f0e3; }.portal-stats > div:nth-child(3) svg { color:#9f7100; background:#ffedb5; }.portal-stats small,.portal-stats strong { display:block; }.portal-stats small { color:#687990; font-size:11px; }.portal-stats strong { font-size:26px; margin-top:3px; }
.portal-layout { display:grid; grid-template-columns:280px minmax(0,1fr); gap:24px; align-items:start; }.profile-card { border:1px solid var(--border); border-radius:10px; background:#fff; padding:24px; }.profile-avatar { display:grid; place-items:center; height:68px; width:68px; border-radius:14px; background:var(--navy); color:var(--gold); font-size:23px; font-weight:700; margin-bottom:14px; }.profile-status { display:flex; align-items:center; gap:4px; color:#258555; font-size:10px; }.profile-status svg { width:14px; height:14px; }.profile-card h2 { font-size:20px; line-height:1.35; margin:10px 0; overflow-wrap:anywhere; }.profile-card > p { color:var(--muted); font-size:12px; line-height:1.6; }.profile-card dl { border-block:1px solid var(--border); margin:20px 0; padding:14px 0; }.profile-card dl > div { margin:10px 0; }.profile-card dt { font-size:10px; color:var(--muted); }.profile-card dd { margin:4px 0 0; font-size:12px; font-weight:600; overflow-wrap:anywhere; }.profile-card h3 { font-size:12px; }.profile-sizes { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-top:12px; }.profile-sizes > div { padding:10px 6px; background:#f0f4f9; border-radius:6px; text-align:center; }.profile-sizes small,.profile-sizes strong { display:block; }.profile-sizes small { font-size:9px; color:var(--muted); }.profile-sizes strong { font-size:14px; margin-top:6px; }.profile-tip { display:flex; align-items:flex-start; gap:8px; background:#fff8df; padding:12px; margin-top:20px; border-radius:6px; color:#97700a; }.profile-tip p { font-size:10px; line-height:1.6; }.profile-tip svg { width:18px; height:18px; }
.portal-content { min-width:0; }.portal-tabs { display:flex; align-items:center; gap:8px; background:#e7edf5; padding:5px; border-radius:8px; margin-bottom:18px; scroll-margin-top:18px; }.portal-tabs button { flex:1; min-height:40px; padding:8px 12px; border:0; border-radius:6px; background:transparent; color:#6d7b91; font-size:12px; font-weight:600; }.portal-tabs button.active { background:var(--gold); color:var(--navy); }
.portal-section { background:#fff; border:1px solid var(--border); border-radius:10px; margin-bottom:18px; padding:20px; }.section-heading { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:16px; }.section-heading h2 { font-size:16px; }.section-heading > span { font-size:10px; color:var(--muted); }.text-link { border:0; background:transparent; color:#956700; font-size:11px; min-height:36px; }
.history-card { display:flex; align-items:center; gap:14px; padding:16px 0; border-bottom:1px solid #ecf0f5; }.history-card:last-child { border-bottom:0; }.history-icon { display:grid; place-items:center; width:44px; height:44px; border-radius:9px; background:#f0f4f9; flex:none; }.history-card > div { flex:1; min-width:0; }.history-card small { color:var(--muted); font-size:10px; }.history-card h3 { font-size:13px; margin-top:5px; overflow-wrap:anywhere; }.history-card p { font-size:11px; color:var(--muted); margin-top:5px; overflow-wrap:anywhere; }.history-tags { display:flex; gap:5px; flex-wrap:wrap; margin-top:9px; }.history-tags span { background:#eef4fa; color:#63768f; font-size:9px; border-radius:4px; padding:4px 6px; }.history-tags span:first-child { background:#eaf7ef; color:#318458; }
.assigned-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }.assigned-grid article { display:flex; align-items:flex-start; gap:12px; padding:14px; border:1px solid var(--border); background:#fafcfe; border-radius:8px; }.assigned-grid article > span { font-size:25px; }.assigned-grid h3 { font-size:12px; overflow-wrap:anywhere; }.assigned-grid p { font-size:10px; margin:6px 0; color:var(--muted); }.assigned-grid small { display:block; font-size:10px; margin-top:5px; color:var(--muted); }.assigned-grid .state-green { color:#258555; }.assigned-grid .state-amber { color:#b07b00; }
.pagination { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:20px; }.pagination span { font-size:11px; color:var(--muted); }
.evidence-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }.evidence-card { border:1px solid var(--border); border-radius:8px; overflow:hidden; min-width:0; }.evidence-card img { display:block; width:100%; height:160px; object-fit:cover; background:#f0f4f9; color:var(--muted); font-size:12px; }.evidence-card > div:last-child { padding:12px; }.evidence-kind { font-size:10px; color:#926800; }.evidence-card h3 { font-size:12px; margin:6px 0; overflow-wrap:anywhere; }.evidence-card p { font-size:10px; color:var(--muted); line-height:1.6; }.evidence-card .secondary { margin-top:12px; width:100%; font-size:11px; }.evidence-document { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; height:160px; background:#edf2f8; color:#657a95; font-size:12px; }.evidence-document svg { width:38px; height:38px; }
.dialog-open { overflow:hidden; } dialog { border:1px solid var(--border); border-radius:12px; padding:0; color:var(--navy); width:min(760px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); background:#fff; box-shadow:0 30px 90px #14223540; } dialog[open] { display:flex; flex-direction:column; } dialog::backdrop { background:#14223590; backdrop-filter:blur(3px); }
.dialog-header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:20px 24px; background:#f3f6fa; border-bottom:1px solid var(--border); flex:none; }.dialog-header small { color:#7d8a9c; font-size:9px; letter-spacing:1px; }.dialog-header h2 { font-size:18px; margin-top:6px; overflow-wrap:anywhere; }.icon-button { width:42px; height:42px; flex:none; font-size:26px; border:1px solid #d4dee9; background:#fff; border-radius:7px; color:#697a91; }
.dialog-body { overflow:auto; min-height:0; padding:24px; scrollbar-width:thin; overscroll-behavior:contain; }.dialog-body > h3 { font-size:13px; margin:24px 0 12px; }.dialog-body > h3 span { color:var(--muted); }.receipt-meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; padding:16px; background:#f5f8fc; border-radius:8px; }.receipt-meta small,.receipt-meta strong { display:block; }.receipt-meta small { font-size:10px; color:var(--muted); }.receipt-meta strong { font-size:12px; margin-top:5px; overflow-wrap:anywhere; }
.receipt-lines { border:1px solid var(--border); border-radius:8px; overflow:hidden; }.receipt-lines article { display:flex; gap:12px; padding:14px; border-bottom:1px solid var(--border); }.receipt-lines article:last-child { border:0; }.receipt-lines article > span { font-size:24px; }.receipt-lines strong { font-size:12px; }.receipt-lines p,.receipt-lines small { font-size:11px; margin-top:6px; color:var(--muted); }.receipt-lines small { display:block; }.receipt-notes { font-size:12px; color:#687b94; line-height:1.7; white-space:pre-wrap; overflow-wrap:anywhere; }.receipt-signature { background:#f8fafc; border:1px solid var(--border); border-radius:8px; text-align:center; padding:16px; }.receipt-signature img { display:block; max-height:170px; width:auto; margin:0 auto; object-fit:contain; }.receipt-signature p { padding:24px 0; font-size:12px; color:var(--muted); }.receipt-signature small { display:block; font-size:10px; color:var(--muted); margin-top:10px; }.receipt-actions { display:flex; gap:10px; justify-content:flex-end; position:sticky; bottom:-24px; background:#fff; padding:16px 0; border-top:1px solid var(--border); margin-top:20px; }
@media(max-width:900px) { .portal-login { gap:32px; grid-template-columns:1fr 360px; padding-top:40px; }.login-intro h1 { font-size:42px; }.portal-layout { grid-template-columns:240px minmax(0,1fr); gap:16px; }.profile-card { padding:18px; }.history-card { flex-wrap:wrap; }.history-card > button { margin-left:58px; }.assigned-grid { grid-template-columns:1fr; } }
@media(max-width:640px) {
  .portal-container:not([data-tab="profile"]) .profile-card { display:none; }
  .portal-topbar > span { min-width:0; flex-shrink:1; }
  .portal-topbar { height:64px; padding:9px 16px; gap:12px; }.portal-topbar img { width:142px; height:38px; }.portal-topbar > span { padding-left:12px; font-size:10px; }.portal-topbar button { padding:8px 12px; min-height:38px; font-size:11px; }
  .portal-login { display:block; padding:30px 18px; min-height:auto; }.login-intro h1 { font-size:34px; letter-spacing:-1px; margin:14px 0; }.login-intro h1 br { display:none; }.login-intro h1 br::after { content:' '; }.login-intro h1 em { display:block; }.login-intro > p { font-size:13px; }.login-benefits { display:none; }.login-card { margin-top:24px; padding:24px; }.login-icon { display:none; }.login-card h2 { font-size:21px; }
  .portal-container { padding:16px 12px 30px; }.portal-welcome { padding:22px 20px; }.portal-welcome h1 { font-size:24px; }.portal-welcome p { font-size:11px; max-width:210px; line-height:1.6; }.welcome-shield { height:58px; width:58px; border-radius:16px; }.welcome-shield svg { width:34px; height:34px; }
  .portal-stats { gap:7px; margin:12px 0 16px; }.portal-stats > div { gap:7px; padding:12px 8px; flex-direction:column; align-items:flex-start; }.portal-stats svg { width:30px; height:30px; padding:6px; }.portal-stats small { font-size:9px; min-height:23px; }.portal-stats strong { font-size:23px; }
  .portal-layout { display:block; }.profile-card { margin-bottom:16px; padding:18px; position:relative; }.profile-avatar { width:50px; height:50px; font-size:19px; float:left; margin:0 12px 12px 0; }.profile-card h2 { font-size:18px; }.profile-card dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; clear:both; margin:16px 0; padding:8px 0; }.profile-tip { margin-top:14px; }.portal-tabs { position:sticky; top:0; z-index:1; }.portal-section { padding:16px; }.history-card { gap:10px; }.history-icon { width:36px; height:36px; }.history-card > button { margin-left:46px; min-height:40px; font-size:11px; }.section-heading > span { font-size:9px; }.evidence-grid { grid-template-columns:1fr; }.evidence-card img,.evidence-document { height:180px; }
  dialog { width:calc(100vw - 16px); max-height:calc(100dvh - 16px); border-radius:9px; }.dialog-header { padding:14px 16px; }.dialog-header h2 { font-size:16px; }.dialog-body { padding:16px; }.receipt-meta { padding:12px; gap:12px; }.receipt-actions { bottom:-16px; }.receipt-actions > button { flex:1; padding:10px; font-size:11px; }
}
@media print {
  body { background:white; font-size:12px; }.portal-topbar,#portalMain,#portalNotice,.icon-button,.receipt-actions { display:none!important; }
  dialog[open] { position:static; display:block; width:100%; max-height:none; border:0; margin:0; box-shadow:none; }.dialog-body { overflow:visible; padding:16px; }.dialog-header { background:white; }.evidence-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.receipt-signature,.evidence-card,.receipt-lines article { break-inside:avoid; } dialog::backdrop { display:none; }.evidence-card .secondary { display:none; }
}
.receipt-actions{flex-wrap:wrap}
#portalExportStatus{flex:1 1 100%;font-size:12px;color:#52637a}
.receipt-export-scope{display:block;margin:16px 0;font-size:13px;font-weight:600;color:#34455b}
.receipt-export-scope select{display:block;width:100%;padding:10px;margin-top:7px;border:1px solid #ccd6e2;border-radius:8px;background:#f5f7fa;color:#142235}

.profile-avatar { overflow:hidden; } .profile-avatar img { width:100%; height:100%; object-fit:cover; }
