@twentyfirstmedia/pro 0.6.0 → 0.7.0

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.
package/dist/scoped.css CHANGED
@@ -14396,6 +14396,37 @@
14396
14396
  }
14397
14397
  }
14398
14398
 
14399
+ /* Fluid actions: an action row measures itself, so its buttons answer to the box it sits in (a
14400
+ thin card, a side panel, a phone) instead of the window. When the row is narrow it wraps and
14401
+ its buttons share the full width; when it is very narrow each button takes a line. The rows are
14402
+ the kit's own footers and action bars, and plain `.tf-row`s of buttons placed directly in a
14403
+ column box (panel, card, dialog, form …), where they always span the box. */
14404
+ :where([data-kit="pro"]) :is(
14405
+ .tf-modal-foot,
14406
+ .tf-card-foot,
14407
+ .tf-approval-foot,
14408
+ .tf-review-actions,
14409
+ .tf-cookie-actions,
14410
+ .tf-push-actions,
14411
+ .tf-insight-actions,
14412
+ .tf-journal-foot,
14413
+ :is(.tf-panel, .tf-card, .tf-modal, .tf-drawer, .tf-popover, .tf-form, .tf-col)
14414
+ > .tf-row:not(:has(> :not(.tf-btn, .tf-iconbtn)))
14415
+ ) {
14416
+ container: tf-actions / inline-size;
14417
+ flex-wrap: wrap;
14418
+ }
14419
+ @container tf-actions (max-width: 400px) {
14420
+ :where([data-kit="pro"]) .tf-btn {
14421
+ flex: 1 1 auto;
14422
+ }
14423
+ }
14424
+ @container tf-actions (max-width: 240px) {
14425
+ :where([data-kit="pro"]) .tf-btn {
14426
+ flex-basis: 100%;
14427
+ }
14428
+ }
14429
+
14399
14430
  /* 07-polish.css */
14400
14431
  /* Generated by scripts/pro-css.ts from packages/halo/css. Do not edit; the Pro look lives in 90-pro-look.css. */
14401
14432
  /* ───────────── Polish ─────────────
@@ -14605,10 +14636,17 @@
14605
14636
  .tf-card,
14606
14637
  .tf-stat,
14607
14638
  .tf-dock,
14608
- .tf-sidebar,
14639
+ .tf-sidebar:not(.shell),
14609
14640
  .tf-map-legend,
14610
14641
  .tf-map-ctl,
14611
- .tf-map-pop
14642
+ .tf-map-pop,
14643
+ .tf-vital,
14644
+ .tf-journal,
14645
+ .tf-goal,
14646
+ .tf-insight,
14647
+ .tf-consent-item,
14648
+ .tf-nw,
14649
+ .tf-policy
14612
14650
  ):not(
14613
14651
  :is(
14614
14652
  .tf-panel,
@@ -14624,6 +14662,13 @@
14624
14662
  .tf-palette,
14625
14663
  .tf-modal,
14626
14664
  .tf-drawer,
14665
+ .tf-vital,
14666
+ .tf-journal,
14667
+ .tf-goal,
14668
+ .tf-insight,
14669
+ .tf-consent-item,
14670
+ .tf-nw,
14671
+ .tf-policy,
14627
14672
  .tf-glass
14628
14673
  )
14629
14674
  *
@@ -14634,10 +14679,17 @@
14634
14679
  .tf-card,
14635
14680
  .tf-stat,
14636
14681
  .tf-dock,
14637
- .tf-sidebar,
14682
+ .tf-sidebar:not(.shell),
14638
14683
  .tf-map-legend,
14639
14684
  .tf-map-ctl,
14640
- .tf-map-pop
14685
+ .tf-map-pop,
14686
+ .tf-vital,
14687
+ .tf-journal,
14688
+ .tf-goal,
14689
+ .tf-insight,
14690
+ .tf-consent-item,
14691
+ .tf-nw,
14692
+ .tf-policy
14641
14693
  ):not(
14642
14694
  :is(
14643
14695
  .tf-panel,
@@ -14653,6 +14705,13 @@
14653
14705
  .tf-palette,
14654
14706
  .tf-modal,
14655
14707
  .tf-drawer,
14708
+ .tf-vital,
14709
+ .tf-journal,
14710
+ .tf-goal,
14711
+ .tf-insight,
14712
+ .tf-consent-item,
14713
+ .tf-nw,
14714
+ .tf-policy,
14656
14715
  .tf-glass
14657
14716
  )
14658
14717
  *
@@ -14769,6 +14828,10 @@
14769
14828
  .tf-modal,
14770
14829
  .tf-drawer,
14771
14830
  .tf-glass,
14831
+ .tf-insight,
14832
+ .tf-policy,
14833
+ .tf-consent-item,
14834
+ .tf-journal,
14772
14835
  .tf-btngroup,
14773
14836
  .tf-map-ctl,
14774
14837
  .tf-topbar
@@ -14798,6 +14861,10 @@
14798
14861
  .tf-modal,
14799
14862
  .tf-drawer,
14800
14863
  .tf-glass,
14864
+ .tf-insight,
14865
+ .tf-policy,
14866
+ .tf-consent-item,
14867
+ .tf-journal,
14801
14868
  .tf-btngroup,
14802
14869
  .tf-map-ctl,
14803
14870
  .tf-topbar
@@ -14823,10 +14890,38 @@
14823
14890
  }
14824
14891
  :where([data-kit="pro"])[data-surface="glass"]
14825
14892
  :is(.tf-iconbtn-soft, .tf-iconbtn-outline, .tf-btn-secondary, .tf-chip):not(
14826
- :is(.tf-panel, .tf-card, .tf-dock, .tf-popover, .tf-menu, .tf-modal, .tf-drawer, .tf-glass) *
14893
+ :is(
14894
+ .tf-panel,
14895
+ .tf-card,
14896
+ .tf-dock,
14897
+ .tf-popover,
14898
+ .tf-menu,
14899
+ .tf-modal,
14900
+ .tf-drawer,
14901
+ .tf-insight,
14902
+ .tf-policy,
14903
+ .tf-consent-item,
14904
+ .tf-journal,
14905
+ .tf-glass
14906
+ )
14907
+ *
14827
14908
  ):not(.tf-solid):not([aria-pressed="true"]):hover, :where([data-kit="pro"]) [data-surface="glass"]
14828
14909
  :is(.tf-iconbtn-soft, .tf-iconbtn-outline, .tf-btn-secondary, .tf-chip):not(
14829
- :is(.tf-panel, .tf-card, .tf-dock, .tf-popover, .tf-menu, .tf-modal, .tf-drawer, .tf-glass) *
14910
+ :is(
14911
+ .tf-panel,
14912
+ .tf-card,
14913
+ .tf-dock,
14914
+ .tf-popover,
14915
+ .tf-menu,
14916
+ .tf-modal,
14917
+ .tf-drawer,
14918
+ .tf-insight,
14919
+ .tf-policy,
14920
+ .tf-consent-item,
14921
+ .tf-journal,
14922
+ .tf-glass
14923
+ )
14924
+ *
14830
14925
  ):not(.tf-solid):not([aria-pressed="true"]):hover {
14831
14926
  background:
14832
14927
  linear-gradient(var(--glass-hover), var(--glass-hover)) border-box,
@@ -14878,10 +14973,17 @@
14878
14973
  .tf-card,
14879
14974
  .tf-stat,
14880
14975
  .tf-dock,
14881
- .tf-sidebar,
14976
+ .tf-sidebar:not(.shell),
14882
14977
  .tf-map-legend,
14883
14978
  .tf-map-ctl,
14884
- .tf-map-pop
14979
+ .tf-map-pop,
14980
+ .tf-vital,
14981
+ .tf-journal,
14982
+ .tf-goal,
14983
+ .tf-insight,
14984
+ .tf-consent-item,
14985
+ .tf-nw,
14986
+ .tf-policy
14885
14987
  ),
14886
14988
  :where([data-kit="pro"]) [data-surface="glass"]
14887
14989
  :is(
@@ -14889,10 +14991,17 @@
14889
14991
  .tf-card,
14890
14992
  .tf-stat,
14891
14993
  .tf-dock,
14892
- .tf-sidebar,
14994
+ .tf-sidebar:not(.shell),
14893
14995
  .tf-map-legend,
14894
14996
  .tf-map-ctl,
14895
- .tf-map-pop
14997
+ .tf-map-pop,
14998
+ .tf-vital,
14999
+ .tf-journal,
15000
+ .tf-goal,
15001
+ .tf-insight,
15002
+ .tf-consent-item,
15003
+ .tf-nw,
15004
+ .tf-policy
14896
15005
  ) {
14897
15006
  outline: 1px solid CanvasText;
14898
15007
  outline-offset: -1px;
@@ -15287,6 +15396,1378 @@
15287
15396
  animation: none;
15288
15397
  }
15289
15398
 
15399
+ /* 11-life.css */
15400
+ /* Generated by scripts/pro-css.ts from packages/halo/css. Do not edit; the Pro look lives in 90-pro-look.css. */
15401
+ /* Life: habits, mood, vitals, activity rings, sleep, medication, journal, goals, insights, consent */
15402
+
15403
+ /* HabitTracker */
15404
+ :where([data-kit="pro"]) .tf-habits {
15405
+ container: tf-habits / inline-size;
15406
+ display: grid;
15407
+ gap: 4px;
15408
+ min-width: 0;
15409
+ }
15410
+ :where([data-kit="pro"]) .tf-habit-days,
15411
+ :where([data-kit="pro"]) .tf-habit-marks {
15412
+ display: grid;
15413
+ grid-auto-flow: column;
15414
+ grid-auto-columns: 24px;
15415
+ gap: 6px;
15416
+ }
15417
+ :where([data-kit="pro"]) .tf-habit-days {
15418
+ justify-self: end;
15419
+ padding-right: 12px;
15420
+ font: 500 11px/16px var(--font-sans);
15421
+ color: var(--ink-muted);
15422
+ text-align: center;
15423
+ }
15424
+ :where([data-kit="pro"]) .tf-habit {
15425
+ display: grid;
15426
+ grid-template-columns: auto minmax(0, 1fr) auto;
15427
+ align-items: center;
15428
+ gap: 12px;
15429
+ padding: 8px 12px;
15430
+ border-radius: var(--radius-md);
15431
+ }
15432
+ :where([data-kit="pro"]) .tf-habit:hover {
15433
+ background: var(--surface-sunken);
15434
+ }
15435
+ :where([data-kit="pro"]) .tf-habit-text {
15436
+ display: flex;
15437
+ flex-direction: column;
15438
+ min-width: 0;
15439
+ }
15440
+ :where([data-kit="pro"]) .tf-habit-text b {
15441
+ overflow: hidden;
15442
+ text-overflow: ellipsis;
15443
+ white-space: nowrap;
15444
+ font: 500 14px/20px var(--font-sans);
15445
+ }
15446
+ :where([data-kit="pro"]) .tf-habit-text small {
15447
+ display: flex;
15448
+ flex-wrap: wrap;
15449
+ gap: 4px 10px;
15450
+ font: 500 12px/16px var(--font-sans);
15451
+ color: var(--ink-muted);
15452
+ }
15453
+ :where([data-kit="pro"]) .tf-habit-streak {
15454
+ display: inline-flex;
15455
+ align-items: center;
15456
+ gap: 4px;
15457
+ color: var(--butter-ink);
15458
+ }
15459
+ :where([data-kit="pro"]) .tf-habit-mark {
15460
+ display: grid;
15461
+ place-items: center;
15462
+ width: 24px;
15463
+ height: 24px;
15464
+ box-sizing: border-box;
15465
+ padding: 0;
15466
+ border: 1.5px solid var(--line-strong);
15467
+ border-radius: var(--radius-1);
15468
+ background: transparent;
15469
+ color: var(--primary-foreground);
15470
+ }
15471
+ :where([data-kit="pro"]) .tf-habit-mark.done {
15472
+ border-color: var(--mint-ink);
15473
+ background: var(--mint-ink);
15474
+ }
15475
+ /* missed: an empty ring with a small cross; no entry: a faint dashed ring */
15476
+ :where([data-kit="pro"]) .tf-habit-mark.missed {
15477
+ color: var(--ink-subtle);
15478
+ }
15479
+ :where([data-kit="pro"]) .tf-habit-mark:not(.done):not(.missed) {
15480
+ border-style: dashed;
15481
+ border-color: var(--line);
15482
+ }
15483
+ :where([data-kit="pro"]) .tf-habit-mark.today {
15484
+ box-shadow:
15485
+ 0 0 0 2px var(--surface),
15486
+ 0 0 0 4px var(--line-strong);
15487
+ }
15488
+ /* narrow: the marks go under the name, the day labels line up with them */
15489
+ @container tf-habits (max-width: 400px) {
15490
+ :where([data-kit="pro"]) .tf-habit {
15491
+ grid-template-columns: auto minmax(0, 1fr);
15492
+ row-gap: 8px;
15493
+ }
15494
+ :where([data-kit="pro"]) .tf-habit-marks {
15495
+ grid-column: 1 / -1;
15496
+ }
15497
+ :where([data-kit="pro"]) .tf-habit-days {
15498
+ justify-self: start;
15499
+ padding: 0 0 0 12px;
15500
+ }
15501
+ }
15502
+ @container tf-habits (max-width: 240px) {
15503
+ :where([data-kit="pro"]) .tf-habit-days,
15504
+ :where([data-kit="pro"]) .tf-habit-marks {
15505
+ gap: 2px;
15506
+ }
15507
+ }
15508
+ :where([data-kit="pro"]) button.tf-habit-mark {
15509
+ cursor: pointer;
15510
+ }
15511
+ :where([data-kit="pro"]) button.tf-habit-mark:focus-visible {
15512
+ outline: 2px solid var(--focus);
15513
+ outline-offset: 4px;
15514
+ }
15515
+
15516
+ /* MoodPicker */
15517
+ :where([data-kit="pro"]) .tf-mood {
15518
+ min-width: 0;
15519
+ margin: 0;
15520
+ padding: 0;
15521
+ border: 0;
15522
+ }
15523
+ :where([data-kit="pro"]) .tf-mood-q {
15524
+ padding: 0;
15525
+ margin-bottom: 12px;
15526
+ font: 500 14px/20px var(--font-sans);
15527
+ }
15528
+ :where([data-kit="pro"]) .tf-mood-scale {
15529
+ container: tf-mood / inline-size;
15530
+ display: grid;
15531
+ grid-template-columns: repeat(5, minmax(0, 1fr));
15532
+ gap: 8px;
15533
+ }
15534
+ :where([data-kit="pro"]) .tf-mood-opt {
15535
+ position: relative;
15536
+ display: flex;
15537
+ flex-direction: column;
15538
+ align-items: center;
15539
+ justify-content: center;
15540
+ gap: 4px;
15541
+ min-width: 0;
15542
+ min-height: 72px;
15543
+ padding: 8px 4px;
15544
+ box-sizing: border-box;
15545
+ border-radius: var(--radius-md);
15546
+ color: var(--ink-muted);
15547
+ font: 500 12px/16px var(--font-sans);
15548
+ cursor: pointer;
15549
+ }
15550
+ /* the picked level keeps the tint its tf-t-* class gives it */
15551
+ :where([data-kit="pro"]) .tf-mood-opt:not(.on) {
15552
+ background: var(--surface-sunken);
15553
+ }
15554
+ :where([data-kit="pro"]) .tf-mood.compact .tf-mood-opt {
15555
+ min-height: 48px;
15556
+ }
15557
+ :where([data-kit="pro"]) .tf-mood-opt span {
15558
+ max-width: 100%;
15559
+ overflow: hidden;
15560
+ text-overflow: ellipsis;
15561
+ white-space: nowrap;
15562
+ }
15563
+ /* narrow: tighter cells so every word still fits */
15564
+ @container tf-mood (max-width: 300px) {
15565
+ :where([data-kit="pro"]) .tf-mood-opt {
15566
+ padding: 8px 2px;
15567
+ font-size: 11px;
15568
+ }
15569
+ }
15570
+ :where([data-kit="pro"]) .tf-mood-opt input {
15571
+ position: absolute;
15572
+ inset: 0;
15573
+ margin: 0;
15574
+ opacity: 0;
15575
+ cursor: pointer;
15576
+ }
15577
+ :where([data-kit="pro"]) .tf-mood-opt:hover {
15578
+ color: var(--ink);
15579
+ }
15580
+ :where([data-kit="pro"]) .tf-mood-opt.on {
15581
+ box-shadow: inset 0 0 0 2px currentColor;
15582
+ }
15583
+ :where([data-kit="pro"]) .tf-mood-opt:has(input:focus-visible) {
15584
+ outline: 2px solid var(--focus);
15585
+ outline-offset: 2px;
15586
+ }
15587
+
15588
+ /* VitalTile */
15589
+ :where([data-kit="pro"]) .tf-vital {
15590
+ display: flex;
15591
+ flex-direction: column;
15592
+ gap: 12px;
15593
+ min-width: 0;
15594
+ padding: 16px;
15595
+ border-radius: var(--radius-lg);
15596
+ background: var(--surface);
15597
+ box-shadow: 0 0 0 var(--line-width) var(--line);
15598
+ }
15599
+ :where([data-kit="pro"]) .tf-vital-head {
15600
+ display: flex;
15601
+ align-items: center;
15602
+ justify-content: space-between;
15603
+ gap: 8px;
15604
+ }
15605
+ :where([data-kit="pro"]) .tf-vital-head .tf-badge {
15606
+ flex: none;
15607
+ white-space: nowrap;
15608
+ }
15609
+ :where([data-kit="pro"]) .tf-vital-label {
15610
+ display: inline-flex;
15611
+ align-items: center;
15612
+ gap: 6px;
15613
+ min-width: 0;
15614
+ font: 500 13px/18px var(--font-sans);
15615
+ color: var(--ink-muted);
15616
+ }
15617
+ :where([data-kit="pro"]) .tf-vital-main {
15618
+ display: flex;
15619
+ align-items: flex-end;
15620
+ justify-content: space-between;
15621
+ gap: 12px;
15622
+ }
15623
+ :where([data-kit="pro"]) .tf-vital-value {
15624
+ font: 600 22px/28px var(--font-sans);
15625
+ letter-spacing: -0.02em;
15626
+ font-variant-numeric: tabular-nums;
15627
+ }
15628
+ :where([data-kit="pro"]) .tf-vital-value small {
15629
+ margin-left: 4px;
15630
+ font: 500 13px/18px var(--font-sans);
15631
+ letter-spacing: 0;
15632
+ color: var(--ink-muted);
15633
+ }
15634
+ :where([data-kit="pro"]) .tf-vital-band {
15635
+ position: relative;
15636
+ height: 8px;
15637
+ border-radius: var(--radius-pill);
15638
+ background: var(--surface-sunken);
15639
+ }
15640
+ :where([data-kit="pro"]) .tf-vital-normal {
15641
+ position: absolute;
15642
+ top: 0;
15643
+ bottom: 0;
15644
+ border-radius: var(--radius-pill);
15645
+ background: var(--mint);
15646
+ }
15647
+ :where([data-kit="pro"]) .tf-vital-dot {
15648
+ position: absolute;
15649
+ top: 50%;
15650
+ width: 14px;
15651
+ height: 14px;
15652
+ box-sizing: border-box;
15653
+ border: 3px solid var(--surface);
15654
+ border-radius: var(--radius-full);
15655
+ background: var(--mint-ink);
15656
+ translate: -50% -50%;
15657
+ }
15658
+ :where([data-kit="pro"]) .tf-vital.is-low .tf-vital-dot,
15659
+ :where([data-kit="pro"]) .tf-vital.is-high .tf-vital-dot {
15660
+ background: var(--butter-ink);
15661
+ }
15662
+ :where([data-kit="pro"]) .tf-vital-foot {
15663
+ display: flex;
15664
+ flex-wrap: wrap;
15665
+ justify-content: space-between;
15666
+ gap: 4px 12px;
15667
+ font: 500 12px/16px var(--font-sans);
15668
+ color: var(--ink-muted);
15669
+ }
15670
+
15671
+ /* ActivityRings */
15672
+ :where([data-kit="pro"]) .tf-rings {
15673
+ display: flex;
15674
+ flex-wrap: wrap;
15675
+ align-items: center;
15676
+ gap: 20px;
15677
+ min-width: 0;
15678
+ }
15679
+ :where([data-kit="pro"]) .tf-rings svg {
15680
+ flex: none;
15681
+ }
15682
+ :where([data-kit="pro"]) .tf-rings-legend {
15683
+ display: flex;
15684
+ flex-direction: column;
15685
+ gap: 8px;
15686
+ min-width: 0;
15687
+ margin: 0;
15688
+ padding: 0;
15689
+ list-style: none;
15690
+ }
15691
+ :where([data-kit="pro"]) .tf-rings-legend li {
15692
+ display: grid;
15693
+ grid-template-columns: auto minmax(0, 1fr);
15694
+ align-items: center;
15695
+ column-gap: 8px;
15696
+ }
15697
+ :where([data-kit="pro"]) .tf-rings-key {
15698
+ width: 10px;
15699
+ height: 10px;
15700
+ border-radius: var(--radius-1);
15701
+ }
15702
+ :where([data-kit="pro"]) .tf-rings-name {
15703
+ font: 500 12px/16px var(--font-sans);
15704
+ color: var(--ink-muted);
15705
+ }
15706
+ :where([data-kit="pro"]) .tf-rings-legend b {
15707
+ grid-column: 2;
15708
+ font: 600 14px/20px var(--font-sans);
15709
+ font-variant-numeric: tabular-nums;
15710
+ }
15711
+
15712
+ /* SleepChart */
15713
+ :where([data-kit="pro"]) .tf-sleep {
15714
+ display: flex;
15715
+ flex-direction: column;
15716
+ gap: 16px;
15717
+ min-width: 0;
15718
+ }
15719
+ :where([data-kit="pro"]) .tf-sleep-chart {
15720
+ display: flex;
15721
+ flex-direction: column;
15722
+ gap: 6px;
15723
+ }
15724
+ :where([data-kit="pro"]) .tf-sleep-lane {
15725
+ display: grid;
15726
+ grid-template-columns: 52px minmax(0, 1fr);
15727
+ align-items: center;
15728
+ gap: 12px;
15729
+ }
15730
+ :where([data-kit="pro"]) .tf-sleep-name {
15731
+ font: 500 12px/16px var(--font-sans);
15732
+ color: var(--ink-muted);
15733
+ }
15734
+ :where([data-kit="pro"]) .tf-sleep-track {
15735
+ position: relative;
15736
+ height: 20px;
15737
+ border-radius: var(--radius-sm);
15738
+ background: var(--surface-sunken);
15739
+ }
15740
+ :where([data-kit="pro"]) .tf-sleep-seg {
15741
+ position: absolute;
15742
+ top: 2px;
15743
+ bottom: 2px;
15744
+ min-width: 2px;
15745
+ border-radius: var(--radius-sm);
15746
+ }
15747
+ :where([data-kit="pro"]) .tf-sleep-axis {
15748
+ display: flex;
15749
+ justify-content: space-between;
15750
+ margin-left: 64px;
15751
+ font: 500 11px/16px var(--font-sans);
15752
+ color: var(--ink-muted);
15753
+ font-variant-numeric: tabular-nums;
15754
+ }
15755
+ :where([data-kit="pro"]) .tf-sleep-sum {
15756
+ display: flex;
15757
+ flex-wrap: wrap;
15758
+ align-items: center;
15759
+ justify-content: space-between;
15760
+ gap: 8px 16px;
15761
+ }
15762
+ :where([data-kit="pro"]) .tf-sleep-sum b {
15763
+ font: 600 14px/20px var(--font-sans);
15764
+ }
15765
+ :where([data-kit="pro"]) .tf-sleep-sum ul {
15766
+ display: flex;
15767
+ flex-wrap: wrap;
15768
+ gap: 4px 14px;
15769
+ margin: 0;
15770
+ padding: 0;
15771
+ list-style: none;
15772
+ }
15773
+ :where([data-kit="pro"]) .tf-sleep-sum li {
15774
+ display: inline-flex;
15775
+ align-items: center;
15776
+ gap: 6px;
15777
+ font: 500 12px/16px var(--font-sans);
15778
+ color: var(--ink-muted);
15779
+ }
15780
+ :where([data-kit="pro"]) .tf-sleep-sum li span:last-child {
15781
+ color: var(--ink);
15782
+ font-weight: 500;
15783
+ font-variant-numeric: tabular-nums;
15784
+ }
15785
+
15786
+ /* MedicationList */
15787
+ :where([data-kit="pro"]) .tf-meds {
15788
+ container: tf-meds / inline-size;
15789
+ display: flex;
15790
+ flex-direction: column;
15791
+ gap: 4px;
15792
+ min-width: 0;
15793
+ margin: 0;
15794
+ padding: 0;
15795
+ list-style: none;
15796
+ }
15797
+ :where([data-kit="pro"]) .tf-med {
15798
+ display: grid;
15799
+ grid-template-columns: 48px auto minmax(0, 1fr) auto;
15800
+ align-items: center;
15801
+ gap: 12px;
15802
+ padding: 8px 12px;
15803
+ border-radius: var(--radius-md);
15804
+ }
15805
+ :where([data-kit="pro"]) .tf-med.is-due {
15806
+ background: var(--surface-sunken);
15807
+ }
15808
+ :where([data-kit="pro"]) .tf-med-time {
15809
+ font: 500 13px/18px var(--font-sans);
15810
+ font-variant-numeric: tabular-nums;
15811
+ color: var(--ink-muted);
15812
+ }
15813
+ :where([data-kit="pro"]) .tf-med-text {
15814
+ display: flex;
15815
+ flex-direction: column;
15816
+ min-width: 0;
15817
+ }
15818
+ :where([data-kit="pro"]) .tf-med-text b {
15819
+ font: 500 14px/20px var(--font-sans);
15820
+ overflow-wrap: break-word;
15821
+ }
15822
+ :where([data-kit="pro"]) .tf-med-text small {
15823
+ font: 500 12px/16px var(--font-sans);
15824
+ color: var(--ink-muted);
15825
+ }
15826
+ :where([data-kit="pro"]) .tf-med.is-taken .tf-med-text b {
15827
+ color: var(--ink-muted);
15828
+ }
15829
+ :where([data-kit="pro"]) .tf-med-act {
15830
+ display: inline-flex;
15831
+ align-items: center;
15832
+ gap: 8px;
15833
+ }
15834
+ /* narrow: time, name and status; the icon gives way */
15835
+ @container tf-meds (max-width: 400px) {
15836
+ :where([data-kit="pro"]) .tf-med {
15837
+ grid-template-columns: 44px minmax(0, 1fr) auto;
15838
+ gap: 8px;
15839
+ padding: 8px;
15840
+ }
15841
+ :where([data-kit="pro"]) .tf-med > .tf-tinticon {
15842
+ display: none;
15843
+ }
15844
+ }
15845
+
15846
+ /* JournalEntry */
15847
+ :where([data-kit="pro"]) .tf-journal {
15848
+ display: flex;
15849
+ flex-direction: column;
15850
+ gap: 8px;
15851
+ min-width: 0;
15852
+ padding: 20px;
15853
+ border-radius: var(--radius-lg);
15854
+ background: var(--surface);
15855
+ box-shadow: 0 0 0 var(--line-width) var(--line);
15856
+ }
15857
+ :where([data-kit="pro"]) .tf-journal-head {
15858
+ display: flex;
15859
+ flex-wrap: wrap;
15860
+ align-items: center;
15861
+ justify-content: space-between;
15862
+ gap: 8px;
15863
+ font: 500 12px/16px var(--font-sans);
15864
+ color: var(--ink-muted);
15865
+ }
15866
+ :where([data-kit="pro"]) .tf-journal-mood {
15867
+ display: inline-flex;
15868
+ align-items: center;
15869
+ gap: 4px;
15870
+ padding: 2px 8px;
15871
+ border-radius: var(--radius-pill);
15872
+ }
15873
+ :where([data-kit="pro"]) .tf-journal-title {
15874
+ margin: 0;
15875
+ font: 600 14px/20px var(--font-sans);
15876
+ }
15877
+ :where([data-kit="pro"]) .tf-journal-body {
15878
+ font: 500 14px/20px var(--font-sans);
15879
+ color: var(--ink);
15880
+ overflow-wrap: anywhere;
15881
+ }
15882
+ :where([data-kit="pro"]) .tf-journal-body p {
15883
+ margin: 0 0 8px;
15884
+ }
15885
+ :where([data-kit="pro"]) .tf-journal-foot {
15886
+ display: flex;
15887
+ flex-wrap: wrap;
15888
+ align-items: center;
15889
+ justify-content: space-between;
15890
+ gap: 8px;
15891
+ padding-top: 4px;
15892
+ }
15893
+ :where([data-kit="pro"]) .tf-journal-tags {
15894
+ display: flex;
15895
+ flex-wrap: wrap;
15896
+ gap: 6px;
15897
+ }
15898
+
15899
+ /* GoalCard */
15900
+ :where([data-kit="pro"]) .tf-goal {
15901
+ display: flex;
15902
+ flex-direction: column;
15903
+ gap: 12px;
15904
+ min-width: 0;
15905
+ padding: 20px;
15906
+ border-radius: var(--radius-lg);
15907
+ background: var(--surface);
15908
+ box-shadow: 0 0 0 var(--line-width) var(--line);
15909
+ }
15910
+ /* narrow: the icon steps aside so the title keeps whole words */
15911
+ @container tf-goal (max-width: 280px) {
15912
+ :where([data-kit="pro"]) .tf-goal-head > .tf-tinticon {
15913
+ display: none;
15914
+ }
15915
+ }
15916
+ :where([data-kit="pro"]) .tf-goal-head {
15917
+ container: tf-goal / inline-size;
15918
+ display: flex;
15919
+ align-items: center;
15920
+ gap: 12px;
15921
+ }
15922
+ :where([data-kit="pro"]) .tf-goal-head .tf-option-text {
15923
+ flex: 1;
15924
+ padding: 0;
15925
+ }
15926
+ :where([data-kit="pro"]) .tf-goal-head b {
15927
+ font: 600 14px/20px var(--font-sans);
15928
+ }
15929
+ :where([data-kit="pro"]) .tf-goal-pct {
15930
+ font: 600 18px/24px var(--font-sans);
15931
+ font-variant-numeric: tabular-nums;
15932
+ }
15933
+ :where([data-kit="pro"]) .tf-goal-bar {
15934
+ height: 10px;
15935
+ overflow: hidden;
15936
+ border-radius: var(--radius-pill);
15937
+ background: var(--surface-sunken);
15938
+ }
15939
+ :where([data-kit="pro"]) .tf-goal-bar > span {
15940
+ display: block;
15941
+ height: 100%;
15942
+ border-radius: var(--radius-pill);
15943
+ }
15944
+ :where([data-kit="pro"]) .tf-goal-meta,
15945
+ :where([data-kit="pro"]) .tf-goal-note {
15946
+ margin: 0;
15947
+ font: 500 12px/16px var(--font-sans);
15948
+ color: var(--ink-muted);
15949
+ }
15950
+ :where([data-kit="pro"]) .tf-goal-steps {
15951
+ display: flex;
15952
+ flex-direction: column;
15953
+ gap: 6px;
15954
+ margin: 0;
15955
+ padding: 0;
15956
+ list-style: none;
15957
+ font: 500 13px/18px var(--font-sans);
15958
+ }
15959
+ :where([data-kit="pro"]) .tf-goal-steps li {
15960
+ display: flex;
15961
+ align-items: center;
15962
+ gap: 8px;
15963
+ }
15964
+ :where([data-kit="pro"]) .tf-goal-steps li.done {
15965
+ color: var(--ink-muted);
15966
+ }
15967
+ :where([data-kit="pro"]) .tf-goal-step {
15968
+ display: grid;
15969
+ place-items: center;
15970
+ flex: none;
15971
+ width: 16px;
15972
+ height: 16px;
15973
+ box-sizing: border-box;
15974
+ border: 1.5px solid var(--line-strong);
15975
+ border-radius: var(--radius-1);
15976
+ color: var(--primary-foreground);
15977
+ }
15978
+ :where([data-kit="pro"]) .tf-goal-steps li.done .tf-goal-step {
15979
+ border-color: var(--primary);
15980
+ background: var(--primary);
15981
+ }
15982
+
15983
+ /* InsightCard */
15984
+ :where([data-kit="pro"]) .tf-insight {
15985
+ display: flex;
15986
+ flex-direction: column;
15987
+ gap: 12px;
15988
+ min-width: 0;
15989
+ padding: 16px 16px 16px 20px;
15990
+ border-radius: var(--radius-lg);
15991
+ background: var(--surface);
15992
+ box-shadow:
15993
+ 0 0 0 var(--line-width) var(--line),
15994
+ inset 3px 0 0 var(--sky-ink);
15995
+ /* on glass the card takes a faint wash of its tone */
15996
+ --tint: var(--sky);
15997
+ }
15998
+ :where([data-kit="pro"]) .tf-insight.is-success {
15999
+ --tint: var(--mint);
16000
+ box-shadow:
16001
+ 0 0 0 var(--line-width) var(--line),
16002
+ inset 3px 0 0 var(--mint-ink);
16003
+ }
16004
+ :where([data-kit="pro"]) .tf-insight.is-warning {
16005
+ --tint: var(--butter);
16006
+ box-shadow:
16007
+ 0 0 0 var(--line-width) var(--line),
16008
+ inset 3px 0 0 var(--butter-ink);
16009
+ }
16010
+ :where([data-kit="pro"]) .tf-insight.is-highlight {
16011
+ --tint: var(--lilac);
16012
+ box-shadow:
16013
+ 0 0 0 var(--line-width) var(--line),
16014
+ inset 3px 0 0 var(--lilac-ink);
16015
+ }
16016
+ :where([data-kit="pro"]) .tf-insight-head {
16017
+ display: flex;
16018
+ align-items: flex-start;
16019
+ gap: 12px;
16020
+ }
16021
+ :where([data-kit="pro"]) .tf-insight-titles {
16022
+ display: flex;
16023
+ flex: 1;
16024
+ flex-direction: column;
16025
+ min-width: 0;
16026
+ }
16027
+ :where([data-kit="pro"]) .tf-insight-titles small {
16028
+ font: 500 12px/16px var(--font-sans);
16029
+ color: var(--ink-muted);
16030
+ }
16031
+ :where([data-kit="pro"]) .tf-insight-titles b {
16032
+ font: 600 15px/20px var(--font-sans);
16033
+ overflow-wrap: anywhere;
16034
+ }
16035
+ :where([data-kit="pro"]) .tf-insight-body {
16036
+ font: 500 14px/20px var(--font-sans);
16037
+ color: var(--ink);
16038
+ }
16039
+ :where([data-kit="pro"]) .tf-insight-why button {
16040
+ display: inline-flex;
16041
+ align-items: center;
16042
+ gap: 6px;
16043
+ min-height: 24px;
16044
+ padding: 0;
16045
+ border: 0;
16046
+ background: none;
16047
+ color: var(--ink-muted);
16048
+ font: 500 12px/16px var(--font-sans);
16049
+ cursor: pointer;
16050
+ }
16051
+ :where([data-kit="pro"]) .tf-insight-why button:hover {
16052
+ color: var(--ink);
16053
+ }
16054
+ :where([data-kit="pro"]) .tf-insight-why button:focus-visible {
16055
+ outline: 2px solid var(--focus);
16056
+ outline-offset: 2px;
16057
+ border-radius: var(--radius-sm);
16058
+ }
16059
+ :where([data-kit="pro"]) .tf-insight-why button[aria-expanded="true"] .tf-insight-chev {
16060
+ rotate: 180deg;
16061
+ }
16062
+ :where([data-kit="pro"]) .tf-insight-whytext {
16063
+ margin-top: 8px;
16064
+ padding: 12px;
16065
+ border-radius: var(--radius-md);
16066
+ background: var(--surface-sunken);
16067
+ font: 500 13px/18px var(--font-sans);
16068
+ color: var(--ink-muted);
16069
+ }
16070
+ :where([data-kit="pro"]) .tf-insight-actions {
16071
+ display: flex;
16072
+ flex-wrap: wrap;
16073
+ justify-content: flex-end;
16074
+ gap: 8px;
16075
+ }
16076
+
16077
+ /* ConsentList */
16078
+ :where([data-kit="pro"]) .tf-consent {
16079
+ display: flex;
16080
+ flex-direction: column;
16081
+ gap: 12px;
16082
+ min-width: 0;
16083
+ }
16084
+ :where([data-kit="pro"]) .tf-consent-item {
16085
+ display: flex;
16086
+ flex-direction: column;
16087
+ gap: 12px;
16088
+ padding: 16px;
16089
+ border-radius: var(--radius-lg);
16090
+ background: var(--surface);
16091
+ box-shadow: 0 0 0 var(--line-width) var(--line);
16092
+ }
16093
+ :where([data-kit="pro"]) .tf-consent-head {
16094
+ display: flex;
16095
+ flex-wrap: wrap;
16096
+ align-items: center;
16097
+ gap: 12px;
16098
+ }
16099
+ :where([data-kit="pro"]) .tf-consent-head .tf-option-text {
16100
+ flex: 1;
16101
+ min-width: 140px;
16102
+ padding: 0;
16103
+ }
16104
+ :where([data-kit="pro"]) .tf-consent-purpose {
16105
+ margin: 0;
16106
+ font: 500 13px/18px var(--font-sans);
16107
+ color: var(--ink-muted);
16108
+ }
16109
+ :where([data-kit="pro"]) .tf-consent-scopes {
16110
+ display: flex;
16111
+ flex-direction: column;
16112
+ margin: 0;
16113
+ padding: 0;
16114
+ list-style: none;
16115
+ }
16116
+ :where([data-kit="pro"]) .tf-consent-scopes li {
16117
+ display: flex;
16118
+ align-items: center;
16119
+ justify-content: space-between;
16120
+ gap: 12px;
16121
+ padding: 10px 0;
16122
+ border-top: 1px solid var(--line);
16123
+ }
16124
+ :where([data-kit="pro"]) .tf-consent-scopes .tf-option-text {
16125
+ min-width: 0;
16126
+ padding: 0;
16127
+ }
16128
+ :where([data-kit="pro"]) .tf-consent-req {
16129
+ flex: none;
16130
+ font: 500 12px/16px var(--font-sans);
16131
+ color: var(--ink-muted);
16132
+ }
16133
+
16134
+ /* 12-household.css */
16135
+ /* Generated by scripts/pro-css.ts from packages/halo/css. Do not edit; the Pro look lives in 90-pro-look.css. */
16136
+ /* Life: budgets, subscriptions, net worth, deadlines, policies, coverage, claims, documents */
16137
+
16138
+ /* BudgetList */
16139
+ :where([data-kit="pro"]) .tf-budgets,
16140
+ :where([data-kit="pro"]) .tf-subs ul,
16141
+ :where([data-kit="pro"]) .tf-deadlines,
16142
+ :where([data-kit="pro"]) .tf-docs,
16143
+ :where([data-kit="pro"]) .tf-claim-steps,
16144
+ :where([data-kit="pro"]) .tf-nw-side ul {
16145
+ margin: 0;
16146
+ padding: 0;
16147
+ list-style: none;
16148
+ }
16149
+ :where([data-kit="pro"]) .tf-budgets {
16150
+ display: flex;
16151
+ flex-direction: column;
16152
+ gap: 4px;
16153
+ min-width: 0;
16154
+ }
16155
+ :where([data-kit="pro"]) .tf-budget {
16156
+ container: tf-budget / inline-size;
16157
+ display: flex;
16158
+ align-items: center;
16159
+ gap: 12px;
16160
+ width: 100%;
16161
+ padding: 10px 12px;
16162
+ box-sizing: border-box;
16163
+ border: 0;
16164
+ border-radius: var(--radius-md);
16165
+ background: transparent;
16166
+ color: var(--ink);
16167
+ font: inherit;
16168
+ text-align: left;
16169
+ }
16170
+ :where([data-kit="pro"]) button.tf-budget {
16171
+ cursor: pointer;
16172
+ }
16173
+ :where([data-kit="pro"]) button.tf-budget:hover {
16174
+ background: var(--accent);
16175
+ }
16176
+ :where([data-kit="pro"]) button.tf-budget:focus-visible {
16177
+ outline: 2px solid var(--focus);
16178
+ outline-offset: 2px;
16179
+ }
16180
+ :where([data-kit="pro"]) .tf-budget-main {
16181
+ display: flex;
16182
+ flex: 1;
16183
+ flex-direction: column;
16184
+ gap: 6px;
16185
+ min-width: 0;
16186
+ }
16187
+ :where([data-kit="pro"]) .tf-budget-top {
16188
+ display: flex;
16189
+ flex-wrap: wrap;
16190
+ align-items: baseline;
16191
+ justify-content: space-between;
16192
+ gap: 0 12px;
16193
+ }
16194
+ /* narrow: the icon steps aside so the category keeps its name */
16195
+ @container tf-budget (max-width: 300px) {
16196
+ :where([data-kit="pro"]) .tf-budget > .tf-tinticon {
16197
+ display: none;
16198
+ }
16199
+ }
16200
+ :where([data-kit="pro"]) .tf-budget-top b {
16201
+ min-width: 0;
16202
+ overflow: hidden;
16203
+ text-overflow: ellipsis;
16204
+ white-space: nowrap;
16205
+ font: 500 14px/20px var(--font-sans);
16206
+ }
16207
+ :where([data-kit="pro"]) .tf-budget-nums {
16208
+ flex: none;
16209
+ font: 600 13px/18px var(--font-sans);
16210
+ font-variant-numeric: tabular-nums;
16211
+ }
16212
+ :where([data-kit="pro"]) .tf-budget-nums small {
16213
+ font-weight: 500;
16214
+ color: var(--ink-muted);
16215
+ }
16216
+ :where([data-kit="pro"]) .tf-budget-bar {
16217
+ display: block;
16218
+ height: 8px;
16219
+ overflow: hidden;
16220
+ border-radius: var(--radius-pill);
16221
+ background: var(--surface-sunken);
16222
+ }
16223
+ :where([data-kit="pro"]) .tf-budget-bar > span {
16224
+ display: block;
16225
+ height: 100%;
16226
+ border-radius: var(--radius-pill);
16227
+ }
16228
+ :where([data-kit="pro"]) .tf-budget-left {
16229
+ font: 500 12px/16px var(--font-sans);
16230
+ color: var(--ink-muted);
16231
+ }
16232
+ :where([data-kit="pro"]) .tf-budget-left.over {
16233
+ color: var(--blush-ink);
16234
+ font-weight: 500;
16235
+ }
16236
+
16237
+ /* SubscriptionList */
16238
+ :where([data-kit="pro"]) .tf-subs {
16239
+ display: flex;
16240
+ flex-direction: column;
16241
+ gap: 8px;
16242
+ min-width: 0;
16243
+ }
16244
+ :where([data-kit="pro"]) .tf-subs ul {
16245
+ container: tf-subs / inline-size;
16246
+ display: flex;
16247
+ flex-direction: column;
16248
+ }
16249
+ :where([data-kit="pro"]) .tf-sub {
16250
+ display: flex;
16251
+ align-items: center;
16252
+ gap: 12px;
16253
+ padding: 10px 4px;
16254
+ border-bottom: 1px solid var(--line);
16255
+ }
16256
+ :where([data-kit="pro"]) .tf-sub:last-child {
16257
+ border-bottom: 0;
16258
+ }
16259
+ :where([data-kit="pro"]) .tf-sub-text {
16260
+ display: flex;
16261
+ flex: 1;
16262
+ flex-direction: column;
16263
+ min-width: 0;
16264
+ }
16265
+ :where([data-kit="pro"]) .tf-sub-text b {
16266
+ overflow: hidden;
16267
+ text-overflow: ellipsis;
16268
+ white-space: nowrap;
16269
+ font: 500 14px/20px var(--font-sans);
16270
+ }
16271
+ :where([data-kit="pro"]) .tf-sub-text small {
16272
+ font: 500 12px/16px var(--font-sans);
16273
+ color: var(--ink-muted);
16274
+ }
16275
+ :where([data-kit="pro"]) .tf-sub-amount {
16276
+ flex: none;
16277
+ font: 600 14px/20px var(--font-sans);
16278
+ font-variant-numeric: tabular-nums;
16279
+ text-align: right;
16280
+ }
16281
+ :where([data-kit="pro"]) .tf-sub-amount small {
16282
+ margin-left: 2px;
16283
+ font-weight: 500;
16284
+ color: var(--ink-muted);
16285
+ }
16286
+ /* narrow: amount and trial badge go under the name, the menu stays at the end */
16287
+ @container tf-subs (max-width: 380px) {
16288
+ :where([data-kit="pro"]) .tf-sub {
16289
+ display: grid;
16290
+ grid-template-columns: auto minmax(0, 1fr) auto;
16291
+ gap: 4px 12px;
16292
+ align-items: center;
16293
+ }
16294
+ :where([data-kit="pro"]) .tf-sub > :first-child {
16295
+ grid-row: 1 / span 2;
16296
+ align-self: start;
16297
+ }
16298
+ :where([data-kit="pro"]) .tf-sub > .tf-sub-text,
16299
+ :where([data-kit="pro"]) .tf-sub > .tf-badge,
16300
+ :where([data-kit="pro"]) .tf-sub > .tf-sub-amount {
16301
+ grid-column: 2;
16302
+ justify-self: start;
16303
+ text-align: left;
16304
+ }
16305
+ :where([data-kit="pro"]) .tf-sub > :last-child:not(.tf-sub-amount) {
16306
+ grid-column: 3;
16307
+ grid-row: 1;
16308
+ }
16309
+ }
16310
+ :where([data-kit="pro"]) .tf-sub.is-cancelled .tf-sub-text b,
16311
+ :where([data-kit="pro"]) .tf-sub.is-cancelled .tf-sub-amount {
16312
+ color: var(--ink-muted);
16313
+ text-decoration: line-through;
16314
+ }
16315
+ :where([data-kit="pro"]) .tf-subs-total {
16316
+ display: flex;
16317
+ flex-wrap: wrap;
16318
+ align-items: baseline;
16319
+ justify-content: space-between;
16320
+ gap: 4px 12px;
16321
+ padding: 12px;
16322
+ border-radius: var(--radius-md);
16323
+ background: var(--surface-sunken);
16324
+ font: 500 13px/18px var(--font-sans);
16325
+ color: var(--ink-muted);
16326
+ }
16327
+ :where([data-kit="pro"]) .tf-subs-total b {
16328
+ color: var(--ink);
16329
+ font: 600 15px/20px var(--font-sans);
16330
+ }
16331
+
16332
+ /* NetWorthCard */
16333
+ :where([data-kit="pro"]) .tf-nw {
16334
+ display: flex;
16335
+ flex-direction: column;
16336
+ gap: 16px;
16337
+ min-width: 0;
16338
+ padding: 20px;
16339
+ border-radius: var(--radius-lg);
16340
+ background: var(--surface);
16341
+ box-shadow: 0 0 0 var(--line-width) var(--line);
16342
+ }
16343
+ :where([data-kit="pro"]) .tf-nw-head {
16344
+ display: flex;
16345
+ flex-wrap: wrap;
16346
+ align-items: flex-end;
16347
+ justify-content: space-between;
16348
+ gap: 12px;
16349
+ }
16350
+ :where([data-kit="pro"]) .tf-nw-head > :first-child {
16351
+ flex: 1 1 200px;
16352
+ }
16353
+ :where([data-kit="pro"]) .tf-nw-head > :last-child:not(:first-child) {
16354
+ flex: none;
16355
+ max-width: 45%;
16356
+ }
16357
+ :where([data-kit="pro"]) .tf-nw-title {
16358
+ font: 500 13px/18px var(--font-sans);
16359
+ color: var(--ink-muted);
16360
+ }
16361
+ :where([data-kit="pro"]) .tf-nw-total {
16362
+ font: 600 24px/38px var(--font-sans);
16363
+ letter-spacing: -0.02em;
16364
+ font-variant-numeric: tabular-nums;
16365
+ }
16366
+ :where([data-kit="pro"]) .tf-nw-change {
16367
+ display: inline-flex;
16368
+ align-items: center;
16369
+ gap: 4px;
16370
+ font: 500 12px/16px var(--font-sans);
16371
+ color: var(--mint-ink);
16372
+ }
16373
+ :where([data-kit="pro"]) .tf-nw-change.down {
16374
+ color: var(--blush-ink);
16375
+ }
16376
+ :where([data-kit="pro"]) .tf-nw-change.down .tf-ico {
16377
+ rotate: 180deg;
16378
+ }
16379
+ :where([data-kit="pro"]) .tf-nw-change span {
16380
+ font-weight: 500;
16381
+ color: var(--ink-muted);
16382
+ }
16383
+ :where([data-kit="pro"]) .tf-nw-sides {
16384
+ display: grid;
16385
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
16386
+ gap: 16px;
16387
+ }
16388
+ :where([data-kit="pro"]) .tf-nw-side {
16389
+ display: flex;
16390
+ flex-direction: column;
16391
+ gap: 8px;
16392
+ min-width: 0;
16393
+ }
16394
+ :where([data-kit="pro"]) .tf-nw-sidehead {
16395
+ display: flex;
16396
+ justify-content: space-between;
16397
+ gap: 8px;
16398
+ padding-bottom: 8px;
16399
+ border-bottom: 1px solid var(--line);
16400
+ font: 500 12px/16px var(--font-sans);
16401
+ color: var(--ink-muted);
16402
+ }
16403
+ :where([data-kit="pro"]) .tf-nw-sidehead b {
16404
+ color: var(--ink);
16405
+ font-variant-numeric: tabular-nums;
16406
+ }
16407
+ :where([data-kit="pro"]) .tf-nw-side li {
16408
+ display: flex;
16409
+ justify-content: space-between;
16410
+ gap: 8px;
16411
+ padding: 4px 0;
16412
+ font: 500 13px/18px var(--font-sans);
16413
+ }
16414
+ :where([data-kit="pro"]) .tf-nw-side li span:first-child {
16415
+ display: inline-flex;
16416
+ align-items: center;
16417
+ gap: 6px;
16418
+ min-width: 0;
16419
+ color: var(--ink-muted);
16420
+ }
16421
+ :where([data-kit="pro"]) .tf-nw-side li span:last-child {
16422
+ font-variant-numeric: tabular-nums;
16423
+ }
16424
+
16425
+ /* DeadlineList */
16426
+ :where([data-kit="pro"]) .tf-deadlines {
16427
+ display: flex;
16428
+ flex-direction: column;
16429
+ gap: 4px;
16430
+ min-width: 0;
16431
+ }
16432
+ :where([data-kit="pro"]) .tf-deadline {
16433
+ display: flex;
16434
+ flex-wrap: wrap;
16435
+ align-items: center;
16436
+ gap: 8px 12px;
16437
+ padding: 8px 12px;
16438
+ border-radius: var(--radius-md);
16439
+ }
16440
+ :where([data-kit="pro"]) .tf-deadline.is-overdue {
16441
+ background: var(--blush);
16442
+ }
16443
+ :where([data-kit="pro"]) .tf-deadline.is-soon {
16444
+ background: var(--surface-sunken);
16445
+ }
16446
+ :where([data-kit="pro"]) .tf-deadline-date {
16447
+ display: flex;
16448
+ flex: none;
16449
+ flex-direction: column;
16450
+ align-items: center;
16451
+ width: 40px;
16452
+ padding: 4px 0;
16453
+ border-radius: var(--radius-sm);
16454
+ background: var(--surface);
16455
+ box-shadow: inset 0 0 0 1px var(--line);
16456
+ }
16457
+ :where([data-kit="pro"]) .tf-deadline-date b {
16458
+ font: 600 14px/20px var(--font-sans);
16459
+ font-variant-numeric: tabular-nums;
16460
+ }
16461
+ :where([data-kit="pro"]) .tf-deadline-date small {
16462
+ font: 500 10px/12px var(--font-sans);
16463
+ text-transform: uppercase;
16464
+ color: var(--ink-muted);
16465
+ }
16466
+ :where([data-kit="pro"]) .tf-deadline-text {
16467
+ display: flex;
16468
+ flex: 1 1 160px;
16469
+ flex-direction: column;
16470
+ min-width: 0;
16471
+ }
16472
+ :where([data-kit="pro"]) .tf-deadline-text b {
16473
+ font: 500 14px/20px var(--font-sans);
16474
+ overflow-wrap: break-word;
16475
+ }
16476
+ :where([data-kit="pro"]) .tf-deadline-text small {
16477
+ font: 500 12px/16px var(--font-sans);
16478
+ color: var(--ink-muted);
16479
+ }
16480
+ :where([data-kit="pro"]) .tf-deadline-amount {
16481
+ font: 600 13px/18px var(--font-sans);
16482
+ font-variant-numeric: tabular-nums;
16483
+ }
16484
+ :where([data-kit="pro"]) .tf-deadline.is-done .tf-deadline-text b {
16485
+ color: var(--ink-muted);
16486
+ text-decoration: line-through;
16487
+ }
16488
+ :where([data-kit="pro"]) .tf-deadline-done {
16489
+ color: var(--mint-ink);
16490
+ }
16491
+
16492
+ /* PolicyCard */
16493
+ :where([data-kit="pro"]) .tf-policy {
16494
+ display: flex;
16495
+ flex-direction: column;
16496
+ gap: 16px;
16497
+ min-width: 0;
16498
+ padding: 20px;
16499
+ border-radius: var(--radius-lg);
16500
+ background: var(--surface);
16501
+ box-shadow: 0 0 0 var(--line-width) var(--line);
16502
+ }
16503
+ :where([data-kit="pro"]) .tf-policy-head {
16504
+ display: flex;
16505
+ flex-wrap: wrap;
16506
+ align-items: center;
16507
+ gap: 12px;
16508
+ }
16509
+ :where([data-kit="pro"]) .tf-policy-head .tf-option-text {
16510
+ flex: 1;
16511
+ min-width: 120px;
16512
+ padding: 0;
16513
+ }
16514
+ :where([data-kit="pro"]) .tf-policy-head b {
16515
+ font: 600 15px/20px var(--font-sans);
16516
+ }
16517
+ :where([data-kit="pro"]) .tf-policy-facts {
16518
+ display: grid;
16519
+ grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
16520
+ gap: 12px;
16521
+ margin: 0;
16522
+ }
16523
+ :where([data-kit="pro"]) .tf-policy-facts div {
16524
+ min-width: 0;
16525
+ }
16526
+ :where([data-kit="pro"]) .tf-policy-facts dt {
16527
+ font: 500 11px/14px var(--font-sans);
16528
+ letter-spacing: 0.04em;
16529
+ text-transform: uppercase;
16530
+ color: var(--ink-muted);
16531
+ }
16532
+ :where([data-kit="pro"]) .tf-policy-facts dd {
16533
+ margin: 2px 0 0;
16534
+ font: 600 15px/20px var(--font-sans);
16535
+ font-variant-numeric: tabular-nums;
16536
+ overflow-wrap: break-word;
16537
+ }
16538
+ :where([data-kit="pro"]) .tf-policy-foot {
16539
+ display: flex;
16540
+ flex-wrap: wrap;
16541
+ align-items: center;
16542
+ justify-content: space-between;
16543
+ gap: 8px;
16544
+ padding-top: 12px;
16545
+ border-top: 1px solid var(--line);
16546
+ font: 500 12px/16px var(--font-sans);
16547
+ color: var(--ink-muted);
16548
+ }
16549
+ :where([data-kit="pro"]) .tf-policy-actions {
16550
+ display: inline-flex;
16551
+ flex-wrap: wrap;
16552
+ gap: 8px;
16553
+ }
16554
+
16555
+ /* CoverageMatrix */
16556
+ :where([data-kit="pro"]) .tf-coverage {
16557
+ display: flex;
16558
+ flex-direction: column;
16559
+ gap: 12px;
16560
+ min-width: 0;
16561
+ }
16562
+ :where([data-kit="pro"]) .tf-coverage-sum {
16563
+ display: flex;
16564
+ flex-wrap: wrap;
16565
+ gap: 8px 16px;
16566
+ }
16567
+ :where([data-kit="pro"]) .tf-coverage-box {
16568
+ container: tf-coverage / inline-size;
16569
+ }
16570
+ :where([data-kit="pro"]) .tf-coverage-table {
16571
+ width: 100%;
16572
+ border-collapse: collapse;
16573
+ }
16574
+ :where([data-kit="pro"]) .tf-coverage-table th,
16575
+ :where([data-kit="pro"]) .tf-coverage-table td {
16576
+ padding: 10px 8px;
16577
+ border-top: 1px solid var(--line);
16578
+ text-align: left;
16579
+ vertical-align: middle;
16580
+ }
16581
+ :where([data-kit="pro"]) .tf-coverage-table th {
16582
+ font-weight: inherit;
16583
+ }
16584
+ :where([data-kit="pro"]) .tf-coverage-table th b {
16585
+ display: block;
16586
+ font: 500 14px/20px var(--font-sans);
16587
+ }
16588
+ :where([data-kit="pro"]) .tf-coverage-table th small {
16589
+ font: 500 12px/16px var(--font-sans);
16590
+ color: var(--ink-muted);
16591
+ }
16592
+ :where([data-kit="pro"]) .tf-coverage-table td:nth-child(2) {
16593
+ white-space: nowrap;
16594
+ }
16595
+ :where([data-kit="pro"]) .tf-coverage-note {
16596
+ font: 500 13px/18px var(--font-sans);
16597
+ color: var(--ink-muted);
16598
+ }
16599
+ :where([data-kit="pro"]) .tf-coverage-table tr.is-none th b {
16600
+ color: var(--blush-ink);
16601
+ }
16602
+ /* narrow: each risk becomes a block, its status top right, the note underneath */
16603
+ @container tf-coverage (max-width: 440px) {
16604
+ :where([data-kit="pro"]) .tf-coverage-table,
16605
+ :where([data-kit="pro"]) .tf-coverage-table tbody {
16606
+ display: block;
16607
+ }
16608
+ :where([data-kit="pro"]) .tf-coverage-table tr {
16609
+ display: grid;
16610
+ grid-template-columns: minmax(0, 1fr) auto;
16611
+ gap: 4px 12px;
16612
+ padding: 10px 4px;
16613
+ border-top: 1px solid var(--line);
16614
+ }
16615
+ :where([data-kit="pro"]) .tf-coverage-table th,
16616
+ :where([data-kit="pro"]) .tf-coverage-table td {
16617
+ padding: 0;
16618
+ border-top: 0;
16619
+ }
16620
+ :where([data-kit="pro"]) .tf-coverage-table td.tf-coverage-note {
16621
+ grid-column: 1 / -1;
16622
+ }
16623
+ }
16624
+
16625
+ /* ClaimTimeline */
16626
+ :where([data-kit="pro"]) .tf-claim {
16627
+ display: flex;
16628
+ flex-direction: column;
16629
+ gap: 16px;
16630
+ min-width: 0;
16631
+ }
16632
+ :where([data-kit="pro"]) .tf-claim-head {
16633
+ display: flex;
16634
+ flex-wrap: wrap;
16635
+ align-items: flex-start;
16636
+ justify-content: space-between;
16637
+ gap: 12px;
16638
+ }
16639
+ :where([data-kit="pro"]) .tf-claim-head .tf-option-text {
16640
+ padding: 0;
16641
+ }
16642
+ :where([data-kit="pro"]) .tf-claim-head b {
16643
+ font: 600 15px/20px var(--font-sans);
16644
+ }
16645
+ :where([data-kit="pro"]) .tf-claim-amount {
16646
+ display: flex;
16647
+ flex-direction: column;
16648
+ align-items: flex-end;
16649
+ font: 600 18px/24px var(--font-sans);
16650
+ font-variant-numeric: tabular-nums;
16651
+ }
16652
+ :where([data-kit="pro"]) .tf-claim-amount small {
16653
+ font: 500 11px/14px var(--font-sans);
16654
+ color: var(--ink-muted);
16655
+ }
16656
+ :where([data-kit="pro"]) .tf-claim-steps {
16657
+ display: flex;
16658
+ flex-direction: column;
16659
+ }
16660
+ :where([data-kit="pro"]) .tf-claim-steps li {
16661
+ position: relative;
16662
+ display: flex;
16663
+ gap: 12px;
16664
+ padding-bottom: 16px;
16665
+ }
16666
+ :where([data-kit="pro"]) .tf-claim-steps li:last-child {
16667
+ padding-bottom: 0;
16668
+ }
16669
+ :where([data-kit="pro"]) .tf-claim-steps li:not(:last-child)::before {
16670
+ content: "";
16671
+ position: absolute;
16672
+ top: 20px;
16673
+ bottom: 0;
16674
+ left: 9px;
16675
+ width: 2px;
16676
+ background: var(--line);
16677
+ }
16678
+ :where([data-kit="pro"]) .tf-claim-steps li.is-done:not(:last-child)::before {
16679
+ background: var(--mint-ink);
16680
+ }
16681
+ :where([data-kit="pro"]) .tf-claim-dot {
16682
+ position: relative;
16683
+ display: grid;
16684
+ place-items: center;
16685
+ flex: none;
16686
+ width: 20px;
16687
+ height: 20px;
16688
+ box-sizing: border-box;
16689
+ border: 2px solid var(--line-strong);
16690
+ border-radius: var(--radius-full);
16691
+ background: var(--surface);
16692
+ color: var(--primary-foreground);
16693
+ }
16694
+ :where([data-kit="pro"]) .tf-claim-steps li.is-done .tf-claim-dot {
16695
+ border-color: var(--mint-ink);
16696
+ background: var(--mint-ink);
16697
+ }
16698
+ :where([data-kit="pro"]) .tf-claim-steps li.is-current .tf-claim-dot {
16699
+ border-color: var(--primary);
16700
+ box-shadow: 0 0 0 4px var(--accent);
16701
+ }
16702
+ :where([data-kit="pro"]) .tf-claim-steps li.is-failed .tf-claim-dot {
16703
+ border-color: var(--blush-ink);
16704
+ background: var(--blush-ink);
16705
+ }
16706
+ :where([data-kit="pro"]) .tf-claim-text {
16707
+ display: flex;
16708
+ flex-direction: column;
16709
+ min-width: 0;
16710
+ }
16711
+ :where([data-kit="pro"]) .tf-claim-text b {
16712
+ font: 500 14px/20px var(--font-sans);
16713
+ }
16714
+ :where([data-kit="pro"]) .tf-claim-steps li.is-todo .tf-claim-text b {
16715
+ color: var(--ink-muted);
16716
+ font-weight: 500;
16717
+ }
16718
+ :where([data-kit="pro"]) .tf-claim-text small {
16719
+ font: 500 12px/16px var(--font-sans);
16720
+ color: var(--ink-muted);
16721
+ }
16722
+
16723
+ /* DocumentList */
16724
+ :where([data-kit="pro"]) .tf-docs {
16725
+ display: flex;
16726
+ flex-direction: column;
16727
+ gap: 4px;
16728
+ min-width: 0;
16729
+ }
16730
+ :where([data-kit="pro"]) .tf-doc {
16731
+ display: flex;
16732
+ flex-wrap: wrap;
16733
+ align-items: center;
16734
+ gap: 8px 12px;
16735
+ width: 100%;
16736
+ padding: 10px 12px;
16737
+ box-sizing: border-box;
16738
+ border: 0;
16739
+ border-radius: var(--radius-md);
16740
+ background: transparent;
16741
+ color: var(--ink);
16742
+ font: inherit;
16743
+ text-align: left;
16744
+ }
16745
+ :where([data-kit="pro"]) button.tf-doc {
16746
+ cursor: pointer;
16747
+ }
16748
+ :where([data-kit="pro"]) button.tf-doc:hover {
16749
+ background: var(--accent);
16750
+ }
16751
+ :where([data-kit="pro"]) button.tf-doc:focus-visible {
16752
+ outline: 2px solid var(--focus);
16753
+ outline-offset: 2px;
16754
+ }
16755
+ :where([data-kit="pro"]) .tf-doc-text {
16756
+ display: flex;
16757
+ flex: 1 1 160px;
16758
+ flex-direction: column;
16759
+ min-width: 0;
16760
+ }
16761
+ :where([data-kit="pro"]) .tf-doc-text b {
16762
+ font: 500 14px/20px var(--font-sans);
16763
+ overflow-wrap: break-word;
16764
+ }
16765
+ :where([data-kit="pro"]) .tf-doc-text small,
16766
+ :where([data-kit="pro"]) .tf-doc-valid {
16767
+ font: 500 12px/16px var(--font-sans);
16768
+ color: var(--ink-muted);
16769
+ }
16770
+
15290
16771
  /* 90-pro-look.css */
15291
16772
  /* Pro look ("Clean Dark Pro", reference/pro): monochrome surfaces on a visible 1px hairline grid,
15292
16773
  square corners (2px on controls), Geist and Geist Mono, colour only for state, dense by default.