qBitrr2 5.6.1__py3-none-any.whl → 5.6.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qBitrr/arss.py +153 -1
- qBitrr/bundled_data.py +2 -2
- qBitrr/db_lock.py +24 -10
- qBitrr/static/assets/app.css +1 -1
- qBitrr/static/assets/app.js +5 -5
- qBitrr/static/assets/app.js.map +1 -1
- qbitrr2-5.6.2.dist-info/METADATA +260 -0
- {qbitrr2-5.6.1.dist-info → qbitrr2-5.6.2.dist-info}/RECORD +12 -12
- qbitrr2-5.6.1.dist-info/METADATA +0 -1210
- {qbitrr2-5.6.1.dist-info → qbitrr2-5.6.2.dist-info}/WHEEL +0 -0
- {qbitrr2-5.6.1.dist-info → qbitrr2-5.6.2.dist-info}/entry_points.txt +0 -0
- {qbitrr2-5.6.1.dist-info → qbitrr2-5.6.2.dist-info}/licenses/LICENSE +0 -0
- {qbitrr2-5.6.1.dist-info → qbitrr2-5.6.2.dist-info}/top_level.txt +0 -0
qBitrr/arss.py
CHANGED
|
@@ -20,7 +20,7 @@ import qbittorrentapi
|
|
|
20
20
|
import qbittorrentapi.exceptions
|
|
21
21
|
import requests
|
|
22
22
|
from packaging import version as version_parser
|
|
23
|
-
from peewee import Model, SqliteDatabase
|
|
23
|
+
from peewee import DatabaseError, Model, OperationalError, SqliteDatabase
|
|
24
24
|
from pyarr import LidarrAPI, RadarrAPI, SonarrAPI
|
|
25
25
|
from pyarr.exceptions import PyarrResourceNotFound, PyarrServerError
|
|
26
26
|
from pyarr.types import JsonObject
|
|
@@ -4475,6 +4475,11 @@ class Arr:
|
|
|
4475
4475
|
if self.manager.qbit_manager.should_delay_torrent_scan:
|
|
4476
4476
|
raise DelayLoopException(length=NO_INTERNET_SLEEP_TIMER, type="delay")
|
|
4477
4477
|
|
|
4478
|
+
# Initialize database error tracking for exponential backoff
|
|
4479
|
+
if not hasattr(self, "_db_error_count"):
|
|
4480
|
+
self._db_error_count = 0
|
|
4481
|
+
self._db_last_error_time = 0
|
|
4482
|
+
|
|
4478
4483
|
# Periodic database health check (every 10th iteration)
|
|
4479
4484
|
if not hasattr(self, "_health_check_counter"):
|
|
4480
4485
|
self._health_check_counter = 0
|
|
@@ -4516,6 +4521,76 @@ class Arr:
|
|
|
4516
4521
|
self.logger.error("The qBittorrent API returned an unexpected error")
|
|
4517
4522
|
self.logger.debug("Unexpected APIError from qBitTorrent") # , exc_info=e)
|
|
4518
4523
|
raise DelayLoopException(length=300, type="qbit")
|
|
4524
|
+
except (OperationalError, DatabaseError) as e:
|
|
4525
|
+
# Database errors after retry exhaustion - implement automatic recovery with backoff
|
|
4526
|
+
error_msg = str(e).lower()
|
|
4527
|
+
current_time = time.time()
|
|
4528
|
+
|
|
4529
|
+
# Track consecutive database errors for exponential backoff
|
|
4530
|
+
if (
|
|
4531
|
+
current_time - self._db_last_error_time > 300
|
|
4532
|
+
): # Reset if >5min since last error
|
|
4533
|
+
self._db_error_count = 0
|
|
4534
|
+
self._db_error_count += 1
|
|
4535
|
+
self._db_last_error_time = current_time
|
|
4536
|
+
|
|
4537
|
+
# Calculate exponential backoff: 2min, 5min, 10min, 20min, 30min (max)
|
|
4538
|
+
delay_seconds = min(120 * (2 ** (self._db_error_count - 1)), 1800)
|
|
4539
|
+
|
|
4540
|
+
# Log detailed error information based on error type
|
|
4541
|
+
if "disk i/o error" in error_msg:
|
|
4542
|
+
self.logger.critical(
|
|
4543
|
+
"Persistent database I/O error detected (consecutive error #%d). "
|
|
4544
|
+
"This indicates disk issues, filesystem corruption, or resource exhaustion. "
|
|
4545
|
+
"Attempting automatic recovery and retrying in %d seconds...",
|
|
4546
|
+
self._db_error_count,
|
|
4547
|
+
delay_seconds,
|
|
4548
|
+
)
|
|
4549
|
+
elif "database is locked" in error_msg:
|
|
4550
|
+
self.logger.error(
|
|
4551
|
+
"Database locked error (consecutive error #%d). "
|
|
4552
|
+
"Retrying in %d seconds...",
|
|
4553
|
+
self._db_error_count,
|
|
4554
|
+
delay_seconds,
|
|
4555
|
+
)
|
|
4556
|
+
elif "disk image is malformed" in error_msg:
|
|
4557
|
+
self.logger.critical(
|
|
4558
|
+
"Database corruption detected (consecutive error #%d). "
|
|
4559
|
+
"Attempting automatic recovery and retrying in %d seconds...",
|
|
4560
|
+
self._db_error_count,
|
|
4561
|
+
delay_seconds,
|
|
4562
|
+
)
|
|
4563
|
+
else:
|
|
4564
|
+
self.logger.error(
|
|
4565
|
+
"Database error (consecutive error #%d): %s. " "Retrying in %d seconds...",
|
|
4566
|
+
self._db_error_count,
|
|
4567
|
+
error_msg,
|
|
4568
|
+
delay_seconds,
|
|
4569
|
+
)
|
|
4570
|
+
|
|
4571
|
+
# Attempt automatic recovery for critical errors
|
|
4572
|
+
if "disk i/o error" in error_msg or "disk image is malformed" in error_msg:
|
|
4573
|
+
try:
|
|
4574
|
+
self.logger.warning(
|
|
4575
|
+
"Attempting enhanced database recovery (WAL checkpoint, repair, and verification)..."
|
|
4576
|
+
)
|
|
4577
|
+
self._enhanced_database_recovery()
|
|
4578
|
+
self.logger.info(
|
|
4579
|
+
"Database recovery completed successfully - will retry operation after delay"
|
|
4580
|
+
)
|
|
4581
|
+
# Reduce error count on successful recovery (but don't reset completely)
|
|
4582
|
+
self._db_error_count = max(0, self._db_error_count - 1)
|
|
4583
|
+
except Exception as recovery_error:
|
|
4584
|
+
self.logger.critical(
|
|
4585
|
+
"Automatic database recovery failed: %s. "
|
|
4586
|
+
"MANUAL INTERVENTION REQUIRED: Check disk health (smartctl), "
|
|
4587
|
+
"filesystem integrity (fsck), available space (df -h), "
|
|
4588
|
+
"Docker volume mounts, permissions, and system logs (dmesg).",
|
|
4589
|
+
recovery_error,
|
|
4590
|
+
)
|
|
4591
|
+
|
|
4592
|
+
# Delay processing to avoid hammering failing database
|
|
4593
|
+
raise DelayLoopException(length=delay_seconds, type="database")
|
|
4519
4594
|
except DelayLoopException:
|
|
4520
4595
|
raise
|
|
4521
4596
|
except KeyboardInterrupt:
|
|
@@ -4566,6 +4641,83 @@ class Arr:
|
|
|
4566
4641
|
"Manual intervention may be required. Continuing with caution..."
|
|
4567
4642
|
)
|
|
4568
4643
|
|
|
4644
|
+
def _enhanced_database_recovery(self):
|
|
4645
|
+
"""
|
|
4646
|
+
Enhanced automatic database recovery with additional filesystem checks.
|
|
4647
|
+
|
|
4648
|
+
This method is called when disk I/O errors persist after retry logic has been exhausted.
|
|
4649
|
+
It implements a comprehensive recovery strategy:
|
|
4650
|
+
1. Try WAL checkpoint (least invasive)
|
|
4651
|
+
2. Try VACUUM to reclaim space and fix minor corruption
|
|
4652
|
+
3. Try full database repair (dump/restore) if needed
|
|
4653
|
+
4. Verify database integrity after recovery
|
|
4654
|
+
"""
|
|
4655
|
+
from qBitrr.db_recovery import (
|
|
4656
|
+
DatabaseRecoveryError,
|
|
4657
|
+
checkpoint_wal,
|
|
4658
|
+
repair_database,
|
|
4659
|
+
vacuum_database,
|
|
4660
|
+
)
|
|
4661
|
+
from qBitrr.home_path import APPDATA_FOLDER
|
|
4662
|
+
|
|
4663
|
+
db_path = APPDATA_FOLDER / "qbitrr.db"
|
|
4664
|
+
|
|
4665
|
+
self.logger.info("Starting enhanced database recovery procedure...")
|
|
4666
|
+
|
|
4667
|
+
# Step 1: Try WAL checkpoint
|
|
4668
|
+
self.logger.info("Step 1/3: Attempting WAL checkpoint...")
|
|
4669
|
+
if checkpoint_wal(db_path, self.logger):
|
|
4670
|
+
self.logger.info("WAL checkpoint successful")
|
|
4671
|
+
# Try a quick health check
|
|
4672
|
+
from qBitrr.db_lock import check_database_health
|
|
4673
|
+
|
|
4674
|
+
healthy, msg = check_database_health(db_path, self.logger)
|
|
4675
|
+
if healthy:
|
|
4676
|
+
self.logger.info("Database health verified - recovery complete")
|
|
4677
|
+
return
|
|
4678
|
+
else:
|
|
4679
|
+
self.logger.warning(
|
|
4680
|
+
"WAL checkpoint completed but database still unhealthy: %s", msg
|
|
4681
|
+
)
|
|
4682
|
+
|
|
4683
|
+
# Step 2: Try VACUUM (only if WAL didn't fully fix it)
|
|
4684
|
+
self.logger.info("Step 2/3: Attempting VACUUM to reclaim space and fix minor issues...")
|
|
4685
|
+
if vacuum_database(db_path, self.logger):
|
|
4686
|
+
self.logger.info("VACUUM completed successfully")
|
|
4687
|
+
from qBitrr.db_lock import check_database_health
|
|
4688
|
+
|
|
4689
|
+
healthy, msg = check_database_health(db_path, self.logger)
|
|
4690
|
+
if healthy:
|
|
4691
|
+
self.logger.info("Database health verified after VACUUM - recovery complete")
|
|
4692
|
+
return
|
|
4693
|
+
else:
|
|
4694
|
+
self.logger.warning("VACUUM completed but database still unhealthy: %s", msg)
|
|
4695
|
+
|
|
4696
|
+
# Step 3: Try full repair (most invasive)
|
|
4697
|
+
self.logger.warning("Step 3/3: Attempting full database repair (dump/restore)...")
|
|
4698
|
+
try:
|
|
4699
|
+
if repair_database(db_path, backup=True, logger_override=self.logger):
|
|
4700
|
+
self.logger.info("Database repair successful")
|
|
4701
|
+
# Final health check
|
|
4702
|
+
from qBitrr.db_lock import check_database_health
|
|
4703
|
+
|
|
4704
|
+
healthy, msg = check_database_health(db_path, self.logger)
|
|
4705
|
+
if healthy:
|
|
4706
|
+
self.logger.info("Database health verified after repair - recovery complete")
|
|
4707
|
+
return
|
|
4708
|
+
else:
|
|
4709
|
+
self.logger.error("Repair completed but database still unhealthy: %s", msg)
|
|
4710
|
+
raise DatabaseRecoveryError(f"Database unhealthy after repair: {msg}")
|
|
4711
|
+
except DatabaseRecoveryError as e:
|
|
4712
|
+
self.logger.error("Database repair failed: %s", e)
|
|
4713
|
+
raise
|
|
4714
|
+
except Exception as e:
|
|
4715
|
+
self.logger.error("Unexpected error during database repair: %s", e)
|
|
4716
|
+
raise
|
|
4717
|
+
|
|
4718
|
+
# If we reach here, all recovery methods failed
|
|
4719
|
+
raise DatabaseRecoveryError("All automatic recovery methods failed")
|
|
4720
|
+
|
|
4569
4721
|
def _process_single_torrent_failed_cat(self, torrent: qbittorrentapi.TorrentDictionary):
|
|
4570
4722
|
self.logger.notice(
|
|
4571
4723
|
"Deleting manually failed torrent: "
|
qBitrr/bundled_data.py
CHANGED
qBitrr/db_lock.py
CHANGED
|
@@ -133,18 +133,27 @@ def with_database_retry(
|
|
|
133
133
|
if "syntax" in error_msg or "constraint" in error_msg:
|
|
134
134
|
raise
|
|
135
135
|
|
|
136
|
-
# Detect corruption and attempt recovery (only once)
|
|
136
|
+
# Detect corruption or persistent I/O errors and attempt recovery (only once)
|
|
137
137
|
if not corruption_recovery_attempted and (
|
|
138
138
|
"disk image is malformed" in error_msg
|
|
139
139
|
or "database disk image is malformed" in error_msg
|
|
140
140
|
or "database corruption" in error_msg
|
|
141
|
+
or "disk i/o error" in error_msg
|
|
141
142
|
):
|
|
142
143
|
corruption_recovery_attempted = True
|
|
143
144
|
if logger:
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
if "disk i/o error" in error_msg:
|
|
146
|
+
logger.error(
|
|
147
|
+
"Persistent database I/O error detected: %s. "
|
|
148
|
+
"This may indicate disk issues, filesystem problems, or database corruption. "
|
|
149
|
+
"Attempting automatic recovery...",
|
|
150
|
+
e,
|
|
151
|
+
)
|
|
152
|
+
else:
|
|
153
|
+
logger.error(
|
|
154
|
+
"Database corruption detected: %s. Attempting automatic recovery...",
|
|
155
|
+
e,
|
|
156
|
+
)
|
|
148
157
|
|
|
149
158
|
recovery_succeeded = False
|
|
150
159
|
try:
|
|
@@ -184,15 +193,19 @@ def with_database_retry(
|
|
|
184
193
|
# If we reach here, recovery failed - log and continue with normal retry
|
|
185
194
|
if logger:
|
|
186
195
|
logger.critical(
|
|
187
|
-
"Automatic database recovery
|
|
188
|
-
"
|
|
196
|
+
"Automatic database recovery FAILED. "
|
|
197
|
+
"Both WAL checkpoint and full database repair were unsuccessful. "
|
|
198
|
+
"This indicates serious underlying issues. "
|
|
199
|
+
"Attempting normal retry, but manual intervention will likely be required."
|
|
189
200
|
)
|
|
190
201
|
|
|
191
202
|
attempt += 1
|
|
192
203
|
if attempt >= retries:
|
|
193
204
|
if logger:
|
|
194
|
-
logger.
|
|
195
|
-
"Database operation
|
|
205
|
+
logger.critical(
|
|
206
|
+
"Database operation EXHAUSTED %s retry attempts. "
|
|
207
|
+
"Error: %s. "
|
|
208
|
+
"This will be re-raised to the calling code for handling.",
|
|
196
209
|
retries,
|
|
197
210
|
e,
|
|
198
211
|
)
|
|
@@ -264,11 +277,12 @@ class ResilientSqliteDatabase:
|
|
|
264
277
|
except (OperationalError, DatabaseError, sqlite3.OperationalError) as e:
|
|
265
278
|
error_msg = str(e).lower()
|
|
266
279
|
|
|
267
|
-
# Detect corruption and attempt recovery (only once)
|
|
280
|
+
# Detect corruption or persistent I/O errors and attempt recovery (only once)
|
|
268
281
|
if not corruption_recovery_attempted and (
|
|
269
282
|
"disk image is malformed" in error_msg
|
|
270
283
|
or "database disk image is malformed" in error_msg
|
|
271
284
|
or "database corruption" in error_msg
|
|
285
|
+
or "disk i/o error" in error_msg
|
|
272
286
|
):
|
|
273
287
|
corruption_recovery_attempted = True
|
|
274
288
|
if self._logger:
|
qBitrr/static/assets/app.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root,[data-theme=dark]{--bg: #101114;--surface: #1b1e22;--on-surface: #eaeef2;--muted: #9aa3ac;--primary: #7aa2f7;--primary-variant: #3b82f6;--success: #22c55e;--danger: #ef4444;--warning: #facc15;--border: #2a2f36;--elev: 8px;--layout-max-width: 1200px}[data-theme=light]{--bg: #f5f5f7;--surface: #ffffff;--on-surface: #1d1d1f;--muted: #6e6e73;--primary: #0071e3;--primary-variant: #0077ed;--success: #34c759;--danger: #ff3b30;--warning: #ff9500;--border: #d2d2d7;--elev: 4px;--layout-max-width: 1200px}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;margin:0;background:var(--bg);color:var(--on-surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1;font-kerning:normal}*::-webkit-scrollbar{width:12px;height:12px}*::-webkit-scrollbar-track{background:#0003;border-radius:6px}*::-webkit-scrollbar-thumb{background:#7aa2f74d;border-radius:6px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#7aa2f780;background-clip:padding-box}.appbar{position:sticky;top:0;z-index:100;display:flex;justify-content:center;padding:16px 20px;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:0 2px 16px #0000000f;backdrop-filter:blur(12px) saturate(180%);-webkit-backdrop-filter:blur(12px) saturate(180%)}[data-theme=light] .appbar{background:#fffc}[data-theme=dark] .appbar{background:linear-gradient(180deg,#0b0c0ff2,#0d0e11f2);box-shadow:0 4px 16px #0006}.appbar__inner{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 16px;flex-wrap:wrap}.appbar__title{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.appbar h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-.02em;background:linear-gradient(135deg,var(--on-surface) 0%,var(--primary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}[data-theme=light] .appbar h1{background:linear-gradient(135deg,var(--on-surface) 0%,var(--primary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.appbar__version{font-size:12px;color:var(--muted);letter-spacing:.4px}.appbar__status{font-size:12px}.appbar__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.appbar__update{display:inline-flex;align-items:center;gap:6px}.appbar__update-indicator{width:8px;height:8px;border-radius:50%;background:var(--danger);display:inline-block;animation:pulse 1s ease-in-out infinite;box-shadow:0 0 8px #ef444499}.container{padding:20px;display:grid;grid-template-columns:1fr;gap:20px;animation:fadeInUp .3s ease}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--muted)}.nav{display:flex;gap:8px;flex-wrap:wrap;width:100%}.nav button{color:var(--muted);background:transparent;border:1px solid var(--border);padding:10px 14px;display:inline-flex;align-items:center;gap:8px;border-radius:8px;cursor:pointer;font-weight:500;transition:all .15s ease;position:relative;overflow:hidden}.nav button:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(122,162,247,.1),transparent);opacity:0;transition:opacity .15s ease}.nav button .icon{width:1.4em;height:1.4em;transition:transform .15s ease}.nav button:hover .icon{transform:scale(1.1)}.nav button.active{color:var(--primary);border-color:var(--primary);background:#7aa2f71f;box-shadow:0 0 0 2px #7aa2f71a,0 2px 8px #7aa2f733;font-weight:600}[data-theme=light] .nav button.active{box-shadow:0 0 0 2px #0071e31a,0 2px 8px #0071e333}.nav button:hover:not(.active){color:var(--on-surface);border-color:#7aa2f766;background:#7aa2f70f;transform:translateY(-1px)}.nav button:hover:before{opacity:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 2px 8px #00000014,0 1px 2px #0000000f;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;position:relative}[data-theme=dark] .card{box-shadow:0 var(--elev) 24px #00000040,0 2px 4px #0000004d}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(122,162,247,.1),transparent);opacity:0;transition:opacity .15s ease}.card:hover{transform:translateY(-2px);box-shadow:0 16px 40px #0000001f,0 4px 8px #00000014;border-color:#7aa2f74d}[data-theme=dark] .card:hover{box-shadow:0 12px 32px #00000059,0 4px 8px #0006}.card:hover:before{opacity:1}.card .card-header{padding:16px 20px;border-bottom:1px solid var(--border);font-weight:700;font-size:15px;letter-spacing:.01em;color:var(--on-surface);background:linear-gradient(180deg,#7aa2f70a,#7aa2f703);position:relative}[data-theme=light] .card .card-header{background:linear-gradient(180deg,rgba(0,113,227,.03) 0%,transparent 100%)}.card .card-header:after{content:"";position:absolute;bottom:0;left:20px;right:20px;height:1px;background:linear-gradient(90deg,transparent,var(--primary),transparent);opacity:.15}.card .card-body{padding:12px 14px}.btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--on-surface);padding:8px 14px;border-radius:8px;cursor:pointer;transition:all .15s ease;display:inline-flex;align-items:center;gap:6px;font-weight:500;position:relative;overflow:hidden}[data-theme=dark] .btn{background:#0f131a}.btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#ffffff1a,#fff0);opacity:0;transition:opacity .15s ease}.btn:hover:not(:disabled):before{opacity:1}.btn.primary{border-color:var(--primary-variant);background:linear-gradient(135deg,#7aa2f72e,#7aa2f71f);color:var(--primary);font-weight:600;box-shadow:0 2px 8px #7aa2f726}[data-theme=light] .btn.primary{background:linear-gradient(135deg,#0071e31f,#0071e314);box-shadow:0 2px 8px #0071e326}.btn.danger{border-color:#ef444466;color:var(--danger);background:#ef44441f}.btn.danger:hover:not(:disabled){background:var(--danger);color:#0a0a0a;border-color:var(--danger);box-shadow:0 4px 12px #ef44444d}.btn.primary:hover:not(:disabled){background:var(--primary);color:#0a0a0a;border-color:var(--primary);box-shadow:0 4px 12px #7aa2f74d}.btn.ghost{background:transparent}.btn.ghost:hover:not(:disabled){background:#ffffff0d;border-color:#7aa2f74d}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 3px 10px #0006}.btn:active:not(:disabled){transform:translateY(0)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px #7aa2f74d}[data-theme=light] .btn:focus-visible{box-shadow:0 0 0 3px #0071e34d}.nav button:focus-visible{outline:none;box-shadow:0 0 0 3px #7aa2f740}[data-theme=light] .nav button:focus-visible{box-shadow:0 0 0 3px #0071e340}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.small{padding:6px 10px;font-size:12px}.btn.outline{background:transparent;border-color:var(--border)}.btn.outline:hover:not(:disabled){background:#ffffff0d;border-color:var(--primary-variant)}.btn.active{background:var(--primary);color:#0a0a0a;border-color:var(--primary)}.field{display:flex;flex-direction:column;gap:6px}.field--full-width{grid-column:1 / -1}.sonarr-hierarchical-view{display:flex;flex-direction:column;gap:8px}.series-details,.season-details{border:1px solid var(--border);border-radius:6px;background:var(--card-bg)}.series-summary,.season-summary{padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;color:var(--text);background:var(--card-header-bg);border-radius:6px 6px 0 0;display:flex;align-items:center;justify-content:space-between;gap:8px}.series-summary:hover,.season-summary:hover{background:var(--hover-bg)}.series-title{font-size:1.1em;flex:1}.series-instance,.series-count,.series-quality,.artist-quality{font-size:.9em;color:var(--muted);font-weight:400;white-space:nowrap}.season-title{font-size:1em}.season-count{font-size:.9em;color:var(--muted);font-weight:400}.series-content,.season-content{padding:8px}.episodes-table-wrapper{overflow-x:auto}.episodes-table{width:100%;border-collapse:collapse;font-size:.9em}.episodes-table th,.episodes-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--border)}.episodes-table th{background:var(--table-header-bg);font-weight:600;color:var(--text);position:sticky;top:0}.episodes-table tr:hover{background:var(--hover-bg)}.lidarr-hierarchical-view{display:flex;flex-direction:column;gap:8px}.artist-details{border:1px solid var(--border);border-radius:6px;background:var(--card-bg)}.artist-summary{padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;color:var(--text);background:var(--card-header-bg);border-radius:6px 6px 0 0;display:flex;align-items:center;justify-content:space-between;gap:8px}.artist-summary:hover{background:var(--hover-bg)}.artist-title{font-size:1.1em;flex:1}.artist-instance,.artist-count{font-size:.9em;color:var(--muted);font-weight:400}.artist-content{padding:8px}.albums-table-wrapper{overflow-x:auto}.albums-table{width:100%;border-collapse:collapse;font-size:.9em}.albums-table th,.albums-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--border)}.albums-table th{background:var(--table-header-bg);font-weight:600;color:var(--text);position:sticky;top:0}.albums-table tr:hover{background:var(--hover-bg)}.album-details{border:1px solid var(--border);border-radius:4px;background:var(--surface);margin-bottom:8px}.album-summary{padding:10px 14px;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:500;color:var(--text);background:var(--card-header-bg);border-radius:4px 4px 0 0;display:flex;align-items:center;gap:12px}.album-summary:hover{background:var(--hover-bg)}.album-title{font-size:1em;flex:1}.album-date,.album-track-count{font-size:.85em;color:var(--muted);font-weight:400}.album-status{font-size:1.1em;font-weight:700}.album-status.has-file{color:var(--success)}.album-status.missing{color:var(--danger)}.album-content{padding:8px}.album-info{padding:8px 12px;font-size:.9em}.album-info p{margin:4px 0}.tracks-table-wrapper{overflow-x:auto}.tracks-table{width:100%;border-collapse:collapse;font-size:.85em;table-layout:fixed}.tracks-table th,.tracks-table td{padding:6px 10px;text-align:left;border-bottom:1px solid var(--border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tracks-table th:nth-child(1),.tracks-table td:nth-child(1){width:70px}.tracks-table th:nth-child(2),.tracks-table td:nth-child(2){width:auto;white-space:normal}.tracks-table th:nth-child(3),.tracks-table td:nth-child(3){width:100px}.tracks-table th:nth-child(4),.tracks-table td:nth-child(4){width:110px;text-align:center}.tracks-table th:nth-child(5),.tracks-table td:nth-child(5){width:180px}.tracks-table th{background:var(--table-header-bg);font-weight:600;color:var(--text);font-size:.9em}.tracks-table tr.track-available{opacity:1}.tracks-table tr.track-missing{opacity:.6}.tracks-table tr:hover{background:var(--hover-bg)}.track-status{display:inline-block;font-weight:700;font-size:1.1em}.track-status.available{color:var(--success)}.track-status.missing{color:var(--danger)}.table-badge{display:inline-block;padding:3px 8px;border-radius:6px;font-size:.8em;font-weight:600;border:1px solid transparent;transition:all .15s ease}.table-badge:hover{transform:scale(1.05)}.table-badge.monitored{background:#22c55e26;border-color:#22c55e4d;color:var(--success)}.table-badge.unmonitored{background:#facc1526;border-color:#facc154d;color:var(--warning)}.table-badge.has-file{background:#22c55e26;border-color:#22c55e4d;color:var(--success)}.table-badge.missing{background:#ef444426;border-color:#ef44444d;color:var(--danger)}.table-badge-reason{background:#facc1526;border-color:#facc154d;color:var(--warning);font-family:monospace;font-size:11px;font-weight:600}[data-theme=light] .table-badge-reason{background:#ff95001a;border-color:#ff95004d}.field label{color:var(--muted);font-size:12px}.field input,.field select,.field textarea{background:var(--surface);color:var(--on-surface);border:1px solid var(--border);border-radius:8px;padding:9px 12px;transition:all .15s ease}[data-theme=dark] .field input,[data-theme=dark] .field select,[data-theme=dark] .field textarea{background:#0f131a}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px #7aa2f71f,0 2px 8px #7aa2f726;background:var(--bg);transform:translateY(-1px)}[data-theme=light] .field input:focus,[data-theme=light] .field select:focus,[data-theme=light] .field textarea:focus{box-shadow:0 0 0 4px #0071e31a,0 2px 8px #0071e326}[data-theme=dark] .field input:focus,[data-theme=dark] .field select:focus,[data-theme=dark] .field textarea:focus{background:#12151a;box-shadow:0 0 0 4px #7aa2f71f,0 2px 8px #7aa2f733}.field input:hover:not(:focus),.field select:hover:not(:focus),.field textarea:hover:not(:focus){border-color:#7aa2f74d}.field input[type=checkbox]{width:auto}.field.mobile-instance-select{display:none}.field-description,.field-hint{display:block;margin:0;font-size:12px;line-height:1.35;color:var(--muted)}.field-description{margin-top:2px}.field-hint{color:var(--primary);font-weight:500;margin-top:4px}.row{display:flex;flex-wrap:wrap;gap:12px}.row .col{flex:1 1 260px}table{border-collapse:collapse;width:100%;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0000000a}[data-theme=dark] table{box-shadow:0 2px 8px #0003}th,td{border-bottom:1px solid var(--border);padding:10px 12px;font-size:13px;text-align:left}th{background:var(--surface);color:var(--muted);font-weight:600;text-transform:uppercase;font-size:11px;letter-spacing:.05em;border-bottom:2px solid var(--border)}[data-theme=dark] th{background:#12151a}tbody tr{transition:background-color .1s ease,transform .08s ease;border-left:3px solid transparent}tbody tr:hover{background:#7aa2f70d;cursor:default;border-left-color:var(--primary)}[data-theme=light] tbody tr:hover{background:#0071e30a}[data-theme=dark] tbody tr:hover{background:#7aa2f70f}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sort-arrow{font-size:10px;margin-left:4px;color:var(--muted)}details{margin:6px 0}details summary{cursor:pointer;transition:all .15s ease;padding:4px;border-radius:6px}details summary:hover{background:#7aa2f70d;color:var(--primary)}.ok{color:var(--success)}.bad{color:var(--danger)}.hint{color:var(--muted);font-size:12px}.spacer{flex:1}pre{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;color:var(--on-surface);max-height:420px;overflow:auto;transition:border-color .15s ease}[data-theme=dark] pre{background:#0f131a}pre:hover{border-color:#7aa2f74d}pre::-webkit-scrollbar{width:10px;height:10px}pre::-webkit-scrollbar-track{background:#0003;border-radius:6px}pre::-webkit-scrollbar-thumb{background:#7aa2f74d;border-radius:6px}pre::-webkit-scrollbar-thumb:hover{background:#7aa2f780}.loading{color:var(--muted);display:inline-flex;align-items:center;gap:8px;font-weight:500;animation:pulse 1.5s ease-in-out infinite}.spinner{width:14px;height:14px;border:2.5px solid rgba(122,162,247,.15);border-top-color:var(--primary);border-radius:50%;display:inline-block;animation:spin .6s linear infinite;box-shadow:0 0 8px #7aa2f733}[data-theme=light] .spinner{border:2.5px solid rgba(0,113,227,.15);border-top-color:var(--primary);box-shadow:0 0 8px #0071e333}@keyframes spin{to{transform:rotate(360deg)}}.toasts{position:fixed;right:16px;bottom:16px;display:grid;gap:10px;z-index:9999}.toast{background:var(--surface);color:var(--on-surface);border:1px solid var(--border);border-left:4px solid var(--primary);padding:12px 16px;border-radius:10px;box-shadow:0 12px 32px #0003;min-width:260px;transition:all .2s ease;animation:slideIn .2s ease}[data-theme=dark] .toast{background:#12151a;border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 32px #00000080}.toast:hover{transform:translate(-4px)}[data-theme=dark] .toast:hover{box-shadow:0 16px 40px #0009}[data-theme=light] .toast:hover{box-shadow:0 16px 40px #00000040}.toast.success{border-left-color:var(--success)}.toast.warning{border-left-color:var(--warning)}.toast.error{border-left-color:var(--danger)}[data-theme=dark] .toast.success{background:linear-gradient(90deg,#22c55e14,#12151a 20%)}[data-theme=dark] .toast.warning{background:linear-gradient(90deg,#facc1514,#12151a 20%)}[data-theme=dark] .toast.error{background:linear-gradient(90deg,#ef444414,#12151a 20%)}[data-theme=light] .toast.success{background:linear-gradient(90deg,rgba(52,199,89,.08) 0%,var(--surface) 20%)}[data-theme=light] .toast.warning{background:linear-gradient(90deg,rgba(255,149,0,.08) 0%,var(--surface) 20%)}[data-theme=light] .toast.error{background:linear-gradient(90deg,rgba(255,59,48,.08) 0%,var(--surface) 20%)}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:500;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);transition:all .15s ease}.status-pill:hover{background:#ffffff14;border-color:#ffffff26;transform:scale(1.02)}.stack{display:grid;gap:12px}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab-panel{margin-top:12px}.sidebar{display:grid;gap:8px;min-width:220px;align-content:start;align-items:start}.sidebar .btn{width:100%;text-align:left}.split{display:flex;gap:16px}.split .pane{flex:1}.split .pane.sidebar{flex:0 0 260px}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding:12px 0;gap:12px;flex-wrap:wrap}.pagination-info{font-size:14px;color:var(--muted)}.pagination .inline{display:flex;gap:4px;align-items:center}.pagination .btn{min-width:70px;padding:8px 12px}.pagination-jump{width:80px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--on-surface);font-size:14px;text-align:center;transition:all .2s ease}.pagination-jump:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #7aa2f71a}.pagination-jump:disabled{opacity:.5;cursor:not-allowed}.pagination-jump::-webkit-inner-spin-button,.pagination-jump::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pagination-jump[type=number]{-moz-appearance:textfield}.badge{display:inline-block;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:600;background:#7aa2f726;border:1px solid rgba(122,162,247,.25);color:var(--primary);transition:all .15s ease}.badge:hover{background:#7aa2f740;border-color:#7aa2f766;transform:scale(1.05)}.icon{display:inline-block;width:1.4em;height:1.4em;vertical-align:middle;object-fit:contain}.icon--small{width:1.2em;height:1.2em}.icon--large{width:1.6em;height:1.6em}svg{max-width:2em;max-height:2em}svg[width],svg[height]{width:1.4em!important;height:1.4em!important}.btn .icon{margin:0;transition:transform .2s ease}.icon-rotate{transform:scaleX(-1);transform-origin:center}.btn:hover .icon{transform:translateY(-1px)}.responsive-table{width:100%;border-collapse:collapse;transition:box-shadow .2s ease}.responsive-table tbody tr{animation:fadeInUp .2s ease}.responsive-table tbody tr:nth-child(2n){background:#ffffff05}.responsive-table td,.responsive-table th{padding:8px 12px;text-align:left}.table-wrapper{overflow-x:auto;border-radius:12px}.table-wrapper::-webkit-scrollbar{height:8px}.table-wrapper::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:999px}.animate-fade-in{animation:fadeInUp .2s ease}.table-badge{display:inline-flex;align-items:center;gap:4px}.inline{display:inline-flex;align-items:center;gap:6px}.text-info{color:var(--primary)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes glow{0%,to{box-shadow:0 0 8px #7aa2f74d}50%{box-shadow:0 0 16px #7aa2f780}}@media(max-width:900px){.split{flex-direction:column}.split .pane.sidebar{display:none}.field.mobile-instance-select{display:grid;margin-bottom:12px}}@media(max-width:640px){.appbar__inner{flex-direction:column;align-items:stretch;gap:12px;padding:0}.appbar__actions{width:100%;justify-content:flex-start}.appbar__title{gap:8px}.nav{gap:6px}.nav button{flex:1 1 calc(50% - 6px);justify-content:center}}@media(max-width:420px){.nav button{flex-basis:100%}}@media(max-width:720px){.responsive-table thead{display:none}.responsive-table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:100%}.responsive-table tbody tr{background:#12151ab3;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px;margin-bottom:8px;box-shadow:0 4px 12px #0003;user-select:none;-webkit-user-select:none;-moz-user-select:none}.responsive-table td{padding:4px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;border:none;font-size:14px;line-height:1.4}.responsive-table td:before{content:attr(data-label);font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;min-width:80px}.table-wrapper{overflow:visible}.episodes-table thead{display:none}.episodes-table,.episodes-table tbody,.episodes-table tr,.episodes-table td{display:block;width:100%}.episodes-table tbody tr{background:#12151ab3;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px;margin-bottom:8px;box-shadow:0 4px 12px #0003}.episodes-table td{padding:4px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;border:none;font-size:14px;line-height:1.4}.episodes-table td:before{content:attr(data-label);font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;min-width:80px}.episodes-table-wrapper{overflow:visible}.tracks-table thead{display:none}.tracks-table,.tracks-table tbody,.tracks-table tr,.tracks-table td{display:block;width:100%}.tracks-table tbody tr{background:#12151ab3;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px;margin-bottom:8px;box-shadow:0 4px 12px #0003}.tracks-table td{padding:4px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;border:none;font-size:14px;line-height:1.4}.tracks-table td:before{content:attr(data-label);font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;min-width:80px}.tracks-table-wrapper{overflow:visible}}.process-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.process-section{display:grid;gap:12px}.process-section+.process-section{margin-top:12px}.process-section__title{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--primary);padding:0 4px;display:inline-flex;align-items:center;gap:10px}.process-section__title:before{content:"";width:4px;height:18px;background:linear-gradient(180deg,var(--primary),var(--primary-variant));border-radius:3px;box-shadow:0 0 8px #7aa2f74d}.process-card{border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:18px;display:flex;flex-direction:column;gap:14px;transition:all .15s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;box-shadow:0 2px 8px #0000000f}[data-theme=dark] .process-card{background:#ffffff08;box-shadow:0 2px 8px #0003}.process-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--primary-variant));opacity:0;transition:opacity .15s ease}.process-card:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at top right,rgba(122,162,247,.05),transparent 60%);opacity:0;transition:opacity .15s ease;pointer-events:none}.process-card:hover{border-color:#7aa2f766;transform:translateY(-3px);box-shadow:0 12px 32px #0000001f}[data-theme=dark] .process-card:hover{box-shadow:0 8px 24px #00000059}.process-card:hover:before,.process-card:hover:after{opacity:1}.process-card__header{position:relative;display:flex;justify-content:space-between;align-items:flex-start;gap:8px;flex-wrap:wrap;padding-right:18px}.process-card__name{font-weight:700;font-size:17px;letter-spacing:-.01em;line-height:1.3}.process-card__title{display:grid;gap:4px;min-width:0}.process-card__summary{font-size:12px;color:var(--muted)}.process-card__badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.process-card__badge{padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;background:#7aa2f726;border:1px solid rgba(122,162,247,.3);color:var(--primary);transition:all .15s ease}.process-card__badge:hover{background:#7aa2f740;border-color:#7aa2f780;transform:scale(1.05)}.status-indicator{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:#99a2ad99;box-shadow:0 0 6px #00000059;transition:all .2s ease}.status-indicator--ok{background:var(--success);box-shadow:0 0 12px #22c55e80;animation:pulse 1.5s ease-in-out infinite}.status-indicator--bad{background:var(--danger);box-shadow:0 0 12px #ef444480;animation:pulse 1s ease-in-out infinite}.process-card__footer{display:flex;justify-content:flex-end;margin-top:auto}.process-card__list{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.process-chip{display:grid;gap:10px;border:1px solid var(--border);border-radius:10px;padding:12px 14px;background:var(--bg);transition:all .15s ease}[data-theme=dark] .process-chip{border:1px solid rgba(255,255,255,.08);background:#0f131a99}.process-chip:hover{border-color:#7aa2f74d;transform:translate(2px)}[data-theme=dark] .process-chip:hover{background:#0f131acc;border-color:#7aa2f733}[data-theme=light] .process-chip:hover{background:#00000005}.process-chip__top{display:flex;justify-content:space-between;align-items:center;gap:10px}.process-chip__name{font-weight:600;font-size:14px}.process-chip__actions{display:flex;justify-content:flex-end}.process-chip .btn{padding:6px 10px}.process-chip__detail{margin-top:6px;font-size:12px;color:var(--muted);line-height:1.35}.process-chip__detail-time{font-style:italic;color:var(--muted)}.status-pill__dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block;margin-right:6px}.status-pill--ok{border-color:#22c55e66;background:linear-gradient(135deg,#22c55e26,#22c55e14);color:var(--success);box-shadow:0 2px 8px #22c55e26}.status-pill--bad{border-color:#ef444466;background:linear-gradient(135deg,#ef444426,#ef444414);color:var(--danger);box-shadow:0 2px 8px #ef444426}[data-theme=light] .status-pill--ok{background:linear-gradient(135deg,#34c7591f,#34c7590f)}[data-theme=light] .status-pill--bad{background:linear-gradient(135deg,#ff3b301f,#ff3b300f)}.empty-state{border:2px dashed rgba(122,162,247,.25);border-radius:16px;padding:40px 32px;text-align:center;color:var(--muted);background:linear-gradient(135deg,#7aa2f708,#7aa2f703);transition:all .2s ease;position:relative;overflow:hidden}.empty-state:before{content:"";position:absolute;top:50%;left:50%;width:100px;height:100px;background:radial-gradient(circle,rgba(122,162,247,.08),transparent);transform:translate(-50%,-50%);border-radius:50%;opacity:0;transition:opacity .2s ease}.empty-state:hover{border-color:#7aa2f766;background:linear-gradient(135deg,#7aa2f70d,#7aa2f705)}.empty-state:hover:before{opacity:1}[data-theme=light] .empty-state{border-color:#0071e340;background:linear-gradient(135deg,rgba(0,113,227,.02) 0%,transparent 100%)}[data-theme=light] .empty-state:before{background:radial-gradient(circle,rgba(0,113,227,.06),transparent)}[data-theme=light] .empty-state:hover{border-color:#0071e366;background:linear-gradient(135deg,#0071e30a,#0071e303)}.config-card{border:1px solid var(--border);border-radius:12px;background:var(--surface)}.config-card summary{cursor:pointer;font-weight:600;color:var(--muted);list-style:none;outline:none;padding:12px 14px;border-bottom:1px solid var(--border)}.config-card summary::-webkit-details-marker{display:none}.config-card summary:before{content:">";display:inline-block;margin-right:8px;transition:transform .2s ease}.config-card[open] summary:before{transform:rotate(0)}.config-card:not([open]) summary:before{transform:rotate(-90deg)}.config-card>.card-body{display:grid;gap:12px}.config-summary-card{display:flex;flex-direction:column;gap:12px;min-height:160px;transition:transform .2s ease,box-shadow .2s ease}.config-summary-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0000004d}.config-summary-card p{margin:0;color:var(--muted);line-height:1.4}.config-layout{display:grid;gap:16px}.config-actions{display:flex;flex-wrap:wrap;gap:8px}.config-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.config-arr-groups{display:flex;flex-direction:column;gap:24px}.config-arr-group{display:flex;flex-direction:column;gap:12px}.config-arr-group__details{border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:16px 18px;background:#ffffff08;box-shadow:0 2px 8px #0003}.config-arr-group__details summary{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;font-weight:600;font-size:15px;color:var(--on-surface);list-style:none;transition:color .2s ease}.config-arr-group__details summary:hover{color:var(--primary)}.config-arr-group__details summary::-webkit-details-marker{display:none}.config-arr-group__details[open] summary{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.06)}.config-arr-group__count{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;background:#7aa2f726;border:1px solid rgba(122,162,247,.3);color:var(--primary)}.config-arr-group__title{margin:0;font-size:14px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.config-arr-grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));margin-top:4px}.config-arr-grid .card-body{display:flex;flex-direction:column;gap:12px}.config-arr-card{min-height:220px;transition:transform .2s ease,box-shadow .2s ease}.config-arr-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0000004d}.config-arr-summary{display:grid;gap:8px;margin:0}.config-arr-summary__item{display:grid;gap:2px}.config-arr-summary__item dt{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.config-arr-summary__item dd{margin:0;color:var(--on-surface);font-weight:500;font-size:13px}.config-arr-summary__uri{word-break:break-all}.config-arr-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.config-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.field-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.modal .field-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}@media(max-width:720px){.modal .field-grid{grid-template-columns:minmax(0,1fr)}}.field-label{display:flex;align-items:center;gap:6px;font-weight:600;color:var(--muted)}.checkbox-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.checkbox-field label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:600;color:var(--on-surface)}.checkbox-field input{margin:0;flex-shrink:0;cursor:pointer}.checkbox-field__content{display:flex;flex-direction:column;gap:6px;max-width:100%}.checkbox-field__text{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--muted);line-height:1.4}.secure-field{gap:8px}.secure-field__input-group{display:flex;align-items:center;gap:8px}.secure-field__input-group input{flex:1}.secure-field__controls{display:flex;gap:6px}.secure-field__controls .btn{padding:6px 10px}.help-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:11px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:#ffffff14;color:var(--muted);cursor:help;transition:border-color .2s ease,color .2s ease}.help-icon:hover{border-color:var(--primary);color:var(--on-surface)}.config-section{border:1px solid rgba(255,255,255,.05);border-radius:10px;padding:8px 12px;background:#ffffff05}.config-section summary{cursor:pointer;font-weight:600;color:var(--muted);list-style:none;outline:none}.config-section summary::-webkit-details-marker{display:none}.config-section summary:before{content:">";display:inline-block;margin-right:8px;transition:transform .2s ease}.config-section[open] summary:before{transform:rotate(0)}.config-section:not([open]) summary:before{transform:rotate(-90deg)}.config-section__body{margin-top:12px}.modal-backdrop{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow-y:auto;overflow-x:hidden;z-index:120;animation:fadeIn .2s ease}[data-theme=dark] .modal-backdrop{background:#000000bf}[data-theme=light] .modal-backdrop{background:#0000004d}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border:1px solid var(--border);border-radius:20px;width:min(840px,calc(100% - 48px));max-height:min(92vh,calc(100vh - 80px));display:flex;flex-direction:column;margin:40px auto;box-shadow:0 24px 64px #0003,0 8px 16px #0000001a;animation:modalSlideIn .2s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}[data-theme=dark] .modal{background:#1b1e22f2;border:1px solid rgba(255,255,255,.1);box-shadow:0 20px 60px #0009,0 0 0 1px #ffffff0d}[data-theme=light] .modal{background:#fffffff2}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{padding:20px 24px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;align-items:center;gap:12px;background:#ffffff05;border-radius:16px 16px 0 0}.modal-header h2{margin:0;font-size:20px;font-weight:600;color:var(--on-surface);letter-spacing:-.01em}.modal-body{padding:24px;overflow-y:auto;overflow-x:hidden;display:grid;gap:20px}.modal-footer{padding:16px 24px 20px;border-top:1px solid rgba(255,255,255,.08);display:flex;justify-content:flex-end;gap:12px;background:#ffffff03;border-radius:0 0 16px 16px}.changelog-modal__body{gap:12px}.changelog-meta{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.changelog-meta strong{color:var(--on-surface)}.changelog-body{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px;max-height:360px;overflow-y:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.5;white-space:pre-wrap;transition:border-color .15s ease}[data-theme=dark] .changelog-body{background:#0f131a}.changelog-body:hover{border-color:#7aa2f74d}.changelog-body::-webkit-scrollbar{width:10px}.changelog-body::-webkit-scrollbar-track{background:#0003;border-radius:6px}.changelog-body::-webkit-scrollbar-thumb{background:#7aa2f74d;border-radius:6px}.changelog-body::-webkit-scrollbar-thumb:hover{background:#7aa2f780}.changelog-links{margin-right:auto;display:flex;align-items:center;gap:8px}.changelog-buttons{display:flex;align-items:center;gap:8px}.tracker-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.tracker-card.card{background:#ffffff08;border-color:#ffffff14}.profile-mappings-grid{display:flex;flex-direction:column;gap:12px}.profile-mapping-row{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}.profile-mapping-row .field{margin:0}.profile-mapping-row .btn.icon-only{height:38px;width:38px;padding:0;display:flex;align-items:center;justify-content:center}.tracker-card .card-header{display:flex;justify-content:space-between;align-items:center;gap:12px;font-weight:600;color:var(--on-surface)}.tracker-card .card-body{padding-top:0}.tracker-card .field-grid{grid-template-columns:minmax(0,1fr)}.keyboard-hint{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:600;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:var(--muted);font-family:monospace}.skeleton{background:linear-gradient(90deg,var(--surface) 0%,rgba(122,162,247,.1) 50%,var(--surface) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:6px}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-table{display:flex;flex-direction:column;gap:8px;padding:16px}.skeleton-table-header{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:12px;margin-bottom:8px}.skeleton-header{height:24px}.skeleton-table-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.skeleton-cell{height:20px}.skeleton-card{padding:20px;background:var(--surface);border-radius:12px;border:1px solid var(--border)}.skeleton-title{height:28px;width:60%;margin-bottom:16px}.skeleton-text{height:16px;margin-bottom:12px}.skeleton-text:last-of-type{width:80%}.skeleton-button{height:40px;width:120px;margin-top:16px;border-radius:8px}.skeleton-text-group{display:flex;flex-direction:column;gap:12px}[data-density=compact] .responsive-table td,[data-density=compact] .responsive-table th{padding:4px 8px;font-size:12px;line-height:1.3}[data-density=compact] .responsive-table{font-size:12px}[data-density=compact] .episodes-table td,[data-density=compact] .episodes-table th{padding:4px 8px;font-size:12px}[data-density=compact] .card{padding:12px;border-radius:8px}[data-density=compact] .card-header{font-size:16px;padding:8px 12px;margin-bottom:8px}[data-density=compact] .card-body{padding:8px 12px}[data-density=compact] .btn{padding:4px 10px;font-size:12px;min-height:28px}[data-density=compact] .btn.small{padding:3px 8px;font-size:11px;min-height:24px}[data-density=compact] .field{margin-bottom:8px}[data-density=compact] .field label{font-size:11px;margin-bottom:2px}[data-density=compact] .field input,[data-density=compact] .field select,[data-density=compact] .field textarea{padding:4px 8px;font-size:12px;min-height:28px}[data-density=compact] .hint{font-size:11px;line-height:1.4}[data-density=compact] .stack{gap:8px}[data-density=compact] .row{gap:6px}[data-density=compact] .table-badge{padding:1px 4px;font-size:10px}[data-density=compact] .table-badge-reason{font-size:9px}[data-density=compact] .container{padding:12px}[data-density=compact] .nav{gap:4px;padding:8px 0}[data-density=compact] .nav button{padding:6px 12px;font-size:12px;gap:6px}[data-density=compact] .pagination{margin-top:8px;padding:8px 0;font-size:12px}[data-density=compact] .season-header{padding:8px 12px;font-size:13px}[data-density=compact] .season-content{padding:8px}[data-density=compact] .series-card{margin-bottom:12px}[data-density=compact] .field-grid{gap:8px}[data-density=compact] h2{font-size:18px;margin-bottom:12px}[data-density=compact] h3{font-size:14px;margin-bottom:8px}[data-density=compact] .modal{padding:16px}[data-density=compact] .modal-header{padding:12px 16px;margin-bottom:12px}[data-density=compact] .modal-body{padding:12px 16px}[data-density=compact] .modal-footer{padding:12px 16px;gap:8px}[data-density=compact] .process-grid{gap:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}[data-density=compact] .process-section{gap:8px}[data-density=compact] .process-section+.process-section{margin-top:8px}[data-density=compact] .process-section__title{font-size:11px;padding:0 2px;gap:6px}[data-density=compact] .process-section__title:before{width:3px;height:14px}[data-density=compact] .process-card{padding:10px;gap:8px;border-radius:10px}[data-density=compact] .process-card__header{padding-right:14px;gap:6px}[data-density=compact] .process-card__name{font-size:14px}[data-density=compact] .process-card__summary{font-size:11px}[data-density=compact] .process-card__badges{gap:4px;margin-top:2px}[data-density=compact] .process-card__badge{padding:2px 6px;font-size:10px}[data-density=compact] .process-card__list{gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}[data-density=compact] .process-chip{gap:6px;padding:8px 10px;border-radius:8px}[data-density=compact] .process-chip__top{gap:6px}[data-density=compact] .process-chip__name{font-size:12px}[data-density=compact] .process-chip__detail{margin-top:4px;font-size:11px;line-height:1.3}[data-density=compact] .process-chip .btn{padding:3px 8px;font-size:11px}[data-density=compact] .status-indicator{width:10px;height:10px}[data-density=compact] .status-pill{padding:3px 8px;font-size:11px;gap:4px}[data-density=compact] .status-pill__dot{width:5px;height:5px;margin-right:4px}[data-density=compact] .config-card{border-radius:10px}[data-density=compact] .config-card summary{padding:8px 10px;font-size:13px}[data-density=compact] .config-card summary:before{margin-right:6px}[data-density=compact] .config-card>.card-body{gap:8px}[data-density=compact] .config-summary-card{gap:8px;min-height:120px}[data-density=compact] .config-summary-card p{font-size:12px;line-height:1.3}[data-density=compact] .config-layout{gap:10px}[data-density=compact] .config-actions{gap:6px}[data-density=compact] .config-grid{gap:12px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}[data-density=compact] .config-arr-groups{gap:16px}[data-density=compact] .config-arr-group{gap:8px}[data-density=compact] .config-arr-group__details{padding:10px 12px;border-radius:10px}[data-density=compact] .config-arr-group__details summary{gap:8px;font-size:13px}[data-density=compact] .config-arr-group__details[open] summary{margin-bottom:10px;padding-bottom:8px}[data-density=compact] .config-arr-group__count{padding:3px 8px;font-size:11px}[data-density=compact] .config-arr-group__title{font-size:12px}[data-density=compact] .config-arr-grid{gap:12px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-top:2px}[data-density=compact] .config-arr-grid .card-body{gap:8px}[data-density=compact] .config-arr-card{min-height:160px}[data-density=compact] .config-arr-summary{gap:6px}[data-density=compact] .config-arr-summary__item{gap:1px}[data-density=compact] .config-arr-summary__item dt{font-size:10px}[data-density=compact] .config-arr-summary__item dd{font-size:12px}[data-density=compact] .config-arr-actions{gap:6px}[data-density=compact] .config-footer{gap:8px}[data-density=compact] .config-section{padding:6px 10px;border-radius:8px}[data-density=compact] .config-section summary{font-size:13px}[data-density=compact] .config-section summary:before{margin-right:6px}[data-density=compact] .config-section__body{margin-top:8px}[data-density=compact] .field-description,[data-density=compact] .field-hint{font-size:11px;line-height:1.3;margin-top:2px}[data-density=compact] .field-description{margin-top:1px}[data-density=compact] .field-hint{margin-top:3px}[data-density=compact] .field-label{gap:4px;font-size:11px}[data-density=compact] .checkbox-field{gap:4px;font-size:12px}[data-density=compact] .checkbox-field label{gap:6px}[data-density=compact] .checkbox-field__content{gap:4px}[data-density=compact] .checkbox-field__text{gap:4px;line-height:1.3;font-size:12px}[data-density=compact] .secure-field,[data-density=compact] .secure-field__input-group{gap:6px}[data-density=compact] .secure-field__controls{gap:4px}[data-density=compact] .secure-field__controls .btn{padding:4px 8px}[data-density=compact] .help-icon{width:14px;height:14px;font-size:10px}[data-density=compact] .badge{padding:2px 6px;border-radius:5px;font-size:10px}[data-density=compact] .empty-state{padding:24px 20px;border-radius:12px;font-size:13px}[data-density=compact] .tracker-grid{gap:10px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}[data-density=compact] .tracker-card .card-header{gap:8px;font-size:13px}[data-density=compact] .tracker-card .card-body{padding-top:0}[data-density=compact] .keyboard-hint{gap:3px;padding:2px 5px;border-radius:3px;font-size:9px}[data-density=compact] .changelog-modal__body{gap:8px}[data-density=compact] .changelog-meta{gap:4px;font-size:12px}[data-density=compact] .changelog-body{padding:10px;max-height:280px;font-size:12px;line-height:1.4}[data-density=compact] .changelog-links,[data-density=compact] .changelog-buttons{gap:6px}[data-density=compact] details{margin:4px 0}[data-density=compact] details summary{padding:3px;border-radius:5px}[data-density=compact] .series-details,[data-density=compact] .season-details{border-radius:5px}[data-density=compact] .series-summary,[data-density=compact] .season-summary{padding:8px 12px;font-size:13px;border-radius:5px 5px 0 0}[data-density=compact] .series-title{font-size:1em}[data-density=compact] .series-instance{font-size:.85em}[data-density=compact] .season-title{font-size:.95em}[data-density=compact] .season-count{font-size:.85em}[data-density=compact] .series-content,[data-density=compact] .season-content{padding:6px}[data-density=compact] pre{padding:10px;max-height:320px;border-radius:10px;font-size:12px}[data-density=compact] .icon{width:1.2em;height:1.2em}[data-density=compact] .icon--small{width:1em;height:1em}[data-density=compact] .icon--large{width:1.4em;height:1.4em}[data-density=compact] svg[width],[data-density=compact] svg[height]{width:1.2em!important;height:1.2em!important}[data-density=compact] .spinner{width:12px;height:12px;border-width:2px}[data-density=compact] .loading{gap:6px;font-size:12px}[data-density=compact] .toasts{gap:8px;right:12px;bottom:12px}[data-density=compact] .toast{padding:8px 12px;border-radius:8px;min-width:220px;font-size:12px}[data-density=compact] .logs-container{height:calc(100vh - 110px)}[data-density=compact] .logs-toolbar{margin-bottom:8px;gap:8px}[data-density=compact] .logs-toolbar .field{margin-bottom:0}[data-density=compact] .logs-toolbar label{font-size:11px;margin-bottom:2px}[data-density=compact] .logs-toolbar .btn{padding:4px 10px;font-size:12px}[data-density=compact] .logs-content{padding:10px;border-radius:8px}[data-density=compact] .logs-content pre{font-size:11px;line-height:1.4}[data-density=compact] .badge{padding:2px 6px;font-size:10px}[data-density=comfortable] .responsive-table td,[data-density=comfortable] .responsive-table th{padding:12px 16px}.view-density-toggle{display:flex;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:4px}.view-density-toggle button{padding:6px 12px;border:none;background:transparent;color:var(--muted);border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.view-density-toggle button:hover{color:var(--on-surface);background:#7aa2f71a}.view-density-toggle button.active{background:var(--primary);color:#fff}[data-density=compact] .css-13cymwt-control,[data-density=compact] .css-t3ipsp-control,[data-density=compact] .css-15evc9m-control,[data-density=compact] .css-hlgwow,[data-density=compact] [class*=-control]{min-height:32px!important;height:32px!important;font-size:12px!important}[data-density=compact] .css-hlgwow,[data-density=compact] [class*=-ValueContainer]{padding:2px 8px!important;font-size:12px!important}[data-density=compact] .css-1dimb5e-singleValue,[data-density=compact] .css-1jxntwc-singleValue,[data-density=compact] [class*=-singleValue]{font-size:12px!important;line-height:1.4!important}[data-density=compact] .css-1u3zge7,[data-density=compact] [class*=-Input]{padding:0!important;margin:0!important}[data-density=compact] .css-1u3zge7 input,[data-density=compact] [class*=-Input] input{font-size:12px!important;padding:0!important;margin:0!important}[data-density=compact] .css-1nmdiq5-menu,[data-density=compact] [class*=-menu]{font-size:12px!important}[data-density=compact] .css-1n6sfyn-MenuList,[data-density=compact] [class*=-MenuList]{padding:4px!important}[data-density=compact] .css-10wo9uf-option,[data-density=compact] [class*=-option]{padding:6px 10px!important;font-size:12px!important}[data-density=compact] .css-1wy0on6,[data-density=compact] [class*=-indicatorsContainer]{padding:0 4px!important}[data-density=compact] .css-1u9des2-indicatorSeparator,[data-density=compact] [class*=-indicatorSeparator]{margin-top:6px!important;margin-bottom:6px!important}[data-density=compact] .css-1hwfws3,[data-density=compact] .css-1xc3v61-indicatorContainer,[data-density=compact] [class*=-indicatorContainer]{padding:4px!important}[data-density=compact] .css-1xc3v61-indicatorContainer svg,[data-density=compact] [class*=-indicatorContainer] svg{width:16px!important;height:16px!important}[data-density=compact] .appbar{padding:6px 12px!important}[data-density=compact] .appbar__inner{padding:0 6px!important;gap:8px!important}[data-density=compact] .appbar__title{gap:6px!important}[data-density=compact] .appbar__title h1{font-size:15px!important;margin:0!important}[data-density=compact] .appbar__version{font-size:9px!important;padding:2px 5px!important;letter-spacing:.3px!important}[data-density=compact] .appbar__status{font-size:10px!important}[data-density=compact] .appbar__update{padding:4px 8px!important;font-size:10px!important;gap:3px!important}[data-density=compact] .appbar__update-indicator{width:5px!important;height:5px!important}[data-density=compact] .appbar__actions{gap:6px!important}[data-density=compact] .appbar__actions button,[data-density=compact] .appbar__actions a.btn{padding:4px 8px!important;font-size:10px!important;gap:4px!important}[data-density=compact] .appbar__actions .icon{width:14px!important;height:14px!important}[data-density=compact] .appbar__actions .badge{padding:2px 6px!important;font-size:9px!important}[data-density=compact] .spinner{width:11px!important;height:11px!important;border-width:2px!important}[data-density=compact] .view-density-toggle{padding:2px!important;gap:2px!important;border-radius:6px!important}[data-density=compact] .view-density-toggle button{padding:4px 8px!important;font-size:10px!important;border-radius:4px!important}.version-comparison{display:flex;align-items:center;gap:12px;padding:12px;background:#7aa2f70d;border:1px solid rgba(122,162,247,.2);border-radius:8px;margin-bottom:12px}.version-item{display:flex;align-items:center;gap:6px}.version-arrow{color:var(--primary);font-size:18px;font-weight:700}.version-badge{padding:4px 10px;border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px;font-weight:600}.version-current{background:#9aa3ac26;border:1px solid rgba(154,163,172,.3);color:var(--muted)}.version-latest{background:#7aa2f726;border:1px solid rgba(122,162,247,.3);color:var(--primary)}.update-status{padding:10px 14px;border-radius:8px;font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px}.update-status.text-info{background:#3b82f61a;border:1px solid rgba(59,130,246,.3);color:#3b82f6}.update-status.text-success{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);color:#22c55e}.update-status.text-danger{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444}.changelog-section{display:flex;flex-direction:column;gap:8px}.changelog-section h3{margin:0;font-size:14px;font-weight:600;color:var(--on-surface)}[data-theme=light] .version-comparison{background:#0071e30d;border-color:#0071e326}[data-theme=light] .version-latest{background:#0071e31a;border-color:#0071e340}[data-density=compact] .version-comparison{padding:8px;gap:8px;font-size:12px}[data-density=compact] .version-badge{padding:3px 8px;font-size:11px}[data-density=compact] .version-arrow{font-size:14px}[data-density=compact] .update-status{padding:8px 12px;font-size:12px}[data-density=compact] .changelog-section h3{font-size:13px}.react-lazylog-searchbar{background:var(--surface)!important;border-bottom:1px solid var(--border)!important;padding:8px 12px!important}[data-theme=dark] .react-lazylog-searchbar{background:#0f131a!important}.react-lazylog-searchbar-input{background:var(--bg)!important;color:var(--on-surface)!important;border:1px solid var(--border)!important;border-radius:6px!important;padding:6px 10px!important;font-size:13px!important}[data-theme=dark] .react-lazylog-searchbar-input{background:#12151a!important}.react-lazylog-searchbar-input:focus{outline:none!important;border-color:var(--primary)!important;box-shadow:0 0 0 2px #7aa2f71a!important}[data-theme=light] .react-lazylog-searchbar-input:focus{box-shadow:0 0 0 2px #0071e31a!important}.react-lazylog-searchbar-input::placeholder{color:var(--muted)!important}.react-lazylog-searchbar-matches{color:var(--muted)!important;font-size:12px!important}.react-lazylog-searchbar-filter,.react-lazylog-searchbar-up-arrow,.react-lazylog-searchbar-down-arrow{background:transparent!important;border:1px solid var(--border)!important;border-radius:6px!important;padding:6px!important;cursor:pointer!important;transition:all .15s ease!important}.react-lazylog-searchbar-filter:hover,.react-lazylog-searchbar-up-arrow:hover,.react-lazylog-searchbar-down-arrow:hover{background:#7aa2f71a!important;border-color:var(--primary)!important}[data-theme=light] .react-lazylog-searchbar-filter:hover,[data-theme=light] .react-lazylog-searchbar-up-arrow:hover,[data-theme=light] .react-lazylog-searchbar-down-arrow:hover{background:#0071e314!important}.react-lazylog-searchbar-filter svg,.react-lazylog-searchbar-up-arrow svg,.react-lazylog-searchbar-down-arrow svg{fill:var(--on-surface)!important;width:16px!important;height:16px!important}.react-lazylog-searchbar-filter.inactive,.react-lazylog-searchbar-up-arrow.inactive,.react-lazylog-searchbar-down-arrow.inactive{opacity:.5!important;cursor:not-allowed!important}.react-lazylog-searchbar-matches.inactive{opacity:.5!important}.test-connection-section{margin:16px 0;padding:16px;background:#ffffff05;border:1px solid var(--border-color);border-radius:4px}.field-group-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.field-hint{font-size:.85em;color:var(--text-secondary);font-style:italic}.alert{padding:12px 16px;border-radius:4px;margin-top:12px;line-height:1.5}.alert.success{background:#4caf501a;border:1px solid rgba(76,175,80,.3);color:#66bb6a}[data-theme=light] .alert.success{background:#4caf5014;border-color:#4caf5066;color:#388e3c}.alert.error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:#ef5350}[data-theme=light] .alert.error{background:#f4433614;border-color:#f4433666;color:#d32f2f}.alert.info{background:#2196f31a;border:1px solid rgba(33,150,243,.3);color:#42a5f5}[data-theme=light] .alert.info{background:#2196f314;border-color:#2196f366;color:#1976d2}.alert.warning{background:#ffc1071a;border:1px solid rgba(255,193,7,.3);color:#ffb74d}[data-theme=light] .alert.warning{background:#ffc10714;border-color:#ffc10766;color:#f57c00}.alert-details{font-size:.9em;margin-top:6px;opacity:.9}.alert strong{font-weight:600}
|
|
1
|
+
:root,[data-theme=dark]{--bg: #101114;--surface: #1b1e22;--on-surface: #eaeef2;--muted: #9aa3ac;--primary: #7aa2f7;--primary-variant: #3b82f6;--success: #22c55e;--danger: #ef4444;--warning: #facc15;--border: #2a2f36;--elev: 8px;--layout-max-width: 1200px}[data-theme=light]{--bg: #f5f5f7;--surface: #ffffff;--on-surface: #1d1d1f;--muted: #6e6e73;--primary: #0071e3;--primary-variant: #0077ed;--success: #34c759;--danger: #ff3b30;--warning: #ff9500;--border: #d2d2d7;--elev: 4px;--layout-max-width: 1200px}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;margin:0;background:var(--bg);color:var(--on-surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1;font-kerning:normal}*::-webkit-scrollbar{width:12px;height:12px}*::-webkit-scrollbar-track{background:#0003;border-radius:6px}*::-webkit-scrollbar-thumb{background:#7aa2f74d;border-radius:6px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#7aa2f780;background-clip:padding-box}.appbar{position:sticky;top:0;z-index:100;display:flex;justify-content:center;padding:16px 20px;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:0 2px 16px #0000000f;backdrop-filter:blur(12px) saturate(180%);-webkit-backdrop-filter:blur(12px) saturate(180%)}[data-theme=light] .appbar{background:#fffc}[data-theme=dark] .appbar{background:linear-gradient(180deg,#0b0c0ff2,#0d0e11f2);box-shadow:0 4px 16px #0006}.appbar__inner{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 16px;flex-wrap:wrap}.appbar__title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.appbar h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-.02em;background:linear-gradient(135deg,var(--on-surface) 0%,var(--primary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.appbar__logo{width:42px;height:42px;object-fit:contain;image-rendering:auto;flex-shrink:0;user-select:none;-webkit-user-select:none;-moz-user-select:none;pointer-events:none}[data-theme=light] .appbar h1{background:linear-gradient(135deg,var(--on-surface) 0%,var(--primary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.appbar__version{font-size:12px;color:var(--muted);letter-spacing:.4px}.appbar__status{font-size:12px}.appbar__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.appbar__update{display:inline-flex;align-items:center;gap:6px}.appbar__update-indicator{width:8px;height:8px;border-radius:50%;background:var(--danger);display:inline-block;animation:pulse 1s ease-in-out infinite;box-shadow:0 0 8px #ef444499}.container{padding:20px;display:grid;grid-template-columns:1fr;gap:20px;animation:fadeInUp .3s ease}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--muted)}.nav{display:flex;gap:8px;flex-wrap:wrap;width:100%}.nav button{color:var(--muted);background:transparent;border:1px solid var(--border);padding:10px 14px;display:inline-flex;align-items:center;gap:8px;border-radius:8px;cursor:pointer;font-weight:500;transition:all .15s ease;position:relative;overflow:hidden}.nav button:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(122,162,247,.1),transparent);opacity:0;transition:opacity .15s ease}.nav button .icon{width:1.4em;height:1.4em;transition:transform .15s ease}.nav button:hover .icon{transform:scale(1.1)}.nav button.active{color:var(--primary);border-color:var(--primary);background:#7aa2f71f;box-shadow:0 0 0 2px #7aa2f71a,0 2px 8px #7aa2f733;font-weight:600}[data-theme=light] .nav button.active{box-shadow:0 0 0 2px #0071e31a,0 2px 8px #0071e333}.nav button:hover:not(.active){color:var(--on-surface);border-color:#7aa2f766;background:#7aa2f70f;transform:translateY(-1px)}.nav button:hover:before{opacity:1}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 2px 8px #00000014,0 1px 2px #0000000f;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;position:relative}[data-theme=dark] .card{box-shadow:0 var(--elev) 24px #00000040,0 2px 4px #0000004d}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(122,162,247,.1),transparent);opacity:0;transition:opacity .15s ease}.card:hover{transform:translateY(-2px);box-shadow:0 16px 40px #0000001f,0 4px 8px #00000014;border-color:#7aa2f74d}[data-theme=dark] .card:hover{box-shadow:0 12px 32px #00000059,0 4px 8px #0006}.card:hover:before{opacity:1}.card .card-header{padding:16px 20px;border-bottom:1px solid var(--border);font-weight:700;font-size:15px;letter-spacing:.01em;color:var(--on-surface);background:linear-gradient(180deg,#7aa2f70a,#7aa2f703);position:relative}[data-theme=light] .card .card-header{background:linear-gradient(180deg,rgba(0,113,227,.03) 0%,transparent 100%)}.card .card-header:after{content:"";position:absolute;bottom:0;left:20px;right:20px;height:1px;background:linear-gradient(90deg,transparent,var(--primary),transparent);opacity:.15}.card .card-body{padding:12px 14px}.btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--on-surface);padding:8px 14px;border-radius:8px;cursor:pointer;transition:all .15s ease;display:inline-flex;align-items:center;gap:6px;font-weight:500;position:relative;overflow:hidden}[data-theme=dark] .btn{background:#0f131a}.btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#ffffff1a,#fff0);opacity:0;transition:opacity .15s ease}.btn:hover:not(:disabled):before{opacity:1}.btn.primary{border-color:var(--primary-variant);background:linear-gradient(135deg,#7aa2f72e,#7aa2f71f);color:var(--primary);font-weight:600;box-shadow:0 2px 8px #7aa2f726}[data-theme=light] .btn.primary{background:linear-gradient(135deg,#0071e31f,#0071e314);box-shadow:0 2px 8px #0071e326}.btn.danger{border-color:#ef444466;color:var(--danger);background:#ef44441f}.btn.danger:hover:not(:disabled){background:var(--danger);color:#0a0a0a;border-color:var(--danger);box-shadow:0 4px 12px #ef44444d}.btn.primary:hover:not(:disabled){background:var(--primary);color:#0a0a0a;border-color:var(--primary);box-shadow:0 4px 12px #7aa2f74d}.btn.ghost{background:transparent}.btn.ghost:hover:not(:disabled){background:#ffffff0d;border-color:#7aa2f74d}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 3px 10px #0006}.btn:active:not(:disabled){transform:translateY(0)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px #7aa2f74d}[data-theme=light] .btn:focus-visible{box-shadow:0 0 0 3px #0071e34d}.nav button:focus-visible{outline:none;box-shadow:0 0 0 3px #7aa2f740}[data-theme=light] .nav button:focus-visible{box-shadow:0 0 0 3px #0071e340}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.small{padding:6px 10px;font-size:12px}.btn.outline{background:transparent;border-color:var(--border)}.btn.outline:hover:not(:disabled){background:#ffffff0d;border-color:var(--primary-variant)}.btn.active{background:var(--primary);color:#0a0a0a;border-color:var(--primary)}.field{display:flex;flex-direction:column;gap:6px}.field--full-width{grid-column:1 / -1}.sonarr-hierarchical-view{display:flex;flex-direction:column;gap:8px}.series-details,.season-details{border:1px solid var(--border);border-radius:6px;background:var(--card-bg)}.series-summary,.season-summary{padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;color:var(--text);background:var(--card-header-bg);border-radius:6px 6px 0 0;display:flex;align-items:center;justify-content:space-between;gap:8px}.series-summary:hover,.season-summary:hover{background:var(--hover-bg)}.series-title{font-size:1.1em;flex:1}.series-instance,.series-count,.series-quality,.artist-quality{font-size:.9em;color:var(--muted);font-weight:400;white-space:nowrap}.season-title{font-size:1em}.season-count{font-size:.9em;color:var(--muted);font-weight:400}.series-content,.season-content{padding:8px}.episodes-table-wrapper{overflow-x:auto}.episodes-table{width:100%;border-collapse:collapse;font-size:.9em}.episodes-table th,.episodes-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--border)}.episodes-table th{background:var(--table-header-bg);font-weight:600;color:var(--text);position:sticky;top:0}.episodes-table tr:hover{background:var(--hover-bg)}.lidarr-hierarchical-view{display:flex;flex-direction:column;gap:8px}.artist-details{border:1px solid var(--border);border-radius:6px;background:var(--card-bg)}.artist-summary{padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;color:var(--text);background:var(--card-header-bg);border-radius:6px 6px 0 0;display:flex;align-items:center;justify-content:space-between;gap:8px}.artist-summary:hover{background:var(--hover-bg)}.artist-title{font-size:1.1em;flex:1}.artist-instance,.artist-count{font-size:.9em;color:var(--muted);font-weight:400}.artist-content{padding:8px}.albums-table-wrapper{overflow-x:auto}.albums-table{width:100%;border-collapse:collapse;font-size:.9em}.albums-table th,.albums-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--border)}.albums-table th{background:var(--table-header-bg);font-weight:600;color:var(--text);position:sticky;top:0}.albums-table tr:hover{background:var(--hover-bg)}.album-details{border:1px solid var(--border);border-radius:4px;background:var(--surface);margin-bottom:8px}.album-summary{padding:10px 14px;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:500;color:var(--text);background:var(--card-header-bg);border-radius:4px 4px 0 0;display:flex;align-items:center;gap:12px}.album-summary:hover{background:var(--hover-bg)}.album-title{font-size:1em;flex:1}.album-date,.album-track-count{font-size:.85em;color:var(--muted);font-weight:400}.album-status{font-size:1.1em;font-weight:700}.album-status.has-file{color:var(--success)}.album-status.missing{color:var(--danger)}.album-content{padding:8px}.album-info{padding:8px 12px;font-size:.9em}.album-info p{margin:4px 0}.tracks-table-wrapper{overflow-x:auto}.tracks-table{width:100%;border-collapse:collapse;font-size:.85em;table-layout:fixed}.tracks-table th,.tracks-table td{padding:6px 10px;text-align:left;border-bottom:1px solid var(--border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tracks-table th:nth-child(1),.tracks-table td:nth-child(1){width:70px}.tracks-table th:nth-child(2),.tracks-table td:nth-child(2){width:auto;white-space:normal}.tracks-table th:nth-child(3),.tracks-table td:nth-child(3){width:100px}.tracks-table th:nth-child(4),.tracks-table td:nth-child(4){width:110px;text-align:center}.tracks-table th:nth-child(5),.tracks-table td:nth-child(5){width:180px}.tracks-table th{background:var(--table-header-bg);font-weight:600;color:var(--text);font-size:.9em}.tracks-table tr.track-available{opacity:1}.tracks-table tr.track-missing{opacity:.6}.tracks-table tr:hover{background:var(--hover-bg)}.track-status{display:inline-block;font-weight:700;font-size:1.1em}.track-status.available{color:var(--success)}.track-status.missing{color:var(--danger)}.table-badge{display:inline-block;padding:3px 8px;border-radius:6px;font-size:.8em;font-weight:600;border:1px solid transparent;transition:all .15s ease}.table-badge:hover{transform:scale(1.05)}.table-badge.monitored{background:#22c55e26;border-color:#22c55e4d;color:var(--success)}.table-badge.unmonitored{background:#facc1526;border-color:#facc154d;color:var(--warning)}.table-badge.has-file{background:#22c55e26;border-color:#22c55e4d;color:var(--success)}.table-badge.missing{background:#ef444426;border-color:#ef44444d;color:var(--danger)}.table-badge-reason{background:#facc1526;border-color:#facc154d;color:var(--warning);font-family:monospace;font-size:11px;font-weight:600}[data-theme=light] .table-badge-reason{background:#ff95001a;border-color:#ff95004d}.field label{color:var(--muted);font-size:12px}.field input,.field select,.field textarea{background:var(--surface);color:var(--on-surface);border:1px solid var(--border);border-radius:8px;padding:9px 12px;transition:all .15s ease}[data-theme=dark] .field input,[data-theme=dark] .field select,[data-theme=dark] .field textarea{background:#0f131a}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px #7aa2f71f,0 2px 8px #7aa2f726;background:var(--bg);transform:translateY(-1px)}[data-theme=light] .field input:focus,[data-theme=light] .field select:focus,[data-theme=light] .field textarea:focus{box-shadow:0 0 0 4px #0071e31a,0 2px 8px #0071e326}[data-theme=dark] .field input:focus,[data-theme=dark] .field select:focus,[data-theme=dark] .field textarea:focus{background:#12151a;box-shadow:0 0 0 4px #7aa2f71f,0 2px 8px #7aa2f733}.field input:hover:not(:focus),.field select:hover:not(:focus),.field textarea:hover:not(:focus){border-color:#7aa2f74d}.field input[type=checkbox]{width:auto}.field.mobile-instance-select{display:none}.field-description,.field-hint{display:block;margin:0;font-size:12px;line-height:1.35;color:var(--muted)}.field-description{margin-top:2px}.field-hint{color:var(--primary);font-weight:500;margin-top:4px}.row{display:flex;flex-wrap:wrap;gap:12px}.row .col{flex:1 1 260px}table{border-collapse:collapse;width:100%;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0000000a}[data-theme=dark] table{box-shadow:0 2px 8px #0003}th,td{border-bottom:1px solid var(--border);padding:10px 12px;font-size:13px;text-align:left}th{background:var(--surface);color:var(--muted);font-weight:600;text-transform:uppercase;font-size:11px;letter-spacing:.05em;border-bottom:2px solid var(--border)}[data-theme=dark] th{background:#12151a}tbody tr{transition:background-color .1s ease,transform .08s ease;border-left:3px solid transparent}tbody tr:hover{background:#7aa2f70d;cursor:default;border-left-color:var(--primary)}[data-theme=light] tbody tr:hover{background:#0071e30a}[data-theme=dark] tbody tr:hover{background:#7aa2f70f}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.sort-arrow{font-size:10px;margin-left:4px;color:var(--muted)}details{margin:6px 0}details summary{cursor:pointer;transition:all .15s ease;padding:4px;border-radius:6px}details summary:hover{background:#7aa2f70d;color:var(--primary)}.ok{color:var(--success)}.bad{color:var(--danger)}.hint{color:var(--muted);font-size:12px}.spacer{flex:1}pre{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;color:var(--on-surface);max-height:420px;overflow:auto;transition:border-color .15s ease}[data-theme=dark] pre{background:#0f131a}pre:hover{border-color:#7aa2f74d}pre::-webkit-scrollbar{width:10px;height:10px}pre::-webkit-scrollbar-track{background:#0003;border-radius:6px}pre::-webkit-scrollbar-thumb{background:#7aa2f74d;border-radius:6px}pre::-webkit-scrollbar-thumb:hover{background:#7aa2f780}.loading{color:var(--muted);display:inline-flex;align-items:center;gap:8px;font-weight:500;animation:pulse 1.5s ease-in-out infinite}.spinner{width:14px;height:14px;border:2.5px solid rgba(122,162,247,.15);border-top-color:var(--primary);border-radius:50%;display:inline-block;animation:spin .6s linear infinite;box-shadow:0 0 8px #7aa2f733}[data-theme=light] .spinner{border:2.5px solid rgba(0,113,227,.15);border-top-color:var(--primary);box-shadow:0 0 8px #0071e333}@keyframes spin{to{transform:rotate(360deg)}}.toasts{position:fixed;right:16px;bottom:16px;display:grid;gap:10px;z-index:9999}.toast{background:var(--surface);color:var(--on-surface);border:1px solid var(--border);border-left:4px solid var(--primary);padding:12px 16px;border-radius:10px;box-shadow:0 12px 32px #0003;min-width:260px;transition:all .2s ease;animation:slideIn .2s ease}[data-theme=dark] .toast{background:#12151a;border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 32px #00000080}.toast:hover{transform:translate(-4px)}[data-theme=dark] .toast:hover{box-shadow:0 16px 40px #0009}[data-theme=light] .toast:hover{box-shadow:0 16px 40px #00000040}.toast.success{border-left-color:var(--success)}.toast.warning{border-left-color:var(--warning)}.toast.error{border-left-color:var(--danger)}[data-theme=dark] .toast.success{background:linear-gradient(90deg,#22c55e14,#12151a 20%)}[data-theme=dark] .toast.warning{background:linear-gradient(90deg,#facc1514,#12151a 20%)}[data-theme=dark] .toast.error{background:linear-gradient(90deg,#ef444414,#12151a 20%)}[data-theme=light] .toast.success{background:linear-gradient(90deg,rgba(52,199,89,.08) 0%,var(--surface) 20%)}[data-theme=light] .toast.warning{background:linear-gradient(90deg,rgba(255,149,0,.08) 0%,var(--surface) 20%)}[data-theme=light] .toast.error{background:linear-gradient(90deg,rgba(255,59,48,.08) 0%,var(--surface) 20%)}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:500;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);transition:all .15s ease}.status-pill:hover{background:#ffffff14;border-color:#ffffff26;transform:scale(1.02)}.stack{display:grid;gap:12px}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab-panel{margin-top:12px}.sidebar{display:grid;gap:8px;min-width:220px;align-content:start;align-items:start}.sidebar .btn{width:100%;text-align:left}.split{display:flex;gap:16px}.split .pane{flex:1}.split .pane.sidebar{flex:0 0 260px}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:16px;padding:12px 0;gap:12px;flex-wrap:wrap}.pagination-info{font-size:14px;color:var(--muted)}.pagination .inline{display:flex;gap:4px;align-items:center}.pagination .btn{min-width:70px;padding:8px 12px}.pagination-jump{width:80px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--on-surface);font-size:14px;text-align:center;transition:all .2s ease}.pagination-jump:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #7aa2f71a}.pagination-jump:disabled{opacity:.5;cursor:not-allowed}.pagination-jump::-webkit-inner-spin-button,.pagination-jump::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pagination-jump[type=number]{-moz-appearance:textfield}.badge{display:inline-block;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:600;background:#7aa2f726;border:1px solid rgba(122,162,247,.25);color:var(--primary);transition:all .15s ease}.badge:hover{background:#7aa2f740;border-color:#7aa2f766;transform:scale(1.05)}.icon{display:inline-block;width:1.4em;height:1.4em;vertical-align:middle;object-fit:contain}.icon--small{width:1.2em;height:1.2em}.icon--large{width:1.6em;height:1.6em}svg{max-width:2em;max-height:2em}svg[width],svg[height]{width:1.4em!important;height:1.4em!important}.btn .icon{margin:0;transition:transform .2s ease}.icon-rotate{transform:scaleX(-1);transform-origin:center}.btn:hover .icon{transform:translateY(-1px)}.responsive-table{width:100%;border-collapse:collapse;transition:box-shadow .2s ease}.responsive-table tbody tr{animation:fadeInUp .2s ease}.responsive-table tbody tr:nth-child(2n){background:#ffffff05}.responsive-table td,.responsive-table th{padding:8px 12px;text-align:left}.table-wrapper{overflow-x:auto;border-radius:12px}.table-wrapper::-webkit-scrollbar{height:8px}.table-wrapper::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:999px}.animate-fade-in{animation:fadeInUp .2s ease}.table-badge{display:inline-flex;align-items:center;gap:4px}.inline{display:inline-flex;align-items:center;gap:6px}.text-info{color:var(--primary)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes glow{0%,to{box-shadow:0 0 8px #7aa2f74d}50%{box-shadow:0 0 16px #7aa2f780}}@media(max-width:900px){.split{flex-direction:column}.split .pane.sidebar{display:none}.field.mobile-instance-select{display:grid;margin-bottom:12px}}@media(max-width:640px){.appbar{padding:12px 16px}.appbar__inner{flex-direction:column;align-items:stretch;gap:12px;padding:0}.appbar__actions{width:100%;justify-content:flex-start}.appbar__title{gap:8px;justify-content:center}.appbar__logo{width:32px;height:32px}.nav{gap:6px}.nav button{flex:1 1 calc(50% - 6px);justify-content:center}}@media(max-width:420px){.appbar{padding:10px 12px}.appbar__logo{width:28px;height:28px}.appbar h1{font-size:18px}.appbar__version{font-size:10px}.nav button{flex-basis:100%}}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.appbar__logo{image-rendering:auto}}@media(max-width:720px){.responsive-table thead{display:none}.responsive-table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:100%}.responsive-table tbody tr{background:#12151ab3;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px;margin-bottom:8px;box-shadow:0 4px 12px #0003;user-select:none;-webkit-user-select:none;-moz-user-select:none}.responsive-table td{padding:4px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;border:none;font-size:14px;line-height:1.4}.responsive-table td:before{content:attr(data-label);font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;min-width:80px}.table-wrapper{overflow:visible}.episodes-table thead{display:none}.episodes-table,.episodes-table tbody,.episodes-table tr,.episodes-table td{display:block;width:100%}.episodes-table tbody tr{background:#12151ab3;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px;margin-bottom:8px;box-shadow:0 4px 12px #0003}.episodes-table td{padding:4px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;border:none;font-size:14px;line-height:1.4}.episodes-table td:before{content:attr(data-label);font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;min-width:80px}.episodes-table-wrapper{overflow:visible}.tracks-table thead{display:none}.tracks-table,.tracks-table tbody,.tracks-table tr,.tracks-table td{display:block;width:100%}.tracks-table tbody tr{background:#12151ab3;border:1px solid rgba(255,255,255,.06);border-radius:8px;padding:8px;margin-bottom:8px;box-shadow:0 4px 12px #0003}.tracks-table td{padding:4px 0;display:flex;justify-content:space-between;align-items:center;gap:8px;border:none;font-size:14px;line-height:1.4}.tracks-table td:before{content:attr(data-label);font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;min-width:80px}.tracks-table-wrapper{overflow:visible}}.process-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.process-section{display:grid;gap:12px}.process-section+.process-section{margin-top:12px}.process-section__title{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--primary);padding:0 4px;display:inline-flex;align-items:center;gap:10px}.process-section__title:before{content:"";width:4px;height:18px;background:linear-gradient(180deg,var(--primary),var(--primary-variant));border-radius:3px;box-shadow:0 0 8px #7aa2f74d}.process-card{border:1px solid var(--border);border-radius:14px;background:var(--surface);padding:18px;display:flex;flex-direction:column;gap:14px;transition:all .15s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;box-shadow:0 2px 8px #0000000f}[data-theme=dark] .process-card{background:#ffffff08;box-shadow:0 2px 8px #0003}.process-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--primary-variant));opacity:0;transition:opacity .15s ease}.process-card:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at top right,rgba(122,162,247,.05),transparent 60%);opacity:0;transition:opacity .15s ease;pointer-events:none}.process-card:hover{border-color:#7aa2f766;transform:translateY(-3px);box-shadow:0 12px 32px #0000001f}[data-theme=dark] .process-card:hover{box-shadow:0 8px 24px #00000059}.process-card:hover:before,.process-card:hover:after{opacity:1}.process-card__header{position:relative;display:flex;justify-content:space-between;align-items:flex-start;gap:8px;flex-wrap:wrap;padding-right:18px}.process-card__name{font-weight:700;font-size:17px;letter-spacing:-.01em;line-height:1.3}.process-card__title{display:grid;gap:4px;min-width:0}.process-card__summary{font-size:12px;color:var(--muted)}.process-card__badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.process-card__badge{padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;background:#7aa2f726;border:1px solid rgba(122,162,247,.3);color:var(--primary);transition:all .15s ease}.process-card__badge:hover{background:#7aa2f740;border-color:#7aa2f780;transform:scale(1.05)}.status-indicator{position:absolute;top:0;right:0;width:12px;height:12px;border-radius:50%;background:#99a2ad99;box-shadow:0 0 6px #00000059;transition:all .2s ease}.status-indicator--ok{background:var(--success);box-shadow:0 0 12px #22c55e80;animation:pulse 1.5s ease-in-out infinite}.status-indicator--bad{background:var(--danger);box-shadow:0 0 12px #ef444480;animation:pulse 1s ease-in-out infinite}.process-card__footer{display:flex;justify-content:flex-end;margin-top:auto}.process-card__list{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.process-chip{display:grid;gap:10px;border:1px solid var(--border);border-radius:10px;padding:12px 14px;background:var(--bg);transition:all .15s ease}[data-theme=dark] .process-chip{border:1px solid rgba(255,255,255,.08);background:#0f131a99}.process-chip:hover{border-color:#7aa2f74d;transform:translate(2px)}[data-theme=dark] .process-chip:hover{background:#0f131acc;border-color:#7aa2f733}[data-theme=light] .process-chip:hover{background:#00000005}.process-chip__top{display:flex;justify-content:space-between;align-items:center;gap:10px}.process-chip__name{font-weight:600;font-size:14px}.process-chip__actions{display:flex;justify-content:flex-end}.process-chip .btn{padding:6px 10px}.process-chip__detail{margin-top:6px;font-size:12px;color:var(--muted);line-height:1.35}.process-chip__detail-time{font-style:italic;color:var(--muted)}.status-pill__dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block;margin-right:6px}.status-pill--ok{border-color:#22c55e66;background:linear-gradient(135deg,#22c55e26,#22c55e14);color:var(--success);box-shadow:0 2px 8px #22c55e26}.status-pill--bad{border-color:#ef444466;background:linear-gradient(135deg,#ef444426,#ef444414);color:var(--danger);box-shadow:0 2px 8px #ef444426}[data-theme=light] .status-pill--ok{background:linear-gradient(135deg,#34c7591f,#34c7590f)}[data-theme=light] .status-pill--bad{background:linear-gradient(135deg,#ff3b301f,#ff3b300f)}.empty-state{border:2px dashed rgba(122,162,247,.25);border-radius:16px;padding:40px 32px;text-align:center;color:var(--muted);background:linear-gradient(135deg,#7aa2f708,#7aa2f703);transition:all .2s ease;position:relative;overflow:hidden}.empty-state:before{content:"";position:absolute;top:50%;left:50%;width:100px;height:100px;background:radial-gradient(circle,rgba(122,162,247,.08),transparent);transform:translate(-50%,-50%);border-radius:50%;opacity:0;transition:opacity .2s ease}.empty-state:hover{border-color:#7aa2f766;background:linear-gradient(135deg,#7aa2f70d,#7aa2f705)}.empty-state:hover:before{opacity:1}[data-theme=light] .empty-state{border-color:#0071e340;background:linear-gradient(135deg,rgba(0,113,227,.02) 0%,transparent 100%)}[data-theme=light] .empty-state:before{background:radial-gradient(circle,rgba(0,113,227,.06),transparent)}[data-theme=light] .empty-state:hover{border-color:#0071e366;background:linear-gradient(135deg,#0071e30a,#0071e303)}.config-card{border:1px solid var(--border);border-radius:12px;background:var(--surface)}.config-card summary{cursor:pointer;font-weight:600;color:var(--muted);list-style:none;outline:none;padding:12px 14px;border-bottom:1px solid var(--border)}.config-card summary::-webkit-details-marker{display:none}.config-card summary:before{content:">";display:inline-block;margin-right:8px;transition:transform .2s ease}.config-card[open] summary:before{transform:rotate(0)}.config-card:not([open]) summary:before{transform:rotate(-90deg)}.config-card>.card-body{display:grid;gap:12px}.config-summary-card{display:flex;flex-direction:column;gap:12px;min-height:160px;transition:transform .2s ease,box-shadow .2s ease}.config-summary-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0000004d}.config-summary-card p{margin:0;color:var(--muted);line-height:1.4}.config-layout{display:grid;gap:16px}.config-actions{display:flex;flex-wrap:wrap;gap:8px}.config-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.config-arr-groups{display:flex;flex-direction:column;gap:24px}.config-arr-group{display:flex;flex-direction:column;gap:12px}.config-arr-group__details{border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:16px 18px;background:#ffffff08;box-shadow:0 2px 8px #0003}.config-arr-group__details summary{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;font-weight:600;font-size:15px;color:var(--on-surface);list-style:none;transition:color .2s ease}.config-arr-group__details summary:hover{color:var(--primary)}.config-arr-group__details summary::-webkit-details-marker{display:none}.config-arr-group__details[open] summary{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.06)}.config-arr-group__count{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;background:#7aa2f726;border:1px solid rgba(122,162,247,.3);color:var(--primary)}.config-arr-group__title{margin:0;font-size:14px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.config-arr-grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));margin-top:4px}.config-arr-grid .card-body{display:flex;flex-direction:column;gap:12px}.config-arr-card{min-height:220px;transition:transform .2s ease,box-shadow .2s ease}.config-arr-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0000004d}.config-arr-summary{display:grid;gap:8px;margin:0}.config-arr-summary__item{display:grid;gap:2px}.config-arr-summary__item dt{margin:0;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.config-arr-summary__item dd{margin:0;color:var(--on-surface);font-weight:500;font-size:13px}.config-arr-summary__uri{word-break:break-all}.config-arr-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.config-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.field-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.modal .field-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}@media(max-width:720px){.modal .field-grid{grid-template-columns:minmax(0,1fr)}}.field-label{display:flex;align-items:center;gap:6px;font-weight:600;color:var(--muted)}.checkbox-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.checkbox-field label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:600;color:var(--on-surface)}.checkbox-field input{margin:0;flex-shrink:0;cursor:pointer}.checkbox-field__content{display:flex;flex-direction:column;gap:6px;max-width:100%}.checkbox-field__text{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--muted);line-height:1.4}.secure-field{gap:8px}.secure-field__input-group{display:flex;align-items:center;gap:8px}.secure-field__input-group input{flex:1}.secure-field__controls{display:flex;gap:6px}.secure-field__controls .btn{padding:6px 10px}.help-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:11px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:#ffffff14;color:var(--muted);cursor:help;transition:border-color .2s ease,color .2s ease}.help-icon:hover{border-color:var(--primary);color:var(--on-surface)}.config-section{border:1px solid rgba(255,255,255,.05);border-radius:10px;padding:8px 12px;background:#ffffff05}.config-section summary{cursor:pointer;font-weight:600;color:var(--muted);list-style:none;outline:none}.config-section summary::-webkit-details-marker{display:none}.config-section summary:before{content:">";display:inline-block;margin-right:8px;transition:transform .2s ease}.config-section[open] summary:before{transform:rotate(0)}.config-section:not([open]) summary:before{transform:rotate(-90deg)}.config-section__body{margin-top:12px}.modal-backdrop{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;padding:24px;overflow-y:auto;overflow-x:hidden;z-index:120;animation:fadeIn .2s ease}[data-theme=dark] .modal-backdrop{background:#000000bf}[data-theme=light] .modal-backdrop{background:#0000004d}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border:1px solid var(--border);border-radius:20px;width:min(840px,calc(100% - 48px));max-height:min(92vh,calc(100vh - 80px));display:flex;flex-direction:column;margin:40px auto;box-shadow:0 24px 64px #0003,0 8px 16px #0000001a;animation:modalSlideIn .2s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}[data-theme=dark] .modal{background:#1b1e22f2;border:1px solid rgba(255,255,255,.1);box-shadow:0 20px 60px #0009,0 0 0 1px #ffffff0d}[data-theme=light] .modal{background:#fffffff2}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{padding:20px 24px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;align-items:center;gap:12px;background:#ffffff05;border-radius:16px 16px 0 0}.modal-header h2{margin:0;font-size:20px;font-weight:600;color:var(--on-surface);letter-spacing:-.01em}.modal-body{padding:24px;overflow-y:auto;overflow-x:hidden;display:grid;gap:20px}.modal-footer{padding:16px 24px 20px;border-top:1px solid rgba(255,255,255,.08);display:flex;justify-content:flex-end;gap:12px;background:#ffffff03;border-radius:0 0 16px 16px}.changelog-modal__body{gap:12px}.changelog-meta{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.changelog-meta strong{color:var(--on-surface)}.changelog-body{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px;max-height:360px;overflow-y:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.5;white-space:pre-wrap;transition:border-color .15s ease}[data-theme=dark] .changelog-body{background:#0f131a}.changelog-body:hover{border-color:#7aa2f74d}.changelog-body::-webkit-scrollbar{width:10px}.changelog-body::-webkit-scrollbar-track{background:#0003;border-radius:6px}.changelog-body::-webkit-scrollbar-thumb{background:#7aa2f74d;border-radius:6px}.changelog-body::-webkit-scrollbar-thumb:hover{background:#7aa2f780}.changelog-links{margin-right:auto;display:flex;align-items:center;gap:8px}.changelog-buttons{display:flex;align-items:center;gap:8px}.tracker-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.tracker-card.card{background:#ffffff08;border-color:#ffffff14}.profile-mappings-grid{display:flex;flex-direction:column;gap:12px}.profile-mapping-row{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}.profile-mapping-row .field{margin:0}.profile-mapping-row .btn.icon-only{height:38px;width:38px;padding:0;display:flex;align-items:center;justify-content:center}.tracker-card .card-header{display:flex;justify-content:space-between;align-items:center;gap:12px;font-weight:600;color:var(--on-surface)}.tracker-card .card-body{padding-top:0}.tracker-card .field-grid{grid-template-columns:minmax(0,1fr)}.keyboard-hint{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:600;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);color:var(--muted);font-family:monospace}.skeleton{background:linear-gradient(90deg,var(--surface) 0%,rgba(122,162,247,.1) 50%,var(--surface) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:6px}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-table{display:flex;flex-direction:column;gap:8px;padding:16px}.skeleton-table-header{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:12px;margin-bottom:8px}.skeleton-header{height:24px}.skeleton-table-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.skeleton-cell{height:20px}.skeleton-card{padding:20px;background:var(--surface);border-radius:12px;border:1px solid var(--border)}.skeleton-title{height:28px;width:60%;margin-bottom:16px}.skeleton-text{height:16px;margin-bottom:12px}.skeleton-text:last-of-type{width:80%}.skeleton-button{height:40px;width:120px;margin-top:16px;border-radius:8px}.skeleton-text-group{display:flex;flex-direction:column;gap:12px}[data-density=compact] .responsive-table td,[data-density=compact] .responsive-table th{padding:4px 8px;font-size:12px;line-height:1.3}[data-density=compact] .responsive-table{font-size:12px}[data-density=compact] .episodes-table td,[data-density=compact] .episodes-table th{padding:4px 8px;font-size:12px}[data-density=compact] .card{padding:12px;border-radius:8px}[data-density=compact] .card-header{font-size:16px;padding:8px 12px;margin-bottom:8px}[data-density=compact] .card-body{padding:8px 12px}[data-density=compact] .btn{padding:4px 10px;font-size:12px;min-height:28px}[data-density=compact] .btn.small{padding:3px 8px;font-size:11px;min-height:24px}[data-density=compact] .field{margin-bottom:8px}[data-density=compact] .field label{font-size:11px;margin-bottom:2px}[data-density=compact] .field input,[data-density=compact] .field select,[data-density=compact] .field textarea{padding:4px 8px;font-size:12px;min-height:28px}[data-density=compact] .hint{font-size:11px;line-height:1.4}[data-density=compact] .stack{gap:8px}[data-density=compact] .row{gap:6px}[data-density=compact] .table-badge{padding:1px 4px;font-size:10px}[data-density=compact] .table-badge-reason{font-size:9px}[data-density=compact] .container{padding:12px}[data-density=compact] .nav{gap:4px;padding:8px 0}[data-density=compact] .nav button{padding:6px 12px;font-size:12px;gap:6px}[data-density=compact] .pagination{margin-top:8px;padding:8px 0;font-size:12px}[data-density=compact] .season-header{padding:8px 12px;font-size:13px}[data-density=compact] .season-content{padding:8px}[data-density=compact] .series-card{margin-bottom:12px}[data-density=compact] .field-grid{gap:8px}[data-density=compact] h2{font-size:18px;margin-bottom:12px}[data-density=compact] h3{font-size:14px;margin-bottom:8px}[data-density=compact] .modal{padding:16px}[data-density=compact] .modal-header{padding:12px 16px;margin-bottom:12px}[data-density=compact] .modal-body{padding:12px 16px}[data-density=compact] .modal-footer{padding:12px 16px;gap:8px}[data-density=compact] .process-grid{gap:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}[data-density=compact] .process-section{gap:8px}[data-density=compact] .process-section+.process-section{margin-top:8px}[data-density=compact] .process-section__title{font-size:11px;padding:0 2px;gap:6px}[data-density=compact] .process-section__title:before{width:3px;height:14px}[data-density=compact] .process-card{padding:10px;gap:8px;border-radius:10px}[data-density=compact] .process-card__header{padding-right:14px;gap:6px}[data-density=compact] .process-card__name{font-size:14px}[data-density=compact] .process-card__summary{font-size:11px}[data-density=compact] .process-card__badges{gap:4px;margin-top:2px}[data-density=compact] .process-card__badge{padding:2px 6px;font-size:10px}[data-density=compact] .process-card__list{gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}[data-density=compact] .process-chip{gap:6px;padding:8px 10px;border-radius:8px}[data-density=compact] .process-chip__top{gap:6px}[data-density=compact] .process-chip__name{font-size:12px}[data-density=compact] .process-chip__detail{margin-top:4px;font-size:11px;line-height:1.3}[data-density=compact] .process-chip .btn{padding:3px 8px;font-size:11px}[data-density=compact] .status-indicator{width:10px;height:10px}[data-density=compact] .status-pill{padding:3px 8px;font-size:11px;gap:4px}[data-density=compact] .status-pill__dot{width:5px;height:5px;margin-right:4px}[data-density=compact] .config-card{border-radius:10px}[data-density=compact] .config-card summary{padding:8px 10px;font-size:13px}[data-density=compact] .config-card summary:before{margin-right:6px}[data-density=compact] .config-card>.card-body{gap:8px}[data-density=compact] .config-summary-card{gap:8px;min-height:120px}[data-density=compact] .config-summary-card p{font-size:12px;line-height:1.3}[data-density=compact] .config-layout{gap:10px}[data-density=compact] .config-actions{gap:6px}[data-density=compact] .config-grid{gap:12px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}[data-density=compact] .config-arr-groups{gap:16px}[data-density=compact] .config-arr-group{gap:8px}[data-density=compact] .config-arr-group__details{padding:10px 12px;border-radius:10px}[data-density=compact] .config-arr-group__details summary{gap:8px;font-size:13px}[data-density=compact] .config-arr-group__details[open] summary{margin-bottom:10px;padding-bottom:8px}[data-density=compact] .config-arr-group__count{padding:3px 8px;font-size:11px}[data-density=compact] .config-arr-group__title{font-size:12px}[data-density=compact] .config-arr-grid{gap:12px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-top:2px}[data-density=compact] .config-arr-grid .card-body{gap:8px}[data-density=compact] .config-arr-card{min-height:160px}[data-density=compact] .config-arr-summary{gap:6px}[data-density=compact] .config-arr-summary__item{gap:1px}[data-density=compact] .config-arr-summary__item dt{font-size:10px}[data-density=compact] .config-arr-summary__item dd{font-size:12px}[data-density=compact] .config-arr-actions{gap:6px}[data-density=compact] .config-footer{gap:8px}[data-density=compact] .config-section{padding:6px 10px;border-radius:8px}[data-density=compact] .config-section summary{font-size:13px}[data-density=compact] .config-section summary:before{margin-right:6px}[data-density=compact] .config-section__body{margin-top:8px}[data-density=compact] .field-description,[data-density=compact] .field-hint{font-size:11px;line-height:1.3;margin-top:2px}[data-density=compact] .field-description{margin-top:1px}[data-density=compact] .field-hint{margin-top:3px}[data-density=compact] .field-label{gap:4px;font-size:11px}[data-density=compact] .checkbox-field{gap:4px;font-size:12px}[data-density=compact] .checkbox-field label{gap:6px}[data-density=compact] .checkbox-field__content{gap:4px}[data-density=compact] .checkbox-field__text{gap:4px;line-height:1.3;font-size:12px}[data-density=compact] .secure-field,[data-density=compact] .secure-field__input-group{gap:6px}[data-density=compact] .secure-field__controls{gap:4px}[data-density=compact] .secure-field__controls .btn{padding:4px 8px}[data-density=compact] .help-icon{width:14px;height:14px;font-size:10px}[data-density=compact] .badge{padding:2px 6px;border-radius:5px;font-size:10px}[data-density=compact] .empty-state{padding:24px 20px;border-radius:12px;font-size:13px}[data-density=compact] .tracker-grid{gap:10px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}[data-density=compact] .tracker-card .card-header{gap:8px;font-size:13px}[data-density=compact] .tracker-card .card-body{padding-top:0}[data-density=compact] .keyboard-hint{gap:3px;padding:2px 5px;border-radius:3px;font-size:9px}[data-density=compact] .changelog-modal__body{gap:8px}[data-density=compact] .changelog-meta{gap:4px;font-size:12px}[data-density=compact] .changelog-body{padding:10px;max-height:280px;font-size:12px;line-height:1.4}[data-density=compact] .changelog-links,[data-density=compact] .changelog-buttons{gap:6px}[data-density=compact] details{margin:4px 0}[data-density=compact] details summary{padding:3px;border-radius:5px}[data-density=compact] .series-details,[data-density=compact] .season-details{border-radius:5px}[data-density=compact] .series-summary,[data-density=compact] .season-summary{padding:8px 12px;font-size:13px;border-radius:5px 5px 0 0}[data-density=compact] .series-title{font-size:1em}[data-density=compact] .series-instance{font-size:.85em}[data-density=compact] .season-title{font-size:.95em}[data-density=compact] .season-count{font-size:.85em}[data-density=compact] .series-content,[data-density=compact] .season-content{padding:6px}[data-density=compact] pre{padding:10px;max-height:320px;border-radius:10px;font-size:12px}[data-density=compact] .icon{width:1.2em;height:1.2em}[data-density=compact] .icon--small{width:1em;height:1em}[data-density=compact] .icon--large{width:1.4em;height:1.4em}[data-density=compact] svg[width],[data-density=compact] svg[height]{width:1.2em!important;height:1.2em!important}[data-density=compact] .spinner{width:12px;height:12px;border-width:2px}[data-density=compact] .loading{gap:6px;font-size:12px}[data-density=compact] .toasts{gap:8px;right:12px;bottom:12px}[data-density=compact] .toast{padding:8px 12px;border-radius:8px;min-width:220px;font-size:12px}[data-density=compact] .logs-container{height:calc(100vh - 110px)}[data-density=compact] .logs-toolbar{margin-bottom:8px;gap:8px}[data-density=compact] .logs-toolbar .field{margin-bottom:0}[data-density=compact] .logs-toolbar label{font-size:11px;margin-bottom:2px}[data-density=compact] .logs-toolbar .btn{padding:4px 10px;font-size:12px}[data-density=compact] .logs-content{padding:10px;border-radius:8px}[data-density=compact] .logs-content pre{font-size:11px;line-height:1.4}[data-density=compact] .badge{padding:2px 6px;font-size:10px}[data-density=comfortable] .responsive-table td,[data-density=comfortable] .responsive-table th{padding:12px 16px}.view-density-toggle{display:flex;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:4px}.view-density-toggle button{padding:6px 12px;border:none;background:transparent;color:var(--muted);border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.view-density-toggle button:hover{color:var(--on-surface);background:#7aa2f71a}.view-density-toggle button.active{background:var(--primary);color:#fff}[data-density=compact] .css-13cymwt-control,[data-density=compact] .css-t3ipsp-control,[data-density=compact] .css-15evc9m-control,[data-density=compact] .css-hlgwow,[data-density=compact] [class*=-control]{min-height:32px!important;height:32px!important;font-size:12px!important}[data-density=compact] .css-hlgwow,[data-density=compact] [class*=-ValueContainer]{padding:2px 8px!important;font-size:12px!important}[data-density=compact] .css-1dimb5e-singleValue,[data-density=compact] .css-1jxntwc-singleValue,[data-density=compact] [class*=-singleValue]{font-size:12px!important;line-height:1.4!important}[data-density=compact] .css-1u3zge7,[data-density=compact] [class*=-Input]{padding:0!important;margin:0!important}[data-density=compact] .css-1u3zge7 input,[data-density=compact] [class*=-Input] input{font-size:12px!important;padding:0!important;margin:0!important}[data-density=compact] .css-1nmdiq5-menu,[data-density=compact] [class*=-menu]{font-size:12px!important}[data-density=compact] .css-1n6sfyn-MenuList,[data-density=compact] [class*=-MenuList]{padding:4px!important}[data-density=compact] .css-10wo9uf-option,[data-density=compact] [class*=-option]{padding:6px 10px!important;font-size:12px!important}[data-density=compact] .css-1wy0on6,[data-density=compact] [class*=-indicatorsContainer]{padding:0 4px!important}[data-density=compact] .css-1u9des2-indicatorSeparator,[data-density=compact] [class*=-indicatorSeparator]{margin-top:6px!important;margin-bottom:6px!important}[data-density=compact] .css-1hwfws3,[data-density=compact] .css-1xc3v61-indicatorContainer,[data-density=compact] [class*=-indicatorContainer]{padding:4px!important}[data-density=compact] .css-1xc3v61-indicatorContainer svg,[data-density=compact] [class*=-indicatorContainer] svg{width:16px!important;height:16px!important}[data-density=compact] .appbar{padding:6px 12px!important}[data-density=compact] .appbar__inner{padding:0 6px!important;gap:8px!important}[data-density=compact] .appbar__title{gap:6px!important}[data-density=compact] .appbar__title h1{font-size:15px!important;margin:0!important}[data-density=compact] .appbar__logo{width:28px!important;height:28px!important}[data-density=compact] .appbar__version{font-size:9px!important;padding:2px 5px!important;letter-spacing:.3px!important}[data-density=compact] .appbar__status{font-size:10px!important}[data-density=compact] .appbar__update{padding:4px 8px!important;font-size:10px!important;gap:3px!important}[data-density=compact] .appbar__update-indicator{width:5px!important;height:5px!important}[data-density=compact] .appbar__actions{gap:6px!important}[data-density=compact] .appbar__actions button,[data-density=compact] .appbar__actions a.btn{padding:4px 8px!important;font-size:10px!important;gap:4px!important}[data-density=compact] .appbar__actions .icon{width:14px!important;height:14px!important}[data-density=compact] .appbar__actions .badge{padding:2px 6px!important;font-size:9px!important}[data-density=compact] .spinner{width:11px!important;height:11px!important;border-width:2px!important}[data-density=compact] .view-density-toggle{padding:2px!important;gap:2px!important;border-radius:6px!important}[data-density=compact] .view-density-toggle button{padding:4px 8px!important;font-size:10px!important;border-radius:4px!important}.version-comparison{display:flex;align-items:center;gap:12px;padding:12px;background:#7aa2f70d;border:1px solid rgba(122,162,247,.2);border-radius:8px;margin-bottom:12px}.version-item{display:flex;align-items:center;gap:6px}.version-arrow{color:var(--primary);font-size:18px;font-weight:700}.version-badge{padding:4px 10px;border-radius:6px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px;font-weight:600}.version-current{background:#9aa3ac26;border:1px solid rgba(154,163,172,.3);color:var(--muted)}.version-latest{background:#7aa2f726;border:1px solid rgba(122,162,247,.3);color:var(--primary)}.update-status{padding:10px 14px;border-radius:8px;font-size:13px;font-weight:500;display:flex;align-items:center;gap:8px}.update-status.text-info{background:#3b82f61a;border:1px solid rgba(59,130,246,.3);color:#3b82f6}.update-status.text-success{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);color:#22c55e}.update-status.text-danger{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444}.changelog-section{display:flex;flex-direction:column;gap:8px}.changelog-section h3{margin:0;font-size:14px;font-weight:600;color:var(--on-surface)}[data-theme=light] .version-comparison{background:#0071e30d;border-color:#0071e326}[data-theme=light] .version-latest{background:#0071e31a;border-color:#0071e340}[data-density=compact] .version-comparison{padding:8px;gap:8px;font-size:12px}[data-density=compact] .version-badge{padding:3px 8px;font-size:11px}[data-density=compact] .version-arrow{font-size:14px}[data-density=compact] .update-status{padding:8px 12px;font-size:12px}[data-density=compact] .changelog-section h3{font-size:13px}.react-lazylog-searchbar{background:var(--surface)!important;border-bottom:1px solid var(--border)!important;padding:8px 12px!important}[data-theme=dark] .react-lazylog-searchbar{background:#0f131a!important}.react-lazylog-searchbar-input{background:var(--bg)!important;color:var(--on-surface)!important;border:1px solid var(--border)!important;border-radius:6px!important;padding:6px 10px!important;font-size:13px!important}[data-theme=dark] .react-lazylog-searchbar-input{background:#12151a!important}.react-lazylog-searchbar-input:focus{outline:none!important;border-color:var(--primary)!important;box-shadow:0 0 0 2px #7aa2f71a!important}[data-theme=light] .react-lazylog-searchbar-input:focus{box-shadow:0 0 0 2px #0071e31a!important}.react-lazylog-searchbar-input::placeholder{color:var(--muted)!important}.react-lazylog-searchbar-matches{color:var(--muted)!important;font-size:12px!important}.react-lazylog-searchbar-filter,.react-lazylog-searchbar-up-arrow,.react-lazylog-searchbar-down-arrow{background:transparent!important;border:1px solid var(--border)!important;border-radius:6px!important;padding:6px!important;cursor:pointer!important;transition:all .15s ease!important}.react-lazylog-searchbar-filter:hover,.react-lazylog-searchbar-up-arrow:hover,.react-lazylog-searchbar-down-arrow:hover{background:#7aa2f71a!important;border-color:var(--primary)!important}[data-theme=light] .react-lazylog-searchbar-filter:hover,[data-theme=light] .react-lazylog-searchbar-up-arrow:hover,[data-theme=light] .react-lazylog-searchbar-down-arrow:hover{background:#0071e314!important}.react-lazylog-searchbar-filter svg,.react-lazylog-searchbar-up-arrow svg,.react-lazylog-searchbar-down-arrow svg{fill:var(--on-surface)!important;width:16px!important;height:16px!important}.react-lazylog-searchbar-filter.inactive,.react-lazylog-searchbar-up-arrow.inactive,.react-lazylog-searchbar-down-arrow.inactive{opacity:.5!important;cursor:not-allowed!important}.react-lazylog-searchbar-matches.inactive{opacity:.5!important}.test-connection-section{margin:16px 0;padding:16px;background:#ffffff05;border:1px solid var(--border-color);border-radius:4px}.field-group-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.field-hint{font-size:.85em;color:var(--text-secondary);font-style:italic}.alert{padding:12px 16px;border-radius:4px;margin-top:12px;line-height:1.5}.alert.success{background:#4caf501a;border:1px solid rgba(76,175,80,.3);color:#66bb6a}[data-theme=light] .alert.success{background:#4caf5014;border-color:#4caf5066;color:#388e3c}.alert.error{background:#f443361a;border:1px solid rgba(244,67,54,.3);color:#ef5350}[data-theme=light] .alert.error{background:#f4433614;border-color:#f4433666;color:#d32f2f}.alert.info{background:#2196f31a;border:1px solid rgba(33,150,243,.3);color:#42a5f5}[data-theme=light] .alert.info{background:#2196f314;border-color:#2196f366;color:#1976d2}.alert.warning{background:#ffc1071a;border:1px solid rgba(255,193,7,.3);color:#ffb74d}[data-theme=light] .alert.warning{background:#ffc10714;border-color:#ffc10766;color:#f57c00}.alert-details{font-size:.9em;margin-top:6px;opacity:.9}.alert strong{font-weight:600}
|