softui-css 1.6.0 → 1.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/softui.css CHANGED
@@ -5589,8 +5589,114 @@ a.sui-btn-warning:visited {
5589
5589
  .sui-gap-4 { gap: 24px !important; }
5590
5590
  .sui-gap-5 { gap: 48px !important; }
5591
5591
 
5592
- /* Min-height viewport */
5593
- .sui-min-vh-100 { min-height: 100vh !important; }
5592
+ /* --- Display --- */
5593
+ .sui-d-inline { display: inline !important; }
5594
+ .sui-d-inline-block { display: inline-block !important; }
5595
+ .sui-d-grid { display: grid !important; }
5596
+
5597
+ /* --- Position --- */
5598
+ .sui-relative { position: relative !important; }
5599
+ .sui-absolute { position: absolute !important; }
5600
+ .sui-fixed { position: fixed !important; }
5601
+ .sui-sticky { position: sticky !important; top: 0; }
5602
+
5603
+ .sui-inset-0 { inset: 0 !important; }
5604
+ .sui-top-0 { top: 0 !important; }
5605
+ .sui-right-0 { right: 0 !important; }
5606
+ .sui-bottom-0 { bottom: 0 !important; }
5607
+ .sui-left-0 { left: 0 !important; }
5608
+
5609
+ /* --- Overflow --- */
5610
+ .sui-overflow-hidden { overflow: hidden !important; }
5611
+ .sui-overflow-auto { overflow: auto !important; }
5612
+ .sui-overflow-scroll { overflow: scroll !important; }
5613
+ .sui-overflow-visible { overflow: visible !important; }
5614
+ .sui-overflow-x-auto { overflow-x: auto !important; }
5615
+ .sui-overflow-y-auto { overflow-y: auto !important; }
5616
+ .sui-overflow-x-hidden { overflow-x: hidden !important; }
5617
+ .sui-overflow-y-hidden { overflow-y: hidden !important; }
5618
+
5619
+ /* --- Width --- */
5620
+ .sui-w-full { width: 100% !important; }
5621
+ .sui-w-auto { width: auto !important; }
5622
+ .sui-w-screen { width: 100vw !important; }
5623
+ .sui-max-w-sm { max-width: 320px !important; }
5624
+ .sui-max-w-md { max-width: 480px !important; }
5625
+ .sui-max-w-lg { max-width: 640px !important; }
5626
+ .sui-max-w-xl { max-width: 800px !important; }
5627
+ .sui-max-w-2xl { max-width: 1024px !important; }
5628
+ .sui-max-w-full { max-width: 100% !important; }
5629
+ .sui-max-w-none { max-width: none !important; }
5630
+ .sui-min-w-0 { min-width: 0 !important; }
5631
+
5632
+ /* --- Height --- */
5633
+ .sui-h-full { height: 100% !important; }
5634
+ .sui-h-auto { height: auto !important; }
5635
+ .sui-h-screen { height: 100vh !important; }
5636
+ .sui-min-h-0 { min-height: 0 !important; }
5637
+ .sui-min-h-full { min-height: 100% !important; }
5638
+ .sui-min-h-screen { min-height: 100vh !important; }
5639
+ .sui-min-vh-100 { min-height: 100vh !important; }
5640
+ .sui-max-h-full { max-height: 100% !important; }
5641
+ .sui-max-h-screen { max-height: 100vh !important; }
5642
+
5643
+ /* --- Opacity --- */
5644
+ .sui-opacity-0 { opacity: 0 !important; }
5645
+ .sui-opacity-5 { opacity: 0.05 !important; }
5646
+ .sui-opacity-10 { opacity: 0.1 !important; }
5647
+ .sui-opacity-20 { opacity: 0.2 !important; }
5648
+ .sui-opacity-25 { opacity: 0.25 !important; }
5649
+ .sui-opacity-30 { opacity: 0.3 !important; }
5650
+ .sui-opacity-40 { opacity: 0.4 !important; }
5651
+ .sui-opacity-50 { opacity: 0.5 !important; }
5652
+ .sui-opacity-60 { opacity: 0.6 !important; }
5653
+ .sui-opacity-70 { opacity: 0.7 !important; }
5654
+ .sui-opacity-75 { opacity: 0.75 !important; }
5655
+ .sui-opacity-80 { opacity: 0.8 !important; }
5656
+ .sui-opacity-90 { opacity: 0.9 !important; }
5657
+ .sui-opacity-100 { opacity: 1 !important; }
5658
+
5659
+ /* --- Z-Index --- */
5660
+ .sui-z-0 { z-index: 0 !important; }
5661
+ .sui-z-10 { z-index: 10 !important; }
5662
+ .sui-z-20 { z-index: 20 !important; }
5663
+ .sui-z-30 { z-index: 30 !important; }
5664
+ .sui-z-40 { z-index: 40 !important; }
5665
+ .sui-z-50 { z-index: 50 !important; }
5666
+ .sui-z-auto { z-index: auto !important; }
5667
+
5668
+ /* --- Cursor --- */
5669
+ .sui-cursor-pointer { cursor: pointer !important; }
5670
+ .sui-cursor-default { cursor: default !important; }
5671
+ .sui-cursor-not-allowed { cursor: not-allowed !important; }
5672
+ .sui-cursor-grab { cursor: grab !important; }
5673
+ .sui-cursor-grabbing { cursor: grabbing !important; }
5674
+ .sui-cursor-move { cursor: move !important; }
5675
+ .sui-cursor-text { cursor: text !important; }
5676
+
5677
+ /* --- Visibility --- */
5678
+ .sui-visible { visibility: visible !important; }
5679
+ .sui-invisible { visibility: hidden !important; }
5680
+ .sui-sr-only {
5681
+ position: absolute !important;
5682
+ width: 1px !important;
5683
+ height: 1px !important;
5684
+ padding: 0 !important;
5685
+ margin: -1px !important;
5686
+ overflow: hidden !important;
5687
+ clip: rect(0, 0, 0, 0) !important;
5688
+ white-space: nowrap !important;
5689
+ border: 0 !important;
5690
+ }
5691
+
5692
+ /* --- Pointer Events --- */
5693
+ .sui-pointer-events-none { pointer-events: none !important; }
5694
+ .sui-pointer-events-auto { pointer-events: auto !important; }
5695
+
5696
+ /* --- User Select --- */
5697
+ .sui-select-none { user-select: none !important; }
5698
+ .sui-select-text { user-select: text !important; }
5699
+ .sui-select-all { user-select: all !important; }
5594
5700
 
5595
5701
  /* Auto margins */
5596
5702
  .sui-ms-auto { margin-left: auto !important; }
@@ -11600,3 +11706,896 @@ a.sui-btn-warning:visited {
11600
11706
  .sui-stack-hover.sui-stack-fanned:hover > *:nth-child(3) { transform: rotate(6deg) translate(calc(var(--sui-stack-gap) * var(--sui-stack-spread) * 0.9), calc(var(--sui-stack-spread) * -10px)); opacity: 1; }
11601
11707
  .sui-stack-hover.sui-stack-fanned:hover > *:nth-child(4) { transform: rotate(10deg) translate(calc(var(--sui-stack-gap) * var(--sui-stack-spread) * 1.8), calc(var(--sui-stack-spread) * -20px)); opacity: 1; }
11602
11708
 
11709
+ /* =========================================
11710
+ Copy Button
11711
+ ========================================= */
11712
+ .sui-copy {
11713
+ display: inline-flex;
11714
+ align-items: center;
11715
+ gap: 8px;
11716
+ background: var(--sui-bg);
11717
+ box-shadow: var(--sui-shadow-raised-sm);
11718
+ border-radius: var(--sui-radius-sm);
11719
+ padding: 8px 12px;
11720
+ font-size: 14px;
11721
+ font-family: var(--sui-font-mono);
11722
+ color: var(--sui-text);
11723
+ }
11724
+
11725
+ .sui-copy-text {
11726
+ flex: 1;
11727
+ overflow: hidden;
11728
+ text-overflow: ellipsis;
11729
+ white-space: nowrap;
11730
+ }
11731
+
11732
+ .sui-copy-btn {
11733
+ display: flex;
11734
+ align-items: center;
11735
+ justify-content: center;
11736
+ width: 28px;
11737
+ height: 28px;
11738
+ border: none;
11739
+ background: var(--sui-bg);
11740
+ box-shadow: var(--sui-shadow-raised-sm);
11741
+ border-radius: var(--sui-radius-xs);
11742
+ cursor: pointer;
11743
+ color: var(--sui-text-muted);
11744
+ padding: 0;
11745
+ flex-shrink: 0;
11746
+ transition: var(--sui-transition);
11747
+ }
11748
+
11749
+ .sui-copy-btn svg {
11750
+ width: 16px;
11751
+ height: 16px;
11752
+ stroke: currentColor;
11753
+ fill: none;
11754
+ stroke-width: 2;
11755
+ stroke-linecap: round;
11756
+ stroke-linejoin: round;
11757
+ }
11758
+
11759
+ .sui-copy-btn:hover {
11760
+ color: var(--sui-primary);
11761
+ box-shadow: var(--sui-shadow-raised);
11762
+ }
11763
+
11764
+ .sui-copy-btn.copied {
11765
+ color: var(--sui-success);
11766
+ }
11767
+
11768
+ /* Inline — just the icon button, no wrapper */
11769
+ .sui-copy-inline {
11770
+ display: inline-flex;
11771
+ align-items: center;
11772
+ justify-content: center;
11773
+ width: 28px;
11774
+ height: 28px;
11775
+ border: none;
11776
+ background: none;
11777
+ cursor: pointer;
11778
+ color: var(--sui-text-muted);
11779
+ padding: 0;
11780
+ border-radius: var(--sui-radius-xs);
11781
+ transition: var(--sui-transition);
11782
+ }
11783
+
11784
+ .sui-copy-inline svg {
11785
+ width: 16px;
11786
+ height: 16px;
11787
+ stroke: currentColor;
11788
+ fill: none;
11789
+ stroke-width: 2;
11790
+ stroke-linecap: round;
11791
+ stroke-linejoin: round;
11792
+ }
11793
+
11794
+ .sui-copy-inline:hover {
11795
+ color: var(--sui-primary);
11796
+ background: rgba(91, 84, 224, 0.06);
11797
+ }
11798
+
11799
+ .sui-copy-inline.copied {
11800
+ color: var(--sui-success);
11801
+ }
11802
+
11803
+ /* With input */
11804
+ .sui-copy-input {
11805
+ display: flex;
11806
+ align-items: center;
11807
+ gap: 0;
11808
+ }
11809
+
11810
+ .sui-copy-input .sui-input {
11811
+ border-radius: var(--sui-radius-sm) 0 0 var(--sui-radius-sm);
11812
+ font-family: var(--sui-font-mono);
11813
+ }
11814
+
11815
+ .sui-copy-input .sui-copy-btn {
11816
+ border-radius: 0 var(--sui-radius-sm) var(--sui-radius-sm) 0;
11817
+ height: auto;
11818
+ align-self: stretch;
11819
+ width: 40px;
11820
+ }
11821
+
11822
+ /* Sizes */
11823
+ .sui-copy-sm {
11824
+ padding: 6px 10px;
11825
+ font-size: 12px;
11826
+ }
11827
+
11828
+ .sui-copy-sm .sui-copy-btn {
11829
+ width: 24px;
11830
+ height: 24px;
11831
+ }
11832
+
11833
+ .sui-copy-sm .sui-copy-btn svg {
11834
+ width: 13px;
11835
+ height: 13px;
11836
+ }
11837
+
11838
+ .sui-copy-lg {
11839
+ padding: 12px 16px;
11840
+ font-size: 16px;
11841
+ }
11842
+
11843
+ .sui-copy-lg .sui-copy-btn {
11844
+ width: 34px;
11845
+ height: 34px;
11846
+ }
11847
+
11848
+ .sui-copy-lg .sui-copy-btn svg {
11849
+ width: 18px;
11850
+ height: 18px;
11851
+ }
11852
+
11853
+ /* Inset */
11854
+ .sui-copy-inset {
11855
+ box-shadow: var(--sui-shadow-inset-sm);
11856
+ }
11857
+
11858
+ .sui-copy-inset .sui-copy-btn {
11859
+ box-shadow: var(--sui-shadow-raised-sm);
11860
+ }
11861
+
11862
+ /* =========================================
11863
+ Text Rotate
11864
+ ========================================= */
11865
+ .sui-text-rotate {
11866
+ display: inline-block;
11867
+ position: relative;
11868
+ vertical-align: bottom;
11869
+ }
11870
+
11871
+ .sui-text-rotate-word {
11872
+ display: inline-block;
11873
+ position: absolute;
11874
+ left: 0;
11875
+ top: 0;
11876
+ opacity: 0;
11877
+ transition: opacity 0.4s ease, transform 0.4s ease;
11878
+ white-space: nowrap;
11879
+ }
11880
+
11881
+ .sui-text-rotate-word.active {
11882
+ opacity: 1;
11883
+ position: relative;
11884
+ transform: none;
11885
+ }
11886
+
11887
+ /* Fade (default) */
11888
+ .sui-text-rotate-fade .sui-text-rotate-word {
11889
+ transform: none;
11890
+ }
11891
+
11892
+ /* Slide up */
11893
+ .sui-text-rotate-slide .sui-text-rotate-word {
11894
+ transform: translateY(100%);
11895
+ }
11896
+
11897
+ .sui-text-rotate-slide .sui-text-rotate-word.active {
11898
+ transform: translateY(0);
11899
+ }
11900
+
11901
+ .sui-text-rotate-slide .sui-text-rotate-word.exit {
11902
+ opacity: 0;
11903
+ transform: translateY(-100%);
11904
+ }
11905
+
11906
+ /* Slide down */
11907
+ .sui-text-rotate-slide-down .sui-text-rotate-word {
11908
+ transform: translateY(-100%);
11909
+ }
11910
+
11911
+ .sui-text-rotate-slide-down .sui-text-rotate-word.active {
11912
+ transform: translateY(0);
11913
+ }
11914
+
11915
+ .sui-text-rotate-slide-down .sui-text-rotate-word.exit {
11916
+ opacity: 0;
11917
+ transform: translateY(100%);
11918
+ }
11919
+
11920
+ /* Flip */
11921
+ .sui-text-rotate-flip {
11922
+ perspective: 300px;
11923
+ }
11924
+
11925
+ .sui-text-rotate-flip .sui-text-rotate-word {
11926
+ transform: rotateX(90deg);
11927
+ transform-origin: center bottom;
11928
+ }
11929
+
11930
+ .sui-text-rotate-flip .sui-text-rotate-word.active {
11931
+ transform: rotateX(0deg);
11932
+ }
11933
+
11934
+ .sui-text-rotate-flip .sui-text-rotate-word.exit {
11935
+ opacity: 0;
11936
+ transform: rotateX(-90deg);
11937
+ }
11938
+
11939
+ /* Zoom */
11940
+ .sui-text-rotate-zoom .sui-text-rotate-word {
11941
+ transform: scale(0);
11942
+ }
11943
+
11944
+ .sui-text-rotate-zoom .sui-text-rotate-word.active {
11945
+ transform: scale(1);
11946
+ }
11947
+
11948
+ .sui-text-rotate-zoom .sui-text-rotate-word.exit {
11949
+ opacity: 0;
11950
+ transform: scale(1.5);
11951
+ }
11952
+
11953
+ /* Color highlight on the rotating word */
11954
+ .sui-text-rotate-primary .sui-text-rotate-word.active { color: var(--sui-primary); }
11955
+ .sui-text-rotate-success .sui-text-rotate-word.active { color: var(--sui-success); }
11956
+ .sui-text-rotate-danger .sui-text-rotate-word.active { color: var(--sui-danger); }
11957
+ .sui-text-rotate-warning .sui-text-rotate-word.active { color: var(--sui-warning); }
11958
+ .sui-text-rotate-info .sui-text-rotate-word.active { color: var(--sui-info); }
11959
+
11960
+ /* =========================================
11961
+ Typewriter
11962
+ ========================================= */
11963
+ .sui-typewriter {
11964
+ display: inline;
11965
+ }
11966
+
11967
+ .sui-typewriter-cursor::after {
11968
+ content: "|";
11969
+ display: inline-block;
11970
+ animation: sui-blink 0.7s step-end infinite;
11971
+ margin-left: 1px;
11972
+ font-weight: 400;
11973
+ }
11974
+
11975
+ @keyframes sui-blink {
11976
+ 0%, 100% { opacity: 1; }
11977
+ 50% { opacity: 0; }
11978
+ }
11979
+
11980
+ /* Cursor variants */
11981
+ .sui-typewriter-cursor-block::after {
11982
+ content: "\2588";
11983
+ font-weight: 400;
11984
+ }
11985
+
11986
+ .sui-typewriter-cursor-underscore::after {
11987
+ content: "_";
11988
+ font-weight: 700;
11989
+ }
11990
+
11991
+ /* Colors */
11992
+ .sui-typewriter-primary { color: var(--sui-primary); }
11993
+ .sui-typewriter-success { color: var(--sui-success); }
11994
+ .sui-typewriter-danger { color: var(--sui-danger); }
11995
+ .sui-typewriter-warning { color: var(--sui-warning); }
11996
+ .sui-typewriter-info { color: var(--sui-info); }
11997
+
11998
+ /* =========================================
11999
+ Marquee
12000
+ ========================================= */
12001
+ .sui-marquee {
12002
+ overflow: hidden;
12003
+ position: relative;
12004
+ padding: 8px 0;
12005
+ }
12006
+
12007
+ .sui-marquee-track {
12008
+ display: flex;
12009
+ width: max-content;
12010
+ animation: sui-marquee 20s linear infinite;
12011
+ gap: 24px;
12012
+ }
12013
+
12014
+ @keyframes sui-marquee {
12015
+ 0% { transform: translateX(0); }
12016
+ 100% { transform: translateX(-50%); }
12017
+ }
12018
+
12019
+ /* Reverse */
12020
+ .sui-marquee-reverse .sui-marquee-track {
12021
+ animation-direction: reverse;
12022
+ }
12023
+
12024
+ /* Speeds */
12025
+ .sui-marquee-slow .sui-marquee-track { animation-duration: 40s; }
12026
+ .sui-marquee-fast .sui-marquee-track { animation-duration: 10s; }
12027
+
12028
+ /* Pause on hover */
12029
+ .sui-marquee-hover:hover .sui-marquee-track {
12030
+ animation-play-state: paused;
12031
+ }
12032
+
12033
+ /* Fade edges */
12034
+ .sui-marquee-fade::before,
12035
+ .sui-marquee-fade::after {
12036
+ content: "";
12037
+ position: absolute;
12038
+ top: 0;
12039
+ bottom: 0;
12040
+ width: 60px;
12041
+ z-index: 1;
12042
+ pointer-events: none;
12043
+ }
12044
+
12045
+ .sui-marquee-fade::before {
12046
+ left: 0;
12047
+ background: linear-gradient(to right, var(--sui-bg), transparent);
12048
+ }
12049
+
12050
+ .sui-marquee-fade::after {
12051
+ right: 0;
12052
+ background: linear-gradient(to left, var(--sui-bg), transparent);
12053
+ }
12054
+
12055
+ /* Vertical */
12056
+ .sui-marquee-vertical {
12057
+ overflow: hidden;
12058
+ height: 200px;
12059
+ padding: 0 8px;
12060
+ }
12061
+
12062
+ .sui-marquee-vertical .sui-marquee-track {
12063
+ flex-direction: column;
12064
+ animation-name: sui-marquee-y;
12065
+ width: auto;
12066
+ }
12067
+
12068
+ @keyframes sui-marquee-y {
12069
+ 0% { transform: translateY(0); }
12070
+ 100% { transform: translateY(-50%); }
12071
+ }
12072
+
12073
+ /* Items */
12074
+ .sui-marquee-item {
12075
+ flex-shrink: 0;
12076
+ display: flex;
12077
+ align-items: center;
12078
+ justify-content: center;
12079
+ }
12080
+
12081
+ .sui-marquee-logo {
12082
+ flex-shrink: 0;
12083
+ display: flex;
12084
+ align-items: center;
12085
+ justify-content: center;
12086
+ padding: 8px 20px;
12087
+ font-size: 16px;
12088
+ font-weight: 700;
12089
+ color: var(--sui-text-muted);
12090
+ white-space: nowrap;
12091
+ }
12092
+
12093
+ .sui-marquee-card {
12094
+ flex-shrink: 0;
12095
+ background: var(--sui-bg);
12096
+ box-shadow: var(--sui-shadow-raised-sm);
12097
+ border-radius: var(--sui-radius);
12098
+ padding: 16px 20px;
12099
+ min-width: 200px;
12100
+ }
12101
+
12102
+ .sui-marquee-text {
12103
+ flex-shrink: 0;
12104
+ padding: 0 24px;
12105
+ font-size: 14px;
12106
+ white-space: nowrap;
12107
+ color: var(--sui-text-muted);
12108
+ }
12109
+
12110
+ /* =========================================
12111
+ Browser Mockup
12112
+ ========================================= */
12113
+ .sui-browser {
12114
+ border-radius: var(--sui-radius-lg);
12115
+ overflow: hidden;
12116
+ box-shadow: var(--sui-shadow-raised);
12117
+ background: var(--sui-bg);
12118
+ }
12119
+
12120
+ .sui-browser-bar {
12121
+ display: flex;
12122
+ align-items: center;
12123
+ gap: 10px;
12124
+ padding: 10px 14px;
12125
+ background: var(--sui-bg-dark);
12126
+ }
12127
+
12128
+ .sui-browser-dots {
12129
+ display: flex;
12130
+ gap: 6px;
12131
+ flex-shrink: 0;
12132
+ }
12133
+
12134
+ .sui-browser-dots span {
12135
+ width: 10px;
12136
+ height: 10px;
12137
+ border-radius: 50%;
12138
+ }
12139
+
12140
+ .sui-browser-dots span:nth-child(1) { background: #E74C6F; }
12141
+ .sui-browser-dots span:nth-child(2) { background: #F5A623; }
12142
+ .sui-browser-dots span:nth-child(3) { background: #2DCE89; }
12143
+
12144
+ .sui-browser-url {
12145
+ flex: 1;
12146
+ background: var(--sui-bg);
12147
+ box-shadow: var(--sui-shadow-inset-sm);
12148
+ border-radius: var(--sui-radius-full);
12149
+ padding: 5px 14px;
12150
+ font-size: 12px;
12151
+ color: var(--sui-text-muted);
12152
+ font-family: var(--sui-font);
12153
+ white-space: nowrap;
12154
+ overflow: hidden;
12155
+ text-overflow: ellipsis;
12156
+ }
12157
+
12158
+ .sui-browser-actions {
12159
+ display: flex;
12160
+ gap: 8px;
12161
+ flex-shrink: 0;
12162
+ }
12163
+
12164
+ .sui-browser-actions svg {
12165
+ width: 14px;
12166
+ height: 14px;
12167
+ stroke: var(--sui-text-light);
12168
+ fill: none;
12169
+ stroke-width: 2;
12170
+ stroke-linecap: round;
12171
+ stroke-linejoin: round;
12172
+ }
12173
+
12174
+ .sui-browser-body {
12175
+ min-height: 120px;
12176
+ }
12177
+
12178
+ .sui-browser-body img {
12179
+ display: block;
12180
+ width: 100%;
12181
+ height: auto;
12182
+ }
12183
+
12184
+ /* Tabs */
12185
+ .sui-browser-tabs {
12186
+ display: flex;
12187
+ align-items: flex-end;
12188
+ gap: 2px;
12189
+ padding: 8px 14px 0;
12190
+ background: var(--sui-bg-dark);
12191
+ }
12192
+
12193
+ .sui-browser-tab {
12194
+ padding: 6px 16px;
12195
+ font-size: 11px;
12196
+ font-weight: 600;
12197
+ color: var(--sui-text-muted);
12198
+ border-radius: var(--sui-radius-sm) var(--sui-radius-sm) 0 0;
12199
+ background: transparent;
12200
+ }
12201
+
12202
+ .sui-browser-tab.active {
12203
+ background: var(--sui-bg);
12204
+ color: var(--sui-text);
12205
+ }
12206
+
12207
+ .sui-browser-tabs + .sui-browser-bar {
12208
+ padding-top: 8px;
12209
+ }
12210
+
12211
+ /* Windows-style buttons (right side) */
12212
+ .sui-browser-win .sui-browser-bar {
12213
+ position: relative;
12214
+ }
12215
+
12216
+ .sui-browser-win .sui-browser-dots {
12217
+ display: none;
12218
+ }
12219
+
12220
+ .sui-browser-win-btns {
12221
+ display: flex;
12222
+ margin-left: auto;
12223
+ flex-shrink: 0;
12224
+ }
12225
+
12226
+ .sui-browser-win-btns button {
12227
+ width: 28px;
12228
+ height: 24px;
12229
+ display: flex;
12230
+ align-items: center;
12231
+ justify-content: center;
12232
+ border: none;
12233
+ background: transparent;
12234
+ cursor: pointer;
12235
+ padding: 0;
12236
+ }
12237
+
12238
+ .sui-browser-win-btns button svg {
12239
+ width: 10px;
12240
+ height: 10px;
12241
+ stroke: var(--sui-text-muted);
12242
+ fill: none;
12243
+ stroke-width: 1.5;
12244
+ stroke-linecap: round;
12245
+ stroke-linejoin: round;
12246
+ }
12247
+
12248
+ .sui-browser-win-btns button:hover {
12249
+ background: rgba(0, 0, 0, 0.06);
12250
+ }
12251
+
12252
+ .sui-browser-win-btns button:last-child:hover {
12253
+ background: #E74C6F;
12254
+ }
12255
+
12256
+ .sui-browser-win-btns button:last-child:hover svg {
12257
+ stroke: #fff;
12258
+ }
12259
+
12260
+ /* Dark chrome */
12261
+ .sui-browser-dark .sui-browser-bar,
12262
+ .sui-browser-dark .sui-browser-tabs {
12263
+ background: #1B1D2A;
12264
+ }
12265
+
12266
+ .sui-browser-dark .sui-browser-url {
12267
+ background: rgba(255, 255, 255, 0.08);
12268
+ box-shadow: none;
12269
+ color: rgba(255, 255, 255, 0.5);
12270
+ }
12271
+
12272
+ .sui-browser-dark .sui-browser-actions svg {
12273
+ stroke: rgba(255, 255, 255, 0.4);
12274
+ }
12275
+
12276
+ .sui-browser-dark .sui-browser-tab {
12277
+ color: rgba(255, 255, 255, 0.4);
12278
+ }
12279
+
12280
+ .sui-browser-dark .sui-browser-tab.active {
12281
+ background: var(--sui-bg);
12282
+ color: var(--sui-text);
12283
+ }
12284
+
12285
+ /* =========================================
12286
+ Phone Mockup
12287
+ ========================================= */
12288
+ .sui-phone {
12289
+ display: inline-block;
12290
+ position: relative;
12291
+ background: #1B1D2A;
12292
+ border-radius: 36px;
12293
+ padding: 12px;
12294
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.2), inset 0 0 0 2px rgba(255, 255, 255, 0.1);
12295
+ }
12296
+
12297
+ .sui-phone-screen {
12298
+ position: relative;
12299
+ width: 260px;
12300
+ height: 520px;
12301
+ background: var(--sui-bg);
12302
+ border-radius: 24px;
12303
+ overflow: hidden;
12304
+ }
12305
+
12306
+ .sui-phone-screen img {
12307
+ display: block;
12308
+ width: 100%;
12309
+ height: 100%;
12310
+ object-fit: cover;
12311
+ }
12312
+
12313
+ /* Notch */
12314
+ .sui-phone-notch::before {
12315
+ content: "";
12316
+ position: absolute;
12317
+ top: 0;
12318
+ left: 50%;
12319
+ transform: translateX(-50%);
12320
+ width: 100px;
12321
+ height: 24px;
12322
+ background: #1B1D2A;
12323
+ border-radius: 0 0 16px 16px;
12324
+ z-index: 2;
12325
+ }
12326
+
12327
+ /* Dynamic Island */
12328
+ .sui-phone-island::before {
12329
+ content: "";
12330
+ position: absolute;
12331
+ top: 10px;
12332
+ left: 50%;
12333
+ transform: translateX(-50%);
12334
+ width: 80px;
12335
+ height: 22px;
12336
+ background: #1B1D2A;
12337
+ border-radius: 20px;
12338
+ z-index: 2;
12339
+ }
12340
+
12341
+ /* Teardrop notch */
12342
+ .sui-phone-teardrop::before {
12343
+ content: "";
12344
+ position: absolute;
12345
+ top: 0;
12346
+ left: 50%;
12347
+ transform: translateX(-50%);
12348
+ width: 16px;
12349
+ height: 16px;
12350
+ background: #1B1D2A;
12351
+ border-radius: 0 0 50% 50%;
12352
+ z-index: 2;
12353
+ }
12354
+
12355
+ /* Punch hole — single */
12356
+ .sui-phone-punch::before {
12357
+ content: "";
12358
+ position: absolute;
12359
+ top: 12px;
12360
+ left: 50%;
12361
+ transform: translateX(-50%);
12362
+ width: 12px;
12363
+ height: 12px;
12364
+ background: #1B1D2A;
12365
+ border-radius: 50%;
12366
+ z-index: 2;
12367
+ }
12368
+
12369
+ /* Punch hole — double */
12370
+ .sui-phone-punch-double::before {
12371
+ content: "";
12372
+ position: absolute;
12373
+ top: 12px;
12374
+ left: 50%;
12375
+ transform: translateX(-50%);
12376
+ width: 12px;
12377
+ height: 12px;
12378
+ background: #1B1D2A;
12379
+ border-radius: 50%;
12380
+ z-index: 2;
12381
+ box-shadow: 18px 0 0 0 #1B1D2A;
12382
+ }
12383
+
12384
+ /* White/Gold frame overrides for new cutouts */
12385
+ .sui-phone-white .sui-phone-teardrop::before,
12386
+ .sui-phone-white .sui-phone-punch::before,
12387
+ .sui-phone-white .sui-phone-punch-double::before { background: #E8E8ED; box-shadow-color: #E8E8ED; }
12388
+
12389
+ .sui-phone-white .sui-phone-punch-double::before { box-shadow: 18px 0 0 0 #E8E8ED; }
12390
+
12391
+ .sui-phone-gold .sui-phone-teardrop::before,
12392
+ .sui-phone-gold .sui-phone-punch::before,
12393
+ .sui-phone-gold .sui-phone-punch-double::before { background: #D4C5A9; }
12394
+
12395
+ .sui-phone-gold .sui-phone-punch-double::before { box-shadow: 18px 0 0 0 #D4C5A9; }
12396
+
12397
+ /* Status bar */
12398
+ .sui-phone-status {
12399
+ position: absolute;
12400
+ top: 0;
12401
+ left: 0;
12402
+ right: 0;
12403
+ height: 44px;
12404
+ display: flex;
12405
+ align-items: center;
12406
+ justify-content: space-between;
12407
+ padding: 0 20px;
12408
+ font-size: 12px;
12409
+ font-weight: 600;
12410
+ color: var(--sui-text);
12411
+ z-index: 3;
12412
+ }
12413
+
12414
+ /* Home indicator */
12415
+ .sui-phone-home {
12416
+ position: absolute;
12417
+ bottom: 6px;
12418
+ left: 50%;
12419
+ transform: translateX(-50%);
12420
+ width: 100px;
12421
+ height: 4px;
12422
+ background: var(--sui-text-muted);
12423
+ border-radius: 2px;
12424
+ z-index: 2;
12425
+ opacity: 0.4;
12426
+ }
12427
+
12428
+ /* Frame colors */
12429
+ .sui-phone-white {
12430
+ background: #E8E8ED;
12431
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), inset 0 0 0 2px rgba(0, 0, 0, 0.06);
12432
+ }
12433
+
12434
+ .sui-phone-white .sui-phone-notch::before,
12435
+ .sui-phone-white .sui-phone-island::before {
12436
+ background: #E8E8ED;
12437
+ }
12438
+
12439
+ .sui-phone-gold {
12440
+ background: #D4C5A9;
12441
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15), inset 0 0 0 2px rgba(255, 255, 255, 0.2);
12442
+ }
12443
+
12444
+ .sui-phone-gold .sui-phone-notch::before,
12445
+ .sui-phone-gold .sui-phone-island::before {
12446
+ background: #D4C5A9;
12447
+ }
12448
+
12449
+ /* Sizes */
12450
+ .sui-phone-sm .sui-phone-screen {
12451
+ width: 180px;
12452
+ height: 360px;
12453
+ border-radius: 18px;
12454
+ }
12455
+
12456
+ .sui-phone-sm {
12457
+ border-radius: 26px;
12458
+ padding: 8px;
12459
+ }
12460
+
12461
+ .sui-phone-sm .sui-phone-notch::before {
12462
+ width: 70px;
12463
+ height: 18px;
12464
+ border-radius: 0 0 12px 12px;
12465
+ }
12466
+
12467
+ .sui-phone-sm .sui-phone-island::before {
12468
+ width: 56px;
12469
+ height: 16px;
12470
+ top: 8px;
12471
+ }
12472
+
12473
+ .sui-phone-sm .sui-phone-home {
12474
+ width: 70px;
12475
+ height: 3px;
12476
+ }
12477
+
12478
+ /* Landscape */
12479
+ .sui-phone-landscape {
12480
+ transform: rotate(-90deg);
12481
+ }
12482
+
12483
+ .sui-phone-landscape .sui-phone-screen {
12484
+ transform: rotate(90deg);
12485
+ }
12486
+
12487
+ /* =========================================
12488
+ Tour / Walkthrough
12489
+ ========================================= */
12490
+
12491
+ /* Overlay with spotlight cutout */
12492
+ .sui-tour-overlay {
12493
+ position: fixed;
12494
+ inset: 0;
12495
+ z-index: 1000;
12496
+ pointer-events: none;
12497
+ opacity: 0;
12498
+ visibility: hidden;
12499
+ transition: opacity 0.3s ease, visibility 0.3s ease;
12500
+ }
12501
+
12502
+ .sui-tour-overlay.active {
12503
+ opacity: 1;
12504
+ visibility: visible;
12505
+ pointer-events: auto;
12506
+ }
12507
+
12508
+ .sui-tour-backdrop {
12509
+ position: fixed;
12510
+ inset: 0;
12511
+ background: rgba(0, 0, 0, 0.5);
12512
+ z-index: 1;
12513
+ }
12514
+
12515
+ /* Spotlight ring around target */
12516
+ .sui-tour-spotlight {
12517
+ position: fixed;
12518
+ border-radius: var(--sui-radius);
12519
+ box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5);
12520
+ z-index: 2;
12521
+ pointer-events: none;
12522
+ transition: top 0.3s ease, left 0.3s ease, width 0.3s ease, height 0.3s ease;
12523
+ }
12524
+
12525
+ /* Tooltip */
12526
+ .sui-tour-tooltip {
12527
+ position: fixed;
12528
+ z-index: 3;
12529
+ background: var(--sui-bg);
12530
+ border-radius: var(--sui-radius);
12531
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1);
12532
+ padding: 20px;
12533
+ width: 300px;
12534
+ max-width: 90vw;
12535
+ transition: top 0.3s ease, left 0.3s ease;
12536
+ }
12537
+
12538
+ .sui-tour-tooltip-title {
12539
+ font-size: 16px;
12540
+ font-weight: 700;
12541
+ color: var(--sui-text);
12542
+ margin-bottom: 6px;
12543
+ }
12544
+
12545
+ .sui-tour-tooltip-desc {
12546
+ font-size: 13px;
12547
+ color: var(--sui-text-muted);
12548
+ line-height: 1.5;
12549
+ margin-bottom: 16px;
12550
+ }
12551
+
12552
+ .sui-tour-tooltip-footer {
12553
+ display: flex;
12554
+ align-items: center;
12555
+ justify-content: space-between;
12556
+ }
12557
+
12558
+ .sui-tour-tooltip-counter {
12559
+ font-size: 12px;
12560
+ color: var(--sui-text-light);
12561
+ font-weight: 600;
12562
+ }
12563
+
12564
+ .sui-tour-tooltip-actions {
12565
+ display: flex;
12566
+ gap: 8px;
12567
+ }
12568
+
12569
+ /* Progress dots */
12570
+ .sui-tour-dots {
12571
+ display: flex;
12572
+ gap: 6px;
12573
+ align-items: center;
12574
+ }
12575
+
12576
+ .sui-tour-dot {
12577
+ width: 6px;
12578
+ height: 6px;
12579
+ border-radius: 50%;
12580
+ background: var(--sui-bg-dark);
12581
+ transition: background 0.2s ease;
12582
+ }
12583
+
12584
+ .sui-tour-dot.active {
12585
+ background: var(--sui-primary);
12586
+ }
12587
+
12588
+ /* No overlay variant */
12589
+ .sui-tour-no-overlay .sui-tour-backdrop {
12590
+ display: none;
12591
+ }
12592
+
12593
+ .sui-tour-no-overlay .sui-tour-spotlight {
12594
+ background: transparent;
12595
+ box-shadow: 0 0 0 3px var(--sui-primary), 0 0 0 6px rgba(91, 84, 224, 0.2);
12596
+ }
12597
+
12598
+ .sui-tour-no-overlay .sui-tour-tooltip {
12599
+ box-shadow: var(--sui-shadow-raised);
12600
+ }
12601
+