:root{--green:#14a37f;--green-2:#0f8a6b;--green-soft:#e3f6ef;--blue:#2f4fcb;--ink:#0d0f1a;--paper:#eef2f6;--paper-2:#e3e9f1;--card:#fff;--muted:#5a6275;--line:rgba(13,15,26,.11);--warn:#c2410c;--warn-soft:#fff1e8;--danger:#c1121f;--on-green:#06130f;--shadow:0 20px 50px -30px rgba(13,15,26,.35)}
@media (prefers-color-scheme:dark){:root{--ink:#eef2f6;--paper:#0b0d16;--paper-2:#131729;--card:#151a2c;--muted:#9aa3b8;--line:rgba(238,242,246,.11);--green:#2fc79c;--green-2:#22b089;--green-soft:#123a30;--warn:#fb923c;--warn-soft:#3a2214;--danger:#f87171;--shadow:0 20px 50px -30px #000}}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:'Space Grotesk',system-ui,sans-serif;background:var(--paper);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;min-height:100vh}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
.display{font-family:'Rammetto One',system-ui,sans-serif;font-weight:400;letter-spacing:-.01em;line-height:1.1}
.mono{font-family:'Space Mono',monospace;text-transform:uppercase;letter-spacing:.2em;font-size:11px}
.muted{color:var(--muted)}.small{font-size:13px}
.boot{min-height:100vh;display:grid;place-items:center}.boot img{animation:pulse 1.2s infinite}
@keyframes pulse{50%{transform:scale(.9);opacity:.6}}

/* layout */
.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
aside{border-right:1px solid var(--line);padding:22px 16px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;background:var(--paper)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:19px;text-decoration:none;padding:0 8px 18px}
.brand img{width:34px;height:34px}.brand em{font-style:normal;color:var(--green)}
aside nav{display:flex;flex-direction:column;gap:2px}
aside nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;text-decoration:none;color:var(--muted);font-weight:500}
aside nav a svg{width:19px;height:19px;flex:none}
aside nav a:hover{background:var(--paper-2);color:var(--ink)}
aside nav a.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}
aside nav a.on svg{color:var(--green)}
aside .who{margin-top:auto;border-top:1px solid var(--line);padding:14px 8px 0;font-size:13px}
aside .who b{display:block;font-size:14px}
aside .who button{background:none;border:0;color:var(--muted);cursor:pointer;padding:6px 0;text-decoration:underline}
main{padding:28px 32px 60px;max-width:1180px;width:100%}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.top h1{font-size:30px}
.mbar{display:none}

/* components */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--green);color:var(--on-green);font-weight:700;padding:11px 20px;border-radius:999px;border:0;cursor:pointer;text-decoration:none;white-space:nowrap;font-size:14.5px;transition:transform .15s,box-shadow .2s;min-height:42px}
.btn:hover{transform:translateY(-1px);box-shadow:0 12px 26px -14px var(--green)}
.btn:disabled{opacity:.55;pointer-events:none}
.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line)}
.btn.ghost:hover{box-shadow:none;border-color:var(--green)}
.btn.danger{background:transparent;color:var(--danger);border:1.5px solid color-mix(in srgb,var(--danger) 40%,transparent)}
.btn.sm{padding:7px 14px;font-size:13px;min-height:34px}
.btn svg{width:17px;height:17px}
.link{background:none;border:0;color:var(--green-2);cursor:pointer;font-weight:600;text-decoration:underline;padding:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:22px}
.grid{display:grid;gap:16px}
.stats{grid-template-columns:repeat(4,1fr);margin-bottom:22px}
.stat b{font-family:'Rammetto One',sans-serif;font-size:32px;display:block;line-height:1.2}
.stat span{color:var(--muted);font-size:14px}
.stat.hl b{color:var(--green)}
.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tabs button{border:1.5px solid var(--line);background:transparent;border-radius:999px;padding:7px 14px;cursor:pointer;font-weight:600;font-size:13.5px;color:var(--muted)}
.tabs button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:14px}
.search{min-width:240px;flex:0 1 320px}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--paper-2);color:var(--muted);white-space:nowrap}
.badge.aberta{background:var(--green-soft);color:var(--green-2)}
.badge.completa,.badge.aprovado{background:var(--green);color:var(--on-green)}
.badge.enviado{background:#dbe5ff;color:#2340b8}
.badge.recusado,.badge.expirada,.badge.past_due{background:var(--warn-soft);color:var(--warn)}
.badge.pendente,.badge.cancelada{background:var(--paper-2);color:var(--muted)}
@media (prefers-color-scheme:dark){.badge.enviado{background:#1c2a5c;color:#9db2ff}}

/* list */
.list{display:flex;flex-direction:column}
.row{display:grid;grid-template-columns:1.6fr 1fr 150px 110px;gap:16px;align-items:center;padding:14px 6px;border-bottom:1px solid var(--line);text-decoration:none;border-radius:12px}
.row:hover{background:var(--paper-2)}
.row:last-child{border-bottom:0}
.row b{display:block}
.row .sub{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meter{height:7px;border-radius:7px;background:var(--paper-2);overflow:hidden}
.meter i{display:block;height:100%;background:var(--green);border-radius:7px}
.empty{text-align:center;padding:50px 20px;color:var(--muted)}
.empty img{width:64px;opacity:.9;margin-bottom:12px}
.empty h3{color:var(--ink);font-size:19px;margin-bottom:6px}

/* forms */
form .f{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
label.l{font-weight:600;font-size:14px}
.hint{font-size:12.5px;color:var(--muted)}
input[type=text],input[type=email],input[type=password],input[type=tel],input[type=date],input[type=search],select,textarea{width:100%;padding:12px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);font-size:15px;outline:none;transition:border-color .2s}
input:focus,select:focus,textarea:focus{border-color:var(--green)}
textarea{resize:vertical;min-height:80px}
.invalid{border-color:var(--danger)!important}
.ferr{color:var(--danger);font-size:13px;font-weight:600}
.form-error{background:var(--warn-soft);color:var(--warn);padding:12px 14px;border-radius:12px;font-weight:600;font-size:14px;margin-bottom:14px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.check{display:flex;gap:10px;align-items:flex-start;font-size:14px;cursor:pointer}
.check input{width:18px;height:18px;margin-top:2px;accent-color:var(--green);flex:none}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:999px;padding:9px 14px;cursor:pointer;font-weight:600;font-size:14px}
.chip:has(input:checked){border-color:var(--green);background:var(--green-soft)}
.chip:has(input:disabled){opacity:.45;cursor:not-allowed}
.chip input{accent-color:var(--green)}
.items-ed{display:flex;flex-direction:column;gap:8px}
.it{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center}
.it .opt{font-size:12.5px;display:flex;gap:6px;align-items:center;color:var(--muted);white-space:nowrap}
.it .opt input{accent-color:var(--green)}
.x{border:0;background:var(--paper-2);width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:18px;line-height:1;color:var(--muted)}
.x:hover{color:var(--danger)}
.pick{position:relative}
.pick .opts{position:absolute;z-index:5;left:0;right:0;top:calc(100% + 4px);background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);max-height:260px;overflow:auto}
.pick .opts button{display:block;width:100%;text-align:left;border:0;background:none;padding:11px 14px;cursor:pointer}
.pick .opts button:hover{background:var(--paper-2)}
.pick .opts small{color:var(--muted);display:block}
.selected{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1.5px solid var(--green);background:var(--green-soft);border-radius:12px;padding:10px 14px}
.selected small{display:block;color:var(--muted)}

/* auth */
.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.auth .side{background:var(--ink);color:var(--paper);padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.auth .side:before{content:'';position:absolute;width:520px;height:520px;right:-180px;bottom:-160px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--green) 45%,transparent),transparent 65%)}
.auth .side h2{font-size:clamp(30px,3.6vw,46px);position:relative}
.auth .side h2 em{font-style:normal;color:var(--green)}
.auth .side p{color:color-mix(in srgb,var(--paper) 70%,transparent);max-width:420px;margin-top:16px;position:relative}
.auth .side .brand{color:var(--paper);padding:0}
.auth .side ul{list-style:none;display:grid;gap:10px;position:relative;font-size:15px}
.auth .side li:before{content:'✓';color:var(--green);font-weight:900;margin-right:10px}
.auth .pane{display:grid;place-items:center;padding:40px 20px}
.auth form{width:100%;max-width:420px}
.auth h1{font-size:30px;margin-bottom:6px}
.auth .alt{margin-top:18px;font-size:14px;color:var(--muted);text-align:center}
.plans-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.plans-mini label{border:1.5px solid var(--line);border-radius:14px;padding:10px;cursor:pointer;text-align:center;font-size:13px}
.plans-mini label b{display:block;font-size:15px}
.plans-mini label:has(input:checked){border-color:var(--green);background:var(--green-soft)}
.plans-mini input{display:none}

/* banners */
.banner{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:12px 16px;border-radius:14px;margin-bottom:16px;font-weight:600;font-size:14px;background:var(--green-soft);color:var(--green-2)}
.banner.warn{background:var(--warn-soft);color:var(--warn)}

/* detail */
.detail{display:grid;grid-template-columns:1fr 340px;gap:18px;align-items:start}
.ditem{border:1.5px solid var(--line);border-radius:16px;padding:14px 16px;margin-bottom:10px}
.ditem.enviado{border-color:#9db2ff}.ditem.aprovado{border-color:var(--green)}.ditem.recusado{border-color:var(--warn)}
.ditem header{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap}
.ditem header b{font-size:15.5px}
.files{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.file{display:flex;align-items:center;gap:10px;font-size:14px;background:var(--paper-2);border-radius:10px;padding:8px 12px}
.file span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file small{color:var(--muted);white-space:nowrap}
.acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.linkbox{display:flex;gap:8px}
.linkbox input{font-family:'Space Mono',monospace;font-size:12.5px}
.timeline{list-style:none;display:flex;flex-direction:column;gap:10px;font-size:13.5px}
.timeline li{display:flex;gap:10px}
.timeline .dot{width:9px;height:9px;border-radius:50%;background:var(--green);margin-top:7px;flex:none}
.timeline .dot.falhou{background:var(--warn)}
.side-card h3{font-size:15px;margin-bottom:12px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:14px}
.kv dt{color:var(--muted)}
.kv dd{word-break:break-word}

/* plans */
.plans{grid-template-columns:repeat(3,1fr)}
.plan{display:flex;flex-direction:column;gap:6px}
.plan.cur{border:2px solid var(--green)}
.plan .price{font-family:'Rammetto One',sans-serif;font-size:30px}
.plan .price small{font-family:'Space Grotesk';font-size:14px;color:var(--muted)}
.plan ul{list-style:none;font-size:14px;color:var(--muted);display:grid;gap:4px;margin:6px 0 12px;flex:1}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}
th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}

/* modal + toast */
dialog{margin:auto;inset:0;border:0;border-radius:22px;padding:0;background:var(--card);color:var(--ink);width:min(560px,calc(100vw - 24px));max-height:calc(100vh - 40px);box-shadow:0 40px 90px -30px rgba(0,0,0,.5)}
dialog::backdrop{background:rgba(8,10,18,.5);backdrop-filter:blur(3px)}
dialog form{padding:24px}
dialog h2{font-size:21px;margin-bottom:14px}
dialog .foot{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--paper);padding:12px 20px;border-radius:999px;font-weight:600;font-size:14px;opacity:0;pointer-events:none;transition:.25s;z-index:99;max-width:calc(100vw - 32px);text-align:center}
#toast.on{opacity:1;transform:translateX(-50%)}
#toast.err{background:var(--danger);color:#fff}

@media(max-width:980px){
  .stats{grid-template-columns:1fr 1fr}
  .detail{grid-template-columns:1fr}
  .plans{grid-template-columns:1fr}
  .auth{grid-template-columns:1fr}.auth .side{display:none}
}
@media(max-width:760px){
  .shell{grid-template-columns:1fr}
  aside{position:fixed;inset:0 30% 0 0;z-index:40;transform:translateX(-100%);transition:transform .25s;box-shadow:var(--shadow);background:var(--card)}
  aside.open{transform:none}
  .mbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--paper);z-index:30}
  .mbar button{background:none;border:1.5px solid var(--line);border-radius:10px;width:40px;height:40px;cursor:pointer}
  .mbar .brand{padding:0}
  main{padding:18px 16px 50px}
  .top h1{font-size:24px}
  .row{grid-template-columns:1fr auto;gap:8px}
  .row .c-prog,.row .c-due{display:none}
  .two{grid-template-columns:1fr}
  .search{min-width:0;flex:1 1 100%}
  .it{grid-template-columns:1fr auto}
  .it .opt{grid-column:1}
}
.lgpd-box{background:var(--green-soft);border-radius:14px;padding:14px 16px;font-size:14px}
.lgpd-box p{color:var(--muted);margin:6px 0 10px;font-size:13.5px}
.lgpd-box.invalid{outline:2px solid var(--danger)}

.support{display:flex;gap:10px;align-items:center;margin-top:auto;margin-bottom:12px;padding:12px;border-radius:14px;background:var(--green-soft);text-decoration:none;font-size:12px;color:var(--muted);word-break:break-all}
.support b{display:block;color:var(--ink);font-size:13.5px}
aside .who{margin-top:0}

.pager{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:16px}
.pager .btn:disabled{opacity:.35}
