:root{--paper:#fff;--paper2:#fafaf8;--black:#fff;--near:#f5f4f1;--bone:#1a1611;--bone2:#2a231b;--ink:#171310;--terra:#c05a2a;--terra-lite:#c05a2a;--terra-deep:#a2481d;--terra-wash:#f6e7db;--g200:#d9d0c2;--g300:#b9af9f;--g400:#8b8173;--g500:#6e6355;--g600:#544b3f;--g700:#3a322a;--line:#e4dbcd;--fd:"Clash Display","Archivo",sans-serif;--ft:"Switzer",-apple-system,system-ui,sans-serif;--soft:color-mix(in oklch,var(--bone) 62%,transparent);--dim:color-mix(in oklch,var(--bone) 42%,transparent);--wrap:1240px;--ease:cubic-bezier(.16,.84,.34,1);color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--black);color:var(--bone);font-family:var(--ft);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}a{color:inherit}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3.5rem)}.eyebrow{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--terra);display:inline-flex;align-items:center;gap:.7rem}.eyebrow,h1,h2,h3,h4{font-weight:600;margin:0}h1,h2,h3,h4{font-family:var(--fd);letter-spacing:-.02em;line-height:1;color:var(--bone)}h2{font-size:clamp(2rem,4.5vw,3.25rem)}h3{font-size:1.2rem;letter-spacing:-.01em}p{margin:0}.lede{font-size:clamp(1.05rem,1.6vw,1.3rem);line-height:1.6;max-width:56ch}.lede,.muted{color:var(--soft)}.center{text-align:center}.stack>*+*{margin-top:1rem}.btn{--pad:.85rem 1.35rem;display:inline-flex;align-items:center;justify-content:center;gap:.55rem;font-weight:600;font-size:1rem;text-decoration:none;padding:var(--pad);border:1.5px solid transparent;cursor:pointer;transition:transform .22s var(--ease),background .22s,border-color .22s,color .22s;white-space:nowrap}.btn svg{width:18px;height:18px;flex:none}.btn-p{background:var(--terra);color:#fff;border-color:var(--terra)}.btn-p:hover{background:var(--terra-deep);border-color:var(--terra-deep);transform:translateY(-2px)}.btn-g{border-color:var(--bone);color:var(--bone)}.btn-g:hover{background:var(--bone);color:var(--paper);transform:translateY(-2px)}.btn-sm{--pad:.6rem 1rem;font-size:.9rem}section{position:relative}.pad{padding-block:clamp(4rem,8vw,7rem)}.pad-sm{padding-block:clamp(3rem,6vw,4.5rem)}.ground-light,.ground-near{background:var(--near);color:var(--bone)}.shead{display:flex;justify-content:space-between;align-items:baseline;gap:2rem;flex-wrap:wrap;margin-bottom:clamp(2.2rem,4vw,3rem)}.shead h2{margin-top:.4rem;max-width:16ch}.shead .lede{margin-top:.6rem}.shead a{color:var(--terra);font-weight:600;font-size:.95rem;text-decoration:none}.hdr{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:color-mix(in oklch,var(--paper) 85%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid transparent;transition:border-color .3s}.hdr.scrolled{border-bottom-color:var(--line)}.nav{justify-content:space-between;gap:1.5rem;padding-block:1rem}.brand,.nav{display:flex;align-items:center}.brand{gap:.6rem;text-decoration:none}.brand svg{width:28px;height:28px}.brand .wm{font-family:var(--fd);font-weight:700;font-size:1.4rem;letter-spacing:-.01em;color:var(--bone)}.brand .wm b{color:var(--terra)}.menu{display:flex;align-items:center;gap:1.7rem}.menu a{font-size:.93rem;font-weight:500;text-decoration:none;color:var(--soft);transition:color .2s;white-space:nowrap}.menu a.active,.menu a:hover{color:var(--bone)}.menu a.ext:after{content:"↗";font-size:.7em;margin-left:.2em;color:var(--terra)}.nav-cta{display:flex;align-items:center;gap:.9rem}.hamb{display:none;background:none;border:0;color:var(--bone);cursor:pointer;padding:.4rem}.hamb svg{width:26px;height:26px}@media(max-width:1000px){.menu,.nav-cta .btn{display:none}.hamb{display:inline-flex}}.drawer{position:fixed;inset:0;z-index:60;background:color-mix(in oklch,var(--paper) 98%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;flex-direction:column;padding:1.4rem clamp(1.25rem,4vw,3rem);transform:translateY(-100%);transition:transform .4s var(--ease);visibility:hidden}.drawer.open{transform:none;visibility:visible}.drawer .top{display:flex;justify-content:space-between;align-items:center}.drawer nav{display:flex;flex-direction:column;gap:.2rem;margin-top:2rem}.drawer nav a{font-family:var(--fd);font-weight:500;font-size:1.8rem;text-decoration:none;color:var(--bone);padding:.3rem 0;border-bottom:1px solid var(--line)}.drawer nav a b{color:var(--terra)}.drawer .btn{margin-top:1.6rem}.x{background:none;border:0;color:var(--bone);cursor:pointer}.x svg{width:28px;height:28px}.hero{padding-top:clamp(2.5rem,6vw,5rem);padding-bottom:clamp(1rem,3vw,2rem)}.hero-top{display:grid;grid-template-columns:1.35fr 1fr;grid-gap:clamp(2rem,5vw,5rem);gap:clamp(2rem,5vw,5rem);align-items:end;margin-bottom:clamp(2rem,4vw,3.2rem)}@media(max-width:860px){.hero-top{grid-template-columns:1fr;gap:1.6rem}}.hero h1{font-size:clamp(3rem,8.5vw,7rem);line-height:.94;margin-top:1.1rem}.hero h1 .and{font-style:italic;color:var(--terra);font-weight:500}.hero .lede{max-width:42ch}.hero .actions{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:1.8rem}.hero-fig{position:relative;aspect-ratio:16/8;overflow:hidden;background:#e7ded0}.hero-fig img{width:100%;height:100%;object-fit:cover}.figcap{display:flex;justify-content:space-between;gap:1rem;margin-top:.7rem;font-size:.78rem;color:var(--soft);letter-spacing:.02em;flex-wrap:wrap}.figcap span:first-child{color:var(--bone);font-weight:500}.strip{display:flex;flex-wrap:wrap;gap:1.4rem 3rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1.4rem 0;margin-top:clamp(2rem,4vw,3rem)}.strip>div{display:flex;flex-direction:column}.strip .k{font-family:var(--fd);font-weight:600;font-size:1.6rem;color:var(--bone);line-height:1}.strip .l{font-size:.82rem;color:var(--soft);margin-top:.3rem}.chips{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.6rem}.chip{font-size:.82rem;font-weight:500;color:var(--soft);border:1px solid var(--line);padding:.5rem .85rem;display:inline-flex;gap:.5rem;align-items:center}.chip:before{content:"";width:7px;height:7px;background:var(--terra)}.page-hero{padding:clamp(2.5rem,6vw,4.5rem) 0 clamp(2rem,4vw,3rem);border-bottom:1px solid var(--line);position:relative;overflow:hidden}.page-hero.with-img:before{content:"";position:absolute;inset:0;z-index:-2;background-size:cover;background-position:50%;opacity:.14}.page-hero h1{font-size:clamp(2.4rem,6vw,4.4rem);margin:1rem 0 0}.page-hero .lede{margin-top:1.2rem}.crumbs{font-size:.8rem;color:var(--dim);margin-bottom:.4rem}.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--terra)}.svc-list{border-top:1px solid var(--line)}.svc-row{display:grid;grid-template-columns:64px 1fr 1.2fr auto;grid-gap:1.5rem;gap:1.5rem;align-items:baseline;padding:1.7rem 0;border-bottom:1px solid var(--line);transition:padding-left .25s;text-decoration:none;color:inherit}.svc-row:hover{padding-left:.5rem}.svc-row .no{font-family:var(--fd);font-weight:500;color:var(--terra);font-size:1rem}.svc-row h3{font-size:1.5rem}.svc-row p{margin:0;color:var(--soft);font-size:.98rem}.svc-row .arrow{color:var(--terra);font-size:1.3rem;opacity:0;transition:opacity .2s;justify-self:end}.svc-row:hover .arrow{opacity:1}@media(max-width:820px){.svc-row{grid-template-columns:40px 1fr;gap:.3rem 1rem}.svc-row p{grid-column:1/-1;padding-left:calc(40px + 1rem);margin-top:.3rem}.svc-row .arrow{display:none}}.svc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line)}.svc{background:var(--paper2);padding:clamp(1.6rem,2.5vw,2.2rem);display:flex;flex-direction:column;gap:.9rem;transition:background .25s}.svc:hover{background:var(--terra-wash)}.svc .ic{width:44px;height:44px;color:var(--terra-deep)}.svc h3{color:var(--bone)}.svc p{color:var(--soft);font-size:.96rem;flex:1 1}.svc .more{font-size:.82rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--terra-deep);display:inline-flex;gap:.4rem;align-items:center}.svc .more:after{content:"→";transition:transform .2s}.svc:hover .more:after{transform:translateX(4px)}.split{display:grid;grid-template-columns:1.05fr .95fr;grid-gap:clamp(2rem,5vw,4.5rem);gap:clamp(2rem,5vw,4.5rem);align-items:center}@media(max-width:860px){.split{grid-template-columns:1fr}}.split .media{position:relative;aspect-ratio:4/5;overflow:hidden;background:#e7ded0}.split .media img{width:100%;height:100%;object-fit:cover}.split .media .tagpill{position:absolute;left:0;bottom:0;background:var(--terra);color:#fff;font-weight:600;font-size:.85rem;padding:.7rem 1.1rem}.stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:2.4rem}.stat{background:var(--paper2);padding:1.3rem 1.1rem}.stat .n{font-family:var(--fd);font-weight:600;font-size:clamp(1.6rem,3vw,2.3rem);color:var(--terra);line-height:1}.stat .l{font-size:.82rem;color:var(--soft);margin-top:.5rem;line-height:1.35}@media(max-width:560px){.stats{grid-template-columns:1fr}}.gal{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:auto auto;grid-gap:1.4rem;gap:1.4rem}.gal .big{grid-row:1/span 2}.gal a{display:block;text-decoration:none;color:inherit}.gal figure{margin:0;overflow:hidden}.gal img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/3;transition:transform .6s var(--ease)}.gal .big img{aspect-ratio:4/3.3}.gal a:hover img{transform:scale(1.03)}.gal figcaption{display:flex;justify-content:space-between;gap:1rem;margin-top:.6rem;font-size:.82rem}.gal figcaption b{font-weight:600;color:var(--bone)}.gal figcaption span{color:var(--soft)}@media(max-width:820px){.gal{grid-template-columns:1fr}.gal .big{grid-row:auto}}.proj-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:1.4rem;gap:1.4rem}.proj{position:relative;overflow:hidden;aspect-ratio:4/3;display:flex;align-items:flex-end;text-decoration:none;isolation:isolate}.proj img{width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform .6s var(--ease)}.proj img,.proj:after{position:absolute;inset:0}.proj:after{content:"";z-index:-1;background:linear-gradient(0deg,oklch(.1 0 0/.9),oklch(.1 0 0/.4) 45%,oklch(.1 0 0/0) 78%)}.proj:hover img{transform:scale(1.05)}.proj .info{padding:1.3rem 1.4rem;width:100%}.proj .tags{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:.6rem}.proj .tags span{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:#fff;border:1px solid hsla(0,0%,100%,.35);padding:.2rem .5rem}.proj h3{font-size:1.25rem;color:#fff}.proj .loc{font-size:.85rem;margin-top:.25rem}.proj .loc,.proj .scope{color:hsla(0,0%,100%,.8)}.proj .scope{font-size:.9rem;margin-top:.55rem;max-width:42ch}.proj.big{grid-column:span 2}@media(max-width:760px){.proj.big{grid-column:span 1}}.b2b{background:var(--near)}.b2b ul{list-style:none;margin:1.6rem 0 0;padding:0;display:grid;grid-gap:.7rem;gap:.7rem}.b2b li{display:flex;gap:.7rem;font-size:.98rem;color:var(--soft)}.b2b li svg{width:20px;height:20px;color:var(--terra);flex:none;margin-top:.15rem}.b2b .actions{display:flex;gap:.9rem;flex-wrap:wrap;margin-top:2rem}.faq-wrap{display:grid;grid-template-columns:1fr 1fr;grid-gap:clamp(2rem,5vw,4rem);gap:clamp(2rem,5vw,4rem);align-items:start}@media(max-width:860px){.faq-wrap{grid-template-columns:1fr}.faq-media{display:none}}.faq-media{position:relative;aspect-ratio:3/4;overflow:hidden;position:-webkit-sticky;position:sticky;top:100px;background:#e7ded0}.faq-media img{width:100%;height:100%;object-fit:cover}details.q{border-top:1px solid var(--line);padding:1.1rem 0}details.q:last-child{border-bottom:1px solid var(--line)}details.q summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:1rem;align-items:center;font-family:var(--fd);font-weight:500;font-size:1.12rem;color:var(--bone)}details.q summary::-webkit-details-marker{display:none}details.q summary .pm{width:22px;height:22px;flex:none;position:relative}details.q summary .pm:after,details.q summary .pm:before{content:"";position:absolute;background:var(--terra);transition:opacity .3s}details.q summary .pm:before{top:10px;left:2px;right:2px;height:2px}details.q summary .pm:after{left:10px;top:2px;bottom:2px;width:2px}details.q[open] summary .pm:after{opacity:0}details.q .a{color:var(--soft);font-size:.98rem;line-height:1.6;max-width:60ch;margin-top:.8rem}.cta{position:relative;overflow:hidden;isolation:isolate;padding-block:clamp(3rem,6vw,5rem);background:var(--ink);color:var(--paper)}.cta:before{z-index:-2;background:url(/img/documentation-neutral.png) 50%/cover;opacity:.25}.cta:after,.cta:before{content:"";position:absolute;inset:0}.cta:after{z-index:-1;background:linear-gradient(100deg,oklch(.14 .01 60/.9),oklch(.14 .01 60/.75))}.cta .eyebrow{color:#e7a07a}.cta h2{max-width:18ch;color:var(--paper)}.cta .lede{color:hsla(37,45%,94%,.8)}.cta .actions{display:flex;gap:.9rem;flex-wrap:wrap;margin-top:2rem}.cta .btn-g{border-color:hsla(37,45%,94%,.5);color:var(--paper)}.cta .btn-g:hover{background:var(--paper);color:var(--ink)}footer.site{background:var(--near);border-top:1px solid var(--line);padding-block:clamp(3rem,5vw,4rem)}.fgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.3fr;grid-gap:2rem;gap:2rem}@media(max-width:820px){.fgrid{grid-template-columns:1fr 1fr}}@media(max-width:520px){.fgrid{grid-template-columns:1fr}}.fcol h4{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin:0 0 1rem;font-family:var(--ft);font-weight:600}.fcol a,.fcol p{display:block;color:var(--soft);text-decoration:none;font-size:.92rem;margin-bottom:.55rem;transition:color .2s}.fcol a:hover{color:var(--bone)}.fcol a.ext:after{content:"↗";font-size:.75em;margin-left:.25em;color:var(--terra)}.fbrand .wm{font-family:var(--fd);font-weight:700;font-size:1.5rem;color:var(--bone)}.fbrand .wm b{color:var(--terra)}.fbrand p{color:var(--soft);font-size:.92rem;margin-top:.8rem;max-width:32ch}.legal{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:2.4rem;padding-top:1.4rem;border-top:1px solid var(--line);font-size:.8rem;color:var(--dim)}.cat-layout{display:grid;grid-template-columns:270px 1fr;grid-gap:clamp(1.5rem,3vw,2.5rem);gap:clamp(1.5rem,3vw,2.5rem);align-items:start}@media(max-width:900px){.cat-layout{grid-template-columns:1fr}}.filters{position:-webkit-sticky;position:sticky;top:96px;border:1px solid var(--line);padding:1.3rem;background:var(--paper2)}@media(max-width:900px){.filters{position:static}}.filters h4{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);font-family:var(--ft);font-weight:600;margin:0 0 1rem}.fgroup{margin-bottom:1.3rem}.fgroup>label{display:block;font-size:.8rem;color:var(--soft);margin-bottom:.4rem;font-weight:500}.plans-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:1.4rem;gap:1.4rem}.pcard{display:flex;flex-direction:column;text-decoration:none;border:1px solid var(--line);background:var(--paper2);transition:transform .25s var(--ease),border-color .25s,box-shadow .25s}.pcard:hover{transform:translateY(-3px);border-color:var(--g300);box-shadow:0 12px 30px -18px rgba(26,22,17,.3)}.pcard .thumb{position:relative;aspect-ratio:4/3;overflow:hidden;background:#e7ded0}.pcard .thumb img{width:100%;height:100%;object-fit:cover}.pcard .badge{position:absolute;top:.6rem;left:.6rem;background:var(--terra);color:#fff;font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:.25rem .5rem}.pcard .pbody{padding:1rem 1.1rem 1.2rem;display:flex;flex-direction:column;gap:.5rem;flex:1 1}.pcard h3{font-size:1.08rem;color:var(--bone)}.pcard .cat{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--terra)}.specrow{display:flex;flex-wrap:wrap;gap:.4rem 1rem;font-size:.82rem;color:var(--soft);margin-top:.1rem}.specrow span{display:inline-flex;align-items:center;gap:.35rem}.specrow svg{width:15px;height:15px;color:var(--g400)}.ready{display:inline-flex;align-items:center;gap:.4rem;font-size:.72rem;font-weight:600;letter-spacing:.02em;color:var(--terra-deep);border:1px solid color-mix(in oklch,var(--terra-deep) 40%,transparent);padding:.22rem .55rem;width:-moz-fit-content;width:fit-content}.ready:before{content:"";width:6px;height:6px;background:var(--terra-deep);border-radius:50%}.pcard .price{margin-top:auto;font-family:var(--fd);font-weight:600;font-size:1.15rem;color:var(--bone)}.pcard .price small{font-family:var(--ft);font-weight:500;font-size:.72rem;color:var(--dim);letter-spacing:.04em;display:block;text-transform:uppercase}.result-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.3rem;flex-wrap:wrap}.result-bar .count{color:var(--soft);font-size:.9rem}.pd-grid{display:grid;grid-template-columns:1.15fr .85fr;grid-gap:clamp(2rem,4vw,3.5rem);gap:clamp(2rem,4vw,3.5rem);align-items:start}@media(max-width:900px){.pd-grid{grid-template-columns:1fr}}.gallery .main{aspect-ratio:16/11;overflow:hidden;background:#e7ded0;border:1px solid var(--line)}.gallery .main img{width:100%;height:100%;object-fit:cover}.gallery .thumbs{display:flex;gap:.6rem;margin-top:.6rem;flex-wrap:wrap}.gallery .thumbs img{width:84px;height:64px;object-fit:cover;border:1px solid var(--line);cursor:pointer}.pd-side{position:-webkit-sticky;position:sticky;top:96px;border:1px solid var(--line);padding:clamp(1.4rem,2.5vw,2rem);background:var(--paper2)}.pd-price{font-family:var(--fd);font-weight:600;font-size:2rem;color:var(--bone);margin:.4rem 0 .2rem}.pd-specs{display:grid;grid-template-columns:1fr 1fr;grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);margin:1.4rem 0}.pd-spec{background:var(--near);padding:.8rem .9rem}.pd-spec .k{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.pd-spec .v{font-size:1rem;color:var(--bone);margin-top:.2rem;font-weight:500}.field{margin-bottom:1.15rem;display:block}.label{display:block;font-size:.8rem;font-weight:600;color:var(--soft);margin-bottom:.4rem}.input,.select,.textarea{width:100%;background:var(--paper2);border:1px solid color-mix(in oklch,var(--bone) 22%,transparent);color:var(--bone);padding:.72rem .9rem;outline:none;transition:border-color .18s,box-shadow .18s;border-radius:0}.input::placeholder,.textarea::placeholder{color:color-mix(in oklch,var(--bone) 40%,transparent)}.input:hover:not(:focus),.select:hover:not(:focus),.textarea:hover:not(:focus){border-color:color-mix(in oklch,var(--bone) 38%,transparent)}.input:focus,.select:focus,.textarea:focus{border-color:var(--terra);box-shadow:0 0 0 3px color-mix(in oklch,var(--terra) 22%,transparent)}.input[type=file]{padding:.55rem;font-size:.86rem;color:var(--soft);cursor:pointer}.input[type=file]::-webkit-file-upload-button{font:inherit;font-size:.82rem;font-weight:600;margin-right:.8rem;padding:.5rem .85rem;background:color-mix(in oklch,var(--bone) 8%,transparent);color:var(--bone);border:1px solid color-mix(in oklch,var(--bone) 24%,transparent);cursor:pointer}.input[type=file]::file-selector-button{font:inherit;font-size:.82rem;font-weight:600;margin-right:.8rem;padding:.5rem .85rem;background:color-mix(in oklch,var(--bone) 8%,transparent);color:var(--bone);border:1px solid color-mix(in oklch,var(--bone) 24%,transparent);cursor:pointer}.textarea{min-height:120px;resize:vertical}.row2{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem}@media(max-width:520px){.row2{grid-template-columns:1fr}}.hint{font-size:.78rem;color:var(--dim);margin-top:.35rem}.form-card{border:1px solid var(--line);padding:clamp(1.4rem,3vw,2rem);background:var(--paper2)}.alert{padding:.8rem 1rem;border:1px solid;font-size:.9rem;margin-bottom:1rem}.alert.ok{border-color:#3f9d6f;color:#1f6b45;background:#3f9d6f14}.alert.err{border-color:var(--terra);color:var(--terra-deep);background:#c05a2a12}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.admin-login,.admin-shell{--ok:#1f6b45;--ok-bd:#3f9d6f;--info:#1a5178;--info-bd:#5a8fb0;--warn:#9a4a12;--warn-bd:#c98a4e;--danger:#b0342a;--danger-bd:#d98a80;background:var(--black);color:var(--bone)}:root[data-admin-theme=dark] .admin-login,:root[data-admin-theme=dark] .admin-shell{--black:#0b0b0c;--near:#0f0f10;--paper2:#141416;--paper:#141416;--ink:#0b0b0c;--bone:oklch(.965 .012 74);--bone2:oklch(.945 .01 68);--terra:oklch(.635 .152 47);--terra-lite:oklch(.70 .148 50);--terra-deep:oklch(.55 .15 44);--terra-wash:oklch(.30 .06 45);--g200:#d5d0ca;--g300:#b6b0aa;--g400:#928b85;--g500:#6f6761;--g600:#4f4640;--g700:#362b25;--line:color-mix(in oklch,oklch(.965 .012 74) 16%,transparent);--soft:color-mix(in oklch,oklch(.965 .012 74) 76%,transparent);--dim:color-mix(in oklch,oklch(.965 .012 74) 52%,transparent);--ok:#82ddb0;--ok-bd:#387c5c;--info:#8fc8ee;--info-bd:#386786;--warn:#ffba87;--warn-bd:#9a5532;--danger:#ff9a8e;--danger-bd:#7a3b34}.theme-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;background:none;border:1px solid color-mix(in oklch,var(--bone) 22%,transparent);color:var(--soft);cursor:pointer;transition:color .18s,border-color .18s}.theme-btn:hover{color:var(--bone);border-color:color-mix(in oklch,var(--bone) 42%,transparent)}.theme-btn svg{width:17px;height:17px}.theme-row{display:flex;align-items:center;gap:.6rem;font-size:.82rem;color:var(--soft)}.admin-shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}@media(max-width:820px){.admin-shell{grid-template-columns:1fr}}.admin-login{min-height:100vh;display:grid;place-items:center;padding:2rem}.admin-side{background:var(--near);border-right:1px solid var(--line);padding:1.5rem 1.2rem;position:-webkit-sticky;position:sticky;top:0;align-self:start;height:100vh}@media(max-width:820px){.admin-side{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line)}}.admin-side .brand{margin-bottom:2rem}.admin-side .brand .wm{color:var(--bone)}.admin-side nav{display:flex;flex-direction:column;gap:.15rem}.admin-side nav a{text-decoration:none;color:var(--soft);font-size:.95rem;padding:.6rem .7rem .6rem .75rem;border-left:2px solid transparent;transition:background .2s,color .2s}.admin-side nav a:hover{color:var(--bone);background:color-mix(in oklch,var(--bone) 6%,transparent)}.admin-side nav a.active{border-left-color:var(--terra);background:color-mix(in oklch,var(--terra) 14%,transparent);color:var(--bone)}.admin-main{padding:clamp(1.4rem,3vw,2.4rem);color:var(--bone)}.admin-main a{color:var(--terra-lite)}.admin-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.6rem}.admin-head h1{font-size:1.8rem;color:var(--bone)}.admin-empty{border:1px dashed var(--line);padding:3rem;text-align:center}.table{width:100%;border-collapse:collapse;border:1px solid var(--line)}.table td,.table th{text-align:left;padding:.75rem .85rem;border-bottom:1px solid var(--line);font-size:.9rem}.table th{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-weight:600;background:color-mix(in oklch,var(--bone) 5%,transparent)}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:background .15s}.table tbody tr:hover{background:color-mix(in oklch,var(--bone) 5%,transparent)}.table a{color:var(--terra-lite);text-decoration:none}.table-wrap{overflow-x:auto}.table-sub{display:block;color:var(--dim);font-size:.76rem}.badge2{display:inline-block;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;padding:.2rem .5rem;border:1px solid var(--line);color:var(--soft)}.badge2.on{border-color:var(--ok-bd);color:var(--ok)}.thumb-cell{width:56px;height:42px;object-fit:cover;border:1px solid var(--line)}.uploader{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:.5rem}.uploader .prev{width:90px;height:68px;object-fit:cover;border:1px solid var(--line)}.linkbtn{background:none;border:0;color:var(--terra-lite);cursor:pointer;font-size:.85rem;padding:0}.admin-main .linkbtn{display:inline-flex;align-items:center;gap:.3rem;text-decoration:none;font-size:.8rem;font-weight:500;color:var(--soft);border:1px solid color-mix(in oklch,var(--bone) 22%,transparent);padding:.32rem .6rem;transition:all .15s}.admin-main .linkbtn:hover{color:var(--bone);border-color:color-mix(in oklch,var(--bone) 42%,transparent)}.admin-main .linkbtn:disabled{opacity:.5;cursor:progress}.admin-main .linkbtn.danger{color:var(--danger);border-color:var(--danger-bd)}.admin-main .linkbtn.danger:hover{background:color-mix(in oklch,var(--danger) 9%,transparent);border-color:var(--danger)}.admin-login .btn-g,.admin-main .btn-g,.btn.add-item,.form-card .btn-g{background:color-mix(in oklch,var(--bone) 8%,transparent);border-color:color-mix(in oklch,var(--bone) 32%,transparent);color:var(--bone)}.admin-login .btn-g:hover,.admin-main .btn-g:hover,.btn.add-item:hover,.form-card .btn-g:hover{background:color-mix(in oklch,var(--bone) 16%,transparent);border-color:var(--bone)}.admin-main .stat{background:var(--near)}a.stat{text-decoration:none;transition:background .15s}a.stat:hover{background:color-mix(in oklch,var(--bone) 6%,transparent)}.admin-side .linkbtn{border:0;text-decoration:underline;color:var(--terra-lite);padding:0}.invoice-status{display:inline-flex;width:max-content;border:1px solid var(--line);padding:.28rem .58rem;font-size:.68rem;line-height:1;letter-spacing:.08em;font-weight:700}.status-paid{color:var(--ok);border-color:var(--ok-bd)}.status-sent{color:var(--info);border-color:var(--info-bd)}.status-overdue{color:var(--warn);border-color:var(--warn-bd)}.status-cancelled{color:var(--g400)}.admin-actions,.invoice-share{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.backlink{display:inline-block;color:var(--terra-lite);font-size:.82rem;text-decoration:none;margin-bottom:.45rem}.invoice-form{max-width:1000px}.invoice-section-title{font-size:1.25rem;margin:1.6rem 0 1rem}.invoice-items{display:grid;grid-gap:.7rem;gap:.7rem;margin-bottom:1rem}.invoice-item-row{display:grid;grid-template-columns:minmax(240px,1fr) 90px 180px auto;grid-gap:.7rem;gap:.7rem;align-items:end;padding:.8rem;border:1px solid var(--line)}.danger{color:var(--danger)}.invoice-adjustments{display:grid;grid-template-columns:180px 140px 1fr;grid-gap:1rem;gap:1rem;margin:1.5rem 0}.invoice-live-total{justify-self:end;min-width:260px;display:grid;grid-gap:.35rem;gap:.35rem;text-align:right;color:var(--soft)}.invoice-live-total strong{border-top:1px solid var(--line);padding-top:.6rem;color:var(--bone);font-size:1.25rem}.invoice-admin-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-gap:1.4rem;gap:1.4rem;align-items:start}.invoice-admin-side{display:grid;grid-gap:1rem;gap:1rem;position:-webkit-sticky;position:sticky;top:1rem}.invoice-admin-side .form-card{padding:1.2rem}.invoice-admin-side h3{margin-bottom:.55rem}.invoice-paper{background:#f4f5f3;color:#171a1c;padding:clamp(1.5rem,4vw,3.5rem);min-height:800px}.invoice-paper .eyebrow{color:#8c4d31}.invoice-paper h1,.invoice-paper h2{color:#171a1c}.invoice-title-row{display:flex;justify-content:space-between;gap:2rem}.invoice-title-row h1,.invoice-title-row h2{font-size:clamp(2rem,4vw,3.2rem);margin-top:.65rem}.invoice-paper .invoice-status{color:#24292d;border-color:#9da3a7}.invoice-paper .status-paid{color:#17643c;border-color:#4a926c}.invoice-paper .status-sent{color:#1a5178;border-color:#5a8fb0}.invoice-paper .status-overdue{color:#9a4a12;border-color:#c98a4e}.invoice-paper .status-cancelled{color:#697176}.invoice-parties{display:grid;grid-template-columns:1fr 1fr;grid-gap:2rem;gap:2rem;margin:3rem 0}.invoice-parties>div{display:flex;flex-direction:column}.invoice-copy small,.invoice-parties small,.invoice-payment-box small{font-size:.66rem;letter-spacing:.12em;color:#697176;margin-bottom:.45rem}.invoice-parties strong{font-size:1.05rem}.invoice-parties span{color:#555e63;font-size:.88rem}.invoice-dates{display:flex;gap:2rem;padding:1rem 0;border-block:1px solid #cdd1d3;font-size:.84rem;color:#697176}.invoice-dates strong{color:#171a1c;margin-left:.35rem}.invoice-lines{width:100%;border-collapse:collapse;margin-top:2rem}.invoice-lines th{text-align:left;font-size:.67rem;letter-spacing:.08em;color:#697176;border-bottom:1px solid #aeb4b7;padding:.7rem}.invoice-lines td{padding:.85rem .7rem;border-bottom:1px solid #d7dadd;font-size:.88rem}.invoice-lines td:not(:first-child),.invoice-lines th:not(:first-child){text-align:right}.invoice-totals{margin:1.5rem 0 2rem auto;max-width:340px;display:grid;grid-gap:.5rem;gap:.5rem}.invoice-totals span,.invoice-totals>strong{display:flex;justify-content:space-between;gap:2rem}.invoice-totals>strong{font-size:1.1rem;border-top:2px solid #171a1c;padding-top:.75rem}.invoice-copy{border-top:1px solid #d0d4d6;padding-top:1rem;margin-top:1rem}.invoice-copy p{white-space:pre-wrap;font-size:.86rem;color:#50595e}.payment-row{display:grid;grid-template-columns:1fr auto;grid-gap:.15rem;gap:.15rem;padding:.8rem 0;border-bottom:1px solid var(--line);font-size:.82rem}.payment-row small{grid-column:1/-1;color:var(--dim)}.public-invoice-shell{min-height:100vh;background:#11161a;padding:clamp(1rem,4vw,3rem)}.public-invoice-top{max-width:1000px;margin:0 auto 1.2rem;display:flex;justify-content:space-between}.public-invoice-top .brand b{color:var(--terra-lite)}.invoice-paper.public{max-width:1000px;margin:auto;min-height:auto}.invoice-payment-box{background:#e1e6e7;margin-top:2.5rem;padding:1.4rem;display:flex;align-items:center;justify-content:space-between;gap:2rem}.invoice-payment-box h2{font-size:1.7rem;margin:.15rem 0}.invoice-payment-box p{font-size:.82rem;color:#596267}.public-invoice-help{text-align:center;color:#889;font-size:.82rem;margin-top:1rem}@media(max-width:900px){.invoice-admin-grid{grid-template-columns:1fr}.invoice-admin-side{position:static}.invoice-item-row{grid-template-columns:1fr 80px 150px}.invoice-item-row .linkbtn{grid-column:1/-1}.invoice-adjustments{grid-template-columns:1fr 1fr}.invoice-live-total{grid-column:1/-1;justify-self:stretch}.invoice-parties{grid-template-columns:1fr}.invoice-payment-box{align-items:flex-start;flex-direction:column}}@media(max-width:560px){.invoice-adjustments,.invoice-item-row{grid-template-columns:1fr}.invoice-live-total{grid-column:auto}.invoice-paper{padding:1.15rem}.invoice-dates{flex-direction:column;gap:.4rem}.public-invoice-shell{padding:.7rem}.invoice-payment-box .btn{width:100%}}@media print{.alert,.hdr,.invoice-payment-box,.public-invoice-help,.public-invoice-top,footer{display:none!important}.public-invoice-shell{background:#fff;padding:0}.invoice-paper.public{max-width:none;padding:12mm}.invoice-paper{min-height:0}@page{size:A4;margin:0}}.job-progress-track{width:120px;height:6px;background:var(--line);position:relative}.job-progress-fill{height:100%;background:var(--terra-lite)}.job-stepper{display:grid;grid-gap:0;gap:0}.job-step{display:flex;align-items:flex-start;gap:.8rem;border-left:2px solid var(--line);margin-left:5px;padding:.7rem 0 .7rem 1.1rem;position:relative}.job-step-dot{width:10px;height:10px;border-radius:50%;background:var(--line);flex-shrink:0;margin-top:.3rem;margin-left:-1.55rem;border:2px solid var(--paper2)}.job-step-done .job-step-dot{background:var(--ok-bd)}.job-step-in_progress .job-step-dot{background:var(--terra-lite)}.job-step-done strong{color:var(--soft)}.job-step-in_progress strong{color:var(--bone)}.job-step-pending strong{color:var(--dim)}.job-step-body{flex:1 1}.job-step form{margin-left:auto}.job-step.public .job-step-dot{border-color:#f4f5f3}.job-step.public.job-step-done strong,.job-step.public.job-step-in_progress strong{color:#171a1c}.job-step.public.job-step-pending strong{color:#9aa0a3}.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease)}.reveal.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .reveal{opacity:1;transform:none;transition:none}}