
/* ==========================================================================
   TechStudios Hosting — folha de estilos
   Escala fluida: telemóvel → tablet → PC → TV 4K / consolas
   ========================================================================== */
:root{
  --navy:#0b1b33;--navy-2:#12284a;--navy-3:#1b3760;
  --brand:#1652d9;--brand-600:#1247bd;--brand-50:#eaf0fd;--tag-ink:#1247bd;
  --ink:#0f172a;--text:#1e293b;--muted:#5b6b82;--faint:#8a98ad;
  --bg:#f3f5f8;--card:#ffffff;--line:#dfe4ec;--line-2:#eef1f5;--line-strong:#c5cfdd;--btn-bg:#ffffff;--btn-hover:#f6f8fb;--input-bg:#ffffff;--th-bg:#f8fafc;--neutral-bg:#eef1f5;--track:#e6eaf0;--sel-bg:#f7f9ff;--warn-ink:#7a4505;--info-ink:#1e3a8a;color-scheme:light;
  --ok:#157a3c;--ok-bg:#e7f6ed;--warn:#a15c07;--warn-bg:#fdf3e1;--bad:#b42318;--bad-bg:#fdecea;--info-bg:#e9f1fe;
  --focus:#f5a524;
  --r:8px;--r-sm:6px;
  --shadow:0 1px 2px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.08);
  --shadow-lg:0 12px 32px rgba(11,27,51,.14);
  --side:248px;
  font-size:15px;
}
@media (min-width:1600px){:root{font-size:16px}}
@media (min-width:2200px){:root{font-size:20px;--side:300px}}   /* TV Full HD a 2 m / monitores grandes */
@media (min-width:3000px){:root{font-size:28px;--side:380px}}   /* TV 4K */
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
html,body{margin:0;background:var(--bg);color:var(--text);font:1rem/1.55 "Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3{color:var(--ink);line-height:1.25;margin:0 0 .5rem;font-weight:650;letter-spacing:-.01em}
h1{font-size:1.6rem}h2{font-size:1.15rem}h3{font-size:1rem}
p{margin:0 0 .8rem}
img,svg{max-width:100%}
.boot{display:grid;place-items:center;height:100vh;color:var(--muted)}
.muted{color:var(--muted)}.small{font-size:.86rem}.mono{font-family:ui-monospace,"Cascadia Mono",Consolas,Menlo,monospace}
.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.grow{flex:1}
.grid{display:grid;gap:1rem}
.g2{grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.25rem;box-shadow:var(--shadow);min-width:0}
.card.hover{cursor:pointer;transition:border-color .15s,box-shadow .15s}.card.hover:hover{border-color:var(--line-strong);box-shadow:var(--shadow-lg)}

/* foco visível — essencial para teclado, comando de TV e consolas */
:focus{outline:none}
:focus-visible,.nav-focus{outline:3px solid var(--focus)!important;outline-offset:2px;border-radius:var(--r-sm)}

/* botões */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.5rem;padding:.5rem 1rem;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--btn-bg);color:var(--text);font:inherit;font-weight:600;font-size:.93rem;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}
.btn:hover{background:var(--btn-hover);border-color:var(--line-strong);text-decoration:none}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-600);border-color:var(--brand-600)}
.btn.ok{color:var(--ok);border-color:#b7dfc5;background:var(--ok-bg)}.btn.ok:hover{filter:brightness(.96)}
.btn.warn{color:var(--warn);border-color:#f0d29d;background:var(--warn-bg)}.btn.warn:hover{filter:brightness(.96)}
.btn.danger{color:var(--bad);border-color:#f3c0bb;background:var(--bad-bg)}.btn.danger:hover{filter:brightness(.96)}
.btn.ghost{background:transparent;border-color:transparent}
.btn.sm{min-height:2rem;padding:.3rem .7rem;font-size:.84rem}.btn.lg{min-height:3rem;padding:.75rem 1.5rem;font-size:1rem}
.btn svg{width:1.05em;height:1.05em;flex:none}
@media (pointer:coarse){.btn{min-height:2.75rem}.btn.sm{min-height:2.4rem}}

/* formulários */
input,select,textarea{width:100%;min-height:2.5rem;background:var(--input-bg);border:1px solid var(--line-strong);color:var(--ink);padding:.55rem .75rem;border-radius:var(--r-sm);font:inherit;font-size:max(16px,.95rem)}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(22,82,217,.15)}
input:disabled{background:var(--bg);color:var(--faint)}
input[type=range]{min-height:auto;padding:0;border:0;box-shadow:none;accent-color:var(--brand)}input[type=checkbox]{width:auto;min-height:auto}
label{display:block;font-size:.84rem;color:var(--text);margin:0 0 .35rem;font-weight:600}
.field{margin-bottom:1rem}

/* tabelas */
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:.7rem .8rem;border-bottom:1px solid var(--line-2);vertical-align:middle}
th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;background:var(--th-bg)}
tr:last-child td{border-bottom:0}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -1.25rem;padding:0 1.25rem}
.table-wrap table{min-width:36rem}

/* estado */
.badge{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .6rem;border-radius:999px;font-size:.78rem;font-weight:650;background:var(--neutral-bg);color:var(--muted);white-space:nowrap}
.badge::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:currentColor}
.st-running,.st-online{background:var(--ok-bg);color:var(--ok)}
.st-offline,.st-unknown{background:var(--neutral-bg);color:var(--muted)}
.st-starting,.st-installing{background:var(--warn-bg);color:var(--warn)}
.st-crashed,.st-install_failed{background:var(--bad-bg);color:var(--bad)}
.tag{display:inline-block;padding:.1rem .5rem;border-radius:4px;font-size:.75rem;font-weight:650;background:var(--brand-50);color:var(--tag-ink)}
.bar{height:.4rem;background:var(--track);border-radius:999px;overflow:hidden;margin-top:.5rem}
.bar>i{display:block;height:100%;background:var(--brand);border-radius:999px;transition:width .4s}
.bar.hot>i{background:var(--bad)}

/* ---------------- site público ---------------- */
.topbar{background:var(--navy);color:#c7d2e3;font-size:.82rem}
.topbar .in{max-width:76rem;margin:0 auto;padding:.4rem 1.25rem;display:flex;gap:1.5rem;justify-content:flex-end;flex-wrap:wrap}
.nav{position:sticky;top:0;z-index:30;background:var(--card);border-bottom:1px solid var(--line)}
.nav .in{max-width:76rem;margin:0 auto;padding:.75rem 1.25rem;display:flex;align-items:center;gap:1.5rem}
.logo{display:flex;align-items:center;gap:.6rem;font-weight:700;font-size:1.08rem;color:var(--ink);letter-spacing:-.01em}
.logo:hover{text-decoration:none}.logo img{width:2rem;height:2rem}.logo span{font-weight:400;color:var(--muted)}
.nav .links{display:flex;gap:1.5rem;margin-left:1rem}.nav .links a{color:var(--text);font-weight:600;font-size:.93rem}
.nav .acts{display:flex;gap:.5rem;margin-left:auto}
.wrap{max-width:76rem;margin:0 auto;padding:0 1.25rem}
.hero{background:var(--navy);color:#dbe4f2;border-bottom:4px solid var(--brand)}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:3rem;align-items:center;padding-top:4rem;padding-bottom:4rem}
.hero h1{color:#fff;font-size:clamp(1.9rem,3.6vw,2.8rem);font-weight:700;letter-spacing:-.02em;margin-bottom:1rem}
.hero .lead{font-size:1.08rem;color:#b9c7dc;max-width:36rem}
.hero .btn:not(.primary){background:transparent;color:#fff;border-color:#3b5582}.hero .btn:not(.primary):hover{background:var(--navy-2)}
.checks{list-style:none;padding:0;margin:1.5rem 0 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem 1.5rem;font-size:.92rem}
.checks li{display:flex;gap:.5rem;align-items:flex-start}.checks svg{width:1.1rem;height:1.1rem;color:#6fa0ff;flex:none;margin-top:.15rem}
.screen{background:var(--card);border-radius:var(--r);box-shadow:0 24px 60px rgba(0,0,0,.35);overflow:hidden;color:var(--text)}
.screen .bar-top{display:flex;gap:.4rem;padding:.6rem .8rem;background:var(--neutral-bg);border-bottom:1px solid var(--line)}
.screen .bar-top i{width:.65rem;height:.65rem;border-radius:50%;background:#cbd4e1}
.screen .body{padding:1rem}
.screen .srv{display:flex;align-items:center;gap:.75rem;padding:.7rem 0;border-bottom:1px solid var(--line-2);font-size:.9rem}
.screen .srv:last-child{border-bottom:0}
.screen .ic,.feature .ic,.tpl .ic{flex:none;width:2.4rem;height:2.4rem;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--brand-50);color:var(--brand)}
.screen .ic svg,.feature .ic svg,.tpl .ic svg{width:1.2rem;height:1.2rem}
.band{background:var(--card);border-bottom:1px solid var(--line)}
.band .wrap{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;padding-top:1.25rem;padding-bottom:1.25rem}
.band b{display:block;color:var(--ink);font-size:1.05rem}.band span{color:var(--muted);font-size:.86rem}
.section{padding:4rem 0}.section.alt{background:var(--card);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.section h2{font-size:1.6rem;margin-bottom:.4rem}.section .sub{color:var(--muted);margin:0 0 2rem;max-width:44rem}
.eyebrow{display:block;text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;font-weight:700;color:var(--brand);margin-bottom:.5rem}
.feature h3{margin-top:.9rem}.feature p{color:var(--muted);margin:0;font-size:.93rem}
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.steps .card{position:relative;padding-top:2.6rem}
.steps .card::before{counter-increment:s;content:counter(s);position:absolute;top:1rem;left:1.25rem;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:.8rem;font-weight:700}
.plan{display:flex;flex-direction:column}.plan.best{border:2px solid var(--brand)}
.plan .head-p{display:flex;justify-content:space-between;align-items:center}
.plan .price{font-size:2rem;font-weight:700;color:var(--ink);margin:.4rem 0 1rem}.plan .price small{font-size:.9rem;color:var(--muted);font-weight:500}
.plan ul{list-style:none;padding:0;margin:0 0 1.25rem;flex:1}
.plan li{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px solid var(--line-2);font-size:.92rem;color:var(--muted)}
.plan li b{color:var(--ink)}
footer{background:var(--navy);color:#9fb0c9;padding:3rem 0 2rem;font-size:.9rem}
footer .cols{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:2rem;margin-bottom:2rem}
footer h4{color:#fff;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;margin:0 0 .8rem}
footer a{color:#c7d2e3;display:block;padding:.2rem 0}footer .logo{color:#fff}footer .logo span{color:#9fb0c9}
footer .legal{border-top:1px solid var(--navy-3);padding-top:1.25rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.auth .aside{background:var(--navy);color:#c7d2e3;padding:3rem;display:flex;flex-direction:column;justify-content:space-between;border-right:4px solid var(--brand)}
.auth .aside h2{color:#fff;font-size:1.6rem;max-width:26rem}
.auth .aside .logo{color:#fff}.auth .aside .logo span{color:#9fb0c9}
.auth .form{display:grid;place-items:center;padding:2rem 1.25rem}
.auth .form .card{width:100%;max-width:26rem;padding:2rem}

/* ---------------- painel ---------------- */
.shell{display:grid;grid-template-columns:var(--side) minmax(0,1fr);min-height:100vh}
.side{background:var(--navy);color:#c7d2e3;padding:1.1rem .75rem;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .logo{color:#fff;padding:.3rem .6rem 1.2rem;font-size:.95rem;flex-wrap:wrap;row-gap:0}.side .logo span{color:#8fa2bf}
.side a.it{display:flex;align-items:center;gap:.7rem;padding:.6rem .75rem;border-radius:var(--r-sm);color:#c7d2e3;font-weight:550;font-size:.93rem;border-left:3px solid transparent}
.side a.it:hover{background:var(--navy-2);color:#fff;text-decoration:none}
.side a.it.on{background:var(--navy-2);color:#fff;border-left-color:#6fa0ff}
.side a.it svg{width:1.1rem;height:1.1rem;opacity:.9}
.side .sep{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:#7186a6;padding:1.1rem .75rem .4rem;font-weight:700}
.side .me{margin-top:auto;padding:.9rem;border-radius:var(--r-sm);background:var(--navy-2);font-size:.9rem}
.side .me .btn{background:transparent;color:#dbe4f2;border-color:var(--navy-3);width:100%;margin-top:.7rem}.side .me .btn:hover{background:var(--navy-3)}
.mtop{display:none}
.main{padding:1.75rem 2rem 3rem;max-width:90rem;width:100%;min-width:0}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}
.head h1{margin:0}
.crumb{font-size:.84rem;color:var(--muted);margin-bottom:.35rem}
.stat .l{color:var(--muted);font-size:.8rem;font-weight:650;text-transform:uppercase;letter-spacing:.04em}
.stat .v{font-size:1.5rem;font-weight:700;color:var(--ink);margin-top:.2rem;overflow-wrap:anywhere}
.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin-bottom:1.25rem;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs a{padding:.7rem 1rem;color:var(--muted);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs a:hover{text-decoration:none;color:var(--ink)}.tabs a.on{color:var(--brand);border-color:var(--brand)}
.power{display:flex;gap:.5rem;flex-wrap:wrap}
.console{background:#0d1117;border:1px solid #1f2733;border-radius:var(--r);height:min(28rem,58vh);overflow:auto;padding:1rem;font:.82rem/1.5 ui-monospace,"Cascadia Mono",Consolas,Menlo,monospace;white-space:pre-wrap;word-break:break-word;color:#d1d9e3}
.cmd{display:flex;gap:.5rem;margin-top:.6rem}.cmd input{font-family:ui-monospace,Consolas,Menlo,monospace}
.tpl{display:flex;gap:.9rem;align-items:flex-start}.tpl.sel{border:2px solid var(--brand);background:var(--sel-bg)}
.files td{padding:.55rem .8rem}.files tr:hover td{background:var(--th-bg)}.files a{color:var(--ink);display:inline-flex;gap:.5rem;align-items:center}.files svg{width:1rem;height:1rem;color:var(--muted)}
.editor{font:.82rem/1.5 ui-monospace,Consolas,Menlo,monospace;min-height:26rem;tab-size:2;white-space:pre;background:#0d1117;color:#d1d9e3;border-color:#1f2733}
.empty{text-align:center;padding:2.5rem 1rem;color:var(--muted)}
.empty svg{width:2.5rem;height:2.5rem;color:var(--faint);margin-bottom:.5rem}
.alert{padding:.8rem 1rem;border-radius:var(--r-sm);border:1px solid #f0d29d;background:var(--warn-bg);color:var(--warn-ink);margin-bottom:1rem;font-size:.92rem}
.alert.info{border-color:#c4d6fb;background:var(--info-bg);color:var(--info-ink)}
#toasts{position:fixed;right:1.25rem;bottom:1.25rem;display:flex;flex-direction:column;gap:.6rem;z-index:100;max-width:calc(100vw - 2.5rem)}
.toast{background:var(--card);color:var(--text);border:1px solid var(--line);border-left:4px solid var(--ok);padding:.75rem 1rem;border-radius:var(--r-sm);box-shadow:var(--shadow-lg);max-width:24rem;animation:in .2s}
.toast.err{border-left-color:var(--bad)}@keyframes in{from{opacity:0;transform:translateY(6px)}}
.modal-bg{position:fixed;inset:0;background:rgba(11,27,51,.55);display:grid;place-items:center;z-index:90;padding:1.25rem}
.modal{width:100%;max-width:30rem;max-height:90vh;overflow:auto}
.spark{width:7.5rem;height:2rem}
.scrim{display:none}
.dash-grid{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
/* explorador de ficheiros */
.fx{padding:0;overflow:hidden;outline:none}
.fx-bar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--line)}
.fx-crumbs{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center;min-width:0}.fx-crumbs a{color:var(--brand);padding:.1rem .25rem;border-radius:4px}.fx-crumbs span{color:var(--faint)}
.fx-sel{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.5rem 1rem;background:var(--sel-bg);border-bottom:1px solid var(--line);font-size:.88rem;font-weight:600}
.fx-sel[hidden]{display:none}
.fx-list{max-height:min(34rem,62vh);overflow:auto;user-select:none;-webkit-user-select:none}
.fx-head,.fx-row{display:grid;grid-template-columns:2.2rem minmax(0,1fr) 7rem 11rem;align-items:center;gap:.5rem;padding:.45rem 1rem}
.fx-head{position:sticky;top:0;background:var(--th-bg);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;border-bottom:1px solid var(--line);z-index:1}
.fx-row{border-bottom:1px solid var(--line-2);cursor:default;outline:none}
.fx-row:hover{background:var(--th-bg)}.fx-row.on{background:var(--sel-bg);box-shadow:inset 3px 0 0 var(--brand)}
.fx-row:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.fx-name{display:flex;gap:.55rem;align-items:center;min-width:0;color:var(--ink)}.fx-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fx-name svg{width:1.1rem;height:1.1rem;flex:none;color:var(--muted)}.fx-row[data-dir="1"] .fx-name svg{color:#d29922}
.fx-ck{display:flex;margin:0;padding:.25rem;cursor:pointer}.fx-ck input{width:1rem;height:1rem;min-height:0;margin:0}.fx-row .fx-ck input{pointer-events:none}
.fx-list{min-height:12rem}
.drop-on{background:var(--brand-50)!important;outline:2px dashed var(--brand);outline-offset:-2px}
.fx-status{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.5rem 1rem;border-top:1px solid var(--line)}
.fx{position:relative}.fx-drop{position:absolute;inset:0;display:grid;place-items:center;background:rgba(22,82,217,.12);border:2px dashed var(--brand);font-weight:650;color:var(--ink);z-index:5}
.fx-drop[hidden]{display:none}
.ctx{position:fixed;z-index:120;min-width:13rem;background:var(--card);border:1px solid var(--line-strong);border-radius:var(--r-sm);box-shadow:var(--shadow-lg);padding:.3rem}
.ctx button{display:block;width:100%;text-align:left;background:none;border:0;color:var(--text);font:inherit;font-size:.9rem;padding:.5rem .75rem;border-radius:4px;cursor:pointer}
.ctx button:hover,.ctx button:focus{background:var(--sel-bg);outline:none}.ctx button:disabled{opacity:.4;cursor:default;background:none}
.ctx hr{border:0;border-top:1px solid var(--line);margin:.25rem 0}
@media (max-width:600px){.fx-head,.fx-row{grid-template-columns:2rem minmax(0,1fr) 5rem}.fx-head span:last-child,.fx-row>span:last-child{display:none}.fx-bar .btn span{display:none}.fx-status span:last-child{display:none}}

.mgrid{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:4px}
.mslot{position:relative;aspect-ratio:1;border:1px solid var(--line-strong);background:var(--th-bg);border-radius:4px;display:flex;align-items:center;justify-content:center;text-align:center;padding:2px;overflow:hidden}
.mslot span{font-size:.58rem;line-height:1.1;color:var(--text);overflow-wrap:anywhere}
.mslot b{position:absolute;right:3px;bottom:1px;font-size:.7rem;color:var(--ink)}
.mslot i{font-size:.55rem;color:var(--faint);font-style:normal}
@media (max-width:600px){.mslot span{font-size:.5rem}}
@media (max-width:1100px){.dash-grid{grid-template-columns:1fr}}

.prop{display:grid;grid-template-columns:minmax(240px,1fr) 1.25fr;gap:1.25rem;align-items:start}
.prop-globe{position:relative;aspect-ratio:1/1;max-width:420px;width:100%;margin:0 auto}
.prop-globe canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:none}.prop-globe canvas:active{cursor:grabbing}
.prop-sum{position:absolute;left:0;right:0;bottom:-.25rem;text-align:center;display:flex;flex-direction:column;gap:.1rem}
.prop-sum b{font-size:1.6rem;color:var(--ink)}.prop-sum span{font-size:.82rem;color:var(--muted)}
.prop-list{display:flex;flex-direction:column;gap:6px;max-height:430px;overflow:auto;padding-right:4px}
.prop-row{display:flex;align-items:center;gap:.7rem;padding:.5rem .65rem;border:1px solid var(--line-2);border-radius:10px;background:var(--card);opacity:.55;transition:opacity .4s,transform .4s;transform:translateX(6px)}
.prop-row.in{opacity:1;transform:none}
.prop-cc{flex:none;width:34px;height:24px;border-radius:6px;display:grid;place-items:center;font-size:.72rem;font-weight:700;letter-spacing:.04em;background:var(--brand-50);color:var(--tag-ink)}
.prop-val{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:820px){.prop{grid-template-columns:1fr}.prop-list{max-height:none}}
/* ---------------- site público (página inicial, preços) ---------------- */
:root{--lp-bg:#f6f5f1;--lp-bg2:#ecebe5;--lp-ink:#111315;--lp-text:#3a3f45;--lp-muted:#6b7178;--lp-line:#d9d7cf;--lp-acc:#c8f031;--lp-acc-ink:#111315;--lp-acc-2:#4d7c0f;--lp-term:#0e1013;--lp-card:#ffffff}
.dbm-grid{display:grid;grid-template-columns:15rem minmax(0,1fr);gap:1rem;align-items:start}
.dbm-side{padding:.75rem;position:sticky;top:1rem;max-height:80vh;overflow:auto}
.dbm-t{width:100%;background:none;border:0;cursor:pointer;font:inherit;text-align:left;display:flex;justify-content:space-between;gap:.5rem;padding:.45rem .6rem;border-radius:var(--r-sm);color:var(--text);font-size:.9rem}
.dbm-t:hover{background:var(--btn-hover);text-decoration:none}.dbm-t.on{background:var(--brand-50);color:var(--tag-ink)}
.dbm-rows td{max-width:22rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dbm-null{color:var(--faint);font-style:italic}
.dbm-col{display:grid;grid-template-columns:minmax(7rem,1.3fr) 8rem 5rem minmax(6rem,1fr) auto auto auto auto;gap:.4rem;align-items:center;margin-bottom:.4rem}
.dbm-col input,.dbm-col select{min-width:0}
.dbm-ck{display:inline-flex;align-items:center;gap:.25rem;font-size:.8rem;color:var(--muted);white-space:nowrap;margin:0}.dbm-ck input{width:auto;margin:0}
.modal.wide{max-width:52rem}
.seg{display:inline-flex;gap:0}.seg .btn{border-radius:0}.seg .btn:first-child{border-radius:var(--r-sm) 0 0 var(--r-sm)}.seg .btn:last-child{border-radius:0 var(--r-sm) var(--r-sm) 0;margin-left:-1px}
@media (max-width:860px){.dbm-grid{grid-template-columns:1fr}.dbm-side{position:static;max-height:none}.dbm-col{grid-template-columns:1fr 1fr}}
:root[data-theme=dark]{--lp-bg:#0b0d10;--lp-bg2:#111419;--lp-ink:#f2f3f1;--lp-text:#c3c7cc;--lp-muted:#8a9098;--lp-line:#22262d;--lp-acc:#c8f031;--lp-acc-ink:#0b0d10;--lp-acc-2:#c8f031;--lp-term:#07080a;--lp-card:#12151a}
.lp-nav,.lp-hero,.lp-sec,.lp-end,.lp-foot,.lp-page{background:var(--lp-bg);color:var(--lp-text)}
.lp-in{max-width:72rem;margin:0 auto;padding:0 1.5rem}
.lp-nav{position:sticky;top:0;z-index:30;border-bottom:1px solid var(--lp-line);backdrop-filter:saturate(1.4) blur(8px);background:color-mix(in srgb,var(--lp-bg) 88%,transparent)}
.lp-nav .lp-in{display:flex;align-items:center;gap:1.75rem;height:4rem}
.lp-nav .logo{color:var(--lp-ink)}.lp-nav .logo span{color:var(--lp-muted)}
.lp-links{display:flex;gap:1.5rem}.lp-links a{color:var(--lp-text);font-weight:600;font-size:.92rem}.lp-links a:hover,.lp-links a.on{color:var(--lp-ink);text-decoration:none}
.lp-nav .prefs{margin-left:auto}.lp-nav .prefs select,.lp-nav .prefs .btn{background:transparent;color:var(--lp-text);border-color:var(--lp-line)}
.lp-acts{display:flex;align-items:center;gap:1rem}
.lp-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.6rem;padding:.55rem 1.15rem;border-radius:999px;background:var(--lp-acc);color:var(--lp-acc-ink);font-weight:700;font-size:.93rem;border:1px solid var(--lp-acc);white-space:nowrap;transition:transform .15s,filter .15s}
.lp-btn:hover{text-decoration:none;filter:brightness(1.05);transform:translateY(-1px)}
.lp-btn.lg{min-height:3.1rem;padding:.7rem 1.6rem;font-size:1rem}
.lp-btn.ghost{background:transparent;color:var(--lp-ink);border-color:var(--lp-line)}.lp-btn.ghost:hover{border-color:var(--lp-ink)}
.lp-link{color:var(--lp-ink);font-weight:600;font-size:.93rem}.lp-link.arrow::after{content:" →"}.lp-link:hover{text-decoration:underline;text-underline-offset:3px}
.lp-hero{border-bottom:1px solid var(--lp-line)}
.lp-hero .lp-in{display:grid;grid-template-columns:1fr 1fr;gap:3.5rem;align-items:center;padding-top:5rem;padding-bottom:5rem}
.lp-kicker{display:inline-flex;align-items:center;gap:.55rem;margin:0 0 1.4rem;font:600 .82rem/1 ui-monospace,"Cascadia Mono",Consolas,monospace;color:var(--lp-muted)}
.dot{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px color-mix(in srgb,#22c55e 25%,transparent)}
.lp-hero h1{font-size:clamp(2.3rem,4.6vw,3.7rem);line-height:1.04;letter-spacing:-.035em;font-weight:800;color:var(--lp-ink);margin:0 0 1.3rem}
.lp-hero h1 em{font-style:normal;background:linear-gradient(transparent 62%,var(--lp-acc) 62% 92%,transparent 92%);padding:0 .08em}
:root[data-theme=dark] .lp-hero h1 em{background:none;color:var(--lp-acc)}
.lp-lead{font-size:1.1rem;line-height:1.6;color:var(--lp-text);max-width:34rem;margin:0}
.lp-cta{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;margin-top:2rem}
.lp-term{background:var(--lp-term);border-radius:14px;border:1px solid #1d2128;box-shadow:0 30px 70px -30px rgba(0,0,0,.55);overflow:hidden;color:#d6dbe1;font:500 .82rem/1.65 ui-monospace,"Cascadia Mono",Consolas,Menlo,monospace}
.lp-tabs{display:flex;gap:.25rem;padding:.55rem;border-bottom:1px solid #1d2128;background:#0b0c0f;overflow-x:auto}
.lp-tabs button{all:unset;cursor:pointer;padding:.35rem .75rem;border-radius:7px;color:#8a929c;font:600 .78rem/1.2 system-ui,sans-serif;white-space:nowrap}
.lp-tabs button:hover{color:#e6e9ee}.lp-tabs button.on{background:#1a1e25;color:#fff}
.lp-term-body{height:15.5rem;padding:.9rem 1rem;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end}
.lp-term-body div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;animation:lpIn .25s ease-out}
.lp-term-body .ts{color:#4f5762;margin-right:.7rem}.lp-term-body .dim{color:#7d8690}.lp-term-body .ok{color:var(--lp-acc)}
.lp-term-body div:last-child::after{content:"";display:inline-block;width:.5rem;height:1em;background:#d6dbe1;margin-left:.3rem;vertical-align:-.15em;animation:lpBlink 1s steps(1) infinite}
@keyframes lpIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes lpBlink{50%{opacity:0}}
.lp-addr{display:flex;align-items:center;gap:.6rem;padding:.7rem 1rem;border-top:1px solid #1d2128;background:#0b0c0f;color:#8a929c;font-size:.78rem}
.lp-addr b{color:#fff;font-weight:600;margin-right:auto}
.lp-sec{padding:5.5rem 0}.lp-alt{background:var(--lp-bg2);border-top:1px solid var(--lp-line);border-bottom:1px solid var(--lp-line)}
.lp-head{max-width:38rem;margin-bottom:2.5rem}
.lp-head h2,.lp-end h2,.lp-page h1{color:var(--lp-ink);font-size:clamp(1.7rem,3vw,2.3rem);line-height:1.12;letter-spacing:-.03em;font-weight:800;margin:0 0 .7rem}
.lp-head p{color:var(--lp-muted);margin:0;font-size:1.02rem}
.lp-head.row-head{max-width:none;display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
.lp-split{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:3.5rem;align-items:start}.lp-split .lp-head{position:sticky;top:6rem}
.lp-cats{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2.5rem}
.lp-cat h3{font:700 .78rem/1 ui-monospace,Consolas,monospace;text-transform:uppercase;letter-spacing:.1em;color:var(--lp-muted);margin:0 0 .6rem;padding-bottom:.8rem;border-bottom:2px solid var(--lp-ink)}
.lp-cat ul{list-style:none;margin:0;padding:0}
.lp-cat li{display:flex;justify-content:space-between;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--lp-line)}
.lp-cat li b{display:block;color:var(--lp-ink);font-size:1rem}.lp-cat li span{display:block;color:var(--lp-muted);font-size:.88rem;margin-top:.15rem}
.lp-cat code,.lp-feats code{font:600 .78rem/1.4 ui-monospace,Consolas,monospace;color:var(--lp-ink);white-space:nowrap}
.lp-cat li code{align-self:flex-start;padding:.15rem .45rem;border:1px solid var(--lp-line);border-radius:6px;background:var(--lp-card)}
.lp-feats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 2.5rem;margin:0}
.lp-feats div{padding:1.3rem 0;border-top:1px solid var(--lp-line)}
.lp-feats dt{color:var(--lp-ink);font-weight:700;margin-bottom:.35rem}.lp-feats dd{margin:0;color:var(--lp-muted);font-size:.93rem;line-height:1.55}
.lp-table{overflow-x:auto;border:1px solid var(--lp-line);border-radius:14px;background:var(--lp-card)}
.lp-table table{width:100%;border-collapse:collapse;min-width:36rem}
.lp-table th,.lp-table td{padding:.85rem 1.2rem;text-align:left;border-bottom:1px solid var(--lp-line);font-size:.93rem}
.lp-table td:first-child{color:var(--lp-muted)}.lp-table td:not(:first-child){color:var(--lp-ink);font-weight:650;font-variant-numeric:tabular-nums}
.lp-table th{vertical-align:bottom;padding-top:1.4rem}.lp-table .pn{color:var(--lp-ink);font-weight:700}
.lp-table .pp{color:var(--lp-ink);font-size:1.6rem;font-weight:800;letter-spacing:-.02em;margin-top:.2rem}.lp-table .pp small{font-size:.8rem;color:var(--lp-muted);font-weight:500;margin-left:.15rem}
.lp-table .hl{background:color-mix(in srgb,var(--lp-acc) 12%,transparent)}
.lp-table tr.go td{border-bottom:0;padding:1.1rem 1.2rem 1.3rem}
.lp-faq details{border-top:1px solid var(--lp-line)}.lp-faq details:last-child{border-bottom:1px solid var(--lp-line)}
.lp-faq summary{cursor:pointer;list-style:none;padding:1.15rem 2rem 1.15rem 0;color:var(--lp-ink);font-weight:650;position:relative}
.lp-faq summary::-webkit-details-marker{display:none}
.lp-faq summary::after{content:"+";position:absolute;right:.2rem;top:50%;transform:translateY(-50%);font-size:1.3rem;font-weight:400;color:var(--lp-muted)}
.lp-faq details[open] summary::after{content:"–"}
.lp-faq p{margin:0 0 1.2rem;color:var(--lp-muted);line-height:1.6;max-width:40rem}
.lp-end{padding:5rem 0;border-top:1px solid var(--lp-line)}.lp-end .lp-in{display:flex;justify-content:space-between;align-items:center;gap:2rem;flex-wrap:wrap}.lp-end h2{max-width:34rem;margin:0}
.lp-foot{border-top:1px solid var(--lp-line);padding:2.2rem 0;font-size:.88rem}
.lp-foot-top{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap}.lp-foot .logo{color:var(--lp-ink)}.lp-foot .logo span{color:var(--lp-muted)}
.lp-foot nav{display:flex;gap:1.4rem;flex-wrap:wrap}.lp-foot nav a{color:var(--lp-text)}
.lp-foot-bot{display:flex;justify-content:space-between;gap:1rem;margin-top:1.6rem;color:var(--lp-muted);flex-wrap:wrap}
.lp-page{padding:4.5rem 0 3rem}.lp-page h1{font-size:clamp(2.2rem,4vw,3.2rem)}
.lp-plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:1.25rem}
.lp-plan{display:flex;flex-direction:column;background:var(--lp-card);border:1px solid var(--lp-line);border-radius:14px;padding:1.6rem}
.lp-plan.hl{border:2px solid var(--lp-ink)}
.lp-plan-h{display:flex;justify-content:space-between;align-items:center}.lp-plan-h h3{margin:0;color:var(--lp-ink);font-size:1.05rem}
.lp-pill{font:700 .72rem/1 system-ui,sans-serif;padding:.35rem .6rem;border-radius:999px;background:var(--lp-acc);color:var(--lp-acc-ink)}
.lp-plan-p{color:var(--lp-ink);font-size:2.4rem;font-weight:800;letter-spacing:-.03em;margin:.6rem 0 1.2rem}.lp-plan-p small{font-size:.9rem;color:var(--lp-muted);font-weight:500}
.lp-plan ul{list-style:none;margin:0 0 1.5rem;padding:0;flex:1}
.lp-plan li{display:flex;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--lp-line);font-size:.92rem;color:var(--lp-muted)}.lp-plan li b{color:var(--lp-ink);font-variant-numeric:tabular-nums}
.lp-plan .lp-btn{width:100%}
@media (max-width:900px){.lp-hero .lp-in,.lp-split{grid-template-columns:1fr;gap:2.5rem}.lp-split .lp-head{position:static}.lp-cats{grid-template-columns:1fr}.lp-links{display:none}.lp-hero .lp-in{padding-top:3rem;padding-bottom:3.5rem}.lp-sec{padding:4rem 0}}
@media (max-width:600px){.lp-feats{grid-template-columns:1fr}.lp-in{padding:0 1rem}.lp-nav .lp-in{gap:.75rem}.lp-acts .lp-link{display:none}.lp-term-body{height:13rem;font-size:.74rem}}
:root[data-theme=dark]{
  --bg:#0d131e;--card:#141c2a;--line:#253147;--line-2:#1c2637;--line-strong:#34445f;
  --ink:#eef2f8;--text:#d3dbe7;--muted:#93a1b8;--faint:#6b7a93;
  --btn-bg:#19222f;--btn-hover:#202b3d;--input-bg:#0f1621;--th-bg:#172030;--neutral-bg:#212b3c;--track:#243046;--sel-bg:#14223b;
  --brand:#2f6bf0;--brand-600:#2458cf;--brand-50:#16264a;--tag-ink:#9dbaff;
  --ok:#4ade80;--ok-bg:#11301e;--warn:#f5b546;--warn-bg:#33240b;--bad:#f87171;--bad-bg:#3a1515;--info-bg:#122444;--warn-ink:#f5d38b;--info-ink:#bcd2ff;
  --navy:#0a1222;--navy-2:#13213b;--navy-3:#1d3156;
  --shadow:0 1px 2px rgba(0,0,0,.4);--shadow-lg:0 12px 32px rgba(0,0,0,.5);color-scheme:dark;
}
:root[data-theme=dark] .btn.ok{border-color:#1f5a37}:root[data-theme=dark] .btn.warn{border-color:#6b4a12}:root[data-theme=dark] .btn.danger{border-color:#6e2626}
:root[data-theme=dark] .alert{border-color:#6b4a12}:root[data-theme=dark] .alert.info{border-color:#24447a}
:root[data-theme=dark] .screen .bar-top i{background:#34445f}
/* seletores de idioma e tema */
.prefs{display:flex;gap:.4rem;align-items:center}
.prefs select{width:auto;min-height:2.1rem;padding:.25rem 1.6rem .25rem .5rem;font-size:.85rem}
.prefs .btn{min-height:2.1rem;padding:.25rem .55rem;flex:none}.prefs select{flex:none}.nav .logo{min-width:0;overflow:hidden;white-space:nowrap}
.side .prefs{padding:.6rem 0 0}.side .me .prefs .btn{width:auto;margin-top:0;flex:none}.side .me .prefs select{flex:1;min-width:0}.side .prefs select,.mtop .prefs select{background:var(--navy-2);color:#dbe4f2;border-color:var(--navy-3)}
.side .prefs .btn,.mtop .prefs .btn{background:transparent;color:#dbe4f2;border-color:var(--navy-3)}
.mtop .prefs{margin-left:auto}
.auth .form .prefs{position:absolute;top:1rem;right:1rem}.auth .form{position:relative}
@media (max-width:600px){.nav .in{gap:.5rem}.nav .logo span,.mtop .logo span{display:none}.nav .acts .btn{padding:.35rem .6rem;font-size:.82rem}.nav .prefs{margin-left:auto}}
/* ---------------- responsivo ---------------- */
@media (max-width:1100px){
  .hero .wrap{grid-template-columns:1fr;gap:2rem}
  .hero .screen{max-width:34rem}
  footer .cols{grid-template-columns:1fr 1fr}
}
/* tablet e telemóvel: menu lateral passa a gaveta */
@media (max-width:1024px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;inset:0 auto 0 0;z-index:60;width:min(var(--side),85vw);transform:translateX(-100%);transition:transform .2s;box-shadow:var(--shadow-lg)}
  .side.open{transform:none}
  .scrim.open{display:block;position:fixed;inset:0;background:rgba(11,27,51,.45);z-index:55}
  .mtop{display:flex;position:sticky;top:0;z-index:40;align-items:center;gap:.75rem;background:var(--navy);color:#fff;padding:.6rem 1rem}
  .mtop .logo{color:#fff;font-size:1rem}.mtop .logo span{color:#8fa2bf}
  .mtop .btn{background:transparent;color:#fff;border-color:var(--navy-3)}
  .main{padding:1.25rem 1.25rem 2.5rem}
}
@media (max-width:820px){
  .nav .links{display:none}
  .band .wrap{grid-template-columns:repeat(2,minmax(0,1fr))}
  .steps{grid-template-columns:1fr}
  .auth{grid-template-columns:1fr}.auth .aside{display:none}
}
@media (max-width:600px){
  h1{font-size:1.35rem}
  .topbar{display:none}
  .nav .in{padding:.6rem 1rem;gap:.75rem}.nav .acts .btn:not(.primary){display:none}
  .wrap{padding:0 1rem}
  .hero .wrap{padding-top:2.5rem;padding-bottom:2.5rem}
  .checks{grid-template-columns:1fr}
  .section{padding:2.75rem 0}
  footer .cols{grid-template-columns:1fr}
  .main{padding:1rem .9rem 2rem}
  .card{padding:1rem}.table-wrap{margin:0 -1rem;padding:0 1rem}
  .g4{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
  .stat .v{font-size:1.15rem}
  .head{align-items:flex-start}
  .power{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%}
  .power .btn{padding:.5rem .3rem;font-size:.8rem}
  .console{height:55vh;font-size:.76rem;padding:.75rem}
  .cmd .btn{padding:.5rem .8rem}
  .modal-bg{align-items:end;padding:0}.modal{max-width:none;border-radius:var(--r) var(--r) 0 0}
}
@media (max-width:380px){.g4{grid-template-columns:1fr}.power .btn span{display:none}}

/* TV e consolas: margem de segurança (overscan), alvos maiores e foco bem visível */
body.tv{padding:2.5vh 3vw}
body.tv .btn{min-height:3rem}
body.tv :focus-visible,body.tv .nav-focus{outline-width:4px;outline-offset:3px}
body.tv .side{height:calc(100vh - 5vh)}
@media print{.side,.mtop,.power,.cmd,#toasts{display:none!important}.shell{display:block}}

