Nischal Subedi commited on
Commit
d78d532
·
1 Parent(s): 3c24aff

updated UI v7

Browse files
Files changed (1) hide show
  1. app.py +57 -54
app.py CHANGED
@@ -281,7 +281,7 @@ Answer:"""
281
  ["What is an implied warranty of habitability?", "Illinois"]
282
  ]
283
  example_queries = []
284
- if available_states_list and "Error" not in available_states_list[0] and len(available_states_list) > 0:
285
  loaded_states_set = set(available_states_list)
286
  # Filter for examples whose state is in the loaded states
287
  example_queries = [ex for ex in example_queries_base if ex[1] in loaded_states_set]
@@ -307,30 +307,33 @@ Answer:"""
307
  }
308
  /* Header specific styling */
309
  .app-header-wrapper {
310
- padding: 4.5rem 3.5rem !important; /* Use hardcoded padding to override theme potentially */
311
  text-align: center !important;
312
- border-bottom-left-radius: 24px; /* Use hardcoded radius */
313
  border-bottom-right-radius: 24px;
314
  position: relative;
315
  overflow: hidden;
316
  z-index: 10;
317
- margin-bottom: 2.5rem; /* Use hardcoded margin */
318
- border: 1px solid var(--border-color-primary) !important;
319
  border-top: none;
320
  max-width: 1120px;
321
  margin-left: auto;
322
  margin-right: auto;
323
  width: 100%;
 
 
 
324
  }
325
  .app-header { display: flex; flex-direction: column; align-items: center; position: relative; z-index: 1; }
326
  .app-header-logo {
327
  font-size: 5.5rem; margin-bottom: 0.8rem; line-height: 1;
328
- filter: drop-shadow(0 0 15px var(--primary-500)); /* Using primary color from theme */
329
  transform: translateY(-40px); opacity: 0;
330
  animation: fadeInSlideDown 1.5s ease-out forwards; animation-delay: 0.3s;
331
  }
332
  .app-header-title {
333
- font-family: 'Playfair Display', serif !important; /* Explicit font family */
334
  font-size: 4.2rem; font-weight: 900;
335
  margin: 0 0 0.8rem 0; letter-spacing: -0.07em;
336
  text-shadow: 0 8px 16px rgba(0,0,0,0.5);
@@ -338,7 +341,7 @@ Answer:"""
338
  animation: fadeInSlideDown 1.5s ease-out forwards; animation-delay: 0.6s;
339
  }
340
  .app-header-tagline {
341
- font-family: 'Inter', sans-serif !important; /* Explicit font family */
342
  font-size: 1.6rem; font-weight: 300;
343
  opacity: 0.9; max-width: 900px;
344
  transform: translateY(-40px); opacity: 0;
@@ -346,19 +349,19 @@ Answer:"""
346
  }
347
  /* Main dashboard container */
348
  .main-dashboard-container {
349
- border-radius: 24px; /* Use hardcoded radius */
350
- border: 1px solid var(--border-color-primary) !important;
351
- padding: 3.5rem !important; /* Use hardcoded padding */
352
- margin: 0 auto 0.8rem auto;
353
  z-index: 1; position: relative;
354
- display: flex; flex-direction: column; gap: 2.5rem; /* Use hardcoded gap */
355
  max-width: 1120px;
356
  }
357
  /* Card sections within the dashboard */
358
  .dashboard-card-section {
359
- border-radius: 12px; /* Use hardcoded radius */
360
- border: 1px solid var(--border-color-primary);
361
- padding: 2.5rem; /* Use hardcoded padding */
362
  box-shadow: inset 0 0 10px rgba(0,0,0,0.2);
363
  display: flex; flex-direction: column; gap: 1.5rem;
364
  }
@@ -369,9 +372,9 @@ Answer:"""
369
  /* Section titles */
370
  .sub-section-title {
371
  font-family: 'Playfair Display', serif !important;
372
- font-size: 2.7rem !important;
373
  font-weight: 800 !important;
374
- text-align: center !important;
375
  margin-top: 1.5rem !important;
376
  margin-bottom: 0.8rem !important;
377
  display: block !important;
@@ -394,12 +397,12 @@ Answer:"""
394
  /* Button layout */
395
  .button-row { display: flex; gap: 2rem; margin-top: 2rem; flex-wrap: wrap; justify-content: flex-end; }
396
  .gradio-button {
397
- border-radius: 12px !important; /* Hardcode radius */
398
- padding: 1.2rem 2.8rem !important; /* Hardcode padding */
399
- font-size: 1.15rem !important; /* Hardcode font size */
400
- font-weight: 600 !important; /* Hardcode font weight */
401
  border: 1px solid transparent !important;
402
- box-shadow: 0 6px 20px rgba(0,0,0,0.35); /* Custom shadow */
403
  transition: all 0.4s cubic-bezier(0.0, 0.0, 0.2, 1);
404
  }
405
  .gradio-button:hover:not(:disabled) { transform: translateY(-6px); box-shadow: 0 12px 28px rgba(0,0,0,0.45) !important; }
@@ -410,12 +413,12 @@ Answer:"""
410
  }
411
  .gr-button-secondary { /* Override for secondary button specific look */
412
  background: transparent !important;
413
- border: 2px solid var(--border-color-primary) !important;
414
  box-shadow: none !important;
415
  }
416
  .gr-button-secondary:hover:not(:disabled) {
417
- background: var(--button-secondary-background-hover) !important; /* Use theme variable */
418
- border-color: var(--primary-500) !important; /* Use theme primary color */
419
  }
420
  @media (prefers-color-scheme: light) {
421
  .gradio-button { box-shadow: 0 6px 20px rgba(0,0,0,0.1); }
@@ -427,7 +430,7 @@ Answer:"""
427
  font-size: 1.8rem; font-weight: 700;
428
  margin: 0 0 1rem 0; display: flex; align-items: center; gap: 1.2rem;
429
  }
430
- .output-card .response-icon { font-size: 2rem; color: var(--primary-500); } /* Use theme primary color */
431
  .output-card .divider { border: none; border-top: 1px solid var(--border-color-primary); margin: 1.5rem 0 1.8rem 0; }
432
  .output-card .output-content-wrapper { font-size: 1.15rem; line-height: 1.8; }
433
  .output-card .output-content-wrapper p { margin-bottom: 1rem; }
@@ -436,23 +439,23 @@ Answer:"""
436
  .output-card .output-content-wrapper li { margin-bottom: 0.8rem; }
437
  .output-card .error-message {
438
  padding: 1.5rem 2rem; margin-top: 1.5rem; font-size: 1.1rem;
439
- border-radius: 12px; /* Hardcoded radius */
440
- background: var(--error-background-fill) !important; /* Use theme error background */
441
- color: var(--error-text-color) !important; /* Use theme error text */
442
- border: 2px solid var(--error-border-color) !important; /* Use theme error border */
443
  display: flex; align-items: flex-start; gap: 1.5em;
444
  }
445
  .output-card .error-message .error-icon { font-size: 1.8rem; line-height: 1; padding-top: 0.1em; }
446
  .output-card .error-details { font-size: 0.95rem; margin-top: 0.8rem; opacity: 0.9; word-break: break-word; }
447
  .output-card .placeholder {
448
- padding: 2.5rem 2rem; font-size: 1.2rem; border-radius: 12px; /* Hardcoded radius */
449
  border: 3px dashed var(--border-color-primary);
450
  text-align: center; opacity: 0.8;
451
  }
452
  /* Examples table styling */
453
  .examples-section table.gr-samples-table {
454
- border-radius: 12px !important; /* Hardcoded radius */
455
- border: 1px solid var(--border-color-primary) !important;
456
  overflow: hidden;
457
  box-shadow: inset 0 0 10px rgba(0,0,0,0.2);
458
  }
@@ -461,22 +464,22 @@ Answer:"""
461
  }
462
  .examples-section table.gr-samples-table th, .examples-section table.gr-samples-table td { padding: 1rem 1.2rem !important; font-size: 1.05rem !important; border: none !important; }
463
  .examples-section table.gr-samples-table th {
464
- background: var(--block-background-fill) !important; /* Using theme background fill for table headers */
465
  font-weight: 600 !important; text-align: left;
466
  }
467
  .examples-section table.gr-samples-table td {
468
  border-top: 1px solid var(--border-color-primary) !important;
469
  cursor: pointer;
470
  }
471
- .examples-section table.gr-samples-table tr:hover td { background: var(--hover-color) !important; } /* Use theme hover color */
472
  .examples-section table.gr-samples-table tr:first-child td { border-top: none !important; }
473
  /* Footer styling */
474
  .app-footer-wrapper {
475
- border-top: 1px solid var(--border-color-primary) !important;
476
- margin-top: 0.5rem; /* Hardcoded margin */
477
- padding-top: 2.5rem; /* Hardcoded padding */
478
- padding-bottom: 2.5rem; /* Hardcoded padding */
479
- border-top-left-radius: 24px; /* Hardcoded radius */
480
  border-top-right-radius: 24px;
481
  box-shadow: inset 0 8px 15px rgba(0,0,0,0.2);
482
  max-width: 1120px;
@@ -485,10 +488,10 @@ Answer:"""
485
  width: 100%;
486
  display: flex !important;
487
  flex-direction: column !important;
488
- align-items: flex-start !important; /* Left aligns the content */
489
  }
490
  .app-footer {
491
- padding: 0 3.5rem !important; /* Hardcoded padding */
492
  display: flex;
493
  flex-direction: column;
494
  align-items: stretch;
@@ -515,14 +518,14 @@ Answer:"""
515
  font-size: 0 !important; line-height: 0 !important; position: absolute !important;
516
  pointer-events: none !important;
517
  }
518
- /* Responsive Adjustments (remaining hardcoded overrides) */
519
  @media (max-width: 1024px) {
520
  .gradio-container > .flex.flex-col { max-width: 960px; padding: 0 1.5rem !important; }
521
  .app-header-title { font-size: 3.8rem; } .app-header-tagline { font-size: 1.5rem; }
522
- .app-header-wrapper { padding: 2.5rem 3.5rem !important; margin-bottom: 2rem; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; }
523
- .main-dashboard-container { padding: 2.5rem !important; margin-bottom: 0.6rem; border-radius: 12px; gap: 2rem; }
524
  .dashboard-card-section { padding: 1.8rem; border-radius: 8px; }
525
- .sub-section-title { font-size: 2.0rem !important; margin-bottom: 0.7rem !important; }
526
  .input-row { gap: 1.5rem; } .input-field { min-width: 280px; }
527
  .gradio-textbox textarea { min-height: 160px; } .output-card .response-header { font-size: 1.7rem; }
528
  .examples-section { padding-top: 1.2rem; }
@@ -532,12 +535,12 @@ Answer:"""
532
  }
533
  @media (max-width: 768px) {
534
  .gradio-container > .flex.flex-col { padding: 0 1rem !important; }
535
- .app-header-wrapper { padding: 1.8rem 2.5rem !important; margin-bottom: 1.8rem; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; }
536
  .app-header-logo { font-size: 4.5rem; margin-bottom: 0.6rem; } .app-header-title { font-size: 3.2rem; letter-spacing: -0.06em; }
537
  .app-header-tagline { font-size: 1.3rem; }
538
- .main-dashboard-container { padding: 1.8rem !important; margin-bottom: 0.5rem; border-radius: 12px; gap: 1.8rem; }
539
  .dashboard-card-section { padding: 1.5rem; border-radius: 8px; }
540
- .sub-section-title { font-size: 1.8rem !important; margin-top: 1rem !important; margin-bottom: 0.6rem !important; }
541
  .input-row { flex-direction: column; gap: 1rem; } .input-field { min-width: 100%; }
542
  .gradio-textbox textarea { min-height: 140px; } .button-row { justify-content: stretch; gap: 1rem; }
543
  .gradio-button { width: 100%; padding: 1.1rem 2rem !important; font-size: 1.1rem !important; }
@@ -550,12 +553,12 @@ Answer:"""
550
  }
551
  @media (max-width: 480px) {
552
  .gradio-container > .flex.flex-col { padding: 0 0.8rem !important; }
553
- .app-header-wrapper { padding: 1.2rem 1rem !important; margin-bottom: 1.5rem; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; }
554
  .app-header-logo { font-size: 3.8rem; margin-bottom: 0.5rem; } .app-header-title { font-size: 2.8rem; }
555
  .app-header-tagline { font-size: 1.1rem; }
556
- .main-dashboard-container { padding: 1.2rem !important; margin-bottom: 0.4rem; border-radius: 8px; gap: 1.5rem; }
557
  .dashboard-card-section { padding: 1rem; border-radius: 4px; }
558
- .sub-section-title { font-size: 1.5rem !important; margin-top: 0.8rem !important; margin-bottom: 0.5rem !important; }
559
  .gradio-textbox textarea, .gradio-dropdown select, .gradio-textbox input[type=password] { font-size: 1.05rem !important; padding: 1rem 1.2rem !important; }
560
  .gradio-textbox textarea { min-height: 120px; }
561
  .gradio-button { padding: 1rem 1.5rem !important; font-size: 1rem !important; }
@@ -695,7 +698,7 @@ if __name__ == "__main__":
695
  if not os.access(PDF_PATH, os.R_OK):
696
  logging.error(f"FATAL: PDF file at '{PDF_PATH}' exists but is not readable. Check file permissions.")
697
  print(f"\n--- PERMISSION ERROR ---\nPDF file ('{os.path.basename(PDF_PATH)}') found but not readable at: {PDF_PATH}\nPlease check file permissions (e.g., using 'chmod +r' in terminal).\n---------------------------\n")
698
- exit(1)
699
 
700
  logging.info(f"PDF file '{os.path.basename(PDF_PATH)}' found and is readable.")
701
 
 
281
  ["What is an implied warranty of habitability?", "Illinois"]
282
  ]
283
  example_queries = []
284
+ if available_states_list and "Error" not in available_states[0] and len(available_states_list) > 0:
285
  loaded_states_set = set(available_states_list)
286
  # Filter for examples whose state is in the loaded states
287
  example_queries = [ex for ex in example_queries_base if ex[1] in loaded_states_set]
 
307
  }
308
  /* Header specific styling */
309
  .app-header-wrapper {
310
+ padding: 4.5rem 3.5rem !important;
311
  text-align: center !important;
312
+ border-bottom-left-radius: 24px;
313
  border-bottom-right-radius: 24px;
314
  position: relative;
315
  overflow: hidden;
316
  z-index: 10;
317
+ margin-bottom: 2rem; /* Reduced margin */
318
+ border: 2px solid var(--border-color-primary) !important; /* Thicker border */
319
  border-top: none;
320
  max-width: 1120px;
321
  margin-left: auto;
322
  margin-right: auto;
323
  width: 100%;
324
+ /* Enhanced background */
325
+ background-image: linear-gradient(135deg, var(--background-fill-primary) 0%, var(--background-fill-secondary) 100%);
326
+ box-shadow: 0 10px 30px rgba(0,0,0,0.4); /* More pronounced shadow */
327
  }
328
  .app-header { display: flex; flex-direction: column; align-items: center; position: relative; z-index: 1; }
329
  .app-header-logo {
330
  font-size: 5.5rem; margin-bottom: 0.8rem; line-height: 1;
331
+ filter: drop-shadow(0 0 15px var(--primary-500));
332
  transform: translateY(-40px); opacity: 0;
333
  animation: fadeInSlideDown 1.5s ease-out forwards; animation-delay: 0.3s;
334
  }
335
  .app-header-title {
336
+ font-family: 'Playfair Display', serif !important;
337
  font-size: 4.2rem; font-weight: 900;
338
  margin: 0 0 0.8rem 0; letter-spacing: -0.07em;
339
  text-shadow: 0 8px 16px rgba(0,0,0,0.5);
 
341
  animation: fadeInSlideDown 1.5s ease-out forwards; animation-delay: 0.6s;
342
  }
343
  .app-header-tagline {
344
+ font-family: 'Inter', sans-serif !important;
345
  font-size: 1.6rem; font-weight: 300;
346
  opacity: 0.9; max-width: 900px;
347
  transform: translateY(-40px); opacity: 0;
 
349
  }
350
  /* Main dashboard container */
351
  .main-dashboard-container {
352
+ border-radius: 24px;
353
+ border: 2px solid var(--border-color-primary) !important; /* Thicker border */
354
+ padding: 3.5rem !important;
355
+ margin: 0 auto 0.6rem auto; /* Reduced margin-bottom */
356
  z-index: 1; position: relative;
357
+ display: flex; flex-direction: column; gap: 2rem; /* Reduced gap between boxes */
358
  max-width: 1120px;
359
  }
360
  /* Card sections within the dashboard */
361
  .dashboard-card-section {
362
+ border-radius: 12px;
363
+ border: 2px solid var(--border-color-primary); /* Thicker border */
364
+ padding: 2.5rem;
365
  box-shadow: inset 0 0 10px rgba(0,0,0,0.2);
366
  display: flex; flex-direction: column; gap: 1.5rem;
367
  }
 
372
  /* Section titles */
373
  .sub-section-title {
374
  font-family: 'Playfair Display', serif !important;
375
+ font-size: 3.0rem !important; /* Increased font size */
376
  font-weight: 800 !important;
377
+ text-align: center !important; /* Already centered, kept */
378
  margin-top: 1.5rem !important;
379
  margin-bottom: 0.8rem !important;
380
  display: block !important;
 
397
  /* Button layout */
398
  .button-row { display: flex; gap: 2rem; margin-top: 2rem; flex-wrap: wrap; justify-content: flex-end; }
399
  .gradio-button {
400
+ border-radius: 12px !important;
401
+ padding: 1.2rem 2.8rem !important;
402
+ font-size: 1.15rem !important;
403
+ font-weight: 600 !important;
404
  border: 1px solid transparent !important;
405
+ box-shadow: 0 6px 20px rgba(0,0,0,0.35);
406
  transition: all 0.4s cubic-bezier(0.0, 0.0, 0.2, 1);
407
  }
408
  .gradio-button:hover:not(:disabled) { transform: translateY(-6px); box-shadow: 0 12px 28px rgba(0,0,0,0.45) !important; }
 
413
  }
414
  .gr-button-secondary { /* Override for secondary button specific look */
415
  background: transparent !important;
416
+ border: 2px solid var(--neutral-500) !important; /* Used neutral-500 for clearer border */
417
  box-shadow: none !important;
418
  }
419
  .gr-button-secondary:hover:not(:disabled) {
420
+ background: var(--button-secondary-background-hover) !important;
421
+ border-color: var(--primary-500) !important;
422
  }
423
  @media (prefers-color-scheme: light) {
424
  .gradio-button { box-shadow: 0 6px 20px rgba(0,0,0,0.1); }
 
430
  font-size: 1.8rem; font-weight: 700;
431
  margin: 0 0 1rem 0; display: flex; align-items: center; gap: 1.2rem;
432
  }
433
+ .output-card .response-icon { font-size: 2rem; color: var(--primary-500); }
434
  .output-card .divider { border: none; border-top: 1px solid var(--border-color-primary); margin: 1.5rem 0 1.8rem 0; }
435
  .output-card .output-content-wrapper { font-size: 1.15rem; line-height: 1.8; }
436
  .output-card .output-content-wrapper p { margin-bottom: 1rem; }
 
439
  .output-card .output-content-wrapper li { margin-bottom: 0.8rem; }
440
  .output-card .error-message {
441
  padding: 1.5rem 2rem; margin-top: 1.5rem; font-size: 1.1rem;
442
+ border-radius: 12px;
443
+ background: var(--error-background-fill) !important;
444
+ color: var(--error-text-color) !important;
445
+ border: 2px solid var(--error-border-color) !important;
446
  display: flex; align-items: flex-start; gap: 1.5em;
447
  }
448
  .output-card .error-message .error-icon { font-size: 1.8rem; line-height: 1; padding-top: 0.1em; }
449
  .output-card .error-details { font-size: 0.95rem; margin-top: 0.8rem; opacity: 0.9; word-break: break-word; }
450
  .output-card .placeholder {
451
+ padding: 2.5rem 2rem; font-size: 1.2rem; border-radius: 12px;
452
  border: 3px dashed var(--border-color-primary);
453
  text-align: center; opacity: 0.8;
454
  }
455
  /* Examples table styling */
456
  .examples-section table.gr-samples-table {
457
+ border-radius: 12px !important;
458
+ border: 2px solid var(--border-color-primary) !important; /* Thicker border */
459
  overflow: hidden;
460
  box-shadow: inset 0 0 10px rgba(0,0,0,0.2);
461
  }
 
464
  }
465
  .examples-section table.gr-samples-table th, .examples-section table.gr-samples-table td { padding: 1rem 1.2rem !important; font-size: 1.05rem !important; border: none !important; }
466
  .examples-section table.gr-samples-table th {
467
+ background: var(--block-background-fill) !important;
468
  font-weight: 600 !important; text-align: left;
469
  }
470
  .examples-section table.gr-samples-table td {
471
  border-top: 1px solid var(--border-color-primary) !important;
472
  cursor: pointer;
473
  }
474
+ .examples-section table.gr-samples-table tr:hover td { background: var(--hover-color) !important; }
475
  .examples-section table.gr-samples-table tr:first-child td { border-top: none !important; }
476
  /* Footer styling */
477
  .app-footer-wrapper {
478
+ border-top: 2px solid var(--border-color-primary) !important; /* Thicker border */
479
+ margin-top: 0.5rem;
480
+ padding-top: 2.5rem;
481
+ padding-bottom: 2.5rem;
482
+ border-top-left-radius: 24px;
483
  border-top-right-radius: 24px;
484
  box-shadow: inset 0 8px 15px rgba(0,0,0,0.2);
485
  max-width: 1120px;
 
488
  width: 100%;
489
  display: flex !important;
490
  flex-direction: column !important;
491
+ align-items: flex-start !important;
492
  }
493
  .app-footer {
494
+ padding: 0 3.5rem !important;
495
  display: flex;
496
  flex-direction: column;
497
  align-items: stretch;
 
518
  font-size: 0 !important; line-height: 0 !important; position: absolute !important;
519
  pointer-events: none !important;
520
  }
521
+ /* Responsive Adjustments */
522
  @media (max-width: 1024px) {
523
  .gradio-container > .flex.flex-col { max-width: 960px; padding: 0 1.5rem !important; }
524
  .app-header-title { font-size: 3.8rem; } .app-header-tagline { font-size: 1.5rem; }
525
+ .app-header-wrapper { padding: 2.5rem 3.5rem !important; margin-bottom: 1.8rem; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; }
526
+ .main-dashboard-container { padding: 2.5rem !important; margin-bottom: 0.6rem; border-radius: 12px; gap: 1.8rem; } /* Adjusted gap */
527
  .dashboard-card-section { padding: 1.8rem; border-radius: 8px; }
528
+ .sub-section-title { font-size: 2.5rem !important; margin-bottom: 0.7rem !important; } /* Adjusted font size */
529
  .input-row { gap: 1.5rem; } .input-field { min-width: 280px; }
530
  .gradio-textbox textarea { min-height: 160px; } .output-card .response-header { font-size: 1.7rem; }
531
  .examples-section { padding-top: 1.2rem; }
 
535
  }
536
  @media (max-width: 768px) {
537
  .gradio-container > .flex.flex-col { padding: 0 1rem !important; }
538
+ .app-header-wrapper { padding: 1.8rem 2.5rem !important; margin-bottom: 1.5rem; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; }
539
  .app-header-logo { font-size: 4.5rem; margin-bottom: 0.6rem; } .app-header-title { font-size: 3.2rem; letter-spacing: -0.06em; }
540
  .app-header-tagline { font-size: 1.3rem; }
541
+ .main-dashboard-container { padding: 1.8rem !important; margin-bottom: 0.5rem; border-radius: 12px; gap: 1.5rem; } /* Adjusted gap */
542
  .dashboard-card-section { padding: 1.5rem; border-radius: 8px; }
543
+ .sub-section-title { font-size: 2.0rem !important; margin-top: 1rem !important; margin-bottom: 0.6rem !important; } /* Adjusted font size */
544
  .input-row { flex-direction: column; gap: 1rem; } .input-field { min-width: 100%; }
545
  .gradio-textbox textarea { min-height: 140px; } .button-row { justify-content: stretch; gap: 1rem; }
546
  .gradio-button { width: 100%; padding: 1.1rem 2rem !important; font-size: 1.1rem !important; }
 
553
  }
554
  @media (max-width: 480px) {
555
  .gradio-container > .flex.flex-col { padding: 0 0.8rem !important; }
556
+ .app-header-wrapper { padding: 1.2rem 1rem !important; margin-bottom: 1.2rem; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; }
557
  .app-header-logo { font-size: 3.8rem; margin-bottom: 0.5rem; } .app-header-title { font-size: 2.8rem; }
558
  .app-header-tagline { font-size: 1.1rem; }
559
+ .main-dashboard-container { padding: 1.2rem !important; margin-bottom: 0.4rem; border-radius: 8px; gap: 1.2rem; } /* Adjusted gap */
560
  .dashboard-card-section { padding: 1rem; border-radius: 4px; }
561
+ .sub-section-title { font-size: 1.8rem !important; margin-top: 0.8rem !important; margin-bottom: 0.5rem !important; } /* Adjusted font size */
562
  .gradio-textbox textarea, .gradio-dropdown select, .gradio-textbox input[type=password] { font-size: 1.05rem !important; padding: 1rem 1.2rem !important; }
563
  .gradio-textbox textarea { min-height: 120px; }
564
  .gradio-button { padding: 1rem 1.5rem !important; font-size: 1rem !important; }
 
698
  if not os.access(PDF_PATH, os.R_OK):
699
  logging.error(f"FATAL: PDF file at '{PDF_PATH}' exists but is not readable. Check file permissions.")
700
  print(f"\n--- PERMISSION ERROR ---\nPDF file ('{os.path.basename(PDF_PATH)}') found but not readable at: {PDF_PATH}\nPlease check file permissions (e.g., using 'chmod +r' in terminal).\n---------------------------\n")
701
+ exit(1)
702
 
703
  logging.info(f"PDF file '{os.path.basename(PDF_PATH)}' found and is readable.")
704