/* Vyxo Docs - app styles. Mobile first, no external dependencies.
   One design system: neutral surfaces, the company's accent colour (--brand), pill controls, 22px cards. */
@font-face{font-family:"Poppins";font-weight:400;font-style:normal;font-display:swap;src:url(../fonts/Poppins-Regular.woff2) format("woff2")}
@font-face{font-family:"Poppins";font-weight:500;font-style:normal;font-display:swap;src:url(../fonts/Poppins-Medium.woff2) format("woff2")}
@font-face{font-family:"Poppins";font-weight:700;font-style:normal;font-display:swap;src:url(../fonts/Poppins-Bold.woff2) format("woff2")}

:root{
  --ink:#101828; --ink-2:#344054; --muted:#667085; --line:#eaecf0; --line-2:#d0d5dd;
  --bg:#f5f6fa; --card:#fff; --soft:#f8f9fc;
  --brand:#1f3a8a; --brand-ink:#fff; --brand-soft:#eef2fb; --brand-mid:#d3def5; --brand-deep:#17306f;
  --ok:#157347; --ok-bg:#e6f4ec; --warn:#a15c07; --warn-bg:#fdf1dc; --bad:#b3261e; --bad-bg:#fbe9e7; --info:#1d5fa8; --info-bg:#e5f0fb; --grey-bg:#f0f2f6;
  --r:22px; --r-md:18px; --r-sm:14px; --pill:999px;
  --shadow:0 1px 2px rgba(16,24,40,.05),0 10px 24px -16px rgba(16,24,40,.16);
  --lift:0 14px 34px -14px rgba(16,24,40,.28);
  --ease:cubic-bezier(.2,.8,.2,1);
  --side:256px; --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
  font-family:"Poppins",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overscroll-behavior-y:none}
body{margin:0;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5;-webkit-tap-highlight-color:transparent;overflow-x:hidden;overscroll-behavior-y:none;-webkit-font-smoothing:antialiased}
h1,h2,h3{margin:0;line-height:1.25;font-weight:700;letter-spacing:-.015em}
h1{font-size:1.6rem} h2{font-size:1.05rem} h3{font-size:1rem}
p{margin:0}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%}
small{font-size:.8rem}
:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 45%,#fff);outline-offset:2px;border-radius:var(--pill)}
[hidden]{display:none!important}
.muted{color:var(--muted)}
.center{text-align:center}
.small{font-size:.85rem}
.skip{position:absolute;left:-999px;top:0;background:#fff;padding:.6rem 1rem;z-index:99}
.skip:focus{left:8px;top:8px}
.i{width:1.15em;height:1.15em;flex:none;vertical-align:-.2em;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.link{font-size:.85rem;font-weight:500}
.owe{color:var(--bad)} .ok{color:var(--ok)}

/* ---------- Buttons ---------- */
.btn,button.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:46px;padding:.55rem 1.25rem;border-radius:var(--pill);border:1px solid transparent;font:500 .92rem/1.2 inherit;font-family:inherit;cursor:pointer;text-decoration:none!important;white-space:nowrap;-webkit-appearance:none;appearance:none;transition:background .18s,border-color .18s,box-shadow .18s,transform .15s var(--ease),color .18s}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--brand);color:var(--brand-ink);box-shadow:0 8px 18px -10px color-mix(in srgb,var(--brand) 85%,#000)}
.btn-primary:hover{background:var(--brand-deep)}
.btn-ghost{background:#fff;border-color:var(--line-2);color:var(--ink)}
.btn-ghost:hover{background:var(--soft);border-color:var(--muted)}
.btn-quiet{background:transparent;color:var(--ink-2)}
.btn-quiet:hover{background:var(--grey-bg)}
.btn-danger{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn-danger:hover{filter:brightness(.93)}
.btn-danger-text{color:var(--bad)}
.btn-sm{min-height:38px;padding:.35rem .95rem;font-size:.85rem}
.btn-lg{min-height:52px;font-size:1rem}
.btn-block{display:flex;width:100%}
.btn-icon{padding:.55rem .8rem}
.btn[disabled]{opacity:.55;pointer-events:none}
.iconbtn{display:inline-grid;place-items:center;width:42px;height:42px;border:0;border-radius:50%;background:transparent;color:var(--ink-2);cursor:pointer;transition:background .18s}
.iconbtn:hover{background:var(--grey-bg)}
.linkbtn{border:0;background:none;color:var(--brand);font:inherit;font-weight:500;cursor:pointer;padding:0;text-decoration:underline}

/* ---------- Forms ---------- */
.field{display:block;margin:0 0 1rem}
.field>span:not([class]){display:block;font-size:.8rem;font-weight:500;color:var(--ink-2);margin:0 0 .35rem .2rem}
.field>span small,.check small,.switch small{font-weight:400;color:var(--muted)}
.req{color:var(--bad);font-style:normal}
input[type=text],input[type=email],input[type=password],input[type=search],input[type=date],input[type=number],input[type=url],input[type=tel],input:not([type]),select,textarea{width:100%;min-height:48px;padding:.6rem 1.1rem;border:1px solid var(--line-2);border-radius:var(--pill);background:#fff;color:var(--ink);font:inherit;font-size:16px;-webkit-appearance:none;appearance:none;transition:border-color .18s,box-shadow .18s}
select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23667085' stroke-width='2'%3E%3Cpath d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1.1rem center;padding-right:2.6rem}
textarea{resize:vertical;min-height:84px;line-height:1.5;border-radius:var(--r-md);padding:.8rem 1.1rem}
input::placeholder,textarea::placeholder{color:#98a2b3}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 14%,transparent)}
input[type=color]{width:100%;min-height:48px;padding:4px;border:1px solid var(--line-2);border-radius:var(--pill);background:#fff}
input[type=date]{min-width:0;max-width:100%}
input[type=date]::-webkit-date-and-time-value{text-align:left}
input[type=checkbox],input[type=radio]{accent-color:var(--brand)}
.field-err{color:var(--bad);font-size:.8rem;margin:.3rem 0 0 .2rem}
.hint{font-size:.8rem;color:var(--muted);margin:.3rem 0 0 .2rem;display:block}
.grid2{display:grid;gap:0 .9rem;grid-template-columns:1fr}
.grid3{display:grid;gap:0 .9rem;grid-template-columns:1fr 1fr}
.field,.grid2>*,.grid3>*{min-width:0}
.inline2{display:grid;grid-template-columns:1fr auto;gap:.5rem}
.field>.inline2{display:grid;margin:0;font-size:inherit;font-weight:400;color:inherit}
.inline2 select{width:auto;min-width:5.5rem}
.ship-row .inline2{grid-template-columns:1.3fr 1fr}
.check{display:flex;gap:.7rem;align-items:flex-start;margin:0 0 .85rem;font-size:.9rem;cursor:pointer}
.check input{width:20px;height:20px;margin:.1rem 0 0;flex:none}
.check-danger{color:var(--bad)}
.check-top{align-self:end;padding-bottom:.55rem}
.checks{margin-top:.4rem}
.pw{position:relative;display:block}
.pw input{padding-right:3.2rem}
.pw-toggle{position:absolute;right:4px;top:4px;width:40px;height:40px;border:0;background:none;color:var(--muted);cursor:pointer;border-radius:50%}
.stack{display:grid;gap:.2rem}
.stack-lg{display:grid;gap:1.25rem}
.seg{display:flex;gap:.2rem;margin-bottom:1rem;border:1px solid var(--line-2);border-radius:var(--pill);padding:4px;background:#fff}
.seg label{flex:1;position:relative}
.seg input{position:absolute;opacity:0;inset:0}
.seg span{display:block;text-align:center;padding:.55rem .5rem;font-size:.88rem;font-weight:500;color:var(--ink-2);cursor:pointer;border-radius:var(--pill);transition:background .18s,color .18s}
.seg input:checked+span{background:var(--brand);color:var(--brand-ink)}
.seg input:focus-visible+span{outline:3px solid color-mix(in srgb,var(--brand) 45%,#fff);outline-offset:1px}
fieldset.group{border:1px solid var(--line);border-radius:var(--r);background:#fff;padding:1.1rem 1.1rem .4rem;margin:0}
fieldset.group legend{font-weight:700;padding:0 .5rem;font-size:.95rem}
.search{display:flex;align-items:center;gap:.6rem;background:#fff;border:1px solid var(--line-2);border-radius:var(--pill);padding:0 1.1rem;min-height:48px;flex:1;min-width:0;transition:border-color .18s,box-shadow .18s}
.search:focus-within{border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 14%,transparent)}
.search .i{color:var(--muted)}
.search input{border:0;box-shadow:none!important;padding:.5rem 0;min-height:44px;background:transparent;min-width:0;flex:1;width:100%;border-radius:0}
.search-sm{min-height:40px}.search-sm input{min-height:38px;font-size:14px}
.otp{font-size:1.6rem!important;letter-spacing:.5em;text-align:center;font-weight:700;padding-left:.5em!important}

/* ---------- Surfaces ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.15rem;margin-bottom:1rem;box-shadow:var(--shadow)}
.card-t{font-size:1.02rem;margin-bottom:.85rem}
.card-head{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem}
.card-head .card-t{margin:0}
.form-card,.form-card-wrap{max-width:760px}
.pagehead{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin:.2rem 0 1.15rem;flex-wrap:wrap}
.pagehead h1{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.pagehead p{font-size:.88rem;margin-top:.2rem}
.pagehead-actions{display:flex;gap:.5rem;flex-wrap:wrap}
.backlink{display:inline-flex;align-items:center;gap:.3rem;font-size:.82rem;color:var(--muted);margin-bottom:.3rem}
.lede{color:var(--muted);margin-bottom:1.1rem}
.infobox{background:var(--brand-soft);border:1px solid var(--brand-mid);border-radius:var(--r-md);padding:.85rem 1.1rem;font-size:.88rem;margin:1rem 0;max-width:760px}
.note-line{font-size:.88rem;margin:-.3rem 0 1rem;color:var(--ink-2)}
.empty{text-align:center;padding:2.5rem 1rem;color:var(--muted);display:grid;justify-items:center;gap:.5rem;background:#fff;border:1.5px dashed var(--line-2);border-radius:var(--r)}
.empty>.i{width:2.6rem;height:2.6rem;color:var(--brand);opacity:.85}
.empty h3{color:var(--ink)}
.empty p{max-width:30ch}
.empty .btn{margin-top:.6rem}
.empty-sm{padding:1.4rem .8rem;border:0;background:transparent}
.empty-page{margin:12vh auto 0;max-width:28rem}
.two-col{display:grid;gap:1rem;max-width:1000px}
.center-form{margin-top:1rem;text-align:center}
.kv{display:grid;grid-template-columns:auto 1fr;gap:.5rem 1rem;margin:0;font-size:.9rem}
.kv dt{color:var(--muted)} .kv dd{margin:0;word-break:break-word}
.divider{display:flex;align-items:center;gap:.8rem;margin:1.1rem 0;color:var(--muted);font-size:.82rem}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line)}
.danger-zone{border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}
.danger-zone .card-t{color:var(--bad)}

/* ---------- Chips, flash ---------- */
.chip{display:inline-block;padding:.14rem .65rem;border-radius:var(--pill);font-size:.74rem;font-weight:500;line-height:1.5;white-space:nowrap;vertical-align:middle}
.chip-grey{background:var(--grey-bg);color:var(--ink-2)}
.chip-green{background:var(--ok-bg);color:var(--ok)}
.chip-amber{background:var(--warn-bg);color:var(--warn)}
.chip-red{background:var(--bad-bg);color:var(--bad)}
.chip-blue{background:var(--info-bg);color:var(--info)}
.tagpill{display:inline-block;padding:.1rem .6rem;border-radius:var(--pill);background:var(--brand-soft);color:var(--brand-deep);font-size:.72rem;font-weight:500}
.flash{display:flex;gap:.65rem;align-items:flex-start;padding:.8rem 1rem;border-radius:var(--r-md);margin-bottom:1rem;font-size:.9rem;border:1px solid}
.flash-ok{background:var(--ok-bg);border-color:#bfe0cd;color:#0d5132}
.flash-err{background:var(--bad-bg);border-color:#f2c6c1;color:#7f1d17}
.flash-info{background:var(--info-bg);border-color:#c3dcf3;color:#174a80}
.flash span{flex:1}
.flash-x{border:0;background:none;color:inherit;opacity:.6;cursor:pointer;padding:0;line-height:1}
.planbar{display:flex;align-items:center;gap:.65rem;padding:.65rem 1rem;margin-bottom:1rem;border-radius:var(--r-md);background:var(--info-bg);color:#174a80;text-decoration:none!important;font-size:.84rem;line-height:1.35;border:1px solid #c3dcf3}
.planbar span{flex:1;min-width:0}
.planbar .i{width:1.1rem;height:1.1rem;flex:0 0 1.1rem}
.planbar-bad{background:var(--bad-bg);color:#7f1d17;border-color:#f2c6c1}
.planbar-go{background:var(--ok-bg);color:#0d5132;border-color:#bfe0cd}

/* ---------- App shell ---------- */
body.app .side{display:none}
body.app .top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:calc(.55rem + var(--safe-t)) .9rem .55rem 1rem;background:rgba(245,246,250,.86);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);min-height:60px}
.top-brand{display:flex;align-items:center;gap:.65rem;font-weight:700;font-size:1.05rem;color:var(--ink);min-width:0}
.top-brand span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.top-brand:hover{text-decoration:none}
.top .iconbtn{background:#fff;border:1px solid var(--line);box-shadow:0 1px 2px rgba(16,24,40,.04)}
.brandlogo{height:32px;width:auto;max-width:90px;object-fit:contain;border-radius:8px}
.brandmono{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--brand);color:var(--brand-ink);font-weight:700;font-size:.8rem;flex:none}
.main{padding:.5rem 1rem calc(124px + var(--safe-b));max-width:1180px;margin:0 auto}
.avatar{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--brand-soft);color:var(--brand-deep);font-weight:700;font-size:.82rem;flex:none}
.avatar-sq{border-radius:50%}

/* Bottom menu: floating pill, the + button sits inside it */
.tabbar{position:fixed;left:12px;right:12px;bottom:calc(10px + var(--safe-b));z-index:30;display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) 68px repeat(2,minmax(0,1fr));align-items:center;height:66px;padding:0 .4rem;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:var(--pill);box-shadow:var(--lift)}
.tabbar a,.tabbar>button:not(.fab){display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.12rem;height:100%;padding:0;color:var(--muted);font-family:inherit;font-size:.64rem;font-weight:500;line-height:1.2;border:0;background:none;border-radius:0;text-decoration:none!important;cursor:pointer;white-space:nowrap}
.tabbar a .i,.tabbar>button:not(.fab) .i{box-sizing:content-box;width:21px;height:21px;padding:4px 17px;border-radius:var(--pill);transition:background .2s,color .2s}
.tabbar .on{color:var(--brand);font-weight:700}
.tabbar a.on .i,.tabbar>button.on:not(.fab) .i{background:var(--brand-soft)}
.fab{width:52px;height:52px;margin:0 auto;justify-self:center;border-radius:50%;border:0;background:var(--brand);color:var(--brand-ink);display:grid;place-items:center;cursor:pointer;box-shadow:0 10px 20px -8px color-mix(in srgb,var(--brand) 80%,#000);transition:transform .2s var(--ease)}
.fab .i{width:24px;height:24px;stroke-width:2.2}
.fab:active{transform:scale(.9) rotate(90deg)}
body.app:has(.actionbar:not(.actionbar-inline)) .tabbar{display:none}

/* Sheets (More, New document) */
.sheet-wrap{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center}
.sheet-bg{position:absolute;inset:0;background:rgba(16,24,40,.45);animation:fade .25s both}
.sheet{position:relative;width:calc(100% - 20px);max-width:560px;max-height:88vh;overflow:auto;margin:0 10px calc(10px + var(--safe-b));background:#fff;border-radius:30px;padding:.55rem 1rem 1rem;box-shadow:var(--lift);animation:vy-sheet .32s cubic-bezier(.2,.9,.25,1) both}
.sheet h2{margin:.5rem .4rem .8rem;font-size:1.12rem}
.sheet-grab{width:40px;height:4px;border-radius:2px;background:var(--line-2);margin:.2rem auto .4rem}
.sheet p{font-size:.9rem;margin-bottom:.8rem}
.newgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:.55rem}
.newtile{display:flex;align-items:center;gap:.65rem;padding:.45rem .9rem .45rem .45rem;border:1px solid var(--line);border-radius:var(--pill);background:var(--soft);color:var(--ink);text-decoration:none!important;font-size:.88rem;font-weight:500;transition:background .18s,border-color .18s,transform .15s var(--ease)}
.newtile:hover{border-color:var(--brand-mid);background:var(--brand-soft)}
.newtile:active{transform:scale(.97)}
.newic{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--brand-soft);color:var(--brand);flex:none}
.newtile:hover .newic{background:#fff}
.morelist{display:grid;gap:.45rem}
.morelist a,.morelist button{display:flex;align-items:center;gap:.8rem;width:100%;min-height:3.4rem;padding:.4rem .9rem .4rem .45rem;border:1px solid var(--line);background:var(--soft);border-radius:var(--pill);color:var(--ink);font-family:inherit;font-size:.96rem;font-weight:500;line-height:1.2;text-align:left;text-decoration:none!important;cursor:pointer;-webkit-appearance:none;appearance:none;transition:background .18s,border-color .18s,transform .15s var(--ease)}
.morelist a .i,.morelist button .i{box-sizing:content-box;width:20px;height:20px;flex:0 0 20px;padding:9px;border-radius:50%;background:var(--brand-soft);color:var(--brand)}
.morelist a::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--muted);border-top:2px solid var(--muted);transform:rotate(45deg);opacity:.55}
.morelist a:hover,.morelist button:hover{background:var(--brand-soft);border-color:var(--brand-mid)}
.morelist a:active,.morelist button:active{transform:scale(.98)}
.morelist form{margin:.3rem 0 0;padding-top:.6rem;border-top:1px solid var(--line)}
.morelist form button{background:var(--bad-bg);border-color:transparent;color:var(--bad);font-weight:600}
.morelist form button .i{background:#fff;color:var(--bad)}
@media(max-width:899px){
  body.app .tabbar{z-index:70}
  body.app .sheet-wrap .sheet{margin-bottom:calc(92px + var(--safe-b));max-height:calc(100dvh - 130px - var(--safe-b))}
}

/* ---------- Tabs, filters, lists ---------- */
.tabs{display:flex;gap:.4rem;overflow-x:auto;margin:0 -1rem 1rem;padding:.1rem 1rem;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs a{white-space:nowrap;padding:.5rem 1rem;border-radius:var(--pill);background:#fff;border:1px solid var(--line);color:var(--ink-2);font-size:.85rem;font-weight:500;text-decoration:none!important;transition:background .18s,color .18s,border-color .18s,transform .15s var(--ease)}
.tabs a small{color:var(--muted);margin-left:.25rem}
.tabs a:active{transform:scale(.96)}
.tabs a.on{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}
.tabs a.on small{color:inherit;opacity:.8}
.filters{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:1rem;align-items:center}
.filters select,.filters input[type=date]{width:auto;flex:1 1 130px}
.filters .search-wide{flex:1 1 100%;min-width:100%}
.filters .f-status{flex:1 1 0;width:auto;min-width:0;order:2}
.filters .search-wide{order:1}
.datef{flex:1 1 calc(50% - .3rem);min-width:0;margin:0;display:grid;gap:.2rem}
.datef span{display:block;font-size:.72rem;color:var(--muted);margin:0 0 0 .3rem}
.datef input[type=date]{width:100%;flex:none;min-width:0}
.f-actions{display:contents}
.f-actions .btn-primary{order:3;flex:0 0 auto;min-height:48px;padding:.5rem 1.2rem}
.datef{order:4}
.f-actions .btn-quiet{order:5;flex:0 0 auto;margin-top:.1rem}
.f-actions .f-csv{margin-left:auto}
.rows{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}
.rows-head{display:none}
.row{display:grid;grid-template-columns:1fr auto;gap:.15rem .8rem;padding:.9rem 1.1rem;color:var(--ink);text-decoration:none!important;border-bottom:1px solid var(--line);transition:background .15s}
.row:last-child{border-bottom:0}
.row:hover,.row:active{background:var(--soft)}
.row small{display:block;color:var(--muted);font-size:.76rem;font-weight:400}
.row-main{display:flex;gap:.75rem;align-items:center;grid-column:1;min-width:0}
.row-main b{font-weight:600}
.row-ic,.rel-ic,.tile-ic,.adm-tic{display:grid;place-items:center;border-radius:50%;background:var(--brand-soft);color:var(--brand);flex:none}
.row-ic{width:40px;height:40px}
.row-party{grid-column:1;padding-left:calc(40px + .75rem);font-size:.88rem;min-width:0;overflow:hidden;text-overflow:ellipsis}
.row-date{display:none}
.row-amt{grid-column:2;grid-row:1;text-align:right;font-weight:600;font-size:.94rem}
.row-status{grid-column:2;grid-row:2;text-align:right}
.cards{display:grid;gap:.65rem;grid-template-columns:minmax(0,1fr)}
.contact{display:flex;align-items:center;gap:.85rem;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.85rem 1rem;color:var(--ink);text-decoration:none!important;box-shadow:var(--shadow);min-width:0;transition:transform .15s var(--ease),border-color .18s,background .18s}
a.contact:hover{border-color:var(--brand-mid);background:var(--soft)}
a.contact:active{transform:scale(.98)}
.contact-t{flex:1;min-width:0}
.contact-t b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-t small,.contact-r small{display:block;color:var(--muted);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.contact-r{text-align:right;flex:none;max-width:42%}
.contact-r b{font-size:.9rem}
.rel{display:flex;align-items:center;gap:.8rem;padding:.75rem .1rem;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none!important}
.rel:last-child{border-bottom:0;padding-bottom:.2rem}
.rel:hover{background:var(--soft)}
.rel>span:first-child:not(.rel-ic){flex:1}
.rel small{display:block;color:var(--muted);font-size:.76rem}
.rel-ic{width:38px;height:38px}
.rel-t{flex:1;min-width:0}
.rel-t b,.rel-t small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rel-t b{font-weight:600}
.rel-r{text-align:right;display:grid;gap:.2rem;justify-items:end;flex:none}
.rel-r b{font-size:.88rem}
.pager{display:flex;justify-content:space-between;align-items:center;margin:1rem 0;font-size:.85rem}
.cards>*,.tiles>*{min-width:0}

/* Settings hub tiles */
.tiles{display:grid;gap:.75rem;max-width:760px}
.tile{display:flex;align-items:center;gap:1rem;padding:1rem 1.1rem;background:#fff;border:1px solid var(--line);border-radius:var(--r);color:var(--ink);text-decoration:none!important;box-shadow:var(--shadow);transition:transform .15s var(--ease),border-color .18s}
.tile:hover{border-color:var(--brand-mid)}
.tile:active{transform:scale(.985)}
.tile-ic{width:50px;height:50px}
.tile-ic .i{width:24px;height:24px}
.tile-t{flex:1;min-width:0}
.tile-t b{display:block;font-size:1rem;font-weight:600;line-height:1.25}
.tile-t small{display:block;margin-top:.15rem;font-size:.8rem;line-height:1.4;color:var(--muted)}
.tile-go{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--soft);color:var(--muted);flex:none;transition:background .18s,color .18s}
.tile-go .i{width:18px;height:18px}
.tile:hover .tile-go{background:var(--brand-soft);color:var(--brand)}
.tc0{background:#e8eefc!important;color:#1f3a8a!important}
.tc1{background:#fdeee0!important;color:#b4540a!important}
.tc2{background:#e6f4ec!important;color:#157347!important}
.tc3{background:#f1e9fb!important;color:#6b36b4!important}
.tc4{background:#fdeaf0!important;color:#b3265e!important}

/* ---------- Dashboard ---------- */
.hero{position:relative;display:grid;gap:.15rem;margin-bottom:.75rem;padding:1.3rem 1.35rem;border-radius:28px;color:var(--brand-ink);text-decoration:none!important;overflow:hidden;background:linear-gradient(135deg,var(--brand-deep),var(--brand) 70%);box-shadow:0 18px 34px -20px color-mix(in srgb,var(--brand) 90%,#000)}
.hero::before,.hero::after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.08);pointer-events:none}
.hero::before{width:190px;height:190px;right:-60px;top:-80px}
.hero::after{width:120px;height:120px;right:40px;bottom:-70px}
.hero small{font-size:.82rem;opacity:.85}
.hero b{font-size:2rem;font-weight:700;letter-spacing:-.02em;line-height:1.2}
.hero span{font-size:.82rem;opacity:.85}
.hero b em{font-style:normal;font-size:.95rem;font-weight:500;opacity:.8;margin-left:.15rem}
.kpis{display:grid;grid-template-columns:minmax(0,1fr);gap:.6rem;margin-bottom:1rem}
.kpi{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"s b" "i b";align-items:center;column-gap:1rem;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.85rem 1.1rem;color:var(--ink);text-decoration:none!important;box-shadow:var(--shadow);min-width:0;transition:transform .15s var(--ease),border-color .18s}
a.kpi:hover{border-color:var(--brand-mid)}
a.kpi:active{transform:scale(.98)}
.kpi small{grid-area:s;color:var(--muted);font-size:.8rem}
.kpi b{grid-area:b;font-size:1.1rem;font-weight:700;letter-spacing:-.01em;text-align:right}
.kpi i{grid-area:i;font-style:normal;color:var(--muted);font-size:.74rem}
.kpi-warn{border-color:#f0c9a4;background:#fffaf3}.kpi-warn b{color:var(--warn)}
.dash-grid{display:grid;gap:1rem;align-items:start}
.bars{width:100%;height:auto;display:block}
.bar{fill:var(--brand-mid)}.bar-now{fill:var(--brand)}
.bar-l{font-size:11px;fill:var(--muted)}.bar-v{font-size:10px;fill:var(--ink-2);font-weight:500}
.checklist{list-style:none;margin:.9rem 0 0;padding:0;display:grid;gap:.45rem}
.checklist li{border:1px solid var(--line);border-radius:var(--pill);background:#fff;overflow:hidden}
.checklist .crow{display:flex;align-items:center;gap:.8rem;min-height:3.2rem;padding:.4rem .9rem .4rem .5rem;color:var(--ink);text-decoration:none!important;font-weight:500;font-size:.94rem;line-height:1.25}
.checklist a.crow:active,.checklist a.crow:hover{background:var(--soft)}
.checklist .ct{flex:1;min-width:0}
.checklist .crow>.i{width:1.1rem;height:1.1rem;flex:0 0 1.1rem;color:var(--muted)}
.checklist .ck{display:grid;place-items:center;flex:0 0 2.2rem;width:2.2rem;height:2.2rem;border-radius:50%;background:var(--grey-bg);color:var(--ink-2)}
.checklist .ck .i{width:1rem;height:1rem}
.checklist .next{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}
.checklist .next .ck{background:var(--brand);color:var(--brand-ink)}
.checklist .done{background:var(--soft);border-color:transparent}
.checklist .done .crow{color:var(--muted);font-weight:400}
.checklist .done .ck{background:var(--ok-bg);color:var(--ok)}
.checklist .done .ct{text-decoration:line-through;text-decoration-color:var(--line-2)}
.meter{height:8px;border-radius:var(--pill);background:var(--grey-bg);overflow:hidden}
.meter i{display:block;height:100%;background:var(--brand);border-radius:var(--pill);transition:width .8s var(--ease)}
.meter-l{font-size:.85rem;margin:.4rem 0 .7rem}
.bar-row{margin-bottom:.9rem}
.bar-row-t{display:flex;justify-content:space-between;gap:.5rem;font-size:.88rem;margin-bottom:.3rem}

/* ---------- Document editor ---------- */
.editor-grid{display:grid;gap:1rem}
.line{border:1px solid var(--line);border-radius:var(--r-md);padding:.85rem;margin-bottom:.7rem;background:var(--soft)}
.line-top{display:flex;gap:.5rem;align-items:flex-start}
.l-desc{flex:1;margin:0}
.l-desc span,.line-nums label span,.l-amt span,.line-opts label span{display:block;font-size:.72rem;color:var(--muted);margin:0 0 .2rem .6rem}
.line textarea{min-height:48px}
.line-rm{border:0;background:none;color:var(--muted);width:38px;height:38px;margin-top:1.3rem;border-radius:50%;cursor:pointer}
.line-rm:hover{background:var(--bad-bg);color:var(--bad)}
.line-nums{display:grid;grid-template-columns:1fr 1.3fr 1.3fr;gap:.5rem;margin-top:.5rem;align-items:end}
.line-nums label{margin:0}
.line-nums input,.line-opts input{min-height:42px;padding:.4rem .7rem;font-size:15px;text-align:right}
.l-amt{align-self:end;text-align:right;margin:0}
.l-amt span{margin:0}
.l-amt b{display:block;padding:.55rem .4rem 0;font-size:1.05rem}
.line-opts{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-bottom:.7rem}
.line-opts label{margin:0}
.line-opts input{text-align:center}
.line-more{margin-top:.5rem;font-size:.85rem}
.line-more-in{padding-top:.5rem}
.add-line{margin-top:.3rem}
details.more summary,.line-more summary{list-style:none;display:flex;align-items:center;gap:.5rem;cursor:pointer;color:var(--brand);font-weight:500;font-size:.88rem;padding:.4rem .4rem .8rem}
.line-more summary{padding:.5rem .3rem .3rem}
details.more summary::-webkit-details-marker,.line-more summary::-webkit-details-marker{display:none}
details.more summary::before,.line-more summary::before{content:"";width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s;flex:none}
details.more[open] summary::before,.line-more[open] summary::before{transform:rotate(45deg)}
details.more summary small{color:var(--muted);font-weight:400;margin-left:auto;white-space:nowrap}
.combo{position:relative}
.combo-list{position:absolute;z-index:25;left:0;right:0;top:100%;margin:-.6rem 0 0;padding:.3rem;list-style:none;background:#fff;border:1px solid var(--line-2);border-radius:var(--r-md);box-shadow:var(--lift);max-height:260px;overflow:auto}
.combo-inline{min-width:200px}.combo-inline .combo-list{margin-top:.2rem;min-width:260px;right:0;left:auto}
.combo-list li{padding:.55rem .85rem;border-radius:var(--r-sm);cursor:pointer;font-size:.9rem}
.combo-list li small{display:block;color:var(--muted)}
.combo-list li:hover,.combo-list li.on{background:var(--brand-soft)}
.tline{display:flex;justify-content:space-between;gap:1rem;padding:.35rem 0;font-size:.92rem}
.tline-grand{border-top:2px solid var(--ink);margin-top:.5rem;padding-top:.7rem;font-size:1.1rem;font-weight:700}
.words{font-size:.8rem;color:var(--muted);margin-top:.5rem;font-style:italic}
.card.acc{padding:0;overflow:hidden}
.card.acc>summary{display:flex;flex-direction:column;gap:.1rem;padding:1rem 2.8rem 1rem 1.15rem;cursor:pointer;list-style:none;position:relative}
.card.acc>summary::-webkit-details-marker{display:none}
.card.acc>summary::after{content:"";position:absolute;right:1.3rem;top:50%;width:9px;height:9px;margin-top:-7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .2s}
.card.acc[open]>summary::after{transform:rotate(-135deg);margin-top:-2px}
.acc-t{font-weight:700;font-size:1rem}
.acc-s{font-size:.8rem;color:var(--muted)}
.acc-in{padding:.2rem 1.15rem 1.1rem}
.actionbar{position:fixed;left:12px;right:12px;bottom:calc(10px + var(--safe-b));z-index:35;display:flex;gap:.45rem;align-items:center;max-width:calc(100vw - 24px);padding:.5rem .55rem;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:var(--pill);box-shadow:var(--lift);animation:vy-up .4s var(--ease) both}
.actionbar .btn,.actionbar button,.actionbar a.btn{flex:1 1 0;min-width:0;padding:.5rem .5rem;font-size:.86rem;min-height:46px;gap:.3rem;overflow:hidden;text-overflow:ellipsis}
.actionbar .btn-primary{flex:1.7 1 0}
.actionbar .btn .i{width:16px;height:16px;flex:0 0 16px}
.actionbar-inline{position:static;max-width:none;padding:.6rem 0 0;border:0;border-radius:0;box-shadow:none;background:none;animation:none;justify-content:flex-end;-webkit-backdrop-filter:none;backdrop-filter:none}
.actionbar-inline .btn{flex:0 1 auto;padding:.55rem 1.25rem;font-size:.92rem}
.editor,.form-card-wrap{padding-bottom:150px}
.mini-total{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(84px + var(--safe-b));z-index:34;display:flex;align-items:baseline;gap:.6rem;padding:.45rem 1.2rem;border-radius:var(--pill);background:var(--ink);color:#fff;box-shadow:var(--lift);font-size:.9rem;white-space:nowrap}
.mini-total small{opacity:.7}
.mini-total b{font-size:1.1rem}

/* ---------- Document view ---------- */
.show-total{text-align:right;display:grid}
.show-total b{font-size:1.5rem}.show-total small{color:var(--muted)}
.actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}
.show-grid{display:grid;gap:1rem}
.pay{display:flex;justify-content:space-between;align-items:center;padding:.55rem 0;border-bottom:1px solid var(--line)}
.pay small{display:block;color:var(--muted);font-size:.76rem}
.payform{margin-top:1rem}.payform h3{margin-bottom:.6rem;font-size:.95rem}
.statusform{margin-top:1rem}
.linkbox{display:flex;gap:.5rem;margin-bottom:.8rem}
.linkbox input{flex:1;min-width:0;font-size:14px}
.sharebtns{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.8rem}
.paper-fit{position:relative;width:100%;max-width:100%;overflow:hidden;background:#e4e8f0;border-radius:var(--r);border:1px solid var(--line);padding:0}
.paper-frame{display:block;border:0;background:#fff;transform-origin:0 0;width:794px;height:1123px;box-shadow:0 2px 14px rgba(16,24,40,.18)}

/* ---------- Settings, designer ---------- */
.upload{display:grid;gap:1rem}
.upload-prev{display:grid;place-items:center;min-height:130px;border:1.5px dashed var(--line-2);border-radius:var(--r-md);background:repeating-conic-gradient(#f2f4f8 0 25%,#fff 0 50%) 0 0/16px 16px;padding:.8rem}
.upload-prev img{max-width:100%;max-height:110px;object-fit:contain}
.upload-empty{display:grid;justify-items:center;gap:.3rem;color:var(--muted)}
.upload-empty .i{width:2rem;height:2rem}
.filebtn{position:relative;overflow:hidden;margin:.3rem 0 .8rem}
.filebtn input{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}
.doc-sum{display:flex;align-items:center;gap:.7rem;cursor:pointer;list-style:none;padding:.2rem 0 .8rem}
.doc-sum::-webkit-details-marker{display:none}
.doc-sum small{margin-left:auto}
.designer{display:grid;gap:1rem;padding-bottom:90px}
.designer-tabs{display:flex;gap:.2rem;padding:4px;background:#fff;border:1px solid var(--line-2);border-radius:var(--pill);position:sticky;top:62px;z-index:10}
.designer-tabs button{flex:1;border:0;background:none;padding:.6rem;font:500 .9rem inherit;font-family:inherit;color:var(--ink-2);cursor:pointer;border-radius:var(--pill);transition:background .18s,color .18s}
.designer-tabs button.on{background:var(--brand);color:var(--brand-ink)}
.tpl-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem}
.tpl{position:relative;display:block;padding:.65rem;border:2px solid var(--line);border-radius:var(--r-md);cursor:pointer;background:#fff;transition:border-color .18s,background .18s}
.tpl input{position:absolute;opacity:0}
.tpl b{display:block;font-size:.88rem;margin-top:.45rem}
.tpl small{display:block;color:var(--muted);font-size:.72rem;line-height:1.35}
.tpl:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}
.tpl:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--brand) 45%,#fff);outline-offset:2px}
.thumb{display:grid;grid-template-columns:1.2fr 1fr;grid-template-rows:auto auto auto auto auto;gap:3px;aspect-ratio:3/3.6;padding:7px;background:#fff;border:1px solid var(--line);border-radius:8px}
.thumb i{display:block;background:#dfe4ec;border-radius:1px}
.thumb .t-h{grid-column:1;height:10px;width:55%;background:var(--brand)}
.thumb .t-l{grid-column:1;height:5px;width:80%}
.thumb .t-r{grid-column:2;grid-row:1/3;height:14px;align-self:start;background:var(--brand-mid)}
.thumb .t-b{grid-column:1/3;height:6px;background:#eef1f6}
.thumb .t-f{grid-column:2;height:9px;background:var(--brand);width:70%;justify-self:end;margin-top:2px}
.thumb-modern{padding-top:0;border-top:12px solid var(--brand)}
.thumb-modern .t-b{background:#f2f4f8}
.thumb-minimal i{background:#eef0f4}.thumb-minimal .t-h,.thumb-minimal .t-f{background:#9aa5b6}
.thumb-minimal .t-b{background:none;border-bottom:1px solid #dfe4ec;height:5px;border-radius:0}
.thumb-corporate{border-top:5px solid var(--ink)}
.thumb-corporate .t-b{outline:1px solid #c5cdd9;background:#fff;height:5px}
.thumb-elegant{justify-items:center;border-top:3px double var(--brand)}
.thumb-elegant .t-h{grid-column:1/3;width:45%;justify-self:center;background:var(--ink)}
.thumb-elegant .t-l{grid-column:1/3;justify-self:center}
.thumb-elegant .t-r{display:none}
.thumb-compact .t-b{height:3px}
.swatches{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center}
.swatch,.sw{width:40px;height:40px;border-radius:50%;border:3px solid #fff;background:var(--c);box-shadow:0 0 0 1px var(--line-2);cursor:pointer;padding:0;position:relative;transition:transform .15s var(--ease)}
.swatch:active,.sw:active{transform:scale(.9)}
.swatch.on,.sw.on{box-shadow:0 0 0 2px var(--ink)}
.swatch-custom{display:grid;place-items:center;background:conic-gradient(#e53935,#fdd835,#43a047,#1e88e5,#8e24aa,#e53935);overflow:hidden}
.swatch-custom input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;padding:0}
.swatch-custom span{pointer-events:none;color:#fff;display:grid;filter:drop-shadow(0 0 2px rgba(0,0,0,.6))}
.sw-input{width:46px!important;min-height:40px!important;padding:2px!important}
.grp{background:#fff;border:1px solid var(--line);border-radius:var(--r);margin-bottom:.7rem;box-shadow:var(--shadow)}
.grp>summary{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.15rem;font-weight:700;cursor:pointer;list-style:none}
.grp>summary::-webkit-details-marker{display:none}
.grp>summary .i{transition:transform .2s}
.grp[open]>summary .i{transform:rotate(180deg)}
.grp-b{padding:0 1.15rem .7rem}
.grp-sub{font-size:.78rem;font-weight:500;color:var(--muted);margin:.5rem 0 .2rem}
.switch{display:flex;align-items:center;gap:.8rem;padding:.6rem 0;border-bottom:1px solid var(--line);cursor:pointer}
.switch:last-child{border-bottom:0}
.switch input{position:absolute;opacity:0}
.sw-t{flex:1;font-size:.9rem}.sw-t b{font-weight:500;display:block}.sw-t small{display:block}
.sw-k{position:relative;width:46px;height:28px;border-radius:var(--pill);background:var(--line-2);flex:none;transition:background .2s}
.sw-k::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .2s var(--ease)}
.switch input:checked~.sw-k{background:var(--brand)}
.switch input:checked~.sw-k::after{transform:translateX(18px)}
.switch input:focus-visible~.sw-k{outline:3px solid color-mix(in srgb,var(--brand) 45%,#fff);outline-offset:2px}
.preview-bar{display:flex;gap:1rem;align-items:center;justify-content:space-between;margin-bottom:.7rem;flex-wrap:wrap}
.field-inline{display:flex;align-items:center;gap:.6rem;margin:0}
.field-inline>span{margin:0;white-space:nowrap}
.field-inline select{min-width:200px}
.logo-up{display:flex;gap:1rem;align-items:center;margin-bottom:1rem}
.logo-prev{display:grid;place-items:center;align-content:center;gap:.2rem;width:120px;height:84px;border:1.5px dashed var(--line-2);border-radius:var(--r-md);color:var(--muted);flex:none;overflow:hidden;background:var(--soft)}
.logo-prev img{max-width:100%;max-height:100%;object-fit:contain}
.logo-up-c{flex:1;min-width:0}
.logo-up-c .btn{margin-bottom:.4rem}

/* ---------- Plans ---------- */
.plan-card .plan-top{display:flex;gap:.9rem;align-items:flex-start}
.plan-ic{display:grid;place-items:center;flex:0 0 2.8rem;width:2.8rem;height:2.8rem;border-radius:50%;background:var(--info-bg);color:var(--info)}
.plan-pro .plan-ic{background:var(--ok-bg);color:var(--ok)}
.plan-expired .plan-ic{background:var(--bad-bg);color:var(--bad)}
.plan-card .card-t{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.perks{list-style:none;margin:.7rem 0 1rem;padding:0;display:grid;gap:.5rem}
.perks li{display:flex;gap:.6rem;align-items:flex-start;line-height:1.4}
.perks .i{width:1.1rem;height:1.1rem;flex:0 0 1.1rem;margin-top:.15rem;color:var(--ok)}
.plans{display:grid;gap:.65rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));margin-bottom:.8rem}
.planbtn{display:grid;gap:.15rem;text-align:left;padding:1rem 1.1rem;border:1.5px solid var(--line-2);border-radius:var(--r);background:#fff;font-family:inherit;color:var(--ink);cursor:pointer;transition:border-color .18s,background .18s,transform .15s var(--ease)}
.planbtn b{font-size:1rem}.planbtn small{color:var(--muted)}
.planbtn .price{font-size:1rem;line-height:1.3;font-weight:600;margin-top:.35rem;color:var(--brand)}
.planbtn:hover:not(:disabled){border-color:var(--brand);background:var(--brand-soft)}
.planbtn:active:not(:disabled){transform:scale(.98)}
.planbtn:disabled{opacity:.55;cursor:default}
.planbtn .cta{margin-top:.6rem;padding:.55rem .8rem;border-radius:var(--pill);background:var(--brand);color:var(--brand-ink);font-size:.86rem;font-weight:500;text-align:center}
.timeline{list-style:none;margin:.6rem 0 0;padding:0;display:grid;gap:.1rem}
.timeline li{display:flex;justify-content:space-between;gap:.8rem;padding:.6rem 0;border-bottom:1px solid var(--line);font-size:.9rem;line-height:1.35}
.timeline li:last-child{border-bottom:0}
.timeline small{color:var(--muted);white-space:nowrap}

/* ---------- Sign in / sign up ---------- */
body.auth{background:var(--bg)}
.auth-shell{min-height:100vh;display:grid}
.auth-art{display:none}
.auth-main{display:grid;align-content:start;justify-items:center;padding:calc(1.6rem + var(--safe-t)) 1rem 2rem;background:linear-gradient(180deg,color-mix(in srgb,var(--brand,#1f3a8a) 9%,var(--bg)) 0,var(--bg) 280px)}
.auth-mbrand{display:flex;align-items:center;gap:.7rem;margin:.3rem 0 1.3rem;font-size:1.2rem;font-weight:700;color:var(--ink)}
.auth-card{width:100%;max-width:440px;background:#fff;border:1px solid var(--line);border-radius:30px;padding:1.6rem 1.3rem;box-shadow:var(--shadow)}
body.auth-wide .auth-card{max-width:680px}
.auth-card h1{margin-bottom:.35rem;font-size:1.5rem}
.auth-links{text-align:center;margin-top:1rem;font-size:.88rem}
.auth-foot{font-size:.78rem;color:var(--muted);margin-top:1.2rem}
.logo-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--brand,#1f3a8a);color:#fff}

/* ---------- Public + legal ---------- */
body.bare,body.public{background:var(--bg)}
.pub-top{display:flex;justify-content:space-between;align-items:center;gap:.8rem;flex-wrap:wrap;padding:.8rem 1rem;background:#fff;border-bottom:1px solid var(--line)}
.pub-brand{display:flex;align-items:center;gap:.6rem;font-weight:700}
.pub-brand img{height:32px;width:auto;max-width:110px;object-fit:contain}
.pub-actions{display:flex;gap:.5rem}
.pub-main{max-width:900px;margin:0 auto;padding:1rem 1rem 3rem}
.pub-meta{margin-bottom:1rem}.pub-meta h1{font-size:1.25rem}
.pub-due{margin-top:.5rem;display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}
.public-missing{max-width:26rem;margin:18vh auto;padding:0 1.25rem;text-align:center}
.bare-wrap{max-width:900px;margin:0 auto;padding:1.2rem 1rem 3rem}
body.legal-page{background:var(--bg)}
.legal-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;max-width:46rem;margin:0 auto;padding:1rem 1rem .5rem}
.legal-brand{display:flex;align-items:center;gap:.55rem;text-decoration:none;color:inherit}
.legal-top nav{display:flex;gap:1rem;font-size:.9rem}
.legal{max-width:46rem;margin:0 auto;padding:.5rem 1rem 3rem;line-height:1.65;min-width:0}
.legal h1{font-size:1.7rem;margin:1rem 0 .4rem}
.legal h2{font-size:1.1rem;margin:1.7rem 0 .4rem}
.legal ul{padding-left:1.2rem;margin:.4rem 0}
.legal li{margin:.35rem 0}
.legal .form-card{margin:.8rem 0}
.legal .row-actions{display:block;margin:.5rem 0 1rem}
.legal .otp{letter-spacing:.35em;font-size:1.3rem;text-align:center}

/* ---------- Admin panel ---------- */
body.adm{background:var(--bg)}
.adm-shell{display:block;min-height:100vh}
.adm-side{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:.6rem;padding:.55rem .8rem;padding-top:calc(.55rem + env(safe-area-inset-top,0px));background:#0f1a2e;color:#cfd8e8;overflow-x:auto;-webkit-overflow-scrolling:touch}
.adm-brand{display:flex;align-items:center;gap:.6rem;color:#fff;text-decoration:none!important;flex:0 0 auto}
.adm-brand b{display:block;font-size:.95rem;line-height:1.1}.adm-brand small{display:block;font-size:.7rem;color:#8fa3c4;line-height:1.1}
.adm-brand .logo-mark{width:2rem;height:2rem}
.adm-nav{display:flex;gap:.25rem;flex:1 0 auto}
.adm-nav a,.adm-foot a,.adm-foot button{display:flex;align-items:center;gap:.5rem;padding:.5rem .8rem;border-radius:var(--pill);color:#cfd8e8;font:inherit;font-size:.9rem;font-weight:500;background:none;border:0;cursor:pointer;text-decoration:none!important;white-space:nowrap}
.adm-nav a .i,.adm-foot .i{width:1.1rem;height:1.1rem}
.adm-nav a:hover,.adm-foot a:hover,.adm-foot button:hover{background:rgba(255,255,255,.08)}
.adm-nav a.on{background:#fff;color:#0f1a2e}
.adm-foot{display:flex;gap:.25rem;flex:0 0 auto}
.adm-foot form{margin:0}
.adm-main{padding:1rem 1rem 3rem;max-width:1180px;margin:0 auto;min-width:0}
.adm-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin-bottom:1rem}
.adm-tile{position:relative;display:grid;gap:.1rem;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.9rem 1rem;color:var(--ink);text-decoration:none!important;min-width:0;box-shadow:var(--shadow)}
a.adm-tile:hover{border-color:var(--brand)}
.adm-tile small{color:var(--muted);font-size:.8rem}
.adm-tile b{font-size:1.6rem;line-height:1.15;font-weight:600}
.adm-tile i{font-style:normal;color:var(--muted);font-size:.76rem}
.adm-tic{position:absolute;top:.75rem;right:.75rem;width:2rem;height:2rem}
.adm-tic .i{width:1rem;height:1rem}
.adm-grid{display:grid;gap:.8rem;grid-template-columns:minmax(0,1fr)}
.adm-grid>.card{margin:0;min-width:0}
.adm-chart{width:100%;height:150px;display:block;margin-top:.5rem}
.adm-chart .bar{fill:var(--brand)}.adm-chart .bar0{fill:var(--line-2)}.adm-chart .ax{font-size:11px;fill:var(--muted)}
.adm-axis{display:flex;justify-content:space-between;font-size:.74rem;color:var(--muted);margin-top:.3rem}
.adm-list{list-style:none;margin:.4rem 0 0;padding:0}
.adm-list li{border-bottom:1px solid var(--line)}.adm-list li:last-child{border-bottom:0}
.adm-list a,.adm-li{display:flex;align-items:center;gap:.7rem;padding:.6rem 0;color:inherit;text-decoration:none!important;min-width:0}
.adm-li-t{flex:1;min-width:0;display:grid}
.adm-li-t b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.adm-li-t small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-empty{padding:.6rem 0}
.adm-bars{list-style:none;margin:.7rem 0 0;padding:0;display:grid;gap:.5rem}
.adm-bars li{display:grid;grid-template-columns:7rem 1fr 2rem;gap:.6rem;align-items:center;font-size:.88rem}
.adm-bars span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-bars i{display:block;height:.55rem;border-radius:var(--pill);background:linear-gradient(90deg,var(--brand) var(--w),var(--grey-bg) var(--w))}
.adm-bars b{text-align:right;font-weight:500}
.adm-inline{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;margin-top:.7rem}
.adm-inline .field{margin:0;flex:1 1 11rem;min-width:0}
.adm-inline .btn{flex:0 0 auto}
.adm-filters{display:flex;gap:.5rem;flex-wrap:nowrap;align-items:center;margin:.2rem 0 .7rem}
.adm-filters .search,.adm-filters .search-wide{flex:1 1 0;min-width:0;width:auto;max-width:none}
.adm-filters .btn,.adm-filters select{flex:0 0 auto}
.adm-filters select{max-width:9rem}
.adm-filters:has(select){flex-wrap:wrap}
.adm-filters:has(select) .search{flex:1 1 100%}
.adm-tabs{display:flex;gap:.4rem;overflow-x:auto;padding-bottom:.2rem;margin-bottom:.8rem;-webkit-overflow-scrolling:touch}
.adm-tabs a{display:inline-flex;gap:.4rem;align-items:center;padding:.45rem .9rem;border-radius:var(--pill);border:1px solid var(--line-2);background:#fff;color:var(--ink);font-size:.86rem;text-decoration:none!important;white-space:nowrap}
.adm-tabs a i{font-style:normal;color:var(--muted);font-size:.78rem}
.adm-tabs a.on{background:var(--brand);border-color:var(--brand);color:#fff}.adm-tabs a.on i{color:rgba(255,255,255,.8)}
.adm-rows{display:grid;gap:.5rem}
.adm-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.4rem .8rem;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.75rem .9rem;color:inherit;text-decoration:none!important;min-width:0}
a.adm-row:hover{border-color:var(--brand)}
.adm-row-t{display:grid;min-width:0}
.adm-row-t b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.adm-row-t small,.adm-row-m small{color:var(--muted);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adm-row-m{display:none;font-size:.88rem;min-width:0}.adm-row-m small{display:block}
.adm-row-s{margin:0;text-align:right}
.adm-cols{display:grid;gap:.8rem;grid-template-columns:minmax(0,1fr)}
.adm-col{display:grid;gap:.8rem;align-content:start;min-width:0}
.adm-col>.card{margin:0}
.adm-dl{margin:.4rem 0 .6rem;display:grid}
.adm-dl>div{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--line);font-size:.9rem}
.adm-dl>div:last-child{border-bottom:0}
.adm-dl dt{color:var(--muted)}.adm-dl dd{margin:0;text-align:right;min-width:0;overflow-wrap:anywhere}
.adm-mini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin:.5rem 0}
.adm-mini div{display:grid;background:var(--soft);border-radius:var(--r-md);padding:.6rem .5rem;text-align:center}
.adm-mini b{font-size:1.1rem;font-weight:600}.adm-mini small{color:var(--muted);font-size:.7rem}
.adm-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin:.7rem 0}.adm-actions form{margin:0}

/* ---------- Tablet / desktop ---------- */
@media (min-width:640px){
  .grid2{grid-template-columns:1fr 1fr}
  .grid3{grid-template-columns:repeat(3,1fr)}
  .kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .kpi{grid-template-columns:1fr;grid-template-areas:"s" "b" "i";row-gap:.1rem;padding:1rem 1.15rem}
  .kpi b{text-align:left;font-size:1.25rem}
  .hero b{font-size:2.3rem}
  .newgrid{grid-template-columns:repeat(3,1fr)}
  .tpl-grid{grid-template-columns:repeat(3,1fr)}
  .two-col{grid-template-columns:1fr 1fr}
  .sheet{margin:0;width:100%}.sheet-grab{display:none}
  .sheet-wrap{align-items:center}
  .actionbar{max-width:none;justify-content:flex-end}
  .actionbar .btn,.actionbar button,.actionbar a.btn,.actionbar .btn-primary{flex:0 1 auto;padding:.55rem 1.3rem;font-size:.92rem}
  .main{padding-bottom:3rem}
  .datef{flex:0 1 170px}
}
@media (min-width:760px){
  .adm-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}
  .adm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.adm-grid .adm-wide{grid-column:1/-1}
  .adm-row{grid-template-columns:auto minmax(0,1.6fr) minmax(0,1fr) minmax(0,.8fr) auto}.adm-row-m{display:block}
  .adm-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}
@media (min-width:900px){
  body.app .side{position:fixed;inset:0 auto 0 0;width:var(--side);display:flex;flex-direction:column;gap:.8rem;padding:1.1rem .85rem calc(1rem + env(safe-area-inset-bottom,0px));background:#fff;border-right:1px solid var(--line);z-index:20;overflow:auto;height:100vh;height:100dvh}
  body.app .top,body.app .tabbar{display:none}
  body.app .main{margin-left:var(--side);max-width:none;padding:1.7rem 2.2rem 3rem}
  body.app .main>*{max-width:1120px}
  .brandbar{display:flex;align-items:center;gap:.7rem;padding:.3rem .45rem;color:var(--ink);font-weight:700;text-decoration:none!important}
  .brandname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .side .brandlogo{height:34px;max-width:100px}
  .sidenav{display:grid;gap:.2rem;flex:1;align-content:start}
  .sidenav a{display:flex;align-items:center;gap:.75rem;padding:.7rem 1rem;border-radius:var(--pill);color:var(--ink-2);font-weight:500;font-size:.92rem;text-decoration:none!important;transition:background .18s,color .18s}
  .sidenav a:hover{background:var(--grey-bg)}
  .sidenav a.on{background:var(--brand-soft);color:var(--brand-deep);font-weight:700}
  .nav-out{margin:0}
  .nav-out button{display:flex;align-items:center;gap:.75rem;width:100%;padding:.7rem 1rem;border:0;background:none;border-radius:var(--pill);color:var(--bad);font-size:.92rem;font-weight:500;font-family:inherit;cursor:pointer}
  .nav-out button:hover{background:var(--bad-bg)}
  .sidefoot{display:none!important}
  .navsep{height:1px;background:var(--line);margin:.5rem .4rem}
  .sidefoot{display:flex;align-items:center;gap:.4rem;border-top:1px solid var(--line);padding-top:.8rem}
  .sidefoot form{margin:0}
  .me{display:flex;align-items:center;gap:.6rem;flex:1;min-width:0;color:var(--ink);text-decoration:none!important;padding:.25rem .4rem .25rem .25rem;border-radius:var(--pill)}
  .me:hover{background:var(--grey-bg)}
  .me.on{background:var(--brand-soft)}
  .me-t{display:grid;min-width:0}.me-t b{font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me-t small{color:var(--muted);font-size:.74rem}
  .tabs{margin:0 0 1rem;padding:0;flex-wrap:wrap}
  .filters .search-wide{flex:1 1 280px;min-width:240px}
  .filters .f-status{flex:0 0 170px;width:auto}
  .datef{flex:0 0 150px}
  .f-actions{display:flex;gap:.5rem;align-items:center;flex:0 0 auto;order:6}
  .f-actions .btn-primary,.f-actions .btn-quiet{order:0;min-height:38px;padding:.35rem .95rem;margin:0}
  .filters .f-status{flex:0 0 170px}
  .rows-head,.row{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(0,1.5fr) 150px 140px 110px;align-items:center;gap:1rem}
  .rows-head{padding:.7rem 1.1rem;font-size:.74rem;color:var(--muted);font-weight:500;background:var(--soft);border-bottom:1px solid var(--line)}
  .rows-head .r{text-align:right}
  .row{padding:.8rem 1.1rem}
  .row-party{padding-left:0;grid-column:auto}
  .row-date{display:block;font-size:.88rem}
  .row-amt{grid-column:auto;grid-row:auto}.row-status{grid-column:auto;grid-row:auto;text-align:left}
  .dash-grid{grid-template-columns:1.1fr 1fr}
  .editor-grid{grid-template-columns:minmax(0,1fr) 320px;align-items:start}
  .editor-side{position:sticky;top:1rem}
  .editor,.form-card-wrap{padding-bottom:90px}
  .mini-total{display:none}
  .show-grid{grid-template-columns:360px minmax(0,1fr);align-items:start}
  .show-paper{position:sticky;top:1rem}
  .show-paper-list{grid-column:2}
  .actionbar{left:calc(var(--side) + 1.5rem);right:1.5rem;bottom:14px}
  .actionbar-inline{left:auto;right:auto}
  .designer{grid-template-columns:400px minmax(0,1fr);align-items:start}
  .designer-tabs{display:none}
  .designer-controls{max-height:calc(100vh - 160px);overflow:auto;padding-right:.4rem}
  .designer-preview{position:sticky;top:1rem}
  .designer-toggle{display:none}
  .designer [hidden]{display:block!important}
  .tpl-grid{grid-template-columns:repeat(2,1fr)}
  .upload{grid-template-columns:240px 1fr;align-items:start}
  .contact-r{max-width:30%}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tiles{grid-template-columns:1fr}
  .sheet{border-radius:30px}
}
@media (min-width:900px){
  .auth-shell{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}
  .auth-mbrand{display:none}
  .auth-art{display:grid;align-content:center;gap:1.2rem;padding:3rem 3.5rem;color:#dbe4f4;background:radial-gradient(900px 500px at 0 0,#243b6b 0,transparent 60%),linear-gradient(160deg,#14223a,#0c172b)}
  .auth-art h2{font-size:2rem;color:#fff;max-width:16ch;line-height:1.2}
  .auth-art p{max-width:42ch;color:#aebbd3;font-size:.95rem}
  .auth-brand{display:flex;gap:.7rem;align-items:center;color:#fff;font-size:1.15rem}
  .auth-paper{width:260px;background:#fff;border-radius:18px;padding:16px;display:grid;gap:12px;transform:rotate(-3deg);box-shadow:0 30px 60px -20px rgba(0,0,0,.6);margin-top:1rem}
  .ap-head{display:flex;gap:10px;align-items:center}.ap-head i{width:34px;height:34px;border-radius:50%;background:#1f3a8a}.ap-head span{height:10px;flex:1;background:#dfe4ec;border-radius:99px}
  .ap-lines{display:grid;gap:8px}.ap-lines span{height:8px;background:#eef1f6;border-radius:99px}.ap-lines span:nth-child(2){width:80%}.ap-lines span:nth-child(3){width:90%}.ap-lines span:nth-child(4){width:60%}
  .ap-total{height:16px;width:50%;margin-left:auto;background:#1f3a8a;border-radius:99px}
  .auth-main{align-content:center;padding:2rem;background:var(--bg)}
  .auth-card{padding:2.2rem}
}
@media (min-width:1000px){
  .adm-shell{display:grid;grid-template-columns:15.5rem minmax(0,1fr)}
  .adm-side{position:sticky;top:0;height:100vh;flex-direction:column;align-items:stretch;gap:1.2rem;padding:1.1rem .8rem;overflow:auto}
  .adm-nav{flex-direction:column;flex:1 1 auto}
  .adm-foot{flex-direction:column}
  .adm-main{padding:1.5rem 1.6rem 3rem;width:100%}
}
@media (max-width:999px){
  .adm-side{flex-wrap:wrap;overflow:visible;gap:.4rem .5rem;padding-bottom:.4rem}
  .adm-brand{flex:1 1 auto}
  .adm-foot{order:2}
  .adm-foot a span,.adm-foot button span{display:none}
  .adm-foot a,.adm-foot button{padding:.5rem}
  .adm-nav{order:3;flex:1 1 100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.2rem}
  .adm-nav a{flex-direction:column;gap:.15rem;padding:.4rem .2rem;font-size:.75rem;justify-content:center;text-align:center;border-radius:16px}
}
@media (max-width:899px){
  .designer-controls[hidden],.designer-preview[hidden]{display:none!important}
}
/* Grid children must be allowed to shrink (paper previews are 794px wide). */
.show-grid>*,.dash-grid>*,.editor-grid>*,.designer>*,.two-col>*{min-width:0}

/* ---------- Motion ---------- */
@view-transition{navigation:auto}
@keyframes fade{from{opacity:0}}
@keyframes vy-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes vy-in{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
@keyframes vy-sheet{from{transform:translateY(36px) scale(.97);opacity:0}to{transform:none;opacity:1}}
@keyframes vy-pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.1);opacity:1}100%{transform:scale(1)}}
body.app .main>*{animation:vy-up .4s var(--ease) both}
body.app .main>*:nth-child(2){animation-delay:.05s}
body.app .main>*:nth-child(3){animation-delay:.1s}
body.app .main>*:nth-child(4){animation-delay:.15s}
body.app .main>*:nth-child(n+5){animation-delay:.2s}
.rows>*,.tiles>*,.cards>*,.kpis>*{animation:vy-up .45s var(--ease) both}
.rows>*:nth-child(1),.tiles>*:nth-child(1),.cards>*:nth-child(1),.kpis>*:nth-child(1){animation-delay:.08s}
.rows>*:nth-child(2),.tiles>*:nth-child(2),.cards>*:nth-child(2),.kpis>*:nth-child(2){animation-delay:.14s}
.rows>*:nth-child(3),.tiles>*:nth-child(3),.cards>*:nth-child(3),.kpis>*:nth-child(3){animation-delay:.2s}
.rows>*:nth-child(4),.tiles>*:nth-child(4),.cards>*:nth-child(4){animation-delay:.26s}
.rows>*:nth-child(n+5),.tiles>*:nth-child(n+5),.cards>*:nth-child(n+5){animation-delay:.32s}
.tabbar{animation:vy-up .45s var(--ease) both}
.fab{animation:vy-pop .5s .2s var(--ease) both}
.tabbar a.on .i,.tabbar>button.on:not(.fab) .i{animation:vy-pop .4s var(--ease)}
.morelist>*,.newgrid>*{animation:vy-in .35s var(--ease) both}
.morelist>*:nth-child(2),.newgrid>*:nth-child(2){animation-delay:.04s}
.morelist>*:nth-child(3),.newgrid>*:nth-child(3){animation-delay:.08s}
.morelist>*:nth-child(4),.newgrid>*:nth-child(4){animation-delay:.12s}
.morelist>*:nth-child(5),.newgrid>*:nth-child(5){animation-delay:.16s}
.morelist>*:nth-child(n+6),.newgrid>*:nth-child(n+6){animation-delay:.2s}
.flash{animation:vy-up .35s var(--ease) both}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.side,.top,.tabbar,.actionbar,.actions{display:none!important}.main{margin:0!important;padding:0!important}}
.morelist .danger{color:var(--bad)}
