:root{
 /* Claro: cinzas do iOS, azul do sistema como cor principal; verde/vermelho só para lucro/prejuízo. */
 --bg:#f2f2f7;--card:#fff;--fill:#efeff4;--line:#e5e5ea;--text:#1c1c1e;--muted:#6e6e73;
 --green:#248a3d;--green-bg:#e4f6e8;--amber:#c25e00;--amber-bg:#fff3e0;--amber-text:#8a4500;--red:#d70015;--red-bg:#ffeced;
 --brand:#007aff;--accent-bg:#e5f1ff;--bar:rgba(255,255,255,.78);
 --work:#0062cc;--work-bg:#e5f1ff;--counter:#8944ab;--counter-bg:#f4eafa;--star:#ff9f0a;
 --shadow:0 1px 2px rgba(0,0,0,.04),0 1px 8px rgba(0,0,0,.04);
 --radius:14px;
 font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,"Helvetica Neue",sans-serif;
 -webkit-font-smoothing:antialiased;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--text);font-size:16px;line-height:1.45;letter-spacing:-.01em}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{opacity:.5;cursor:not-allowed}
.muted{color:var(--muted)}
h1{font-size:28px;margin:8px 0 4px}
h2{font-size:20px;margin:0}

/* Topo */
.top{display:flex;align-items:center;gap:24px;padding:10px 28px;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:20px}
.logo{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:linear-gradient(180deg,#3a9bff,#0066e0);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}
/* Logo da app (19/10): imagem própria em vez da letra — sem fundo nem sombra por baixo. */
img.logo{background:none;box-shadow:none;object-fit:contain}
nav{display:flex;gap:4px}
.tab{border:0;background:none;padding:8px 14px;border-radius:999px;font-weight:600;font-size:15px;color:var(--muted)}
.tab:hover{color:var(--text)}
.tab.active{background:var(--accent-bg);color:var(--brand)}
.quota{margin-left:auto;font-size:14px;color:var(--muted)}
.quota b{color:var(--text)}
.round{width:34px;height:34px;border-radius:50%;border:0;background:var(--fill);font-weight:700}
.count{display:inline-block;min-width:22px;padding:0 6px;border-radius:11px;background:var(--fill);font-size:12px;text-align:center}
.count.warn{background:var(--amber-bg);color:var(--amber)}

main{max-width:1180px;margin:0 auto;padding:24px 20px 60px}

/* Barra de ação */
.actionbar{display:flex;gap:24px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 24px;box-shadow:var(--shadow)}
.actionmain{display:flex;gap:10px}
.big{background:var(--brand);color:#fff;border:0;border-radius:12px;padding:13px 24px;font-size:17px;font-weight:600;white-space:nowrap}
.big:hover:not(:disabled){filter:brightness(1.08)}
.big:active:not(:disabled){filter:brightness(.92)}
.ghost{background:var(--fill);border:0;border-radius:12px;padding:12px 18px;font-weight:600}
.status{flex:1;min-width:0}
.status p{margin:0}
#status-main{font-weight:600}
#status-sub{font-size:14px;margin-top:2px}
progress{width:100%;height:8px;margin-top:10px;accent-color:var(--brand)}

/* Filtros */
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:16px 0}
.filters select,.filters input[type=search]{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:9px 12px}
.filters input[type=search]{flex:1;min-width:180px}
.check{display:flex;align-items:center;gap:6px;font-size:15px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 12px;cursor:pointer}

/* Cartões de oportunidade */
.opp{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;margin-bottom:12px;display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:14px 20px;box-shadow:var(--shadow)}
.opp.flagged{border-color:var(--amber)}
.opp.gone{opacity:.55}
.opp .head{min-width:0}
.league{font-size:13px;color:var(--muted)}
.event{font-size:19px;font-weight:700;margin:2px 0}
.meta{font-size:14px;color:var(--muted)}
.meta b{color:var(--text);font-weight:600}
.roi{text-align:right;grid-row:1/3;grid-column:2;display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.roi strong{font-size:30px;line-height:1;color:var(--green);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.roi strong.neg{color:var(--muted)}
.roi small{font-size:13px;color:var(--muted);white-space:nowrap}
.workpct{font-weight:600;color:var(--green)}
.workpct.neg{color:var(--amber)}
.roletoggle{cursor:pointer;border:0;font-family:inherit}
.roi .btns{display:flex;flex-direction:column;gap:6px;margin-top:auto;width:100%}
.btn{border:0;background:var(--fill);border-radius:10px;padding:8px 12px;font-size:14px;font-weight:600}
.btn:hover:not(:disabled){filter:brightness(.97)}
.btn.main{background:var(--brand);color:#fff}
.btn.main:hover:not(:disabled){filter:brightness(1.08)}
.btn.danger{color:var(--red)}
.legs{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.leg{background:var(--fill);border:1px solid transparent;border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.leg .row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.leg .out{font-size:14px;color:var(--muted)}
.leg .odd{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}
.leg .odd s{font-size:14px;font-weight:400;color:var(--muted);margin-right:6px}
.leg.changed{background:var(--amber-bg)}
.leg.closed{background:var(--red-bg)}
.house{font-weight:700;color:var(--brand);text-decoration:none}
.house:hover{text-decoration:underline}
.age{display:inline-block;font-size:12px;border-radius:6px;padding:2px 7px;width:max-content}
.age.ok{background:var(--green-bg);color:var(--green)}
.age.old{background:var(--amber-bg);color:var(--amber)}
.age.bad{background:var(--red-bg);color:var(--red)}
.flags{grid-column:1/-1;background:var(--amber-bg);color:var(--amber-text);border-radius:10px;padding:8px 12px;font-size:14px}
.flags ul{margin:4px 0 0;padding-left:18px}
.flag-inline{background:var(--amber-bg);color:var(--amber);border-radius:6px;padding:2px 7px;font-size:13px}
.savebtn{border:0;background:none;font-size:22px;color:var(--muted);padding:0;line-height:1}
.savebtn.on{color:var(--star)}
.empty{text-align:center;padding:60px 20px;color:var(--muted);background:var(--card);border:1px dashed var(--line);border-radius:var(--radius)}
.empty h2{color:var(--text);margin-bottom:6px}

/* Calculadora */
.calcbox{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;max-width:720px;box-shadow:var(--shadow)}
dialog .calcbox{border:0;padding:0}
.calcinputs,.oddsedit{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:12px}
.calcbox label{font-size:14px;color:var(--muted);display:block}
.calcbox input,.calcbox select{display:block;width:100%;margin-top:4px;border:1px solid var(--line);border-radius:8px;padding:10px;font-size:17px}
.calcresult{display:flex;gap:24px;background:var(--green-bg);border-radius:10px;padding:14px 18px;margin:12px 0}
.calcresult span{display:block;font-size:13px;color:var(--muted)}
.calcresult strong{font-size:26px;color:var(--green)}
.calcresult strong.neg{color:var(--red)}
.allocation{width:100%;border-collapse:collapse;font-size:16px}
.allocation td,.allocation th{padding:10px 6px;border-bottom:1px solid var(--line);text-align:right}
.allocation th{font-size:13px;color:var(--muted);font-weight:500}
.allocation td:first-child,.allocation th:first-child{text-align:left}
.note{font-size:13px;color:var(--muted)}
.error{color:var(--red)}

dialog{border:0;border-radius:20px;padding:24px;max-width:640px;width:calc(100% - 30px);box-shadow:0 24px 80px rgba(0,0,0,.25);background:var(--card);color:var(--text)}
dialog::backdrop{background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.dialoghead{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}
.help{padding-left:18px;line-height:1.7}
.help li{margin-bottom:10px}

#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:rgba(28,28,30,.92);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:#fff;border-radius:14px;padding:12px 20px;display:none;z-index:10;max-width:90vw;box-shadow:0 8px 30px rgba(0,0,0,.2)}

@media(max-width:760px){
 .top{flex-wrap:wrap;gap:10px;padding:10px 14px}
 nav{order:3;width:100%}
 .tab{flex:1;padding:8px}
 .actionbar{flex-direction:column;align-items:stretch}
 .big{width:100%}
 .opp{grid-template-columns:1fr}
 .roi{grid-row:auto;grid-column:auto;align-items:stretch;text-align:left;flex-direction:row;flex-wrap:wrap;align-items:center}
 .roi .btns{flex-direction:row;margin:0}
 .roi .btns .btn{flex:1}
 .roi .betnote{flex-basis:100%}
}

/* Login e utilizadores */
.loginpage{display:grid;place-items:center;min-height:100vh}
.loginbox{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:32px;width:min(400px,calc(100% - 30px))}
.loginbox .brand{margin-bottom:12px}
.loginbox form,.stack{display:flex;flex-direction:column;gap:14px}
.loginbox label,.stack label{font-size:14px;color:var(--muted);display:flex;flex-direction:column;gap:4px}
.loginbox input,.stack input{border:1px solid var(--line);border-radius:8px;padding:11px;font-size:17px}
.usermenu{display:flex;align-items:center;gap:10px;font-size:14px}
#me-name{font-weight:600}
.linkbtn{border:0;background:none;color:var(--brand);font-weight:600;padding:4px}
.userform{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.userform input,.userform select{border:1px solid var(--line);border-radius:8px;padding:9px 12px;flex:1;min-width:140px}
.users{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.users th,.users td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:15px}
.users th{font-size:13px;color:var(--muted);font-weight:500}
.users td:last-child{text-align:right;white-space:nowrap}
.users .btn{padding:5px 9px;font-size:13px;margin-left:4px}
.users .btn.danger{color:var(--red)}
.tag{font-size:12px;border-radius:6px;padding:2px 7px;background:var(--line)}
.tag.admin{background:var(--accent-bg);color:var(--brand)}
.tag.off{background:var(--red-bg);color:var(--red)}
@media(max-width:760px){.usermenu{width:100%;justify-content:flex-end}.users th:nth-child(5),.users td:nth-child(5){display:none}}

/* Definições */
.setcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;max-width:720px;margin-top:16px}
.keystatus{margin:10px 0 4px}
.setbtns{display:flex;gap:8px;margin:12px 0}
.btn.danger{color:var(--red)}
.keyform{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:16px;margin-top:8px}
.keyform label{flex:1;min-width:240px;font-size:14px;color:var(--muted);display:flex;flex-direction:column;gap:4px}
.keyform input{border:1px solid var(--line);border-radius:8px;padding:10px;font-size:16px;font-family:ui-monospace,monospace}
.top{gap:14px}
.tab{padding:10px 12px}
.tab,.quota,.linkbtn,#me-name{white-space:nowrap}
.usermenu{gap:6px}
@media(max-width:1240px){.quota{display:none}}

/* Papel da casa */
.houserow{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.role{font-size:11px;border-radius:5px;padding:1px 6px;text-transform:uppercase;letter-spacing:.3px}
.role.work{background:var(--work-bg);color:var(--work)}
.role.counter{background:var(--counter-bg);color:var(--counter)}
/* Calculadora editável na tabela */
.calcgrid input{width:100%;max-width:130px;border:1px solid var(--line);border-radius:8px;padding:8px;font-size:16px;text-align:right}
.calcgrid td,.calcgrid th{vertical-align:middle}
.calcgrid tfoot td{border-top:2px solid var(--line);border-bottom:0}
.green{color:var(--green)}

a.brand{text-decoration:none;color:inherit;cursor:pointer}

.seg{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--muted)}
.segbtn{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:8px 12px;font-weight:600}
.segbtn.on{background:var(--accent-bg);border-color:transparent;color:var(--brand)}

/* Indicador de carregamento */
.spin{display:inline-block;width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;margin-right:6px;vertical-align:-2px;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.btn:disabled .spin{opacity:1}

/* Modo escuro ao estilo Apple (macOS): fundo cinza-escuro, superfícies em cinzas do iOS, azul/verde/vermelho do sistema.
   Escolha guardada no browser (localStorage 'arbdesk-theme'); sem escolha segue o sistema. */
:root[data-theme=dark]{
 color-scheme:dark;
 --bg:#1c1c1e;--card:#2a2a2d;--fill:#3a3a3d;--line:#3a3a3d;--text:#f5f5f7;--muted:#a1a1a6;
 --green:#30d158;--green-bg:rgba(48,209,88,.16);--amber:#ff9f0a;--amber-bg:rgba(255,159,10,.16);--amber-text:#ffc970;--red:#ff453a;--red-bg:rgba(255,69,58,.16);
 --brand:#0a84ff;--accent-bg:rgba(10,132,255,.22);--bar:rgba(36,36,38,.78);
 --work:#64aaff;--work-bg:rgba(10,132,255,.2);--counter:#da8fff;--counter-bg:rgba(191,90,242,.2);--star:#ffd60a;
 --shadow:none;
}
:root[data-theme=dark] input,:root[data-theme=dark] select,:root[data-theme=dark] dialog{color:var(--text)}
:root[data-theme=dark] #toast{background:rgba(72,72,74,.92)}
:root[data-theme=dark] dialog{box-shadow:0 24px 80px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.06)}
.themebtn{font-size:16px;line-height:1}

/* Registo: apostas e depósitos */
.ledgerhead{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ledgerfilters{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:14px 0}
.ledgerfilters label{display:flex;flex-direction:column;font-size:13px;color:var(--muted);gap:4px}
.ledgerfilters input,.ledgerfilters select,.depform input,.depform select:not(.cursel),.betlegrow input{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--card);color:var(--text)}
.ledgerfilters select{align-self:end;padding:9px 10px}
.quick{display:flex;gap:6px;align-self:end}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:12px 0}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.stat span{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.stat strong{font-size:24px}
.stat small{font-size:12px;color:var(--muted)}
.green{color:var(--green)}
.ledger-table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin:8px 0 16px}
.ledger-table th,.ledger-table td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line);font-size:14px}
.ledger-table th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
.ledgersub{margin:22px 0 10px;font-size:18px}
.bet{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}
.bet.pending{border-left:4px solid var(--amber)}
.bethead{display:flex;justify-content:space-between;gap:12px}
.betres{text-align:right;display:flex;flex-direction:column}
.betres b{font-size:20px}.betres small{color:var(--muted);font-size:12px}
.blegs{margin:10px 0 6px;display:flex;flex-direction:column;gap:4px}
.bleg{display:flex;justify-content:space-between;gap:10px;font-size:14px;padding:4px 0;border-top:1px dashed var(--line)}
.bleg.won b{color:var(--green)}
.tag.win{background:var(--green-bg);color:var(--green)}
.tag.live{background:var(--red-bg);color:var(--red);font-weight:600;white-space:nowrap;vertical-align:middle}
.tag.live::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:5px;vertical-align:1px;animation:livepulse 1.4s ease-in-out infinite}
@keyframes livepulse{50%{opacity:.25}}
.betbtns{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.small{font-size:13px}
.depform{display:flex;flex-wrap:wrap;gap:10px;align-items:end;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin:12px 0}
.depform label{display:flex;flex-direction:column;font-size:13px;color:var(--muted);gap:4px}
.depform .grow,.row2 .grow{flex:1;min-width:180px}
.row2{display:flex;gap:10px;flex-wrap:wrap}
.betlegrow{display:grid;grid-template-columns:1.2fr 1.6fr .8fr .7fr auto;gap:8px;align-items:end;margin-bottom:8px}
.betlegrow label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:3px}
.betlegrow input{width:100%}
.settlerow{display:flex;justify-content:space-between;align-items:end;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.settlerow .recv{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:3px}
.settlerow .recv input{width:120px;border:1px solid var(--line);border-radius:8px;padding:7px;background:var(--card);color:var(--text)}
#bet-dialog,#settle-dialog{max-width:760px}
@media (max-width:700px){.betlegrow{grid-template-columns:1fr 1fr}.settlerow{flex-direction:column;align-items:stretch}}
.calcinputs .autocalc{display:flex;flex-direction:row;align-items:center;gap:8px;align-self:end;padding-bottom:10px}
.calcbox .autocalc input{width:auto;display:inline-block;margin:0}
.calcbox .totalin[readonly]{background:var(--bg);color:var(--muted)}
.calcinputs .seg{grid-column:1/-1}
.calcinputs .autocalc{border:0;padding-left:0}

/* Campos ao estilo iOS: preenchidos, sem moldura, anel azul ao focar. */
input:not([type=checkbox]):not([type=radio]),select,textarea{background:var(--fill)!important;border-color:transparent!important;border-radius:10px;color:var(--text)}
input[readonly]{opacity:.75}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
input[type=checkbox],input[type=radio],progress{accent-color:var(--brand)}
.check{background:var(--card);border-color:var(--line)}
.stat strong,.ledger-table td,.betres b,.allocation td{font-variant-numeric:tabular-nums}
.stat,.bet,.ledger-table,.depform,.setcard{box-shadow:var(--shadow)}
.tag{background:var(--fill)}
/* Campos que ficam direto no fundo da página: cor de cartão para se verem. */
.filters select,.filters input,.ledgerfilters input,.ledgerfilters select{background:var(--card)!important;box-shadow:inset 0 0 0 1px var(--line)}

/* Desktop estreito: os separadores deslizam em vez de empurrar o resto para fora. */
.top nav{min-width:0;flex:1 1 auto;overflow-x:auto;scrollbar-width:none}
.top nav::-webkit-scrollbar{display:none}
.round{flex:none}
.usermenu{flex:none}
@media(max-width:1400px){.quota{display:none}.top #me-name{display:none}}
/* ---------- Telemóvel (fica no fim para ganhar às regras de cima) ---------- */
html,body{overflow-x:hidden}
@media(max-width:760px){
 main{padding:14px 12px 40px}
 h1{font-size:24px}
 .top{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px 10px;padding:8px 12px 0;padding-top:max(8px,env(safe-area-inset-top))}
 .brand{font-size:18px}.logo{width:28px;height:28px}
 .top .brand{grid-row:1;grid-column:1}
 .top .usermenu{grid-row:1;grid-column:2;justify-self:end;width:auto;font-size:13px;gap:2px}
 .top .usermenu #me-name{display:none}
 .top .linkbtn{font-size:13px;padding:4px 6px}
 #theme{grid-row:1;grid-column:3}#help{grid-row:1;grid-column:4}
 .top .quota{display:none}
 .round{width:32px;height:32px}
 /* Separadores: uma linha que desliza na horizontal, como no iOS. */
 nav{grid-row:2;grid-column:1/-1;order:initial;width:auto;display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:0 -12px;padding:6px 12px 8px;scroll-snap-type:x proximity}
 nav::-webkit-scrollbar{display:none}
 nav{-webkit-mask-image:linear-gradient(to right,#000 82%,transparent);mask-image:linear-gradient(to right,#000 82%,transparent)}
 .tab{flex:0 0 auto;padding:7px 13px;font-size:14px;scroll-snap-align:start}
 /* Barra de procura */
 .actionbar{flex-direction:column;align-items:stretch;gap:12px;padding:14px}
 .actionmain{width:100%}.big{width:100%;flex:1}
 #status-main{font-size:15px}
 /* Filtros em grelha compacta */
 .filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
 .filters input[type=search]{grid-column:1/-1;min-width:0;order:-1}
 .filters select{min-width:0;width:100%}
 .filters .check{font-size:13px;padding:7px 10px;justify-content:flex-start}
 /* Cartões */
 .opp{grid-template-columns:1fr;padding:14px;gap:10px;border-radius:16px}
 .event{font-size:17px}
 .meta{font-size:13px}
 .roi{grid-row:auto;grid-column:auto;display:grid;grid-template-columns:auto 1fr auto;align-items:center;text-align:left;gap:2px 10px}
 .roi strong{font-size:26px;grid-row:1/3}
 .roi small{white-space:normal;font-size:12px}
 .roi .savebtn{grid-column:3;grid-row:1}
 .roi .btns{grid-column:1/-1;flex-direction:row;margin-top:8px}
 .roi .btns .btn{flex:1;padding:10px}
 .roi .betnote{grid-column:1/-1;margin:6px 0 0}
 .legs{grid-template-columns:repeat(auto-fit,minmax(94px,1fr));gap:6px}
 .leg{padding:8px 9px;border-radius:10px;gap:2px}
 .leg .row{flex-direction:column;align-items:flex-start;gap:0}
 .leg .out{font-size:12px;line-height:1.25}
 .leg .odd{font-size:21px}
 .house{font-size:14px}
 .houserow{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
 .role{font-size:9.5px;padding:1px 5px}
 .age{font-size:10.5px;padding:1px 5px;width:auto}
 .flags{font-size:13px}
 /* Calculadora e diálogos */
 .calcbox{padding:14px}
 .calcinputs{grid-template-columns:1fr 1fr}
 .allocation{font-size:14px}
 .allocation td,.allocation th{padding:8px 4px}
 .calcgrid input{max-width:none;padding:8px 6px;font-size:15px}
 .calcgrid td:first-child{font-size:13px;line-height:1.3}
 .calcgrid th:nth-child(4),.calcgrid td.paid{font-size:13px}
 dialog{padding:16px;width:calc(100% - 16px);max-height:calc(100dvh - 24px);border-radius:18px}
 .dialoghead h2{font-size:18px}
 /* Registo */
 .ledgerhead .btn{padding:8px 10px}
 .ledgerfilters{display:grid;grid-template-columns:1fr 1fr;gap:8px}
 .ledgerfilters select,.ledgerfilters .quick{grid-column:1/-1}
 .ledgerfilters input,.ledgerfilters select{width:100%;min-width:0}
 .quick{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
 .quick .btn{padding:8px 4px;font-size:13px}
 .stats{grid-template-columns:1fr 1fr;gap:8px}
 .stat{padding:10px 12px}.stat strong{font-size:19px}
 .stat:first-child{grid-column:1/-1}
 #bets-houses,#deposits-list{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -12px;padding:0 12px}
 .ledger-table{min-width:0}
 /* Tabela por casa: no telemóvel só Casa, Apostado, Lucro e Saldo. */
 #bets-houses th:nth-child(2),#bets-houses td:nth-child(2),#bets-houses th:nth-child(3),#bets-houses td:nth-child(3),#bets-houses th:nth-child(6),#bets-houses td:nth-child(6),#bets-houses th:nth-child(7),#bets-houses td:nth-child(7){display:none}
 #bets-houses .role{display:none}
 #deposits-list th:nth-child(5),#deposits-list td:nth-child(5){display:none}
 #deposits-list td:nth-child(4){white-space:normal;max-width:110px}
 .ledger-table th,.ledger-table td{padding:8px 9px;font-size:13px;white-space:nowrap}
 .bet{padding:12px 14px}
 .bethead .event{font-size:16px}
 .bleg{flex-direction:column;gap:1px;font-size:13px}
 .bleg>span:last-child{color:var(--muted)}
 .betbtns .btn{flex:1}
 .depform{display:grid;grid-template-columns:1fr 1fr;padding:12px}
 .depform label{min-width:0}.depform input,.depform select:not(.cursel){width:100%}
 .depform .grow,.depform button{grid-column:1/-1}
 .betlegrow{grid-template-columns:1fr 1fr;padding:10px;background:var(--fill);border-radius:12px;position:relative}
 .betlegrow [data-blremove]{position:absolute;top:6px;right:6px;width:26px;height:26px}
 #bet-legs .betlegrow input:not([type=checkbox]){background:var(--card)!important}
 .row2{flex-direction:column}
 .settlerow .recv input{width:100%}
 /* Utilizadores e definições */
 .userform input,.userform select{min-width:0;flex:1 1 45%}
 .users{display:block;overflow-x:auto}
 .keyform label{min-width:0}
 #toast{bottom:max(16px,env(safe-area-inset-bottom));width:calc(100% - 24px);text-align:center}
 /* iPhone: campos com menos de 16px fazem zoom ao tocar. */
 input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:16px!important}
}
/* Valor + moeda lado a lado */
.moneyin{display:flex;gap:4px;align-items:center;justify-content:flex-end}
.moneyin input{flex:1;min-width:0}
.calcbox .cursel,.cursel{width:auto!important;display:inline-block!important;margin:0!important;padding:8px 6px!important;font-size:14px!important;flex:none}
/* Calculadora no telemóvel: cada casa num bloco (nome / odd + valor e moeda / recebes). */
@media(max-width:760px){
 .calcgrid thead{display:none}
 .calcgrid tbody tr,.calcgrid tfoot tr{display:grid;grid-template-columns:.8fr 1.4fr;gap:6px 8px;padding:10px 0;border-bottom:1px solid var(--line)}
 .calcgrid td{border:0!important;padding:0!important;text-align:left!important}
 .calcgrid td:first-child{grid-column:1/-1}
 .calcgrid tbody td:nth-child(2)::before{content:'Odd';display:block;font-size:11px;color:var(--muted);margin-bottom:2px}
 .calcgrid tbody td:nth-child(3)::before{content:'Valor';display:block;font-size:11px;color:var(--muted);margin-bottom:2px}
 .calcgrid td.paid{grid-column:1/-1;text-align:right!important;font-size:13px}
 .calcgrid td.paid::before{content:'Recebes se ganhar: ';color:var(--muted)}
 .calcgrid tfoot td:nth-child(2){display:none}
 .calcgrid tfoot td:first-child{grid-column:1;align-self:center}
 .calcgrid tfoot td:nth-child(3){grid-column:2}
 .calcgrid tfoot td.profitcell{grid-column:1/-1;text-align:right!important}
 .calcgrid input{max-width:none!important;width:100%}
}


.rowbtns{display:flex;gap:8px;justify-content:flex-end}
.dlgbtns{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}
#deposit-dialog{max-width:440px}

.maxbtn{border:1px dashed var(--line);background:none;padding:2px 8px;border-radius:999px;font:inherit;font-size:12px;font-weight:600;color:var(--brand);text-align:left;cursor:pointer;width:max-content;margin-top:2px}
.maxbtn.set{border-style:solid;border-color:transparent;background:var(--accent-bg);color:var(--brand)}
.maxbtn:hover{border-color:var(--brand)}
.maxwarn{font-weight:600}
#maxbet-dialog{max-width:420px}

.calcmax{margin-top:3px}
.btn.tiny{padding:2px 8px;font-size:12px;border-radius:8px}


.maxfeat{display:inline-block;font-size:12px;font-weight:800;border-radius:6px;padding:2px 8px;letter-spacing:.2px;white-space:nowrap;text-transform:uppercase}
.maxfeat.yes{background:var(--green);color:#fff}
.maxfeat.no{background:var(--red);color:#fff}

/* Estado das casas */
.hhead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.hgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin:14px 0 22px}
.hcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow)}
.hname{font-weight:600;display:flex;align-items:center;gap:8px}
.hdot{width:10px;height:10px;border-radius:50%;background:var(--muted);flex:none}
.hcard.ok .hdot{background:var(--green)}.hcard.down .hdot{background:var(--red)}
.hcard.down{border-color:var(--red);background:var(--red-bg)}
.hstate{margin-top:4px;font-size:14px}.hcard.down .hstate{color:var(--red);font-weight:600}
.herr{font-size:12px;color:var(--red);margin-top:4px}
#health-view h2{font-size:17px;margin:18px 0 8px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#health-day-table td.warn{color:var(--amber-text);font-weight:600}#health-day-table td.bad,#health-day-table span.bad{color:var(--red);font-weight:600}
.tablewrap{overflow-x:auto}
.hfilters{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin-bottom:10px}
.hevents{list-style:none;padding:0;margin:0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.hev{padding:10px 14px;border-bottom:1px solid var(--line)}.hev:last-child{border-bottom:0}
.hevtop{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.hgame{margin-top:3px;font-weight:500}.hreason{font-size:14px;color:var(--text);margin-top:2px}
@media (max-width:640px){.hgrid{grid-template-columns:repeat(2,1fr)}.hcard{padding:10px}}
.hcard.warnc .hdot{background:var(--amber)}.hcard.warnc .hstate{color:var(--amber-text);font-weight:600}
.tag.warn{background:var(--amber-bg);color:var(--amber-text)}

/* ---------- Menu lateral ---------- */
:root{--sidew:236px}
.side{position:fixed;top:0;left:0;bottom:0;width:var(--sidew);z-index:30;display:flex;flex-direction:column;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-right:1px solid var(--line);padding-top:env(safe-area-inset-top)}
body.withside{padding-left:var(--sidew)}
.sidehead{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 10px}
.side nav{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:6px 10px;margin:0;width:auto;grid-row:auto;-webkit-mask-image:none;mask-image:none;scroll-snap-type:none}
.side .tab{display:flex;align-items:center;gap:10px;width:100%;flex:none;text-align:left;padding:9px 12px;border-radius:10px;font-size:15px;font-weight:600;color:var(--muted);white-space:nowrap}
.side .tab:hover{background:var(--fill);color:var(--text)}
.side .tab.active{background:var(--accent-bg);color:var(--brand)}
.side .tab .count{margin-left:auto}
.ico{width:19px;height:19px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.navgroup{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);padding:16px 12px 6px}
.sidefoot{border-top:1px solid var(--line);padding:12px 14px calc(14px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}
.side .quota{display:block;margin:0;font-size:13px}
.siderow{display:flex;align-items:center;gap:8px}
.siderow #me-name{display:inline;margin-left:auto;font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;max-width:110px}
.side .usermenu{display:flex;justify-content:space-between;width:auto;gap:4px;font-size:14px}
.side .linkbtn{padding:4px 0}
.burger{display:none;width:38px;height:38px;border:0;border-radius:10px;background:none;color:var(--text);place-items:center;padding:0}
.burger svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.mobilebar,.scrim{display:none}
@media(max-width:900px){
 body.withside{padding-left:0}
 .side{width:min(84vw,300px);transform:translateX(-102%);transition:transform .22s ease;box-shadow:none;background:var(--card)}
 body.menu-open .side{transform:none;box-shadow:0 0 40px rgba(0,0,0,.25)}
 .scrim{display:block;position:fixed;inset:0;z-index:25;background:rgba(0,0,0,.35);opacity:0;pointer-events:none;transition:opacity .22s}
 body.menu-open .scrim{opacity:1;pointer-events:auto}
 body.menu-open{overflow:hidden}
 .burger{display:grid}
 .mobilebar{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:20;padding:6px 10px;padding-top:max(6px,env(safe-area-inset-top));background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line)}
 .mbtitle{font-weight:700;font-size:17px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .mbbrand .logo{width:28px;height:28px}
 .side .tab{padding:12px 12px;font-size:16px}
}
@media (prefers-reduced-motion:reduce){.side,.scrim{transition:none}}

/* "hidden" vence sempre (ex.: separadores de administração no menu lateral) */
[hidden]{display:none!important}
.hprobe{display:flex;flex-direction:column;align-items:flex-end;gap:4px;max-width:420px}.hprobe .small{text-align:right}
@media(max-width:640px){.hprobe{align-items:stretch;max-width:none;width:100%}.hprobe .small{text-align:left}}

/* Aviso de aposta já registada nas oportunidades */
.betnote{margin:6px 0 2px;font-size:13px;font-weight:600;padding:5px 8px;border-radius:6px;background:var(--amber-bg);color:var(--amber-text);text-align:left;line-height:1.3}
.betnote.same{background:var(--green-bg);color:var(--green)}

/* Topo das Oportunidades: plano das casas */
.houseplan{display:flex;flex-wrap:wrap;gap:8px 28px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;margin:12px 0;box-shadow:var(--shadow)}
.houseplan h3{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 4px}
.houseplan ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 14px;font-size:14px}
.houseplan .hpnote{color:var(--muted)}
.role.off{background:var(--fill);color:var(--muted)}
#houses-table input:not([type=number]){width:100%}
.betres small.recv{color:var(--green);font-weight:600;white-space:nowrap}
/* Casas no telemóvel: cada casa vira um cartão (nome em cima; papel + prioridade + moeda lado a lado; notas por baixo). */
@media (max-width:700px){
 #houses-table thead{display:none}
 #houses-table,#houses-table tbody{display:block;width:100%}
 #houses-table tr{display:grid;grid-template-columns:1fr 5.5em 5.5em;gap:6px 10px;padding:10px 0;border-bottom:1px solid var(--line)}
 #houses-table td{display:block;padding:0;border:0}
 #houses-table td:nth-child(1),#houses-table td:nth-child(5){grid-column:1/-1}
 #houses-table select,#houses-table input{width:100%!important;box-sizing:border-box}
 #houses-table td:nth-child(2)::before{content:'Papel';display:block;font-size:11px;color:var(--muted)}
 #houses-table td:nth-child(3)::before{content:'Prioridade';display:block;font-size:11px;color:var(--muted)}
 #houses-table td:nth-child(4)::before{content:'Moeda';display:block;font-size:11px;color:var(--muted)}
 #houses-table td:nth-child(5)::before{content:'Notas';display:block;font-size:11px;color:var(--muted)}
}

/* Tipo (depósito/levantamento): mesmo aspeto e altura que os outros campos */
.depform select:not(.cursel){font:inherit;font-size:15px;border-radius:10px;height:36.85px;padding:0 10px;appearance:auto}
.pagehead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.btn.mini{padding:3px 8px;font-size:12px;margin-top:4px}
small.usd{display:block;font-size:11px;font-weight:500;color:var(--muted);opacity:.85;white-space:nowrap}
.betres small.usd{font-size:11px}
.adjcell .btn.mini{display:block;margin-top:4px;white-space:nowrap}

.ignbtn{margin-left:auto;background:none;border:1px solid transparent;border-radius:6px;cursor:pointer;font-size:13px;padding:0 4px;opacity:.55}
.ignbtn:hover{opacity:1;border-color:var(--line,#ccc)}
.ignbox{margin:8px 0;font-size:14px}.ignbox summary{cursor:pointer;color:var(--muted,#666)}
/* Valores grandes (US$ com milhares) não saem do cartão: a letra ajusta-se à largura do cartão. */
.stat{min-width:0;container-type:inline-size}
.stat strong{font-size:clamp(15px,11.5cqw,24px);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat strong b{font-size:inherit}
@media (max-width:760px){.stat strong{font-size:clamp(14px,11.5cqw,19px)}}
.stats{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}@media(max-width:760px){.stats{grid-template-columns:1fr 1fr}}
/* Aviso de moeda na tabela das casas: linha própria, sem partir o texto. */
.tag.curwarn{display:table;margin-top:4px;white-space:nowrap;font-size:11px;line-height:1.5;padding:1px 6px}
#bets-houses td:first-child{min-width:150px}
.sameodd{font-size:12px;color:var(--muted,#888);margin-top:2px}
.vpsrow{display:flex;flex-direction:column;gap:4px;margin:10px 0}.vpsval{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.vpsval code{font-size:16px;padding:4px 8px;border-radius:6px;background:var(--line,#eee);user-select:all}
.sameodd a.house{font-size:12px;font-weight:600}.sameodd .maxfeat{font-size:10px}
/* Botão para trocar para a casa com a mesma odd (calculadora): bem visível. */
.btn.usebtn{display:inline-flex;align-items:center;gap:4px;margin:4px 0 0;padding:5px 10px;font-size:13px;font-weight:700;background:var(--brand);color:#fff;border:0;border-radius:8px;cursor:pointer}
.btn.usebtn:hover{filter:brightness(1.1)}
.sameodd .btn.usebtn{font-size:13px}

/* Faixa de servidor secundário (19/10): só aparece quando o servidor se identifica como tal. */
.faixa-teste{position:fixed;top:0;left:0;right:0;z-index:999;background:#b45309;color:#fff;font-weight:700;font-size:13px;letter-spacing:.04em;text-align:center;padding:6px 12px}
body.com-faixa{padding-top:28px}
