/* Shared look for every Nuclei page: colours, type and the common components. */
:root{
  --bg:#0a0d0b;--bg-panel:#111512;--bg-panel-alt:#171c18;
  --border:#262e28;--border-soft:#1c221e;
  --green:#4dff9f;--green-soft:#3ddc8a;--green-dim:#1f7a4d;--green-glow:rgba(77,255,159,.1);
  --amber:#ffb84d;--amber-glow:rgba(255,184,77,.1);
  --danger:#ff7b7b;--danger-glow:rgba(255,123,123,.1);
  --text:#eef2ef;--text-dim:#a3afa8;--text-faint:#7a8880;
  --font-display:'Geist',ui-sans-serif,system-ui,sans-serif;
  --font-body:'Geist',ui-sans-serif,system-ui,sans-serif;
  --font-mono:'Geist Mono',ui-monospace,monospace;
  --radius:12px;--radius-sm:8px;
}
*,*::before,*::after{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
button,input,select,textarea{font:inherit;color:inherit;}
:focus-visible{outline:2px solid var(--green);outline-offset:2px;}
[hidden]{display:none !important;}
h1{font-size:26px;font-weight:600;letter-spacing:-.02em;margin:0;line-height:1.2;}
h2{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:0;}
h3{font-size:14px;font-weight:600;margin:0;}
.muted{color:var(--text-dim);}
.faint{color:var(--text-faint);}
.mono{font-family:var(--font-mono);font-size:12px;}
.num{font-variant-numeric:tabular-nums;}

.card{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;}
.card + .card{margin-top:16px;}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap;}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);
  background:transparent;color:var(--text);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s ease,border-color .15s ease;}
.btn:hover:not(:disabled){background:var(--bg-panel-alt);border-color:var(--text-faint);}
.btn:disabled{opacity:.5;cursor:not-allowed;}
.btn.primary{background:var(--green);border-color:var(--green);color:#04140b;font-weight:600;}
.btn.primary:hover:not(:disabled){background:var(--green-soft);border-color:var(--green-soft);}
.btn.danger{color:var(--danger);border-color:rgba(255,123,123,.35);}
.btn.danger:hover:not(:disabled){background:var(--danger-glow);border-color:var(--danger);}
.btn.danger-solid{background:var(--danger);border-color:var(--danger);color:#1c0505;font-weight:600;}
.btn.sm{padding:5px 10px;font-size:12px;}
.btn.link{border-color:transparent;color:var(--text-dim);padding-left:6px;padding-right:6px;}
.btn.link:hover:not(:disabled){color:var(--text);background:transparent;border-color:transparent;}

.field{display:flex;flex-direction:column;gap:6px;}
.field > label,.label{font-size:13px;color:var(--text-dim);font-weight:500;}
.input,select.input,textarea.input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;font-size:14px;transition:border-color .15s ease;}
textarea.input{resize:vertical;line-height:1.6;min-height:96px;}
.input::placeholder{color:var(--text-faint);}
.input:focus{border-color:var(--green-dim);outline:none;}

.pill{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:500;padding:2px 8px;border-radius:100px;border:1px solid var(--border);color:var(--text-dim);white-space:nowrap;}
.pill.green{border-color:var(--green-dim);color:var(--green);}
.pill.amber{border-color:rgba(255,184,77,.35);color:var(--amber);}
.pill.red{border-color:rgba(255,123,123,.35);color:var(--danger);}

.table-wrap{overflow-x:auto;}
table.data{width:100%;border-collapse:collapse;}
table.data th{text-align:left;font-size:12px;font-weight:500;color:var(--text-dim);padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap;}
table.data td{padding:10px;font-size:13px;border-bottom:1px solid var(--border-soft);vertical-align:middle;}
table.data tr:last-child td{border-bottom:none;}
table.data th.right,table.data td.right{text-align:right;}

.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px;}
.tile{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;display:flex;flex-direction:column;gap:4px;min-width:0;}
.tile .label{font-size:12.5px;}
.tile .value{font-size:26px;font-weight:600;letter-spacing:-.02em;line-height:1.2;font-variant-numeric:tabular-nums;}
.tile .note{font-size:12px;color:var(--text-faint);}

.empty{text-align:center;padding:36px 16px;color:var(--text-dim);}
.empty small{display:block;color:var(--text-faint);font-size:12.5px;margin-top:2px;}

.segmented{display:inline-flex;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:3px;gap:2px;flex-wrap:wrap;}
.segmented button{background:transparent;border:none;border-radius:6px;padding:6px 12px;font-size:13px;font-weight:500;color:var(--text-dim);cursor:pointer;}
.segmented button:hover{color:var(--text);}
.segmented button.active{background:var(--bg-panel-alt);color:var(--text);box-shadow:inset 0 0 0 1px var(--border);}

.switch{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-dim);cursor:pointer;user-select:none;}
.switch input{appearance:none;width:30px;height:18px;border-radius:100px;background:var(--border);position:relative;cursor:pointer;margin:0;transition:background .15s ease;}
.switch input::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--text);transition:transform .15s ease;}
.switch input:checked{background:var(--green-dim);}
.switch input:checked::after{transform:translateX(12px);}

/* App shell, shared by the dashboard and admin pages */
.app{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh;}
.sidebar{border-right:1px solid var(--border-soft);padding:18px 12px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow-y:auto;}
.brand{display:flex;align-items:center;gap:9px;font-weight:600;font-size:16px;letter-spacing:-.01em;padding:0 8px;}
.brand img{width:24px;height:24px;border-radius:6px;object-fit:cover;}
.side-nav{display:flex;flex-direction:column;gap:2px;}
.side-tab{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);background:transparent;border:none;color:var(--text-dim);font-size:14px;font-weight:500;cursor:pointer;text-align:left;width:100%;}
.side-tab:hover{background:var(--bg-panel);color:var(--text);}
.side-tab.active{background:var(--bg-panel-alt);color:var(--text);}
.side-tab svg{width:16px;height:16px;flex-shrink:0;}
.side-tab.active svg{color:var(--green);}
.side-tab .badge{margin-left:auto;font-size:11px;background:var(--danger);color:#1c0505;padding:0 6px;border-radius:100px;font-weight:600;}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:10px;}
.content{padding:32px 40px 64px;width:100%;min-width:0;}
.page-head{margin-bottom:22px;display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;}
.page-head p{margin:4px 0 0;color:var(--text-dim);font-size:13.5px;}
@media (max-width:820px){
  .app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;}
  .sidebar{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;padding:10px 12px;gap:10px;border-right:none;border-bottom:1px solid var(--border-soft);background:var(--bg);z-index:30;overflow-x:auto;}
  .brand span{display:none;}
  .brand{padding:0;}
  .side-nav{flex-direction:row;}
  .side-tab{width:auto;padding:8px;}
  .side-tab span:not(.badge){display:none;}
  .side-foot{margin:0 0 0 auto;flex-direction:row;align-items:center;gap:6px;}
  .side-foot .user-name{display:none;}
  .side-foot .btn{padding:5px 8px;font-size:12px;}
  .content{padding:22px 16px 56px;}
  h1{font-size:22px;}
}

/* Toasts */
.toast-host{position:fixed;top:16px;right:16px;left:16px;z-index:400;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none;}
.toast{background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;font-size:13px;max-width:360px;box-shadow:0 12px 32px -12px rgba(0,0,0,.8);pointer-events:auto;}
.toast.error{border-color:rgba(255,123,123,.5);}
.toast.success{border-color:var(--green-dim);}
.toast a{text-decoration:underline;margin-left:6px;color:var(--green);}

/* Dialogs */
dialog.dialog{background:var(--bg-panel);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:0;width:calc(100% - 32px);max-width:440px;}
dialog.dialog::backdrop{background:rgba(0,0,0,.6);}
dialog.dialog .dialog-body{padding:20px 20px 4px;font-size:14px;color:var(--text-dim);}
dialog.dialog h2{color:var(--text);margin-bottom:10px;}
dialog.dialog p{margin:0 0 12px;}
dialog.dialog strong{color:var(--text);font-weight:500;}
dialog.dialog .input{margin-bottom:12px;}
dialog.dialog .dialog-actions{padding:8px 20px 20px;display:flex;justify-content:flex-end;gap:8px;}

/* Bar charts */
.chart{width:100%;display:block;}
.chart.still .bar{animation:none;}
.chart .bar{fill:var(--green-dim);pointer-events:none;}
.chart text{pointer-events:none;}
.chart .bar.current,.chart .column:hover + .bar,.chart .column:focus + .bar{fill:var(--green-soft);}
.chart .column{fill:transparent;cursor:default;outline:none;}
.chart .column:hover,.chart .column:focus{fill:rgba(238,242,239,.04);}
.chart .axis{stroke:var(--border);stroke-width:1;}
.chart .grid{stroke:var(--border-soft);stroke-width:1;}
.chart text{fill:var(--text-faint);font-family:var(--font-body);font-size:12px;font-variant-numeric:tabular-nums;}
.chart-tip{position:fixed;pointer-events:none;z-index:100;background:var(--bg-panel-alt);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;font-size:12px;box-shadow:0 12px 32px -12px rgba(0,0,0,.8);}
.chart-table{margin-top:12px;font-size:12.5px;color:var(--text-dim);}
.chart-table summary{cursor:pointer;}
.chart-table .table-wrap{max-height:240px;overflow-y:auto;margin-top:8px;}

/* Motion */
@keyframes page-in{from{opacity:0;}to{opacity:1;}}
@keyframes rise{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
@keyframes pop{from{opacity:0;transform:scale(.96) translateY(8px);}to{opacity:1;transform:none;}}
@keyframes slide-in{from{transform:translateX(32px);opacity:0;}to{transform:none;opacity:1;}}
@keyframes toast-in{from{opacity:0;transform:translateX(16px) scale(.97);}to{opacity:1;transform:none;}}
@keyframes bar-grow{from{transform:scaleY(0);}to{transform:scaleY(1);}}
@keyframes bump{50%{transform:scale(1.1);}}
@keyframes pulse-dots{0%,100%{opacity:.35;}50%{opacity:1;}}
body{animation:page-in .35s ease both;}
.tab-panel > .page-head,.tab-panel > * > .page-head{animation:rise .35s cubic-bezier(.2,.7,.3,1) both;}
.tab-panel .card,.tab-panel .tile{animation:rise .42s cubic-bezier(.2,.7,.3,1) both;}
.tab-panel .tile:nth-child(2){animation-delay:.05s;}
.tab-panel .tile:nth-child(3){animation-delay:.1s;}
.tab-panel .tile:nth-child(4){animation-delay:.15s;}
.tab-panel > .card{animation-delay:.12s;}
.tab-panel > .card ~ .card{animation-delay:.18s;}
.tile,.card{transition:border-color .2s ease,transform .2s cubic-bezier(.2,.7,.3,1);}
.tile:hover{border-color:var(--text-faint);transform:translateY(-2px);}
.btn{transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s cubic-bezier(.2,.7,.3,1);}
.btn:hover:not(:disabled){transform:translateY(-1px);}
.btn:active:not(:disabled){transform:scale(.97);}
.side-tab{transition:background .18s ease,color .18s ease;}
.side-tab svg{transition:transform .2s cubic-bezier(.3,1.4,.5,1);}
.side-tab:hover svg{transform:scale(1.12);}
.segmented button{transition:background .18s ease,color .18s ease,box-shadow .18s ease;}
.input{transition:border-color .15s ease,box-shadow .2s ease;}
.input:focus{box-shadow:0 0 0 3px var(--green-glow);}
.toast{animation:toast-in .25s cubic-bezier(.2,.7,.3,1) both;transition:opacity .22s ease,transform .22s ease;}
.toast.leaving{opacity:0;transform:translateX(16px);}
dialog.dialog[open]{animation:pop .22s cubic-bezier(.2,.7,.3,1) both;}
dialog.dialog[open]::backdrop,dialog.drawer[open]::backdrop{animation:page-in .2s ease both;}
.chart .bar{transform-box:fill-box;transform-origin:bottom;animation:bar-grow .5s cubic-bezier(.2,.7,.3,1) both;transition:fill .15s ease;}
.chart .column{transition:fill .15s ease;}
.bump{animation:bump .35s ease;}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after,dialog::backdrop{animation-duration:.001s !important;animation-delay:0s !important;transition-duration:.001s !important;}
}

.terms-dialog .terms-summary{padding:10px 12px;color:var(--text);white-space:pre-line;background:var(--bg);border:1px solid var(--border-soft);border-radius:var(--radius-sm);}
.terms-dialog .terms-link{color:var(--green);text-decoration:underline;text-underline-offset:3px;}
.terms-dialog .terms-error{color:var(--danger);}
