@font-face{font-family:Archivo;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/a2947afc6a06879b-s.138s14ivx2xer.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/651aaf1801011892-s.3b2emle-7szv-.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/75affa71d1e2f6a7-s.p.13rul5q9jl2r0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/a2947afc6a06879b-s.138s14ivx2xer.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/651aaf1801011892-s.3b2emle-7szv-.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/75affa71d1e2f6a7-s.p.13rul5q9jl2r0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/a2947afc6a06879b-s.138s14ivx2xer.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/651aaf1801011892-s.3b2emle-7szv-.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/75affa71d1e2f6a7-s.p.13rul5q9jl2r0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/a2947afc6a06879b-s.138s14ivx2xer.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/651aaf1801011892-s.3b2emle-7szv-.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/75affa71d1e2f6a7-s.p.13rul5q9jl2r0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo Fallback;src:local(Arial);ascent-override:88.96%;descent-override:21.28%;line-gap-override:0.0%;size-adjust:98.7%}.archivo_9b4a6fe5-module__s0U_sW__className{font-family:Archivo,Archivo Fallback;font-style:normal}.archivo_9b4a6fe5-module__s0U_sW__variable{--font-display:"Archivo", "Archivo Fallback"}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(../media/20aee433927f7d4b-s.2u46yrlpkdxrh.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(../media/256e1f7f180674ba-s.444m1fhac1z6e.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(../media/be3bf58b83159894-s.1298pfel08g2l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(../media/753b6407f468151f-s.1wcle8r8k1a_g.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(../media/292081311a6a8abc-s.3irbj1um1c5rd.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(../media/68d403cf9f2c68c5-s.p.42000xkkqj0am.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(../media/20aee433927f7d4b-s.2u46yrlpkdxrh.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(../media/256e1f7f180674ba-s.444m1fhac1z6e.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(../media/be3bf58b83159894-s.1298pfel08g2l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(../media/753b6407f468151f-s.1wcle8r8k1a_g.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(../media/292081311a6a8abc-s.3irbj1um1c5rd.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(../media/68d403cf9f2c68c5-s.p.42000xkkqj0am.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4 Fallback";src:local(Times New Roman);ascent-override:87.87%;descent-override:28.41%;line-gap-override:0.0%;size-adjust:117.91%}.source_serif_4_1da7cd33-module__BICBOq__className{font-family:"Source Serif 4","Source Serif 4 Fallback";font-style:normal}.source_serif_4_1da7cd33-module__BICBOq__variable{--font-body:"Source Serif 4", "Source Serif 4 Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.3zhtymus0wdqb.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.3nkuoiize4urq.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.1da667lu-u79a.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1i05ju5aeyhye.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.1dgcou5jor5q_.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.31-2bzhq1gx_9.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.3xauquyg2sixn.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.2taws-qdxmzlf.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.0htwiiqufp3l9.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.28xcb7557rbh2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_fd094b8d-module__bGA-Dq__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_fd094b8d-module__bGA-Dq__variable{--font-annotation:"IBM Plex Mono", "IBM Plex Mono Fallback"}
.portal-root{--paper:#f7f6f4;--sheet:#fff;--ink:#0e0e0d;--annotation:#6e6c68;--annotation-strong:#5c5a55;--rule:#e0deda;--rule-strong:#c9c6c0;--oxblood:#7a2e28;--oxblood-soft:#f3e6e4;--moss:#2f5d3a;--moss-soft:#e4eee6;--ochre:#8a6a1b;--ochre-soft:#f4eddb;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:44px;--s8:60px;--shell:1180px;--gutter:24px;background:var(--paper);min-height:100vh;color:var(--ink);font-family:var(--font-body), Georgia, "Times New Roman", serif;-webkit-font-smoothing:antialiased;flex-direction:column;font-size:16px;line-height:1.6;display:flex}html:has(.portal-root){background:#f7f6f4}html:has(.portal-root) body{color:#0e0e0d;background:#f7f6f4}.portal-root *,.portal-root :before,.portal-root :after{box-sizing:border-box}.portal-root h1,.portal-root h2,.portal-root h3,.portal-root h4{font-family:var(--font-display), "Helvetica Neue", Arial, sans-serif;color:var(--ink);text-wrap:balance;margin:0;line-height:1.15}.portal-root p{margin:0}.portal-root a{color:inherit}.portal-root img{max-width:100%;height:auto;display:block}.portal-root :focus-visible{outline:2px solid var(--oxblood);outline-offset:3px}.portal-root button{font:inherit}.portal-root .ann{font-family:var(--font-annotation), ui-monospace, Menlo, monospace;letter-spacing:.11em;text-transform:uppercase;color:var(--annotation-strong);font-size:11px;font-weight:500}.portal-root .ann-s{font-family:var(--font-annotation), ui-monospace, Menlo, monospace;letter-spacing:.13em;text-transform:uppercase;color:var(--annotation-strong);font-size:9.5px;font-weight:500}.portal-root .tabular{font-variant-numeric:tabular-nums}.portal-root .shell{max-width:var(--shell);width:100%;padding:0 var(--gutter);margin:0 auto}.portal-titleblock{background:var(--sheet);border-bottom:1px solid var(--rule)}.portal-titleblock .shell{flex-wrap:wrap;align-items:center;gap:0 28px;min-height:40px;display:flex}.portal-titleblock .cell{padding:10px 0}.portal-titleblock b{color:var(--ink);font-weight:500}.portal-titleblock .spacer{flex:1}.portal-nav{background:var(--sheet);border-bottom:1px solid var(--rule);z-index:40;position:sticky;top:0}.portal-nav .shell{justify-content:space-between;align-items:center;gap:var(--s4);padding-top:16px;padding-bottom:16px;display:flex}.portal-wordmark{align-items:baseline;gap:12px;text-decoration:none;display:flex}.portal-wordmark .mark{font-family:var(--font-display), "Helvetica Neue", Arial, sans-serif;letter-spacing:.01em;color:var(--ink);font-size:17px;font-weight:700}.portal-wordmark .mark em{color:var(--oxblood);font-style:normal}.portal-nav .who{align-items:center;gap:var(--s4);display:flex}.portal-nav .who .name{font-family:var(--font-display), sans-serif;font-size:14px}@media (max-width:640px){.portal-nav .who .name{display:none}}.portal-project{border-bottom:1px solid var(--rule);background:var(--sheet)}.portal-project .shell{padding-top:var(--s6);padding-bottom:0}.portal-project h1{margin-top:var(--s2);max-width:24ch;font-size:max(26px,min(3.4vw,38px));font-weight:600}.portal-project .sub{margin-top:var(--s2);color:var(--annotation-strong);font-size:15px}.portal-tabs{margin-top:var(--s5);scrollbar-width:none;gap:2px;display:flex;overflow-x:auto}.portal-tabs::-webkit-scrollbar{display:none}.portal-tabs a{font-family:var(--font-display), sans-serif;color:var(--annotation-strong);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;padding:12px 18px 14px;font-size:14px;font-weight:500;text-decoration:none}.portal-tabs a:hover{color:var(--ink)}.portal-tabs a[aria-current=page]{color:var(--ink);border-bottom-color:var(--oxblood)}.portal-tabs a .count{text-align:center;min-width:20px;font-family:var(--font-annotation), monospace;background:var(--oxblood);color:#fff;vertical-align:1px;border-radius:10px;margin-left:8px;padding:0 6px;font-size:11px;line-height:20px;display:inline-block}.portal-main{flex:1}.portal-main .shell{padding-top:var(--s6);padding-bottom:var(--s8)}.portal-section+.portal-section{margin-top:var(--s7)}.portal-section>header{justify-content:space-between;align-items:baseline;gap:var(--s4);margin-bottom:var(--s4);flex-wrap:wrap;display:flex}.portal-section>header h2{font-size:20px;font-weight:600}.portal-page-title{margin-bottom:var(--s5)}.portal-page-title h2{font-size:max(22px,min(2.6vw,28px));font-weight:600}.portal-page-title .sub{margin-top:var(--s2);color:var(--annotation-strong);max-width:64ch}.portal-stats{background:var(--rule);border:1px solid var(--rule);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;display:grid}.portal-stat{background:var(--sheet);padding:var(--s4) var(--s5);text-decoration:none}.portal-stat:hover{background:#fbfaf9}.portal-stat .n{font-family:var(--font-display), sans-serif;margin-top:var(--s2);font-variant-numeric:tabular-nums;font-size:34px;font-weight:600;line-height:1}.portal-stat .n.alert{color:var(--oxblood)}.portal-stat .hint{margin-top:var(--s2);color:var(--annotation-strong);font-size:13px}.portal-table-wrap{border:1px solid var(--rule);background:var(--sheet);overflow-x:auto}.portal-table{border-collapse:collapse;width:100%;font-size:14.5px}.portal-table th{text-align:left;font-family:var(--font-annotation), monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--annotation-strong);border-bottom:1px solid var(--rule);white-space:nowrap;background:#fbfaf9;padding:12px 16px;font-size:10px;font-weight:500}.portal-table td{border-bottom:1px solid var(--rule);vertical-align:top;padding:14px 16px}.portal-table tr:last-child td{border-bottom:0}.portal-table tr.row-link{cursor:pointer}.portal-table tr.row-link:hover td{background:#fbfaf9}.portal-table .primary{font-family:var(--font-display), sans-serif;color:var(--ink);font-weight:500}.portal-table .muted{color:var(--annotation-strong);font-size:13px}.portal-table .num{font-family:var(--font-annotation), monospace;color:var(--annotation-strong);white-space:nowrap;font-size:12.5px}.portal-table td.right,.portal-table th.right{text-align:right}.portal-table .nowrap{white-space:nowrap}.portal-pill{font-family:var(--font-display), sans-serif;white-space:nowrap;border:1px solid var(--rule-strong);background:var(--sheet);color:var(--annotation-strong);border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 8px;font-size:12.5px;font-weight:500;display:inline-flex}.portal-pill:before{content:"";opacity:.8;background:currentColor;border-radius:50%;width:7px;height:7px}.portal-pill.client{background:var(--oxblood-soft);color:var(--oxblood);border-color:#e3c4bf}.portal-pill.contractor{background:var(--ochre-soft);color:var(--ochre);border-color:#e2d3a6}.portal-pill.closed.good{background:var(--moss-soft);color:var(--moss);border-color:#bfd5c4}.portal-pill.closed.bad{color:var(--annotation-strong);background:#f1f0ee}.portal-card{background:var(--sheet);border:1px solid var(--rule)}.portal-card .pad{padding:var(--s5)}.portal-grid{gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.portal-sample-card{background:var(--sheet);border:1px solid var(--rule);flex-direction:column;text-decoration:none;transition:border-color .15s;display:flex}.portal-sample-card:hover{border-color:var(--rule-strong)}.portal-sample-card .swatch{aspect-ratio:4/3;background:#efede9;justify-content:center;align-items:center;display:flex;overflow:hidden}.portal-sample-card .swatch img{object-fit:cover;width:100%;height:100%}.portal-sample-card .swatch .none{font-family:var(--font-annotation), monospace;letter-spacing:.13em;text-transform:uppercase;color:var(--annotation);font-size:10px}.portal-sample-card .body{padding:var(--s4);flex-direction:column;gap:6px;display:flex}.portal-sample-card .title{font-family:var(--font-display), sans-serif;font-size:15px;font-weight:500}.portal-sample-card .meta{color:var(--annotation-strong);font-size:13px}.portal-detail{gap:var(--s6);grid-template-columns:minmax(0,1.5fr) minmax(280px,.8fr);align-items:start;display:grid}@media (max-width:860px){.portal-detail{grid-template-columns:1fr}}.portal-facts{grid-template-columns:-webkit-max-content 1fr;grid-template-columns:max-content 1fr;gap:8px 20px;font-size:14.5px;display:grid}.portal-facts dt{font-family:var(--font-annotation), monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--annotation-strong);padding-top:4px;font-size:10px}.portal-facts dd{margin:0}.portal-back{font-family:var(--font-display), sans-serif;color:var(--annotation-strong);margin-bottom:var(--s4);align-items:center;gap:6px;font-size:13px;text-decoration:none;display:inline-flex}.portal-back:hover{color:var(--ink)}.portal-files{margin:0;padding:0;list-style:none}.portal-files li{align-items:center;gap:var(--s4);border-bottom:1px solid var(--rule);padding:12px 0;display:flex}.portal-files li:last-child{border-bottom:0}.portal-files .icon{border:1px solid var(--rule-strong);background:var(--sheet);width:36px;height:44px;font-family:var(--font-annotation), monospace;letter-spacing:.08em;color:var(--annotation-strong);flex-shrink:0;justify-content:center;align-items:center;font-size:9px;display:flex}.portal-files .name{font-family:var(--font-display), sans-serif;overflow-wrap:anywhere;font-size:14px;font-weight:500}.portal-files .meta{color:var(--annotation-strong);font-size:12.5px}.portal-files .grow{flex:1;min-width:0}.portal-photos{gap:var(--s3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.portal-photos a{aspect-ratio:1;border:1px solid var(--rule);background:#efede9;display:block;overflow:hidden}.portal-photos img{object-fit:cover;width:100%;height:100%}.portal-history{border-left:1px solid var(--rule-strong);margin:0 0 0 6px;padding:0;list-style:none}.portal-history li{padding:0 0 var(--s4) var(--s5);font-size:14px;position:relative}.portal-history li:before{content:"";background:var(--sheet);border:1px solid var(--rule-strong);border-radius:50%;width:9px;height:9px;position:absolute;top:8px;left:-5px}.portal-history li.client:before{background:var(--oxblood);border-color:var(--oxblood)}.portal-history .when{margin-bottom:2px;display:block}.portal-root .portal-btn{font-family:var(--font-display), sans-serif;border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;border-radius:0;justify-content:center;align-items:center;gap:8px;padding:11px 20px;font-size:14px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.portal-root .portal-btn:hover{background:#2a2a28;border-color:#2a2a28}.portal-root .portal-btn:disabled{opacity:.5;cursor:default}.portal-root .portal-btn.secondary{background:var(--sheet);color:var(--ink);border-color:var(--rule-strong)}.portal-root .portal-btn.secondary:hover{border-color:var(--ink);background:var(--sheet)}.portal-root .portal-btn.accent{background:var(--oxblood);border-color:var(--oxblood)}.portal-root .portal-btn.accent:hover{background:#63241f;border-color:#63241f}.portal-root .portal-btn.block{width:100%}.portal-root .portal-btn.sm{padding:7px 12px;font-size:13px}.portal-field{flex-direction:column;gap:6px;display:flex}.portal-field label{font-family:var(--font-annotation), monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--annotation-strong);font-size:10px}.portal-input,.portal-textarea{font:inherit;border:1px solid var(--rule-strong);background:var(--sheet);color:var(--ink);border-radius:0;width:100%;padding:11px 14px;font-size:15px}.portal-input:focus,.portal-textarea:focus{border-color:var(--ink);outline:none}.portal-textarea{resize:vertical;min-height:110px;font-family:var(--font-body), serif}.portal-note{color:var(--annotation-strong);font-size:13.5px}.portal-error{border-left:2px solid var(--oxblood);background:var(--oxblood-soft);color:var(--oxblood);padding:10px 14px;font-size:14px}.portal-ok{border-left:2px solid var(--moss);background:var(--moss-soft);color:var(--moss);padding:10px 14px;font-size:14px}.portal-decision{border:1px solid var(--rule-strong);background:var(--sheet)}.portal-decision .head{padding:var(--s4) var(--s5);border-bottom:1px solid var(--rule);background:var(--oxblood-soft)}.portal-decision .body{padding:var(--s5);gap:var(--s4);flex-direction:column;display:flex}.portal-choice{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}.portal-choice button{border:1px solid var(--rule-strong);background:var(--sheet);cursor:pointer;font-family:var(--font-display), sans-serif;text-align:left;padding:14px 12px;font-size:14px;font-weight:600;line-height:1.3}.portal-choice button small{color:var(--annotation-strong);margin-top:4px;font-size:12.5px;font-weight:400;display:block}.portal-choice button[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.portal-choice button.approve[aria-pressed=true]{border-color:var(--moss);box-shadow:inset 0 0 0 1px var(--moss)}.portal-choice button.revise[aria-pressed=true]{border-color:var(--oxblood);box-shadow:inset 0 0 0 1px var(--oxblood)}.portal-signin{grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:calc(100vh - 41px);display:grid}@media (max-width:860px){.portal-signin{grid-template-columns:1fr}}.portal-signin .plate{background:var(--ink);color:#fff;justify-content:space-between;gap:var(--s7);flex-direction:column;padding:max(32px,min(6vw,80px));display:flex}@media (max-width:860px){.portal-signin .plate{padding:20px var(--gutter);align-items:center;gap:var(--s4);flex-direction:row}.portal-signin .plate .ann-s{display:none}}.portal-signin .plate .ann,.portal-signin .plate .ann-s{color:#b9b6af}.portal-signin .plate h1{color:#fff;max-width:14ch;margin-top:var(--s4);font-size:max(30px,min(4vw,48px));font-weight:600}.portal-signin .plate .lede{margin-top:var(--s4);color:#d6d3cc;max-width:40ch;font-size:17px}.portal-signin .plate .mark em{color:#ce8074}.portal-signin .plate .mark{color:#fff}.portal-signin .form{align-items:center;padding:max(32px,min(6vw,80px)) max(24px,min(5vw,72px));display:flex}.portal-signin .form>div{gap:var(--s4);flex-direction:column;width:100%;max-width:420px;margin:0 auto;display:flex}.portal-signin .form h2{font-size:24px;font-weight:600}.portal-divider{color:var(--annotation);font-family:var(--font-annotation), monospace;letter-spacing:.13em;text-transform:uppercase;align-items:center;gap:12px;font-size:10px;display:flex}.portal-divider:before,.portal-divider:after{content:"";background:var(--rule);flex:1;height:1px}.portal-google{align-items:center;gap:10px;display:inline-flex}.portal-google svg{width:18px;height:18px}.portal-footer{border-top:1px solid var(--rule);background:var(--sheet)}.portal-footer .shell{justify-content:space-between;gap:var(--s3);flex-wrap:wrap;padding-top:18px;padding-bottom:18px;display:flex}.portal-empty{padding:var(--s7) var(--s5);text-align:center;border:1px dashed var(--rule-strong);background:var(--sheet);color:var(--annotation-strong)}.portal-empty h3{color:var(--ink);margin-bottom:var(--s2);font-size:17px;font-weight:600}.portal-loading{padding:var(--s7) 0;color:var(--annotation-strong);font-family:var(--font-annotation), monospace;letter-spacing:.12em;text-transform:uppercase;font-size:11px}.portal-project-list{gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.portal-project-card{background:var(--sheet);border:1px solid var(--rule);padding:var(--s5);flex-direction:column;gap:6px;text-decoration:none;display:flex}.portal-project-card:hover{border-color:var(--rule-strong)}.portal-project-card h3{font-size:19px;font-weight:600}.portal-project-card .addr{color:var(--annotation-strong);font-size:14px}@media (prefers-reduced-motion:reduce){.portal-root *{transition:none!important;animation:none!important}}
