@@ -232,32 +232,33 @@ onMounted(() => {
232232
233233<style scoped>
234234.btv {
235- --btv-hover : rgba (255 , 255 , 255 , 0.05 );
236- --btv-pill : rgba (255 , 255 , 255 , 0.04 );
237- --btv-footer : rgba (0 , 0 , 0 , 0.2 );
238235 min-height : 100vh ;
239236 background : radial-gradient (1100px 560px at 50% -120px , var (--bg-grad ), var (--bg ) 62% );
240237 color : var (--text );
241238 font-family : var (--sans );
242239}
243240
244- /* Light mode (system / toggle): surfaces, text and accent-as-text come from the
245- shared tokens (tokens.css :root:not(.dark)); only these landing-local
246- overlays — header/nav washes, pills, footer tint — flip here. */
241+ /* Landing-local scheme overlays (header/nav washes, pills, footer tint, and the
242+ light card rest shadow). NB: in Vue scoped CSS a `:global(html…) .btv` selector
243+ compiles to the `html…` element, so we set BOTH schemes on the two html states
244+ rather than a default on `.btv` — a `.btv` default would shadow the html-level
245+ value for everything inside the landing. Surfaces/text/accent themselves come
246+ from the shared tokens (tokens.css). */
247+ :global(html .dark ) .btv {
248+ --btv-hover : rgba (255 , 255 , 255 , 0.05 );
249+ --btv-pill : rgba (255 , 255 , 255 , 0.04 );
250+ --btv-footer : rgba (0 , 0 , 0 , 0.2 );
251+ --card-rest-shadow : none ; /* dark cards: depth from the fill + hairline */
252+ --glow-display : block ; /* pink hero glow — a dark-scheme signature */
253+ }
247254:global(html :not (.dark )) .btv {
248255 --btv-hover : rgba (26 , 12 , 20 , 0.05 );
249256 --btv-pill : rgba (26 , 12 , 20 , 0.035 );
250257 --btv-footer : rgba (26 , 12 , 20 , 0.025 );
258+ --card-rest-shadow : 0 1px 2px rgba (26 , 12 , 20 , 0.05 ), 0 16px 32px -24px rgba (26 , 12 , 20 , 0.22 );
259+ --glow-display : none ; /* on near-white the pink glow reads as a washed
260+ "livid" cloud behind the wordmark — drop it */
251261}
252- :global(html :not (.dark )) .btv-glow { opacity : 0.55 ; }
253- /* On near-white, the hairline alone leaves cards looking flat — give them a
254- soft rest shadow in light mode so they lift off the background. */
255- :global(html :not (.dark )) .btv-pcard ,
256- :global(html :not (.dark )) .btv-prin-card {
257- box-shadow : 0 1px 2px rgba (26 , 12 , 20 , 0.05 ), 0 16px 32px -24px rgba (26 , 12 , 20 , 0.22 );
258- }
259- /* keep the hover lift shadow — the rest rule above outspecifies .pcard:hover */
260- :global(html :not (.dark )) .btv-pcard :hover { box-shadow : var (--shadow-card ); }
261262
262263/* general accent highlights (incl. the small copy toast) keep the AA text accent */
263264.btv-pink { color : var (--text-accent ); }
@@ -291,7 +292,7 @@ onMounted(() => {
291292
292293/* Hero */
293294.btv-hero { position : relative ; text-align : center ; padding : 104px 28px 86px ; overflow : hidden ; }
294- .btv-glow { position : absolute ; top : 30px ; left : 50% ; transform : translateX (-50% ); width : 560px ; max-width : 90vw ; height : 380px ; background : radial-gradient (closest-side , rgba (224 ,88 ,154 ,0.30 ), transparent 72% ); filter : blur (8px ); animation : glowpulse 6s ease-in-out infinite ; pointer-events : none ; z-index : 0 ; }
295+ .btv-glow { display : var ( --glow-display , block ); position : absolute ; top : 30px ; left : 50% ; transform : translateX (-50% ); width : 560px ; max-width : 90vw ; height : 380px ; background : radial-gradient (closest-side , rgba (224 ,88 ,154 ,0.30 ), transparent 72% ); filter : blur (8px ); animation : glowpulse 6s ease-in-out infinite ; pointer-events : none ; z-index : 0 ; }
295296.btv-hero-inner { position : relative ; z-index : 1 ; max-width : 900px ; margin : 0 auto ; }
296297.btv-float { display : inline-flex ; animation : floaty 6s ease-in-out infinite ; filter : drop-shadow (0 18px 40px rgba (142 ,26 ,82 ,0.45 )); }
297298.btv-title { margin : 26px 0 0 ; font-weight : 800 ; letter-spacing : -2.5px ; line-height : 0.95 ; font-size : clamp (52px , 9vw , 92px ); }
@@ -314,15 +315,15 @@ onMounted(() => {
314315
315316/* Principles */
316317.btv-prin { display : grid ; grid-template-columns : repeat (3 , minmax (0 , 1fr )); gap : 18px ; margin-top : 34px ; }
317- .btv-prin-card { background : var (--card ); border : 1px solid var (--border ); border-radius : 16px ; padding : 22px ; transition : transform .2s ease , border-color .2s ease ; }
318+ .btv-prin-card { background : var (--card ); border : 1px solid var (--border ); border-radius : 16px ; padding : 22px ; box-shadow : var ( --card-rest-shadow ); transition : transform .2s ease , border-color .2s ease ; }
318319.btv-prin-card :hover { transform : translateY (-3px ); border-color : var (--border-2 ); }
319320.btv-prin-num { width : 38px ; height : 38px ; border-radius : 10px ; display : flex ; align-items : center ; justify-content : center ; background : var (--accent-wash ); border : 1px solid var (--accent-line ); color : var (--text-accent ); font-family : var (--mono ); font-weight : 600 ; font-size : 15px ; }
320321.btv-prin-title { margin : 16px 0 0 ; font-weight : 700 ; font-size : 18px ; letter-spacing : -0.3px ; color : var (--text ); }
321322.btv-prin-body { margin : 9px 0 0 ; font-size : 14.5px ; line-height : 1.6 ; color : var (--muted ); }
322323
323324/* Project cards */
324325.btv-projects { display : grid ; grid-template-columns : repeat (3 , minmax (0 , 1fr )); gap : 20px ; }
325- .btv-pcard { display : flex ; flex-direction : column ; background : var (--card ); border : 1px solid var (--border ); border-radius : 20px ; padding : 26px ; }
326+ .btv-pcard { display : flex ; flex-direction : column ; background : var (--card ); border : 1px solid var (--border ); border-radius : 20px ; padding : 26px ; box-shadow : var ( --card-rest-shadow ); }
326327.pcard { transition : transform .2s ease , border-color .2s ease , box-shadow .2s ease ; }
327328.pcard :hover { transform : translateY (-4px ); border-color : var (--border-2 ); box-shadow : var (--shadow-card ); }
328329.btv-pcard-top { display : flex ; align-items : center ; justify-content : space-between ; gap : 12px ; }
0 commit comments