/* Shared input behavior and mobile layout. Keep intentional browser pinch zoom available. */
[hidden]{display:none!important}
html{scroll-padding-top:20px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{touch-action:manipulation}
button,a,input,select,textarea,label{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button,a{-webkit-touch-callout:none}
.sidebar-close{position:absolute;right:10px;top:10px}
body.sidebar-open{overflow:hidden}
body.noir .sidebar{overscroll-behavior:contain;z-index:60}
body.noir.sidebar-open .sidebar-scrim{z-index:50}
.live-stock-search-field{cursor:text}
.live-stock-search-field>.icon{pointer-events:none}
.live-stock-search-field input{position:relative;z-index:1;pointer-events:auto;-webkit-user-select:text;user-select:text}
.live-instrument-bar:focus-within{z-index:10}
.live-market-results{touch-action:pan-y;pointer-events:auto}
.live-market-option{touch-action:pan-y;pointer-events:auto}
.search-market-open{display:flex;align-items:center;gap:10px;flex:1;min-width:0;min-height:44px;text-align:left}
.search-market-open .asset-info{flex:1;min-width:0}
.search-market-price{margin-left:auto;font-size:12px;white-space:nowrap}
@media(max-width:700px),(any-pointer:coarse){
  /* Text fields at 16px prevent focus-triggered viewport zoom on iOS. */
  body.noir :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select,textarea),body :is(.auth-card input,.auth-card select){font-size:16px!important;line-height:1.4}
  body.noir :is(.button,.icon-button,.header-logout,.text-button,.account-pill,.carousel-toggle,.tile-save,.star-button){min-height:44px;min-width:44px}
  body.noir :is(.icon-button,.carousel-toggle,.tile-save,.star-button){width:44px;height:44px;flex-shrink:0}
  body.noir :is(.scan-segments button,.library-tabs button,.segmented button,.scan-chart-buttons button,.chart-filters button,.saved-filter,.library-sort){min-height:44px}
  body.noir :is(.main-nav a,.help-link,.profile){min-height:48px}
  body.noir .topbar-pill>a{min-height:44px;font-size:13px;flex:1;padding-inline:12px;white-space:nowrap}
  body.noir :is(.live-stock-search-field,.library-search,.scan-money-input){min-height:48px}
  body.noir .live-stock-search-field input{min-height:44px;flex:1}
  body.noir .live-market-option{min-height:56px;padding:10px 12px}
  body.noir .live-chart-panel .icon-button{min-height:32px;min-width:32px;width:32px;height:32px}
  .live-market-results{overscroll-behavior:contain;max-height:min(320px,45dvh);z-index:30}
  .live-indicators{overscroll-behavior:contain;max-height:min(480px,65dvh);overflow-y:auto}
  .live-indicators>label{min-height:48px;font-size:13px;padding:10px 0}
  .live-indicators input{width:44px;height:44px}
  body.noir :is(.live-workspace,.featured-hero,.page-heading,.settings-panel,.motion-reveal-enter,.copy-enter){animation:none!important}
  body.noir .motion-reveal-wait{opacity:1;transform:none}
  body.noir :is(.button,.icon-button,.rank-pill,.tile-art,.feature-card,.tile-open,.account-pill):hover,body.noir :is(.button,.icon-button,.rank-pill,.tile-art,.account-pill):active{transform:none;filter:none}
}
@media(max-width:700px){
  html,body{max-width:100%;overflow-x:clip}
  body.noir,body.noir.dark{background-attachment:scroll}
  body.noir .app-shell{width:100%;min-width:0}
  body.noir .topbar{height:auto;min-height:122px;position:relative;padding:10px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left));grid-template-columns:minmax(0,1fr) auto;gap:8px;z-index:40}
  body.noir .masthead-brand{gap:4px;min-width:0}
  body.noir .wordmark{font-size:20px;gap:6px;letter-spacing:-.7px}
  body.noir .wordmark .icon{width:23px;height:23px}
  body.noir .topbar .mobile-menu{display:inline-flex}
  body.noir .header-actions{gap:6px;grid-column:2;grid-row:1}
  body.noir .topbar-pill{backdrop-filter:none;-webkit-backdrop-filter:none}
  body.noir .header-actions #notifications,body.noir .header-actions .account-pill{display:none}
  body.noir .header-logout{font-size:12px;padding:8px 12px}
  body.noir .topbar-pill{grid-column:1/-1;grid-row:2;justify-self:stretch;justify-content:space-between;margin:0;padding:4px;gap:2px;width:100%}
  body.noir main,body.noir.live-view main{padding:12px 12px max(28px,env(safe-area-inset-bottom));min-width:0}
  body.noir .sidebar{inset:max(10px,env(safe-area-inset-top)) auto auto max(10px,env(safe-area-inset-left));width:min(300px,calc(100vw - 20px));max-height:calc(100dvh - 20px);padding:20px 14px 14px;border-radius:20px}
  body.noir .sidebar .brand{padding:0 44px 12px 8px;min-height:44px;font-size:22px}
  body.noir .sidebar .main-nav{margin-top:12px}
  body.noir .sidebar .main-nav a{font-size:15px;padding:12px;gap:12px}
  body.noir .sidebar .main-nav a .icon{width:20px;height:20px}
  body.noir .sidebar .sidebar-bottom{margin-top:16px}
  body.noir .sidebar .help-link{font-size:14px;padding:12px}
  body.noir .sidebar .profile{font-size:14px;padding:12px}
  /* Flat, stable cards avoid overlapping 3D tap surfaces and shifting buttons. */
  body.noir .featured-hero{padding:16px;border-radius:20px;min-height:0;background:#101114}
  body.noir .feature-stage{height:auto;min-height:0;display:block}
  body.noir .feature-copy{width:100%;padding:20px 0 8px;pointer-events:auto}
  body.noir .feature-copy h1{font-size:34px;line-height:1.15;letter-spacing:-1.2px;overflow-wrap:anywhere}
  body.noir .feature-flow{display:none}
  body.noir .feature-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
  body.noir .feature-stats strong{font-size:18px;white-space:nowrap}
  body.noir .feature-stats small{font-size:11px}
  body.noir .feature-ctas{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
  body.noir .feature-ctas .button{flex:1;min-height:48px;font-size:14px;padding-inline:12px}
  .featured-bottom{display:block;margin-top:14px}.feature-ranks{width:100%;scroll-padding:4px;mask-image:none}.rank-pill{min-height:54px;min-width:128px}
  .carousel-arrows,.carousel-toggle{display:none!important}
  body.noir .market-library-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 10px}
  body.noir .tile-open{padding:14px 12px 8px}
  body.noir .tile-price{font-size:22px;margin-top:18px}
  body.noir .tile-art-top{padding-right:28px}
  body.noir .tile-caption{display:block}
  body.noir .tile-caption>span{display:none}
  body.noir .library-toolbar{gap:12px;align-items:stretch}
  body.noir .library-search{min-width:0;flex-basis:100%;width:100%}
  body.noir .library-filter-row{width:100%;display:flex;flex-wrap:wrap;gap:8px}
  body.noir .library-tabs{flex:1;display:flex}
  body.noir .library-tabs button{flex:1;padding:8px 10px}
  body.noir .library-sort{padding-inline:12px}
  body.noir .scan-segments{gap:4px}.scan-settings{min-width:0}
  body.noir .scan-settings,body.noir .scan-progress{padding:16px}
  body.noir .setting-row{flex-wrap:wrap;gap:12px}.setting-row>div{min-width:0}.setting-row p{overflow-wrap:anywhere}
  body.noir dialog{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:18px;border-radius:20px;overscroll-behavior:contain}
  body.noir .dialog-heading{gap:10px}.dialog-heading h2{min-width:0}
  body.noir .search-result{gap:10px;flex-wrap:wrap;padding:12px 0}
  body.noir .search-result .button{min-height:44px}
  body.noir .toast{bottom:max(16px,env(safe-area-inset-bottom));font-size:13px}
  /* Landing and auth use the same comfortable tap sizes. */
  body:not(.noir) .topbar-bar{gap:4px;padding-left:12px}
  .topbar-auth{gap:2px}.topbar-auth>.btn-quiet{min-height:44px;padding:8px}.topbar-auth>.topbar-cta{min-height:44px;padding:10px 12px;font-size:12px}
  body:not(.noir) .wordmark{font-size:19px;gap:5px}
  .auth-tabs a,.password-field button,.back-link{min-height:44px;display:flex;align-items:center;justify-content:center}
  .password-field button{top:11px;right:8px;min-width:44px}.auth-submit{min-height:48px}
}
@media(max-width:360px){
  body.noir .wordmark{font-size:18px}.masthead-brand{gap:0!important}
  body.noir .header-actions #global-search{display:none}
  body.noir .feature-stats strong{font-size:16px}
  body.noir .tile-price{font-size:20px}
  body:not(.noir) .wordmark{font-size:17px}.topbar-auth>.topbar-cta{font-size:11px;padding-inline:10px}
}
