/* Shared tactile UI, 1.15. Adapted card/checkbox depth from Uiverse.
   Copyright notices: uiverse-LICENSE.txt. Geometry and business states stay local. */
.neo-app {
  --bg:#e9eef3; --bg-deep:#dfe6ed; --panel:#e9eef3; --panel-solid:#e9eef3;
  --surface:#e9eef3; --text:#202e40; --ink:#202e40; --ink-soft:#35465b;
  --muted:#526278; --line:#c9d3df; --border:#c9d3df;
  --accent-soft:#d6e8e5; --accent-wash:#e2eeeb;
  --neo-control:#78879a; --neo-light:#ffffff; --neo-dark:#c8d1dc; --neo-edge:#f7fafc;
  --neo-raised:7px 7px 17px var(--neo-dark),-7px -7px 17px var(--neo-light);
  --neo-small:3px 3px 7px var(--neo-dark),-3px -3px 7px var(--neo-light);
  --neo-inset:inset 3px 3px 7px var(--neo-dark),inset -3px -3px 7px var(--neo-light);
  background:var(--bg); color:var(--ink);
}
[data-theme=dark] .neo-app {
  --bg:#202c3b; --bg-deep:#192432; --panel:#202c3b; --panel-solid:#202c3b;
  --surface:#202c3b; --text:#edf3fa; --ink:#edf3fa; --ink-soft:#ced9e7;
  --muted:#b1bfd0; --line:#425369; --border:#425369;
  --accent-soft:#263f46; --accent-wash:#253943;
  --neo-control:#778ba3; --neo-light:#2a394c; --neo-dark:#15202e; --neo-edge:#35465a;
}
.neo-app::before {display:none}
.neo-app .workspace {background:transparent}
.neo-app :is(.panel,.stat-card,.preferences-card,.setting-card,.settings-card,.model-card,.integration-card,.health-card,.online-card,.sign-card,.attendance-stat,.folder-card,.payment-result) {
  background:var(--surface);border:1px solid var(--neo-edge);border-radius:20px;
  box-shadow:var(--neo-raised);backdrop-filter:none;
}
.neo-app :is(.welcome,.preferences-hero,.attendance-hero,.wallet-summary) {
  background:var(--surface);border:1px solid var(--neo-edge);border-radius:24px;
  box-shadow:var(--neo-raised);color:var(--ink);overflow-wrap:anywhere;
}
.neo-app .welcome::before,.neo-app .welcome::after {display:none}
.neo-app .sidebar {background:var(--surface);border-inline-end:1px solid var(--neo-edge);box-shadow:-5px 0 18px var(--neo-dark);backdrop-filter:none}
.neo-app .logo .brand-mark {background:var(--surface);border:1px solid var(--neo-edge);box-shadow:var(--neo-small);border-radius:16px}
.neo-app .nav-item {background:transparent;border-color:transparent;box-shadow:none;border-radius:13px;transform:none}
.neo-app .nav-item:hover {background:var(--surface);box-shadow:var(--neo-small);transform:none}
.neo-app .nav-item.active {background:var(--surface);color:var(--accent);border-color:var(--line);box-shadow:var(--neo-inset)}
.neo-app .nav-item.active::after {background:var(--accent);width:3px;border-radius:4px}
.neo-app :is(.main-header,.topbar) {background:var(--surface);backdrop-filter:none;border-color:var(--neo-edge);box-shadow:var(--neo-small)}
.neo-app :is(.header-wallet,.wallet-balance,.account-trigger) {background:var(--surface);border-color:var(--line);box-shadow:var(--neo-inset)}
.neo-app :is(.assistant-header,.chat-info,.chat-filter,.file-location) {background:var(--surface);border-color:var(--line);box-shadow:var(--neo-inset)}
.neo-app :is(.account-popover,.chat-menu,dialog,.attendance-picker) {background:var(--surface);color:var(--ink);border:1px solid var(--neo-edge);border-radius:20px;box-shadow:12px 12px 40px #101d3252,-4px -4px 16px var(--neo-light);backdrop-filter:none}
.neo-app dialog::backdrop {background:#12203388;backdrop-filter:blur(3px)}
.neo-app :is(button.primary,a.primary,.payment-cta) {background:var(--accent);color:var(--accent-ink);border:1px solid transparent;box-shadow:var(--neo-small);border-radius:13px;transform:none}
.neo-app :is(button.secondary,a.secondary,.icon-button,.theme-toggle,.text-button) {background:var(--surface);color:var(--ink-soft);border:1px solid var(--line);box-shadow:var(--neo-small);border-radius:13px;transform:none}
.neo-app :is(button.primary,a.primary,button.secondary,a.secondary,.icon-button,.theme-toggle,.text-button):active {box-shadow:var(--neo-inset);transform:none}
.neo-app :is(button,a,input,select,textarea,summary):focus-visible {outline:3px solid var(--accent);outline-offset:3px}
.neo-app input:is([type=checkbox],[type=radio]):focus {outline:3px solid var(--accent);outline-offset:3px}
.neo-app :is(button,input,select,textarea):disabled {opacity:.6;cursor:not-allowed}
.neo-app :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=hidden]),select,textarea) {
  background:var(--surface);color:var(--ink);border:1px solid var(--neo-control);border-radius:12px;box-shadow:var(--neo-inset);
}
.neo-app :is(input,textarea)::placeholder {color:var(--muted);opacity:1}
.neo-app :is(input,textarea,select)[aria-invalid=true] {border-color:var(--red);outline-color:var(--red)}
.neo-app input[type=checkbox],.neo-app input[type=radio] {
  appearance:none;display:inline-grid;place-content:center;vertical-align:middle;flex-shrink:0;
  width:24px;height:24px;min-width:24px;padding:0;margin:0;border:1px solid var(--muted);
  border-radius:8px;background:var(--surface);box-shadow:var(--neo-small);cursor:pointer;
}
.neo-app input[type=radio] {border-radius:50%}
.neo-app input[type=checkbox]::before {content:'';width:10px;height:6px;border:solid var(--accent-ink);border-width:0 0 3px 3px;transform:translateY(-1px) rotate(-45deg);visibility:hidden}
.neo-app input[type=radio]::before {content:'';width:10px;height:10px;border-radius:50%;background:var(--accent-ink);visibility:hidden}
.neo-app input:is([type=checkbox],[type=radio]):checked {background:var(--accent);border-color:var(--accent);box-shadow:inset 1px 1px 3px #0003}
.neo-app input:is([type=checkbox],[type=radio]):checked::before {visibility:visible}
.neo-app input[type=checkbox]:indeterminate {background:var(--accent);border-color:var(--accent)}
.neo-app input[type=checkbox]:indeterminate::before {visibility:visible;width:10px;height:0;border-width:0 0 3px;transform:none}
.neo-app label:has(>input:is([type=checkbox],[type=radio])) {min-height:44px;gap:10px}
.neo-app :is(.actions-tabs,.settings-categories,.attendance-tabs) {gap:10px}
.neo-app :is(.actions-tab,.settings-category,.theme-option) {background:var(--surface);border:1px solid var(--line);box-shadow:var(--neo-small);border-radius:13px;transform:none}
.neo-app :is(.actions-tab,.settings-category,.theme-option).active,.neo-app .settings-category[aria-pressed=true],.neo-app .attendance-tabs button.primary {background:var(--accent-soft);color:var(--accent);box-shadow:var(--neo-inset);border-color:var(--accent)}
.neo-app :is(.table-wrap,.file-table-wrap,.quarantine-table-wrap,.online-history) {background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--neo-inset)}
.neo-app :is(th,td) {border-color:var(--line)}
.neo-app th {background:var(--bg-deep);color:var(--ink-soft)}
.neo-app tbody tr {background:transparent;box-shadow:none}
.neo-app tbody tr:hover {background:var(--accent-wash)}
.neo-app :is(.sign-row,.online-query-panel,.online-result,.online-confirm,.online-service-summary) {background:var(--surface);border-color:var(--line);box-shadow:var(--neo-inset);border-radius:16px}
.neo-app :is(.chat-sidebar,.chat-main,.chat-model-card,.assistant-model-card) {background:var(--surface);border-color:var(--neo-edge);box-shadow:var(--neo-small)}
.neo-app .chat-messages {background:var(--surface)}
.neo-app .chat-message {border-color:var(--line);box-shadow:none}
.neo-app .chat-message.assistant {background:var(--surface)}
.neo-app .chat-message.user {background:var(--accent-wash)}
.neo-app .chat-composer {background:var(--surface);border-color:var(--line);box-shadow:var(--neo-small)}
.neo-app .chat-composer textarea {box-shadow:none;background:transparent;border-color:transparent}
.neo-app .attendance-day.panel {box-shadow:var(--neo-small);border-radius:12px}
.neo-app .attendance-day.outside {box-shadow:none}
.neo-app :is(.wallet-bar-track,.payment-credit) {background:var(--surface);box-shadow:var(--neo-inset);border:1px solid var(--line)}
.neo-app .payment-status-icon {background:var(--surface);box-shadow:var(--neo-small)}
.neo-app .wallet-bar-fill {background:var(--accent);border-radius:inherit}
.neo-app .page-loading {display:flex;align-items:center;justify-content:center;gap:16px;min-height:180px;padding:24px;text-align:center;color:var(--muted)}
.neo-app .page-loading::before {content:'';width:28px;height:28px;flex-shrink:0;border:3px solid var(--line);border-block-start-color:var(--accent);border-radius:50%;box-shadow:var(--neo-small);animation:neo-loading 1s linear infinite}
@keyframes neo-loading {to{transform:rotate(360deg)}}
@media(hover:hover) {
  .neo-app :is(button.primary,a.primary,button.secondary,a.secondary,.icon-button,.theme-toggle):hover {filter:brightness(1.03);transform:none}
}
@media(max-width:780px) {
  .neo-app {--neo-raised:4px 4px 10px var(--neo-dark),-4px -4px 10px var(--neo-light)}
  .neo-app :is(.panel,.stat-card,.settings-card,.preferences-card,.online-card) {border-radius:17px}
  .neo-app :is(input:not([type=checkbox]):not([type=radio]),select,textarea) {font-size:16px}
  .neo-app :is(button.primary,button.secondary,.theme-toggle,.text-button) {min-height:44px}
  .neo-app .chat-composer textarea {font-size:16px}
}
@media(prefers-reduced-motion:reduce) {
  .neo-app *,.neo-app *::before,.neo-app *::after {animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
@media(forced-colors:active) {
  .neo-app input:is([type=checkbox],[type=radio]) {appearance:auto}
  .neo-app input:is([type=checkbox],[type=radio])::before {display:none}
  .neo-app :is(.panel,button,input,select,textarea,dialog) {border:1px solid CanvasText;box-shadow:none}
}
@media print {
  .neo-app {background:white;color:black}
  .neo-app * {box-shadow:none!important;text-shadow:none!important}
}

/* Boolean settings use a native checkbox with switch semantics; consent stays a checkbox. */
.neo-app input[type=checkbox][role=switch] {width:50px;min-width:50px;height:28px;border-radius:20px;box-shadow:var(--neo-inset)}
.neo-app input[type=checkbox][role=switch]::before {visibility:visible;width:18px;height:18px;border:0;border-radius:50%;background:var(--ink-soft);transform:translateX(-10px);box-shadow:1px 1px 3px #0003;transition:transform .18s ease}
.neo-app input[type=checkbox][role=switch]:checked::before {background:var(--accent-ink);transform:translateX(10px)}
@media(forced-colors:active) {.neo-app input[type=checkbox][role=switch]::before{display:none}}
/* Keep the fifth administrator metric in the same desktop row. */
.neo-app .stat-card strong {overflow-wrap:anywhere}
.neo-app .calendar-panel {margin-block-end:20px}
@media(min-width:1200px) {.neo-app .stats:has(>.stat-card:nth-child(5)){grid-template-columns:repeat(5,minmax(0,1fr))}}
