/* Lumo design foundation: the mobile app's theme as shared tokens and components.
   Sources (lumo-mobile-app): lib/utils/app_colors.dart (new-theme brand tokens),
   lib/utils/theme/lumo_theme_extension.dart (LumoColors.light / .dark),
   lib/utils/theme/lumo_input_decoration.dart, lib/widgets/custom_button.dart,
   lib/widgets/lumo_screen_header.dart, lib/widgets/new_theme_bottom_nav.dart and
   lib/view/tabs/wallet/new_theme/new_theme_home_view.dart. Mobile sizes are in
   design pixels (flutter_screenutil .w/.sp on a 393pt frame); they are used 1:1
   here because Telegram phones are 360-430px wide, the same frame.
   Telegram: the light/dark set follows Telegram.WebApp.colorScheme (appearance.js)
   and fixed bars sit inside contentSafeAreaInset (--tg-content-*, telegram.js).
   Fonts: Roboto (CustomText default) and Inter (Material default text), the
   same files as mobile's assets/fonts. Screens adopt this by using the lumo-*
   classes and var(--lumo-*) tokens; the dark set follows html[data-lumo-theme=dark]. */
@font-face{font-family:Inter;src:url('inter.ttf') format('truetype');font-weight:400;font-display:swap}
:root{
  /* AppColors new-theme brand tokens */
  --lumo-primary:#8b5cf6;--lumo-primary-soft:#b794d9;--lumo-brand:#7d4583;--lumo-brand-light:#9a5a9f;
  --lumo-green:#01d903;--lumo-red:#e5484d;--lumo-blue:#3478f6;--lumo-warning:#f5b83d;--lumo-online:#22c55e;
  /* LumoColors.light */
  --lumo-bg:#fbfaff;--lumo-card:#fff;--lumo-text:#17151c;--lumo-text-2:#68656f;--lumo-text-3:#96939d;
  --lumo-divider:#0000001a;--lumo-border:#f2f0f4;--lumo-chip-border:#e9e7ed;--lumo-secondary-bg:#f8f8fa;
  --lumo-nested:#f0ecf7;--lumo-icon-fill:#fff;--lumo-nav-fill:#fffffff2;--lumo-sheet:#fbfaff;
  --lumo-input-fill:#fff;--lumo-input-border:transparent;--lumo-hint:#000;
  --lumo-gradient:linear-gradient(135deg,#ede8f5,#e4d8f0);
  /* Shadows: _shadowPurple / _shadowSoft (rgba(106,65,251,.1/.05), blur 20, y 4) */
  --lumo-shadow:0 4px 20px #6a41fb1a;--lumo-shadow-soft:0 4px 20px #6a41fb0d;
  --lumo-shadow-card:0 6px 16px #7d45830f,0 2px 8px #0000000a;
  /* Radii */
  --lumo-r-card:10px;--lumo-r-tile:14px;--lumo-r-input:12px;--lumo-r-button:46px;--lumo-r-pill:100px;--lumo-r-sheet:24px;
  /* Spacing */
  --lumo-gutter:20px;--lumo-gap:10px;
  /* Type */
  --lumo-font:Roboto,ui-sans-serif,system-ui,sans-serif;--lumo-font-material:Inter,Roboto,ui-sans-serif,system-ui,sans-serif;
}
html[data-lumo-theme=dark]{
  /* LumoColors.dark */
  --lumo-bg:#09080a;--lumo-card:#17151c;--lumo-text:#f7f5fa;--lumo-text-2:#a9a5b0;--lumo-text-3:#8a8791;
  --lumo-divider:#292630;--lumo-border:#292630;--lumo-chip-border:#292630;--lumo-secondary-bg:#ffffff0f;
  --lumo-nested:#ffffff0f;--lumo-icon-fill:#ffffff14;--lumo-nav-fill:#17151cf2;--lumo-sheet:#0a0a12;
  --lumo-input-fill:transparent;--lumo-input-border:#292630;--lumo-hint:#a9a5b0;
  --lumo-gradient:linear-gradient(135deg,#170c2a,#402848);
  --lumo-shadow:none;--lumo-shadow-soft:none;--lumo-shadow-card:none;
}

/* Text styles (CustomText sizes used across the new theme). */
.lumo-title{font:600 16px/1.25 var(--lumo-font);color:var(--lumo-text)}
.lumo-section-title{font:600 14px/1.3 var(--lumo-font);color:var(--lumo-text);margin:0}
.lumo-body{font:400 14px/1.35 var(--lumo-font);color:var(--lumo-text)}
.lumo-caption{font:400 12px/1.35 var(--lumo-font);color:var(--lumo-text-2)}
.lumo-muted{color:var(--lumo-text-2)}
.lumo-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Round 32px icon button (_HeaderIconButton / _RoundActionIcon). */
.lumo-icon-button{display:inline-grid;place-items:center;width:32px;height:32px;min-height:32px;flex:0 0 32px;padding:0;border:0;border-radius:50%;background:var(--lumo-card);box-shadow:var(--lumo-shadow);color:var(--lumo-primary);cursor:pointer}
.lumo-icon-button>img,.lumo-icon-button>svg{width:20px;height:20px;display:block}
.lumo-icon-button.soft{box-shadow:var(--lumo-shadow-soft)}
html[data-lumo-theme=dark] .lumo-icon-button{background:var(--lumo-icon-fill)}

/* Screen header (LumoScreenHeader): 44px back slot, centred 18/500 title. */
.lumo-header{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;padding:18px var(--lumo-gutter)}
.lumo-header h1,.lumo-header h2{margin:0;text-align:center;font:500 18px/1.3 var(--lumo-font);color:var(--lumo-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lumo-header .lumo-icon-button{margin:6px}

/* Buttons (CustomButton: 44px tall, radius 46, Lumo-mark purple fill). */
.lumo-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;min-height:44px;padding:0 16px;border:0;border-radius:var(--lumo-r-button);background:var(--lumo-primary);color:#fff;font:500 16px/1 var(--lumo-font);cursor:pointer}
.lumo-button.block{width:100%}
.lumo-button.outline{background:transparent;color:var(--lumo-primary);border:1px solid var(--lumo-primary)}
.lumo-button.quiet{background:var(--lumo-card);color:var(--lumo-text);box-shadow:var(--lumo-shadow-soft)}
.lumo-button:disabled{opacity:.6;cursor:default}
.lumo-link{background:none;border:0;padding:0;color:var(--lumo-primary);font:600 12px/1.3 var(--lumo-font);cursor:pointer;display:inline-flex;align-items:center;gap:5px;min-height:0}
.lumo-link>img{width:16px;height:16px}

/* Cards and list tiles. */
.lumo-card{background:var(--lumo-card);border-radius:var(--lumo-r-card);box-shadow:var(--lumo-shadow-soft)}
.lumo-tile{display:flex;align-items:center;gap:10px;width:100%;padding:10px;border:0;border-radius:var(--lumo-r-card);background:var(--lumo-card);box-shadow:var(--lumo-shadow-soft);color:var(--lumo-text);text-align:left;font-family:var(--lumo-font);cursor:pointer;min-height:0}
.lumo-tile-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.lumo-tile-end{display:flex;flex-direction:column;align-items:flex-end;gap:5px;text-align:right;flex:0 0 auto;max-width:46%}
.lumo-tile-title{font:600 16px/1.2 var(--lumo-font);color:var(--lumo-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lumo-tile-sub{font:400 14px/1.2 var(--lumo-font);color:var(--lumo-text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lumo-tile-caret{width:16px;height:16px;flex:0 0 16px}

/* Coin artwork with network badge (CacheImage 44 + 14px badge). */
.lumo-coin{position:relative;width:44px;height:44px;flex:0 0 44px}
.lumo-coin>.coin,.lumo-coin>.coin-img,.lumo-coin>.coin img{width:44px;height:44px;border-radius:50%}
.lumo-coin-badge{position:absolute;right:-1px;bottom:-1px;width:14px;height:14px;border-radius:50%;background:var(--lumo-card);border:1px solid var(--lumo-card);display:grid;place-items:center;overflow:hidden;box-sizing:border-box}
.lumo-coin-badge>img{width:10px;height:10px;border-radius:50%;object-fit:contain}
html[data-lumo-theme=dark] .lumo-coin-badge>img[src$="globe.svg"]{filter:invert(1)}

/* Pill action bar (home quick actions: radius 100, padding 10, 1px dividers). */
.lumo-pill-bar{display:flex;align-items:stretch;padding:10px;border-radius:var(--lumo-r-pill);background:var(--lumo-card);box-shadow:var(--lumo-shadow)}
.lumo-pill-bar>button{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;padding:0;border:0;background:transparent;color:var(--lumo-text);font:400 12px/1.2 var(--lumo-font);cursor:pointer;min-height:0;border-radius:0}
.lumo-pill-bar>button+button{border-left:1px solid var(--lumo-divider)}
.lumo-pill-bar>button>img{width:28px;height:28px}

/* Inputs (LumoInputDecoration: white fill, radius 12, no outline in light). */
.lumo-input{width:100%;height:44px;padding:0 14px;border:1px solid var(--lumo-input-border);border-radius:var(--lumo-r-input);background:var(--lumo-input-fill);color:var(--lumo-text);font:400 14px var(--lumo-font);box-shadow:var(--lumo-shadow-soft);box-sizing:border-box}
.lumo-input::placeholder{color:var(--lumo-text-2)}
.lumo-input:focus{outline:1.4px solid var(--lumo-primary);outline-offset:0}

/* Switch (SwitchListTile). */
.lumo-switch{position:relative;display:inline-block;width:40px;height:24px;flex:0 0 40px}
.lumo-switch input{position:absolute;inset:0;opacity:0;margin:0;width:100%;height:100%;cursor:pointer;z-index:1}
.lumo-switch span{position:absolute;inset:0;border-radius:12px;background:#d9d6de;transition:background .15s}
.lumo-switch span::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .15s}
.lumo-switch input:checked+span{background:var(--lumo-primary)}
.lumo-switch input:checked+span::after{transform:translateX(16px)}
.lumo-switch input:focus-visible+span{outline:2px solid var(--lumo-primary);outline-offset:2px}

/* Bottom sheet (showModalBottomSheet: top radius 24, sheet background). */
.lumo-sheet-backdrop{position:fixed;inset:0;z-index:50;background:#0006;display:flex;align-items:flex-end;justify-content:center}
.lumo-sheet-backdrop[hidden]{display:none}
.lumo-sheet{width:100%;max-width:520px;max-height:calc(85dvh - var(--tg-content-top,0px));overflow:auto;background:var(--lumo-sheet);color:var(--lumo-text);border-radius:var(--lumo-r-sheet) var(--lumo-r-sheet) 0 0;padding:8px 0 calc(16px + var(--tg-content-bottom,0px) + env(safe-area-inset-bottom));box-sizing:border-box}
.lumo-sheet-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px var(--lumo-gutter);font:400 16px/1.3 var(--lumo-font-material)}
.lumo-sheet-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px var(--lumo-gutter);font:400 16px/1.3 var(--lumo-font-material);min-height:48px;box-sizing:border-box}
.lumo-sheet-row>label,.lumo-sheet-row>span{flex:1;min-width:0}
.lumo-sheet-row>.lumo-switch{flex:0 0 40px}
.lumo-sheet-note{padding:4px var(--lumo-gutter) 10px;margin:0;font:400 14px/1.4 var(--lumo-font-material);color:var(--lumo-text-2)}
.lumo-sheet-row select{max-width:55%;height:36px;padding:0 10px;border-radius:var(--lumo-r-input);border:1px solid var(--lumo-chip-border);background:var(--lumo-card);color:var(--lumo-text);font:400 13px var(--lumo-font)}

/* Floating bottom navigation (NewThemeBottomNav: 57px pill, 72px logo disc). */
.lumo-dock{position:fixed;left:50%;bottom:calc(12px + var(--tg-content-bottom,0px) + env(safe-area-inset-bottom));transform:translateX(-50%);width:calc(100% - 40px);max-width:353px;height:72px;display:grid;grid-template-columns:1fr 72px 1fr;align-items:center;z-index:20;pointer-events:none}
.lumo-dock::before{content:"";position:absolute;left:0;right:0;top:7.5px;height:57px;border-radius:var(--lumo-r-pill);background:var(--lumo-nav-fill);box-shadow:var(--lumo-shadow)}
.lumo-dock>button{position:relative;pointer-events:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;height:57px;padding:0;border:0;background:transparent;color:var(--lumo-text);font:400 8px/1.2 var(--lumo-font);cursor:pointer;min-height:0}
.lumo-dock>button>img{width:24px;height:24px}
.lumo-dock>.lumo-dock-mark{width:72px;height:72px;border-radius:50%;background:var(--lumo-card);box-shadow:0 2.6px 19.4px #6a41fb1a}
.lumo-dock>.lumo-dock-mark>img{width:53px;height:53px}

/* Swipe-to-favourite (SwipeAssetActions: 96px purple panel under the card). */
.lumo-swipe{position:relative;border-radius:var(--lumo-r-card);overflow:hidden;touch-action:pan-y}
.lumo-swipe-action{position:absolute;top:0;right:0;bottom:0;width:96px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:0;border:0;border-radius:0;background:#8b5cf6;color:#fff;font:400 12px/1.2 var(--lumo-font-material);cursor:pointer;min-height:0;visibility:hidden}
.lumo-swipe-action>svg{width:24px;height:24px}
.lumo-swipe-card,.lumo-swipe-card *{-webkit-user-drag:none;user-select:none}
.lumo-swipe-card{position:relative;z-index:1;transition:transform .18s ease-out;will-change:transform}
.lumo-swipe.open .lumo-swipe-action,.lumo-swipe.dragging .lumo-swipe-action,.lumo-swipe:focus-within .lumo-swipe-action{visibility:visible}
.lumo-swipe.open .lumo-swipe-card,.lumo-swipe:focus-within .lumo-swipe-card:has(+ .lumo-swipe-action:focus-visible){transform:translateX(-96px)}
.lumo-swipe.dragging .lumo-swipe-card{transition:none}
@media(prefers-reduced-motion:reduce){.lumo-swipe-card,.lumo-switch span,.lumo-switch span::after{transition:none}}
/* Mobile PulseAiConsentSheet: the bullet list and its two buttons. */
.pulse-consent-list{margin:0;padding:0 var(--lumo-gutter) 6px calc(var(--lumo-gutter) + 18px);font:400 14px/1.45 var(--lumo-font-material);color:var(--lumo-text)}
.pulse-consent-list li{margin-bottom:8px}
.pulse-consent-actions{display:grid;gap:8px;padding:0 var(--lumo-gutter)}
