:root{--background:#f6f7f9;--surface:#ffffff;--surface-soft:#eef2f6;--ink:#111827;--muted:#64748b;--line:#d7dde5;--accent:#315f7d;--accent-strong:#214861;--success:#1f7a4d;--danger:#b42318;--shadow:0 14px 40px rgba(15,23,42,0.08);--radius:8px}*{box-sizing:border-box}body,html{min-height:100%}body{background:var(--background);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,Arial,sans-serif;letter-spacing:0;margin:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.72}button.disabled-action:disabled{cursor:not-allowed}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(49,95,125,.24);outline-offset:2px}.entry-page,.loading-page,.login-page{align-items:center;display:grid;min-height:100vh;padding:20px}.entry-panel,.loading-panel,.login-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin:0 auto;max-width:460px;width:100%}.entry-panel,.loading-panel{padding:28px}.entry-panel h1,.login-copy h1,.page-heading h1{font-size:clamp(1.72rem,6vw,2.35rem);line-height:1.12;margin:0}.entry-panel p,.login-copy p,.metric-card p,.notice-panel p,.page-heading p{color:var(--muted);line-height:1.58}.eyebrow{color:var(--accent);font-size:.78rem;font-weight:760;margin:0 0 10px;text-transform:uppercase}.danger-button,.ghost-button,.menu-toggle,.primary-button,.primary-link,.success-button{align-items:center;border-radius:var(--radius);display:inline-flex;font-weight:700;justify-content:center;min-height:44px;padding:0 16px}.primary-button,.primary-link{background:var(--accent);border:1px solid var(--accent);color:#ffffff}.primary-link{margin-top:8px}.primary-button{width:100%}.ghost-button,.menu-toggle{background:var(--surface);border:1px solid var(--line);color:var(--ink)}.danger-button{background:#fff5f4;border:1px solid #f2aaa3;color:var(--danger)}.success-button{background:#edf8f2;border:1px solid #aad7bf;color:var(--success)}.login-panel{display:grid;grid-gap:24px;gap:24px;padding:24px}.login-form{display:grid;grid-gap:16px;gap:16px}.login-form label{display:grid;grid-gap:8px;gap:8px}.login-form label span{color:#344054;font-size:.92rem;font-weight:680}.login-form input{background:#ffffff;border:1px solid #cfd6df;border-radius:var(--radius);color:var(--ink);min-height:46px;padding:0 12px;width:100%}.form-error,.top-error{color:var(--danger);font-size:.92rem;margin:0}.admin-app{min-height:100vh}.sidebar{display:none}.app-main{min-height:100vh;padding-bottom:76px}.topbar{align-items:center;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);display:grid;grid-gap:12px;gap:12px;grid-template-columns:auto minmax(0,1fr) auto;min-height:64px;padding:10px 14px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.topbar-user{display:grid;min-width:0}.topbar-user span,.topbar-user strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-user strong{font-size:.96rem}.topbar-user span{color:var(--muted);font-size:.8rem}.mobile-drawer{background:var(--surface);border-bottom:1px solid var(--line);display:grid;grid-gap:4px;gap:4px;padding:10px 14px 14px}.mobile-drawer a,.sidebar-nav a{border-radius:var(--radius);color:#344054;font-weight:650;min-height:42px;padding:11px 12px}.mobile-drawer a.is-active,.sidebar-nav a.is-active{background:var(--accent);color:#ffffff}.content{padding:18px 14px 24px}.page-stack{display:grid;grid-gap:18px;gap:18px}.page-heading{display:grid;grid-gap:8px;gap:8px}.page-heading p{margin:0}.metric-grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card,.notice-panel,.state-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(15,23,42,.04);padding:16px}.metric-card{display:grid;grid-gap:6px;gap:6px;min-height:128px}.metric-card span{color:var(--muted);font-size:.86rem}.metric-card strong{color:var(--accent-strong);font-size:1.5rem}.metric-card p,.notice-panel p{margin:0}.wallet-summary-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(15,23,42,.04);display:grid;grid-gap:16px;gap:16px;padding:18px}.wallet-summary-card>div{display:grid;grid-gap:6px;gap:6px}.wallet-device-balance span,.wallet-summary-card dt,.wallet-summary-card>div span{color:var(--muted);font-size:.82rem;font-weight:700}.wallet-summary-card>div strong{color:var(--accent-strong);font-size:clamp(2rem,10vw,3.25rem);line-height:1}.wallet-summary-card dl{display:grid;grid-gap:10px;gap:10px;margin:0}.wallet-summary-card dl div{border-top:1px solid var(--line);display:grid;grid-gap:4px;gap:4px;min-width:0;padding-top:10px}.wallet-summary-card dd{font-weight:720;margin:0;overflow-wrap:anywhere}.wallet-device-card{gap:12px}.wallet-device-balance{background:var(--surface-soft);border-radius:var(--radius);padding:12px}.wallet-device-balance strong{color:var(--accent-strong);font-size:1.45rem}.notice-panel{display:grid;grid-gap:10px;gap:10px}.notice-panel h2{font-size:1.05rem;margin:0}.policy-list{padding-left:20px}.numbered-list,.policy-list{color:var(--muted);display:grid;grid-gap:6px;gap:6px;line-height:1.55;margin:0}.numbered-list{padding-left:22px}.numbered-list li{padding-left:2px}.list-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.device-search-input{background:#fff;border:1px solid var(--line);border-radius:var(--radius);color:var(--text);font:inherit;min-height:36px;min-width:220px;max-width:360px;padding:8px 10px;flex:1}.device-search-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.18);outline:0}.device-search-input::placeholder{color:#98a2b3}.toolbar-button{min-height:36px;width:auto}.list-toolbar span{color:#344054;font-size:.9rem;min-height:34px;padding:7px 10px}.device-filter-panel,.list-toolbar span{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.device-filter-panel{box-shadow:0 8px 24px rgba(15,23,42,.04);display:grid;grid-gap:12px;gap:12px;padding:14px}.device-filter-panel label{display:grid;grid-gap:7px;gap:7px}.device-filter-panel label span{color:#344054;font-size:.84rem;font-weight:720}.device-filter-panel input,.device-filter-panel select{background:#ffffff;border:1px solid #cfd6df;border-radius:var(--radius);color:var(--ink);min-height:42px;padding:0 11px;width:100%}.table-wrap{display:none}.data-table{border-collapse:collapse;min-width:820px;width:100%}.data-table td,.data-table th{border-bottom:1px solid var(--line);font-size:.9rem;padding:12px;text-align:left;vertical-align:top}.data-table th{background:var(--surface-soft);color:#344054;font-weight:760}.data-table td{color:#1f2937}.mobile-list{display:grid;grid-gap:12px;gap:12px}.mobile-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);display:grid;grid-gap:10px;gap:10px;padding:14px}.mobile-row div{display:grid;grid-gap:4px;gap:4px;min-width:0}.mobile-row span{color:var(--muted);font-size:.78rem}.mobile-row strong{color:var(--ink);font-size:.94rem;font-weight:680;overflow-wrap:anywhere}.inline-actions{display:flex;flex-wrap:wrap;gap:8px}.inline-note{color:var(--muted);display:inline-flex;font-size:.84rem;line-height:1.45}.device-actions{display:grid;grid-gap:10px;gap:10px;min-width:260px}.device-action-group{border:1px solid var(--line);border-radius:var(--radius);display:grid;grid-gap:8px;gap:8px;padding:8px}.device-action-group>span{color:var(--muted);font-size:.76rem;font-weight:760}.device-action-buttons{display:flex;flex-wrap:wrap;gap:8px}.device-action-note{color:var(--muted);font-size:.78rem;line-height:1.45;margin:0}.mobile-row .device-actions{border-top:1px solid var(--line);display:grid;grid-gap:10px;gap:10px;margin-top:4px;padding-top:12px}.mobile-row .device-action-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.mobile-row .device-action-buttons .small-button{width:100%}.small-button{font-size:.84rem;min-height:34px;padding:0 10px;width:auto}.ai-filter-actions,.ai-filter-panel{align-items:flex-end}.ai-filter-actions{display:flex;min-height:42px}.ai-data-table{min-width:1180px}.ai-session-table{min-width:1260px}.ai-billing-table{min-width:1180px}.ai-data-table th{line-height:1.25;white-space:nowrap}.ai-data-table td{line-height:1.45}.ai-col-device{min-width:210px;white-space:nowrap}.ai-col-number{min-width:104px;text-align:right;white-space:nowrap}.ai-col-time{min-width:132px;white-space:nowrap}.ai-col-note{max-width:260px;min-width:240px}.ai-col-reason{max-width:180px;min-width:160px}.ai-col-scroll{min-width:112px;text-align:right;white-space:nowrap}.ai-col-action{min-width:110px;text-align:center;white-space:nowrap}.ai-number{color:var(--accent-strong);font-weight:780;white-space:nowrap}.ai-date-stack{display:inline-grid;gap:2px;min-width:max-content}.ai-date-stack span{white-space:nowrap}.ai-note-preview{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;max-width:260px;overflow:hidden;overflow-wrap:anywhere}.ai-status-badge{background:var(--surface-soft);border:1px solid var(--line);border-radius:999px;color:#344054;display:inline-flex;font-size:.78rem;font-weight:760;line-height:1;padding:7px 9px;white-space:nowrap}.ai-status-billed,.ai-status-ended,.ai-status-no_charge{background:#edf8f2;border-color:#aad7bf;color:var(--success)}.ai-status-active,.ai-status-paused,.ai-status-pending{background:#eef6fb;border-color:#b5d1e2;color:var(--accent-strong)}.ai-status-error,.ai-status-expired,.ai-status-failed,.ai-status-insufficient_balance{background:#fff5f4;border-color:#f2aaa3;color:var(--danger)}.ai-mobile-row .small-button{justify-self:start}.ai-mobile-highlight{background:var(--surface-soft);border-radius:var(--radius);padding:12px}.ai-mobile-highlight strong{color:var(--accent-strong);font-size:1.2rem}.ai-mobile-row .ai-note-preview{display:block;max-width:100%}.ai-detail-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(15,23,42,.04);display:grid;grid-gap:14px;gap:14px;padding:16px}.ai-detail-grid{display:grid;grid-gap:10px;gap:10px}.ai-detail-grid div,.ai-detail-list article{background:var(--surface-soft);border-radius:var(--radius);display:grid;grid-gap:5px;gap:5px;min-width:0;padding:10px}.ai-detail-grid span,.ai-detail-list span{color:var(--muted);font-size:.78rem;font-weight:740}.ai-detail-grid strong,.ai-detail-list strong{overflow-wrap:anywhere}.ai-detail-list{display:grid;grid-gap:10px;gap:10px}.ai-detail-list h2{font-size:1rem;margin:4px 0 0}.ai-detail-list p{color:var(--muted);line-height:1.5;margin:0;overflow-wrap:anywhere}.success-panel{border-color:#aad7bf;color:var(--success)}.danger-panel{border-color:#f2aaa3;color:var(--danger)}.modal-backdrop{align-items:center;background:rgba(15,23,42,.42);display:grid;inset:0;padding:18px;position:fixed;z-index:40}.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);display:grid;grid-gap:18px;gap:18px;margin:0 auto;max-height:min(720px,92vh);max-width:560px;overflow:auto;padding:18px;width:100%}.modal-heading{display:grid;grid-gap:6px;gap:6px}.modal-heading h2,.modal-heading p{margin:0}.help-text,.modal-heading p{color:var(--muted);line-height:1.55}.modal-error{background:#fff5f4;border:1px solid #f2aaa3;border-radius:var(--radius);color:var(--danger);font-size:.92rem;line-height:1.5;padding:12px}.form-grid{display:grid;grid-gap:14px;gap:14px}.form-grid label{display:grid;grid-gap:7px;gap:7px}.form-grid label span{color:#344054;font-size:.9rem;font-weight:700}.form-grid input,.form-grid select{background:#ffffff;border:1px solid #cfd6df;border-radius:var(--radius);color:var(--ink);min-height:44px;padding:0 12px;width:100%}.form-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(15,23,42,.04);display:grid;grid-gap:14px;gap:14px;padding:16px}.form-card h2,.form-card p{margin:0}.form-card p{color:var(--muted);line-height:1.55}.form-card label{display:grid;grid-gap:7px;gap:7px}.form-card input,.form-card select{background:#ffffff;border:1px solid #cfd6df;border-radius:var(--radius);color:var(--ink);min-height:44px;padding:0 12px;width:100%}.help-text{font-size:.9rem;margin:0}.field-hint{color:var(--muted);font-size:.8rem;line-height:1.45}.modal-actions{display:grid;grid-gap:10px;gap:10px;grid-template-columns:1fr}.bottom-nav{background:rgba(255,255,255,.96);border-top:1px solid var(--line);bottom:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));left:0;min-height:62px;position:fixed;right:0;z-index:20}.bottom-nav a{align-items:center;color:var(--muted);display:flex;font-size:.76rem;font-weight:700;justify-content:center;min-width:0;padding:8px 3px;text-align:center}.bottom-nav a.is-active{color:var(--accent-strong)}@media (min-width:560px){.modal-actions{grid-template-columns:1fr 1fr}}@media (min-width:760px){.device-filter-panel{grid-template-columns:repeat(4,minmax(0,1fr))}.device-filter-panel .wide-filter{grid-column:span 2}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.wallet-summary-card{align-items:center;grid-template-columns:minmax(220px,.85fr) minmax(0,1.15fr)}.wallet-summary-card dl{grid-template-columns:repeat(2,minmax(0,1fr))}.ai-detail-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);display:block;overflow-x:auto}.mobile-list{display:none}}@media (min-width:1024px){.admin-app{display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{background:#101923;color:#ffffff;display:grid;grid-template-rows:auto minmax(0,1fr);min-height:100vh;padding:20px 14px;position:-webkit-sticky;position:sticky;top:0}.sidebar-brand{display:grid;font-size:1.05rem;font-weight:780;grid-gap:4px;gap:4px;margin-bottom:18px;padding:10px 12px}.sidebar-brand span{color:#9fb0c3;font-size:.82rem;font-weight:600}.sidebar-nav{display:grid;grid-gap:4px;gap:4px;align-content:start}.sidebar-nav a{color:#cbd5e1}.sidebar-nav a.is-active{background:#ffffff;color:#101923}.bottom-nav,.menu-toggle,.mobile-drawer{display:none}.app-main{padding-bottom:0}.topbar{grid-template-columns:minmax(0,1fr) auto;padding:12px 28px}.topbar-user{justify-self:end;text-align:right}.content{margin:0!important;max-width:none!important;padding:28px 36px!important;width:100%!important}.page-stack{gap:22px}}

/* Unified admin layout width for all backend pages. */
@media (min-width:1024px){
  .content{margin:0!important;max-width:none!important;padding:28px 36px!important;width:100%!important}
  .content>.page-stack{margin:0!important;max-width:none!important;width:100%!important}
  .notice-panel,.state-panel,.form-card,.wallet-summary-card,.ai-detail-panel,.table-wrap{width:100%}
}


/* Desktop fixed-sidebar scroll layout: main content and sidebar scroll independently. */
@media (min-width:1024px){
  html,body{height:100%;overflow:hidden}
  .admin-app{height:100vh;min-height:100vh;overflow:hidden}
  .sidebar{height:100vh;max-height:100vh;min-height:100vh;overflow-y:auto;overscroll-behavior:contain;position:sticky;top:0}
  .sidebar-nav{padding-bottom:24px}
  .app-main{height:100vh;min-height:100vh;overflow-y:auto;overscroll-behavior:contain;padding-bottom:0}
  .topbar{position:sticky;top:0;z-index:10}
}

/* Sticky table headers: keep column labels visible while scrolling table content. */
@media (min-width:760px){
  .table-wrap{overflow-x:auto;overflow-y:visible}
  .data-table thead th{position:sticky;top:0;z-index:6;background:var(--surface-soft);box-shadow:0 1px 0 var(--line),0 6px 12px rgba(15,23,42,.06)}
}

/* Devices page final table layout: wrap long fields inside cells and keep actions visible. */
@media (min-width:1024px){
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .app-main{overflow-y:auto;overflow-x:hidden}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .content{padding-bottom:28px!important}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .table-wrap{
    max-height:calc(100vh - 360px);
    min-height:420px;
    max-width:100%;
    overflow:auto!important;
    position:relative;
    width:100%;
  }
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table{
    border-collapse:separate;
    border-spacing:0;
    min-width:1850px;
    table-layout:fixed;
    width:1850px;
  }
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th,
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td{
    font-size:.84rem;
    line-height:1.42;
    overflow:hidden;
    padding:9px 10px;
    vertical-align:top;
  }
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table thead th{
    position:sticky;
    top:0!important;
    z-index:20;
  }
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table tbody td{background:var(--surface)}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(1),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(1){width:72px;white-space:nowrap}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(2),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(2){width:115px;white-space:nowrap}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(3),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(3){width:88px;white-space:nowrap}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(4),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(4){width:80px;text-align:right;white-space:nowrap}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(5),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(5){width:132px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(6),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(6){width:132px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(7),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(7){width:150px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(8),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(8){width:110px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(9),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(9){width:210px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(10),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(10){width:90px;white-space:nowrap}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(11),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(11){width:150px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(12),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(12){width:220px;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(13),
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table td:nth-child(13){
    background:var(--surface);
    box-shadow:-1px 0 0 var(--line),-8px 0 16px rgba(15,23,42,.06);
    position:sticky;
    right:0;
    width:296px;
    min-width:296px;
    max-width:296px;
    z-index:18;
  }
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .data-table th:nth-child(13){background:var(--surface-soft);z-index:25}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .device-actions{display:grid;gap:6px;min-width:0;width:272px}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .device-action-group{align-items:center;border:0;border-radius:0;display:grid;gap:6px;grid-template-columns:42px minmax(0,1fr);padding:0}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .device-action-group>span{color:var(--muted);font-size:.72rem;line-height:1.1}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .device-action-buttons{display:flex;flex-wrap:wrap;gap:5px}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .device-action-buttons .small-button{min-height:28px;padding:0 8px;white-space:nowrap;width:auto}
  .admin-app:has(.sidebar-nav a[href="/devices"].is-active) .device-action-note{display:none}
}


/* Table date values use a two-line YYYY-MM-DD / HH:mm:ss format. */
.data-table td,.mobile-row strong{white-space:pre-line}
