@@ -841,9 +841,12 @@ body {
841841 }
842842
843843 .dark .glass-overlay {
844- background : hsl (var (--surface-1 ) / 0.7 );
845- border : 1px solid rgba (255 , 255 , 255 , 0.06 );
846- box-shadow : 0 8px 32px rgba (0 , 0 , 0 , 0.35 ), inset 0 1px 0 rgba (255 , 255 , 255 , 0.04 );
844+ background : linear-gradient (180deg , rgba (122 , 107 , 245 , 0.05 ), transparent 42% ), var (--mdt-surface );
845+ backdrop-filter : blur (16px );
846+ -webkit-backdrop-filter : blur (16px );
847+ border : 1px solid var (--mdt-border );
848+ border-radius : 18px ;
849+ box-shadow : 0 18px 50px -24px rgba (0 , 0 , 0 , 0.6 ), inset 0 1px 0 rgba (255 , 255 , 255 , 0.05 );
847850 }
848851
849852 /* Modals, command palette, dropdowns */
@@ -856,9 +859,9 @@ body {
856859 }
857860
858861 .dark .glass-modal {
859- background : hsl ( var (--surface-2 ) / 0.94 );
860- border : 1px solid rgba ( 255 , 255 , 255 , 0.07 );
861- box-shadow : 0 24px 64px rgba (0 , 0 , 0 , 0.5 ), inset 0 1px 0 rgba (255 , 255 , 255 , 0.06 );
862+ background : linear-gradient ( 180 deg , rgba ( 122 , 107 , 245 , 0.06 ) , transparent 38 % ) , var (--mdt- surface-hi );
863+ border : 1px solid var ( --mdt-border );
864+ box-shadow : 0 24px 64px rgba (0 , 0 , 0 , 0.55 ), inset 0 1px 0 rgba (255 , 255 , 255 , 0.06 );
862865 }
863866
864867 /* Core workspace — NO glass, solid crisp background */
@@ -1445,4 +1448,254 @@ body {
14451448.dark .todo-app .paper-grain ::before {
14461449 mix-blend-mode : screen;
14471450 opacity : 0.04 ;
1448- }
1451+ }
1452+ /* ─────────────────────────────────────────────────────────────────────────
1453+ MYDEVTOOLS · DECK DESIGN LAYER (matches the investor-deck aesthetic)
1454+ Theme-independent — marketing surfaces always render the dark "deck" look.
1455+ ───────────────────────────────────────────────────────────────────────── */
1456+ : root {
1457+ --mdt-bg : # 08090f ;
1458+ --mdt-bg2 : # 0d0f18 ;
1459+ --mdt-surface : # 14161f ;
1460+ --mdt-surface-hi : # 1c1f2b ;
1461+ --mdt-border : # 2a2e3d ;
1462+ --mdt-text : # f4f5fa ;
1463+ --mdt-muted : # 9aa0b4 ;
1464+ --mdt-faint : # 5b6076 ;
1465+ --mdt-indigo : # 5b63f0 ;
1466+ --mdt-violet : # 9a5cf2 ;
1467+ --mdt-cyan : # 4fd0e6 ;
1468+ --mdt-green : # 3fd79a ;
1469+ --mdt-amber : # f2a93b ;
1470+ --mdt-grad : linear-gradient (100deg , # 5b63f0 0% , # 9a5cf2 52% , # 4fd0e6 100% );
1471+ --mdt-grad-soft : linear-gradient (100deg , rgba (91 , 99 , 240 , .16 ), rgba (154 , 92 , 242 , .16 ) 52% , rgba (79 , 208 , 230 , .16 ));
1472+ }
1473+
1474+ /* dark base retuned to the deck palette */
1475+ .dark {
1476+ --background : 232 30% 5% ;
1477+ --foreground : 228 50% 97% ;
1478+ --card : 230 24% 9% ;
1479+ --card-foreground : 228 50% 97% ;
1480+ --popover : 230 24% 9% ;
1481+ --popover-foreground : 228 50% 97% ;
1482+ --muted : 232 26% 10% ;
1483+ --muted-foreground : 228 16% 70% ;
1484+ --border : 232 22% 15% ;
1485+ --input : 232 22% 15% ;
1486+ --surface-1 : 232 30% 6% ;
1487+ --surface-2 : 232 28% 8% ;
1488+ --surface-3 : 232 26% 11% ;
1489+ }
1490+
1491+ /* deck canvas wrapper — forces the dark premium look on marketing pages */
1492+ html { overflow-x : hidden; }
1493+ .mdt-deck {
1494+ position : relative;
1495+ background : var (--mdt-bg );
1496+ color : var (--mdt-text );
1497+ isolation : isolate;
1498+ }
1499+ /* ambient color depth fixed behind all content (kills flat grey sections) */
1500+ .mdt-deck ::before {
1501+ content : "" ; position : fixed; inset : 0 ; z-index : -1 ; pointer-events : none;
1502+ background :
1503+ radial-gradient (52% 42% at 88% 6% , rgba (122 , 107 , 245 , .15 ), transparent 60% ),
1504+ radial-gradient (48% 40% at 4% 70% , rgba (79 , 140 , 235 , .12 ), transparent 60% ),
1505+ radial-gradient (85% 55% at 52% 118% , rgba (154 , 92 , 242 , .11 ), transparent 60% );
1506+ }
1507+ .mdt-deck ::selection { background : rgba (122 , 107 , 245 , .35 ); }
1508+
1509+ /* atmospheric backdrop: orbs + grid + grain, behind all content */
1510+ .mdt-backdrop { position : absolute; inset : 0 ; z-index : 0 ; pointer-events : none; overflow : hidden; }
1511+ .mdt-orb { position : absolute; border-radius : 9999px ; filter : blur (40px ); opacity : .9 ; }
1512+ .mdt-orb--brand { background : radial-gradient (circle at 35% 35% , rgba (154 , 92 , 242 , .55 ), rgba (91 , 99 , 240 , .28 ) 45% , transparent 70% ); }
1513+ .mdt-orb--cyan { background : radial-gradient (circle, rgba (79 , 208 , 230 , .32 ), transparent 70% ); }
1514+ .mdt-orb--blue { background : radial-gradient (circle, rgba (79 , 140 , 235 , .30 ), transparent 70% ); }
1515+ .mdt-grid {
1516+ position : absolute; inset : 0 ; pointer-events : none;
1517+ background-image :
1518+ linear-gradient (to right, rgba (160 , 172 , 255 , .045 ) 1px , transparent 1px ),
1519+ linear-gradient (to bottom, rgba (160 , 172 , 255 , .045 ) 1px , transparent 1px );
1520+ background-size : 64px 64px ;
1521+ -webkit-mask-image : radial-gradient (130% 110% at 0% 0% , # 000 0% , transparent 62% );
1522+ mask-image : radial-gradient (130% 110% at 0% 0% , # 000 0% , transparent 62% );
1523+ }
1524+ .mdt-noise {
1525+ position : absolute; inset : 0 ; pointer-events : none; opacity : .28 ; mix-blend-mode : soft-light;
1526+ background-image : url ("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E" );
1527+ }
1528+ /* content stacks above the backdrop naturally; backdrop sits at z-index:-1.
1529+ (No blanket position rule — it would override fixed/sticky children.) */
1530+
1531+ /* typography helpers */
1532+ .mdt-grad-text {
1533+ background : var (--mdt-grad );
1534+ -webkit-background-clip : text; background-clip : text;
1535+ -webkit-text-fill-color : transparent; color : transparent;
1536+ }
1537+ .mdt-kicker {
1538+ font-family : var (--font-geist-mono ), ui-monospace, monospace;
1539+ text-transform : uppercase; letter-spacing : .22em ;
1540+ font-size : .78rem ; color : var (--mdt-muted );
1541+ }
1542+ .mdt-mono { font-family : var (--font-geist-mono ), ui-monospace, monospace; }
1543+ .mdt-text-muted { color : var (--mdt-muted ); }
1544+ .mdt-text-faint { color : var (--mdt-faint ); }
1545+
1546+ /* surfaces, rails, pills */
1547+ .mdt-surface {
1548+ background : linear-gradient (180deg , rgba (255 , 255 , 255 , .02 ), transparent), var (--mdt-surface );
1549+ border : 1px solid var (--mdt-border );
1550+ border-radius : 18px ;
1551+ }
1552+ .mdt-surface-hi { background : var (--mdt-surface-hi ); border : 1px solid var (--mdt-border ); border-radius : 18px ; }
1553+ .mdt-rail { background : var (--mdt-grad ); }
1554+ .mdt-pill {
1555+ display : inline-flex; align-items : center; gap : .5rem ;
1556+ border : 1px solid var (--mdt-border ); border-radius : 9999px ;
1557+ background : var (--mdt-surface ); padding : .35rem .85rem ;
1558+ font-family : var (--font-geist-mono ), monospace; font-size : .8rem ; color : var (--mdt-muted );
1559+ }
1560+ .mdt-card-hover { transition : transform .3s cubic-bezier (.16 , 1 , .3 , 1 ), border-color .3s , box-shadow .3s ; }
1561+ .mdt-card-hover : hover { transform : translateY (-4px ); border-color : rgba (122 , 107 , 245 , .5 ); box-shadow : 0 20px 60px -20px rgba (91 , 99 , 240 , .35 ); }
1562+
1563+ /* gradient-stroke icons (uses the hidden <linearGradient id="mdtGrad">) */
1564+ .mdt-icon-grad svg , svg .mdt-icon-grad { stroke : url (# mdtGrad); }
1565+
1566+ /* buttons */
1567+ .mdt-btn-grad {
1568+ background : var (--mdt-grad ); color : # 0a0b12 ; border : none;
1569+ font-weight : 600 ; transition : filter .2s , transform .2s , box-shadow .2s ;
1570+ box-shadow : 0 10px 30px -10px rgba (122 , 107 , 245 , .6 );
1571+ }
1572+ .mdt-btn-grad : hover { filter : brightness (1.08 ); transform : translateY (-2px ); box-shadow : 0 16px 40px -10px rgba (122 , 107 , 245 , .7 ); }
1573+ .mdt-btn-ghost {
1574+ background : rgba (255 , 255 , 255 , .03 ); color : var (--mdt-text );
1575+ border : 1px solid var (--mdt-border ); transition : background .2s , border-color .2s , transform .2s ;
1576+ }
1577+ .mdt-btn-ghost : hover { background : rgba (255 , 255 , 255 , .06 ); border-color : rgba (122 , 107 , 245 , .5 ); transform : translateY (-2px ); }
1578+
1579+ /* gradient hairline divider */
1580+ .mdt-hr { height : 1px ; border : 0 ; background : linear-gradient (90deg , transparent, var (--mdt-border ) 20% , var (--mdt-border ) 80% , transparent); }
1581+
1582+ /* ─── DECK FX: futuristic motion + interaction (scoped to .mdt-deck) ───────── */
1583+ @property --mdt-angle { syntax : "<angle>" ; initial-value : 0deg ; inherits : false; }
1584+
1585+ /* cursor-following gradient border on every surface card */
1586+ .mdt-deck .glass-overlay { position : relative; }
1587+ .mdt-deck .glass-overlay ::before {
1588+ content : "" ; position : absolute; inset : 0 ; border-radius : inherit; padding : 1px ;
1589+ pointer-events : none; z-index : 3 ;
1590+ background : radial-gradient (180px circle at var (--mx , 50% ) var (--my , 50% ), rgba (150 , 160 , 255 , .9 ), rgba (122 , 107 , 245 , .18 ) 45% , transparent 66% );
1591+ -webkit-mask : linear-gradient (# 000 0 0 ) content-box, linear-gradient (# 000 0 0 );
1592+ mask : linear-gradient (# 000 0 0 ) content-box, linear-gradient (# 000 0 0 );
1593+ -webkit-mask-composite : xor; mask-composite : exclude;
1594+ opacity : 0 ; transition : opacity .4s ease;
1595+ }
1596+ .mdt-deck .glass-overlay : hover ::before { opacity : 1 ; }
1597+
1598+ /* animated gradient border-beam for a featured card */
1599+ .mdt-deck .mdt-beam { position : relative; }
1600+ .mdt-deck .mdt-beam ::after {
1601+ content : "" ; position : absolute; inset : 0 ; border-radius : inherit; padding : 1.5px ;
1602+ pointer-events : none; z-index : 3 ;
1603+ background : conic-gradient (from var (--mdt-angle ), transparent 0 62% , # 5b63f0 78% , # 9a5cf2 88% , # 4fd0e6 96% , transparent 100% );
1604+ -webkit-mask : linear-gradient (# 000 0 0 ) content-box, linear-gradient (# 000 0 0 );
1605+ mask : linear-gradient (# 000 0 0 ) content-box, linear-gradient (# 000 0 0 );
1606+ -webkit-mask-composite : xor; mask-composite : exclude;
1607+ animation : mdt-spin 6s linear infinite;
1608+ }
1609+ @keyframes mdt-spin { to { --mdt-angle : 360deg ; } }
1610+
1611+ /* scroll-progress beam */
1612+ .mdt-progress { position : fixed; top : 0 ; left : 0 ; right : 0 ; height : 2px ; transform-origin : 0 50% ; background : var (--mdt-grad ); z-index : 60 ; }
1613+
1614+ /* slow sheen across gradient headline text */
1615+ .mdt-grad-anim { background-size : 220% 100% ; animation : mdt-sheen 9s ease-in-out infinite; }
1616+ @keyframes mdt-sheen { 0% , 100% { background-position : 0% 50% ; } 50% { background-position : 100% 50% ; } }
1617+
1618+ /* aurora canvas in hero */
1619+ .mdt-aurora { position : absolute; inset : 0 ; width : 100% ; height : 100% ; filter : blur (72px ) saturate (1.25 ); opacity : .5 ; mix-blend-mode : screen; pointer-events : none; }
1620+
1621+ /* infinite tool-name ticker */
1622+ .mdt-marquee { overflow : hidden; -webkit-mask-image : linear-gradient (90deg , transparent, # 000 7% , # 000 93% , transparent); mask-image : linear-gradient (90deg , transparent, # 000 7% , # 000 93% , transparent); }
1623+ .mdt-marquee__track { display : inline-flex; gap : 2.5rem ; padding-right : 2.5rem ; white-space : nowrap; animation : mdt-scroll 45s linear infinite; will-change : transform; }
1624+ .mdt-marquee : hover .mdt-marquee__track { animation-play-state : paused; }
1625+ @keyframes mdt-scroll { to { transform : translateX (-50% ); } }
1626+
1627+ @media (prefers-reduced-motion : reduce) {
1628+ .mdt-marquee__track , .mdt-grad-anim , .mdt-deck .mdt-beam ::after { animation : none !important ; }
1629+ }
1630+
1631+ /* ─── DECK MOTION TOKENS (from motion-design skill) ───────────────────────── */
1632+ : root {
1633+ --dur-1 : 120ms ; --dur-2 : 180ms ; --dur-3 : 240ms ; --dur-4 : 300ms ; --dur-5 : 500ms ;
1634+ --ease-out-quart : cubic-bezier (.165 , .84 , .44 , 1 );
1635+ --ease-out-quint : cubic-bezier (.23 , 1 , .32 , 1 );
1636+ --ease-out-expo : cubic-bezier (.19 , 1 , .22 , 1 );
1637+ --ease-in-out-cubic : cubic-bezier (.645 , .045 , .355 , 1 );
1638+ }
1639+
1640+ /* living background: slow grid drift + slightly richer aurora */
1641+ .mdt-grid { animation : mdt-grid-drift 64s linear infinite; }
1642+ @keyframes mdt-grid-drift { to { background-position : 64px 64px , 64px 64px ; } }
1643+ .mdt-aurora { opacity : .6 ; }
1644+
1645+ /* card hover easing aligned to tokens (transform/shadow only) */
1646+ .mdt-card-hover { transition : transform var (--dur-3 ) var (--ease-out-quart ), border-color var (--dur-3 ) ease, box-shadow var (--dur-3 ) ease; }
1647+
1648+ /* header scroll-translucent transition (subtle state change) */
1649+ .mdt-nav { transition : background-color var (--dur-3 ) ease, backdrop-filter var (--dur-3 ) ease, border-color var (--dur-3 ) ease, box-shadow var (--dur-3 ) ease; }
1650+
1651+ /* accessibility: honor reduced-motion globally */
1652+ @media (prefers-reduced-motion : reduce) {
1653+ * , * ::before , * ::after {
1654+ animation-duration : .01ms !important ;
1655+ animation-iteration-count : 1 !important ;
1656+ transition-duration : .01ms !important ;
1657+ scroll-behavior : auto !important ;
1658+ }
1659+ }
1660+
1661+ /* ─── CRT BOOT LOADER (monitor illustration) ──────────────────────────────── */
1662+ .crt-boot { position : fixed; inset : 0 ; z-index : 200 ; display : grid; place-items : center; overflow : hidden;
1663+ background : radial-gradient (120% 120% at 50% 28% , # 0c0e16 0% , # 050608 58% , # 030305 100% ); }
1664+ .crt-boot--out { animation : crt-out 600ms cubic-bezier (.19 , 1 , .22 , 1 ) forwards; }
1665+ @keyframes crt-out { to { opacity : 0 ; transform : scale (1.06 ); filter : blur (8px ); visibility : hidden; } }
1666+
1667+ .crt { width : min (540px , 84vw ); transform : perspective (1500px ) rotateX (2deg ); }
1668+ .crt__monitor { position : relative; border-radius : 26px ; padding : 24px 24px 28px ;
1669+ background : linear-gradient (180deg , # 262932, # 16181f 58% , # 0f1116 );
1670+ box-shadow : 0 44px 100px -34px rgba (0 , 0 , 0 , .92 ), inset 0 1px 0 rgba (255 , 255 , 255 , .07 ), inset 0 -3px 10px rgba (0 , 0 , 0 , .6 ); }
1671+ .crt__screen { position : relative; aspect-ratio : 4 / 3 ; border-radius : 14px ; overflow : hidden; padding : 18px 18px 16px ;
1672+ background : radial-gradient (120% 120% at 50% 42% , # 0a1510 0% , # 060d0a 68% , # 040706 100% );
1673+ box-shadow : inset 0 0 70px rgba (0 , 0 , 0 , .9 ), inset 0 0 0 2px rgba (0 , 0 , 0 , .55 ), 0 0 34px rgba (94 , 242 , 160 , .1 ); }
1674+ .crt__screen ::before { content : "" ; position : absolute; inset : 0 ; z-index : 5 ; pointer-events : none;
1675+ background : repeating-linear-gradient (0deg , transparent 0 2px , rgba (0 , 0 , 0 , .3 ) 2px 3px ); }
1676+ .crt__screen ::after { content : "" ; position : absolute; inset : 0 ; z-index : 6 ; pointer-events : none;
1677+ background : radial-gradient (130% 80% at 50% -10% , rgba (160 , 210 , 255 , .14 ), transparent 55% ); }
1678+ .crt__flicker { animation : crt-flicker 3.6s infinite steps (60 ); }
1679+ @keyframes crt-flicker { 0% , 100%{opacity : 1 } 8% {opacity : .92 } 10% {opacity : 1 } 50% {opacity : .96 } 52% {opacity : 1 } }
1680+ .crt__code { position : relative; z-index : 2 ; height : 100% ; font-family : var (--font-geist-mono ), monospace;
1681+ font-size : clamp (10px , 1.5vw , 13px ); line-height : 1.72 ; color : # 5ef2a0 ; text-shadow : 0 0 6px rgba (94 , 242 , 160 , .5 ); }
1682+ .crt__line { white-space : pre-wrap; word-break : break-word; }
1683+ .crt__accent { color : # 7fd7ff ; text-shadow : 0 0 6px rgba (127 , 215 , 255 , .6 ); }
1684+ .crt__cursor { display : inline-block; width : 7px ; height : 1em ; transform : translateY (2px );
1685+ background : # 5ef2a0 ; box-shadow : 0 0 8px # 5ef2a0 ; animation : crt-blink 1s steps (2 ) infinite; }
1686+ @keyframes crt-blink { 50% { opacity : 0 ; } }
1687+ .crt__brand { display : flex; align-items : center; justify-content : space-between; margin-top : 14px ; padding : 0 6px ; }
1688+ .crt__brand span { font-family : var (--font-geist-mono ), monospace; font-size : 10px ; letter-spacing : .34em ; color : # 5b6076 ; }
1689+ .crt__led { width : 8px ; height : 8px ; border-radius : 50% ; background : # 5ef2a0 ; box-shadow : 0 0 10px # 5ef2a0 ; animation : crt-blink 1.4s steps (2 ) infinite; }
1690+ .crt__neck { width : 78px ; height : 24px ; margin : 0 auto; background : linear-gradient (180deg , # 1a1c22, # 101116 ); }
1691+ .crt__base { width : 196px ; height : 14px ; margin : 0 auto; border-radius : 0 0 14px 14px ;
1692+ background : linear-gradient (180deg , # 1d1f26, # 0e0f14 ); box-shadow : 0 20px 44px -18px rgba (0 , 0 , 0 , .9 ); }
1693+ @media (prefers-reduced-motion : reduce) {
1694+ .crt__flicker , .crt__cursor , .crt__led { animation : none !important ; }
1695+ .crt { transform : none; }
1696+ }
1697+
1698+
1699+ /* dashboard editor caret */
1700+ .mdt-dash-caret { background : var (--mdt-cyan ); box-shadow : 0 0 8px var (--mdt-cyan ); border-radius : 1px ; animation : mdt-caret-blink 1.1s steps (2 ) infinite; }
1701+ @keyframes mdt-caret-blink { 50% { opacity : 0 ; } }
0 commit comments