/*
  Lovins Work and WLOVos master theme foundation.
  Shared tokens, theme switching, logos, controls, and accessibility.
*/

:root{
  color-scheme: light dark;
  --lw-font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --lw-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
  --lw-radius-xs: 8px;
  --lw-radius-sm: 12px;
  --lw-radius-md: 16px;
  --lw-radius-lg: 22px;
  --lw-radius-xl: 30px;
  --lw-radius-2xl: 38px;
  --lw-speed: 160ms;
  --lw-ease: cubic-bezier(.2,.7,.2,1);
  --lw-shadow-xs: 0 1px 2px rgba(0,0,0,.04);
  --lw-shadow-sm: 0 10px 28px rgba(0,0,0,.07);
  --lw-shadow-md: 0 22px 60px rgba(0,0,0,.11);
  --lw-shadow-lg: 0 34px 96px rgba(0,0,0,.16);
}

:root[data-theme="light"]{
  --lw-bg: #f6f6f7;
  --lw-bg-2: #ffffff;
  --lw-bg-3: #ededf0;
  --lw-surface: rgba(255,255,255,.92);
  --lw-surface-solid: #ffffff;
  --lw-surface-2: #f8f8f9;
  --lw-surface-3: #f0f0f2;
  --lw-glass: rgba(255,255,255,.72);
  --lw-text: #080809;
  --lw-text-soft: #26272c;
  --lw-muted: #5e616a;
  --lw-muted-2: #858993;
  --lw-line: #e0e1e6;
  --lw-line-2: #cfd1d8;
  --lw-line-strong: #b8bbc4;
  --lw-invert: #ffffff;
  --lw-accent: #111111;
  --lw-accent-2: #3f3f46;
  --lw-accent-soft: rgba(0,0,0,.06);
  --lw-progress-track: #ececef;
  --lw-progress-fill: #8d929b;
  --lw-focus: rgba(0,0,0,.86);
  --lw-danger: #7f1d1d;
  --lw-danger-bg: #fef2f2;
  --lw-success: #14532d;
  --lw-success-bg: #f0fdf4;
  --lw-warning: #713f12;
  --lw-warning-bg: #fffbeb;
  --lw-info: #2f3747;
  --lw-info-bg: #f3f4f6;
}

:root[data-theme="dark"]{
  --lw-bg: #050506;
  --lw-bg-2: #08090a;
  --lw-bg-3: #101113;
  --lw-surface: rgba(18,19,21,.78);
  --lw-surface-solid: #101113;
  --lw-surface-2: #151619;
  --lw-surface-3: #202126;
  --lw-glass: rgba(12,13,15,.72);
  --lw-text: #f7f7f8;
  --lw-text-soft: #d7d9df;
  --lw-muted: #a7aab3;
  --lw-muted-2: #747983;
  --lw-line: rgba(255,255,255,.12);
  --lw-line-2: rgba(255,255,255,.19);
  --lw-line-strong: rgba(255,255,255,.30);
  --lw-invert: #000000;
  --lw-accent: #f7f7f8;
  --lw-accent-2: #c9ccd2;
  --lw-accent-soft: rgba(255,255,255,.08);
  --lw-progress-track: rgba(255,255,255,.09);
  --lw-progress-fill: #d8dbe0;
  --lw-focus: rgba(255,255,255,.9);
  --lw-danger: #fecaca;
  --lw-danger-bg: rgba(127,29,29,.22);
  --lw-success: #bbf7d0;
  --lw-success-bg: rgba(20,83,45,.24);
  --lw-warning: #fde68a;
  --lw-warning-bg: rgba(113,63,18,.24);
  --lw-info: #d6d9df;
  --lw-info-bg: rgba(255,255,255,.08);
  --lw-shadow-xs: 0 1px 2px rgba(0,0,0,.32);
  --lw-shadow-sm: 0 12px 36px rgba(0,0,0,.34);
  --lw-shadow-md: 0 24px 70px rgba(0,0,0,.42);
  --lw-shadow-lg: 0 40px 110px rgba(0,0,0,.55);
}

*{box-sizing:border-box}
html{min-height:100%;text-size-adjust:100%;-webkit-text-size-adjust:100%;scroll-behavior:smooth;scrollbar-gutter:stable}
body{min-height:100%;margin:0;background:var(--lw-bg);color:var(--lw-text);font-family:var(--lw-font);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body.lw-no-scroll{overflow:hidden}
button,input,select,textarea{font:inherit}
img,svg,video,canvas{max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
a:hover{text-decoration:none}
:focus-visible{outline:3px solid var(--lw-focus);outline-offset:3px;border-radius:10px}
::selection{background:var(--lw-accent);color:var(--lw-invert)}
.skip,.skip-link{position:fixed;left:16px;top:12px;z-index:9999;transform:translateY(-160%);background:var(--lw-surface-solid);color:var(--lw-text);border:1px solid var(--lw-line-strong);border-radius:999px;padding:.7rem 1rem;font-weight:850;box-shadow:var(--lw-shadow-md)}
.skip:focus,.skip-link:focus{transform:translateY(0)}

.theme-logo{display:block;height:auto}.theme-logo-dark{display:none}:root[data-theme="dark"] .theme-logo-light{display:none}:root[data-theme="dark"] .theme-logo-dark{display:block}

.themeToggle,.lw-theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 12px;border-radius:999px;border:1px solid var(--lw-line);background:var(--lw-glass);color:var(--lw-text);font-weight:850;cursor:pointer;box-shadow:var(--lw-shadow-xs);transition:background var(--lw-speed) var(--lw-ease),border-color var(--lw-speed) var(--lw-ease),transform var(--lw-speed) var(--lw-ease)}
.themeToggle:hover,.lw-theme-toggle:hover{background:var(--lw-surface-solid);border-color:var(--lw-line-strong);transform:translateY(-1px)}
.themeToggleIcon,.lw-theme-toggle-icon{width:24px;height:24px;border-radius:999px;border:1px solid var(--lw-line-strong);background:linear-gradient(90deg,var(--lw-text) 0 48%,var(--lw-surface-solid) 52% 100%);box-shadow:inset 0 0 0 3px var(--lw-surface-solid),0 1px 8px rgba(0,0,0,.12)}
:root[data-theme="dark"] .themeToggleIcon,:root[data-theme="dark"] .lw-theme-toggle-icon{background:linear-gradient(90deg,var(--lw-surface-solid) 0 48%,var(--lw-text) 52% 100%);box-shadow:inset 0 0 0 3px var(--lw-surface-2),0 0 18px rgba(255,255,255,.10)}
[data-theme-label]{font-size:.84rem;letter-spacing:.01em}

.lw-button,.button,.btn,.action-btn,input[type="submit"],button.action-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 17px;border-radius:999px;border:1px solid var(--lw-accent);background:var(--lw-accent);color:var(--lw-invert);font-weight:900;line-height:1;text-decoration:none;cursor:pointer;box-shadow:var(--lw-shadow-xs);transition:transform var(--lw-speed) var(--lw-ease),background var(--lw-speed) var(--lw-ease),border-color var(--lw-speed) var(--lw-ease),box-shadow var(--lw-speed) var(--lw-ease)}
.lw-button:hover,.button:hover,.btn:hover,.action-btn:hover,input[type="submit"]:hover,button.action-btn:hover{transform:translateY(-1px);box-shadow:var(--lw-shadow-sm)}
.lw-button.secondary,.button.secondary,.btn.secondary,.action-btn.secondary{background:var(--lw-surface-solid);color:var(--lw-text);border-color:var(--lw-line-2)}
.lw-button.ghost,.button.ghost,.btn.ghost{background:transparent;color:var(--lw-text);border-color:var(--lw-line)}
.action-btn.danger,.btn-danger,.danger-btn{background:var(--lw-danger);border-color:var(--lw-danger);color:#fff}
.action-btn.success,.btn-success{background:var(--lw-success);border-color:var(--lw-success);color:#fff}
.action-btn.info,.btn-primary,.dash-btn-primary{background:var(--lw-accent);border-color:var(--lw-accent);color:var(--lw-invert)}

label,.form-label{display:block;margin:0 0 7px;color:var(--lw-text);font-weight:850;font-size:.9rem}
input:not([type="checkbox"]):not([type="radio"]),select,textarea,.form-control,.form-select,.wv-input{width:100%;min-height:44px;border:1px solid var(--lw-line-2);border-radius:14px;background:var(--lw-surface-solid);color:var(--lw-text);padding:9px 12px;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
textarea{min-height:108px;resize:vertical;padding-top:11px}
input::placeholder,textarea::placeholder{color:var(--lw-muted-2);opacity:1}
input:not([type="checkbox"]):not([type="radio"]):focus,select:focus,textarea:focus,.form-control:focus,.form-select:focus{outline:3px solid var(--lw-accent-soft);outline-offset:1px;border-color:var(--lw-accent)}
select option{background:var(--lw-surface-solid);color:var(--lw-text)}

.card,.lw-card,.panel,.section-card,.actions-card,.modal-content,.list-group-item{background:var(--lw-surface);color:var(--lw-text);border:1px solid var(--lw-line);border-radius:var(--lw-radius-lg);box-shadow:var(--lw-shadow-xs)}
.badge,.pill,.role-chip,.wv-pill{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:2px 9px;border-radius:999px;border:1px solid var(--lw-line);background:var(--lw-surface-2);color:var(--lw-text-soft);font-size:.78rem;font-weight:850;white-space:nowrap}
.badge.ok,.pill.active,.pill.running{background:var(--lw-success-bg);color:var(--lw-success);border-color:rgba(34,197,94,.25)}
.badge.warn,.badge.bad,.pill.manual{background:var(--lw-warning-bg);color:var(--lw-warning);border-color:rgba(245,158,11,.26)}
.badge.dim,.pill.dim{background:var(--lw-surface-2);color:var(--lw-muted);border-color:var(--lw-line)}

.lw-progress{height:7px;border-radius:999px;background:var(--lw-progress-track);overflow:hidden;position:relative}
.lw-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--lw-progress-fill),var(--lw-accent));box-shadow:0 0 18px rgba(255,255,255,.18)}

.table-responsive{overflow:auto;border-radius:var(--lw-radius-md);border:1px solid var(--lw-line)}
table{width:100%;border-collapse:separate;border-spacing:0;background:var(--lw-surface-solid);color:var(--lw-text);border-radius:var(--lw-radius-md);overflow:hidden}
th{background:var(--lw-surface-2);color:var(--lw-muted);border-bottom:1px solid var(--lw-line);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;padding:10px;text-align:left}
td{background:var(--lw-surface-solid);color:var(--lw-text);border-bottom:1px solid var(--lw-line);padding:10px}
tr:hover td{background:var(--lw-surface-2)}

.lw-muted,.muted,.muted2,.small,small{color:var(--lw-muted)}
.hidden{display:none!important}
.nowrap{white-space:nowrap!important}

@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}
