/*
 * sso.vibeapi.cn 登录页主题
 * ---------------------------------------------------------------------------
 * 版式、色值、字号全部对齐 vibeapi 平台登录页（new-api classic 主题的
 * `styles/theme-claude.css` + `components/auth/*`）。两处差异是刻意的：
 *   - 卡片里不再重复品牌 logo / 标题（品牌已在左上角页头），与平台页一致；
 *   - 不渲染「忘记密码」「第三方登录」，因为 SSO 侧没有开这些能力（功能保持不变）。
 *
 * 所有覆盖 Logto 的规则都挂在 `html.vibe-themed` 下（Logto 自己会整体重写 body 的
 * className，标记只能挂 <html>）：theme.js 没跑起来时，页面回落成原生 Logto 登录页，
 * 而不是一个半拉子布局。
 */

@font-face {
  font-family: 'Anthropic Serif Web Text';
  src: url('./fonts/AnthropicSerifWebText-Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Anthropic Sans Web Text';
  src: url('./fonts/AnthropicSansWebText-Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/*
 * 中文字形：思源宋体 / 思源黑体的常用汉字分片（与 vibeapi 平台同源、同版本）。
 * 只带页面实际会用到的那几个 unicode-range 分片（约 500KB，浏览器按需只取 1-2 个）；
 * 落在分片外的生僻字自动回落到系统中文字体，不会出现豆腐块。
 */
@font-face {
  font-family: Noto Serif SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-serif-sc-113-400.woff2') format('woff2');
  unicode-range: U+26,U+3C,U+D7,U+4E4E,U+4E61,U+4E71,U+4EBF,U+4F26,U+5012,U+51AC,U+51B0,U+51B2,U+51B7,U+5218,U+521A,U+5220,U+5237,U+523B,U+526F,U+5385,U+53BF,U+53E5,U+53EB,U+53F3,U+53F6,U+5409,U+5438,U+54C8,U+54E5,U+552F,U+5584,U+5706,U+5723,U+5750,U+575A,U+5987-5988,U+59B9,U+59D0,U+59D4,U+5B88,U+5B9C,U+5BDF,U+5BFB,U+5C01,U+5C04,U+5C3E,U+5C4B,U+5C4F,U+5C9B,U+5CF0,U+5DDD,U+5DE6,U+5DE8,U+5E01,U+5E78,U+5E7B,U+5E9C,U+5EAD,U+5EF6,U+5F39,U+5FD8,U+6000,U+6025,U+604B,U+6076,U+613F,U+6258,U+6263,U+6267,U+6298,U+62A2,U+62E5,U+62EC,U+6311,U+6377,U+6388-6389,U+63A2,U+63D2,U+641E,U+642D,U+654F,U+6551,U+6597,U+65CF,U+65D7,U+65E7,U+6682,U+66F2,U+671D,U+672B,U+6740,U+6751,U+6768,U+6811,U+6863,U+6982,U+6BD2,U+6CF0,U+6D0B,U+6D17,U+6D59,U+6DD8,U+6DFB,U+6E7E,U+6F6E,U+6FB3,U+706F,U+719F,U+72AF,U+72D0,U+72D7,U+732B,U+732E,U+7389,U+73E0,U+7530,U+7687,U+76D6,U+76DB,U+7840,U+786C,U+79CB,U+79D2,U+7A0E,U+7A33,U+7A3F,U+7A97,U+7ADE-7ADF,U+7B26,U+7E41,U+7EC3,U+7F3A,U+8089,U+80DC,U+811A,U+8131,U+8138,U+821E,U+8349,U+83DC,U+8457,U+867D,U+86CB,U+8A89,U+8BA8,U+8BAD,U+8BEF,U+8BFE,U+8C6A,U+8D1D,U+8D4F,U+8D62,U+8DD1,U+8DF3,U+8F6E,U+8FF9,U+900F,U+9014,U+9057,U+9192,U+91CE,U+9488,U+94A2,U+9547,U+955C,U+95F2,U+9644,U+964D,U+96C4-96C5,U+96E8,U+96F6-96F7,U+9732,U+9759,U+9760,U+987A,U+989C,U+9910,U+996D-996E,U+9B54,U+9E21,U+9EBB,U+9F50;
}

@font-face {
  font-family: Noto Serif SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-serif-sc-115-400.woff2') format('woff2');
  unicode-range: U+25,U+4E14,U+4E1D,U+4E3D,U+4E49,U+4E60,U+4E9A,U+4EB2,U+4EC5,U+4EFD,U+4F3C,U+4F4F,U+4F8B,U+4FBF,U+5019,U+5145,U+514B,U+516B,U+516D,U+5174,U+5178,U+517B,U+5199,U+519B,U+51B3,U+51B5,U+5207,U+5212,U+5219,U+521D,U+52BF,U+533B,U+5343,U+5347,U+534A,U+536B,U+5370,U+53E4,U+53F2,U+5403,U+542C,U+547D,U+54A8,U+54CD,U+54EA,U+552E,U+56F4,U+5747,U+575B,U+5883,U+589E,U+5931,U+5947,U+5956-5957,U+5A92,U+5B83,U+5BA4,U+5BB3,U+5BCC,U+5C14,U+5C1A,U+5C3D,U+5C40,U+5C45,U+5C5E,U+5DF4,U+5E72,U+5E95,U+5F80,U+5F85,U+5FB7,U+5FD7,U+601D,U+626B,U+627F,U+62C9,U+62CD,U+6309,U+63A7,U+6545,U+65AD,U+65AF,U+65C5,U+666E,U+667A,U+670B,U+671B,U+674E,U+677F,U+6781,U+6790,U+6797,U+6821,U+6838-6839,U+697C,U+6B27,U+6B62,U+6BB5,U+6C7D,U+6C99,U+6D4B,U+6D4E,U+6D6A,U+6E29,U+6E2F,U+6EE1,U+6F14,U+6F2B,U+72B6,U+72EC,U+7387,U+7533,U+753B,U+76CA,U+76D8,U+7701,U+773C,U+77ED,U+77F3,U+7814,U+793C,U+79BB,U+79C1,U+79D8,U+79EF,U+79FB,U+7A76,U+7B11,U+7B54,U+7B56,U+7B97,U+7BC7,U+7C73,U+7D20,U+7EAA,U+7EC8,U+7EDD,U+7EED,U+7EFC,U+7FA4,U+804C,U+8058,U+80CC,U+8111,U+817E,U+826F,U+8303,U+843D,U+89C9,U+89D2,U+8BA2,U+8BBF,U+8BC9,U+8BCD,U+8BE6,U+8C22,U+8C61,U+8D22,U+8D26-8D27,U+8D8A,U+8F6F,U+8F7B,U+8F83,U+8F91,U+8FB9,U+8FD4,U+8FDC,U+9002,U+94B1,U+9519,U+95ED,U+961F,U+9632-9633,U+963F,U+968F-9690,U+96BE,U+9876,U+9884,U+98DE,U+9988,U+9999,U+9EC4,U+FF1B;
}

@font-face {
  font-family: Noto Serif SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-serif-sc-116-400.woff2') format('woff2');
  unicode-range: U+2B,U+40,U+3000,U+300A-300B,U+4E16,U+4E66,U+4E70,U+4E91-4E92,U+4E94,U+4E9B,U+4EC0,U+4ECA,U+4F01,U+4F17-4F18,U+4F46,U+4F4E,U+4F9B,U+4FEE,U+503C,U+5065,U+50CF,U+513F,U+5148,U+518D,U+51C6,U+51E0,U+5217,U+529E-529F,U+5341,U+534F,U+5361,U+5386,U+53C2,U+53C8,U+53CC,U+53D7-53D8,U+53EA,U+5404,U+5411,U+5417,U+5427,U+5468,U+559C,U+5668,U+56E0,U+56E2,U+56ED,U+5740,U+57FA,U+58EB,U+5904,U+592A,U+59CB,U+5A31,U+5B58,U+5B9D,U+5BC6,U+5C71,U+5DDE,U+5DF1,U+5E08,U+5E26,U+5E2E,U+5E93,U+5E97,U+5EB7,U+5F15,U+5F20,U+5F3A,U+5F62,U+5F69,U+5F88,U+5F8B,U+5FC5,U+600E,U+620F,U+6218,U+623F,U+627E,U+628A,U+62A4,U+62DB,U+62E9,U+6307,U+6362,U+636E,U+64AD,U+6539,U+653F,U+6548,U+6574,U+6613,U+6625,U+663E,U+666F,U+672A,U+6750,U+6784,U+6A21,U+6B3E,U+6B65,U+6BCF,U+6C11,U+6C5F,U+6DF1,U+706B,U+7167,U+724C,U+738B,U+73A9,U+73AF,U+7403,U+7537,U+754C,U+7559,U+767D,U+7740,U+786E,U+795E,U+798F,U+79F0,U+7AEF,U+7B7E,U+7BB1,U+7EA2,U+7EA6,U+7EC4,U+7EC6,U+7ECD,U+7EDC,U+7EF4,U+8003,U+80B2,U+81F3-81F4,U+822A,U+827A,U+82F1,U+83B7,U+8425,U+89C2,U+89C8,U+8BA9,U+8BB8,U+8BC6,U+8BD5,U+8BE2,U+8BE5,U+8BED,U+8C03,U+8D23,U+8D2D,U+8D34,U+8D70,U+8DB3,U+8FBE,U+8FCE,U+8FD1,U+8FDE,U+9001,U+901F-9020,U+90A3,U+914D,U+91C7,U+94FE,U+9500,U+952E,U+9605,U+9645,U+9662,U+9664,U+9700,U+9752,U+975E,U+97F3,U+9879,U+9886,U+98DF,U+9A6C,U+9A8C,U+9ED1,U+9F99;
}

@font-face {
  font-family: Noto Serif SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-serif-sc-117-400.woff2') format('woff2');
  unicode-range: U+4E,U+201C-201D,U+3010-3011,U+4E07,U+4E1C,U+4E24,U+4E3E,U+4E48,U+4E50,U+4E5F,U+4E8B-4E8C,U+4EA4,U+4EAB-4EAC,U+4ECB,U+4ECE,U+4ED6,U+4EE3,U+4EF6-4EF7,U+4EFB,U+4F20,U+4F55,U+4F7F,U+4FDD,U+505A,U+5143,U+5149,U+514D,U+5171,U+5177,U+518C,U+51FB,U+521B,U+5229,U+522B,U+52A9,U+5305,U+5317,U+534E,U+5355,U+5357,U+535A,U+5373,U+539F,U+53BB,U+53CA,U+53CD,U+53D6,U+53E3,U+53F0,U+5458,U+5546,U+56DB,U+573A,U+578B,U+57CE,U+58F0,U+590D,U+5934,U+5973,U+5B57,U+5B8C,U+5B98,U+5BB9,U+5BFC,U+5C06,U+5C11,U+5C31,U+5C55,U+5DF2,U+5E03,U+5E38,U+5E76,U+5E94,U+5EFA,U+5F71,U+5F97,U+5FEB,U+6001,U+603B,U+60F3,U+611F,U+6216,U+624D,U+6253,U+6295,U+6301,U+6392,U+641C,U+652F,U+653E,U+6559,U+6599,U+661F,U+671F,U+672F,U+6761,U+67E5,U+6807,U+6837,U+683C,U+6848,U+6B22,U+6B64,U+6BD4,U+6C14,U+6C34,U+6C42,U+6CA1,U+6D41,U+6D77,U+6D88,U+6E05,U+6E38,U+6E90,U+7136,U+7231,U+7531,U+767E,U+76EE,U+76F4,U+771F,U+7801,U+793A,U+79CD,U+7A0B,U+7A7A,U+7ACB,U+7AE0,U+7B2C,U+7B80,U+7BA1,U+7CBE,U+7D22,U+7EA7,U+7ED3,U+7ED9,U+7EDF,U+7F16,U+7F6E,U+8001,U+800C,U+8272,U+8282,U+82B1,U+8350,U+88AB,U+88C5,U+897F,U+89C1,U+89C4,U+89E3,U+8A00,U+8BA1,U+8BA4,U+8BAE-8BB0,U+8BBE,U+8BC1,U+8BC4,U+8BFB,U+8D28,U+8D39,U+8D77,U+8D85,U+8DEF,U+8EAB,U+8F66,U+8F6C,U+8F7D,U+8FD0,U+9009,U+90AE,U+90FD,U+91CC-91CD,U+91CF,U+95FB,U+9650,U+96C6,U+9891,U+98CE,U+FF1F;
}

@font-face {
  font-family: Noto Serif SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-serif-sc-118-400.woff2') format('woff2');
  unicode-range: U+D,U+3E,U+5F,U+7C,U+A0,U+A9,U+4E09-4E0B,U+4E0D-4E0E,U+4E13,U+4E1A,U+4E2A,U+4E3A-4E3B,U+4E4B,U+4E86,U+4E8E,U+4EA7,U+4EBA,U+4EE4-4EE5,U+4EEC,U+4F1A,U+4F4D,U+4F53,U+4F5C,U+4F60,U+4FE1,U+5165,U+5168,U+516C,U+5173,U+5176,U+5185,U+51FA,U+5206,U+5230,U+5236,U+524D,U+529B,U+52A0-52A1,U+52A8,U+5316,U+533A,U+53CB,U+53D1,U+53EF,U+53F7-53F8,U+5408,U+540C-540E,U+544A,U+548C,U+54C1,U+56DE,U+56FD-56FE,U+5728,U+5730,U+5907,U+5916,U+591A,U+5927,U+5929,U+597D,U+5982,U+5B50,U+5B66,U+5B89,U+5B9A,U+5B9E,U+5BA2,U+5BB6,U+5BF9,U+5C0F,U+5DE5,U+5E02,U+5E73-5E74,U+5E7F,U+5EA6,U+5F00,U+5F0F,U+5F53,U+5F55,U+5FAE,U+5FC3,U+6027,U+606F,U+60A8,U+60C5,U+610F,U+6210-6211,U+6237,U+6240,U+624B,U+6280,U+62A5,U+63A5,U+63A8,U+63D0,U+6536,U+6570,U+6587,U+65B9,U+65E0,U+65F6,U+660E,U+662D,U+662F,U+66F4,U+6700,U+670D,U+672C,U+673A,U+6743,U+6765,U+679C,U+682A,U+6B21,U+6B63,U+6CBB,U+6CD5,U+6CE8,U+6D3B,U+70ED,U+7247-7248,U+7269,U+7279,U+73B0,U+7406,U+751F,U+7528,U+7535,U+767B,U+76F8,U+770B,U+77E5,U+793E,U+79D1,U+7AD9,U+7B49,U+7C7B,U+7CFB,U+7EBF,U+7ECF,U+7F8E,U+8005,U+8054,U+80FD,U+81EA,U+85CF,U+884C,U+8868,U+8981,U+89C6,U+8BBA,U+8BDD,U+8BF4,U+8BF7,U+8D44,U+8FC7,U+8FD8-8FD9,U+8FDB,U+901A,U+9053,U+90E8,U+91D1,U+957F,U+95E8,U+95EE,U+95F4,U+9762,U+9875,U+9898,U+9996,U+9AD8,U+FF01,U+FF08-FF09;
}

@font-face {
  font-family: Noto Serif SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-serif-sc-119-400.woff2') format('woff2');
  unicode-range: U+20-22,U+27-2A,U+2C-3B,U+3F,U+41-4D,U+4F-5D,U+61-7B,U+7D,U+AB,U+AE,U+B2,U+B7,U+BB,U+DF-E5,U+E7-EA,U+EC-ED,U+F1-F4,U+F6,U+F9-FA,U+FC,U+101,U+103,U+113,U+12B,U+148,U+14D,U+16B,U+1CE,U+1D0,U+300-301,U+1EBF,U+1EC7,U+2013-2014,U+2022,U+2027,U+2039-203A,U+2122,U+3001-3002,U+3042,U+3044,U+3046,U+3048,U+304A-3055,U+3057,U+3059-305B,U+305D,U+305F-3061,U+3063-306B,U+306D-3073,U+3075-3076,U+3078-3079,U+307B,U+307E-307F,U+3081-308D,U+308F,U+3092-3093,U+30A1-30A4,U+30A6-30BB,U+30BD,U+30BF-30C1,U+30C3-30C4,U+30C6-30CB,U+30CD-30D7,U+30D9-30E1,U+30E3-30E7,U+30E9-30ED,U+30EF,U+30F3,U+30FB-30FC,U+3127,U+4E00,U+4E2D,U+65B0,U+65E5,U+6708-6709,U+70B9,U+7684,U+7F51,U+FF0C,U+FF0E,U+FF1A;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-113-400.woff2') format('woff2');
  unicode-range: U+26,U+3C,U+D7,U+4E4E,U+4E61,U+4E71,U+4EBF,U+4F26,U+5012,U+51AC,U+51B0,U+51B2,U+51B7,U+5218,U+521A,U+5220,U+5237,U+523B,U+526F,U+5385,U+53BF,U+53E5,U+53EB,U+53F3,U+53F6,U+5409,U+5438,U+54C8,U+54E5,U+552F,U+5584,U+5706,U+5723,U+5750,U+575A,U+5987-5988,U+59B9,U+59D0,U+59D4,U+5B88,U+5B9C,U+5BDF,U+5BFB,U+5C01,U+5C04,U+5C3E,U+5C4B,U+5C4F,U+5C9B,U+5CF0,U+5DDD,U+5DE6,U+5DE8,U+5E01,U+5E78,U+5E7B,U+5E9C,U+5EAD,U+5EF6,U+5F39,U+5FD8,U+6000,U+6025,U+604B,U+6076,U+613F,U+6258,U+6263,U+6267,U+6298,U+62A2,U+62E5,U+62EC,U+6311,U+6377,U+6388-6389,U+63A2,U+63D2,U+641E,U+642D,U+654F,U+6551,U+6597,U+65CF,U+65D7,U+65E7,U+6682,U+66F2,U+671D,U+672B,U+6740,U+6751,U+6768,U+6811,U+6863,U+6982,U+6BD2,U+6CF0,U+6D0B,U+6D17,U+6D59,U+6DD8,U+6DFB,U+6E7E,U+6F6E,U+6FB3,U+706F,U+719F,U+72AF,U+72D0,U+72D7,U+732B,U+732E,U+7389,U+73E0,U+7530,U+7687,U+76D6,U+76DB,U+7840,U+786C,U+79CB,U+79D2,U+7A0E,U+7A33,U+7A3F,U+7A97,U+7ADE-7ADF,U+7B26,U+7E41,U+7EC3,U+7F3A,U+8089,U+80DC,U+811A,U+8131,U+8138,U+821E,U+8349,U+83DC,U+8457,U+867D,U+86CB,U+8A89,U+8BA8,U+8BAD,U+8BEF,U+8BFE,U+8C6A,U+8D1D,U+8D4F,U+8D62,U+8DD1,U+8DF3,U+8F6E,U+8FF9,U+900F,U+9014,U+9057,U+9192,U+91CE,U+9488,U+94A2,U+9547,U+955C,U+95F2,U+9644,U+964D,U+96C4-96C5,U+96E8,U+96F6-96F7,U+9732,U+9759,U+9760,U+987A,U+989C,U+9910,U+996D-996E,U+9B54,U+9E21,U+9EBB,U+9F50;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-115-400.woff2') format('woff2');
  unicode-range: U+25,U+4E14,U+4E1D,U+4E3D,U+4E49,U+4E60,U+4E9A,U+4EB2,U+4EC5,U+4EFD,U+4F3C,U+4F4F,U+4F8B,U+4FBF,U+5019,U+5145,U+514B,U+516B,U+516D,U+5174,U+5178,U+517B,U+5199,U+519B,U+51B3,U+51B5,U+5207,U+5212,U+5219,U+521D,U+52BF,U+533B,U+5343,U+5347,U+534A,U+536B,U+5370,U+53E4,U+53F2,U+5403,U+542C,U+547D,U+54A8,U+54CD,U+54EA,U+552E,U+56F4,U+5747,U+575B,U+5883,U+589E,U+5931,U+5947,U+5956-5957,U+5A92,U+5B83,U+5BA4,U+5BB3,U+5BCC,U+5C14,U+5C1A,U+5C3D,U+5C40,U+5C45,U+5C5E,U+5DF4,U+5E72,U+5E95,U+5F80,U+5F85,U+5FB7,U+5FD7,U+601D,U+626B,U+627F,U+62C9,U+62CD,U+6309,U+63A7,U+6545,U+65AD,U+65AF,U+65C5,U+666E,U+667A,U+670B,U+671B,U+674E,U+677F,U+6781,U+6790,U+6797,U+6821,U+6838-6839,U+697C,U+6B27,U+6B62,U+6BB5,U+6C7D,U+6C99,U+6D4B,U+6D4E,U+6D6A,U+6E29,U+6E2F,U+6EE1,U+6F14,U+6F2B,U+72B6,U+72EC,U+7387,U+7533,U+753B,U+76CA,U+76D8,U+7701,U+773C,U+77ED,U+77F3,U+7814,U+793C,U+79BB,U+79C1,U+79D8,U+79EF,U+79FB,U+7A76,U+7B11,U+7B54,U+7B56,U+7B97,U+7BC7,U+7C73,U+7D20,U+7EAA,U+7EC8,U+7EDD,U+7EED,U+7EFC,U+7FA4,U+804C,U+8058,U+80CC,U+8111,U+817E,U+826F,U+8303,U+843D,U+89C9,U+89D2,U+8BA2,U+8BBF,U+8BC9,U+8BCD,U+8BE6,U+8C22,U+8C61,U+8D22,U+8D26-8D27,U+8D8A,U+8F6F,U+8F7B,U+8F83,U+8F91,U+8FB9,U+8FD4,U+8FDC,U+9002,U+94B1,U+9519,U+95ED,U+961F,U+9632-9633,U+963F,U+968F-9690,U+96BE,U+9876,U+9884,U+98DE,U+9988,U+9999,U+9EC4,U+FF1B;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-116-400.woff2') format('woff2');
  unicode-range: U+2B,U+40,U+3000,U+300A-300B,U+4E16,U+4E66,U+4E70,U+4E91-4E92,U+4E94,U+4E9B,U+4EC0,U+4ECA,U+4F01,U+4F17-4F18,U+4F46,U+4F4E,U+4F9B,U+4FEE,U+503C,U+5065,U+50CF,U+513F,U+5148,U+518D,U+51C6,U+51E0,U+5217,U+529E-529F,U+5341,U+534F,U+5361,U+5386,U+53C2,U+53C8,U+53CC,U+53D7-53D8,U+53EA,U+5404,U+5411,U+5417,U+5427,U+5468,U+559C,U+5668,U+56E0,U+56E2,U+56ED,U+5740,U+57FA,U+58EB,U+5904,U+592A,U+59CB,U+5A31,U+5B58,U+5B9D,U+5BC6,U+5C71,U+5DDE,U+5DF1,U+5E08,U+5E26,U+5E2E,U+5E93,U+5E97,U+5EB7,U+5F15,U+5F20,U+5F3A,U+5F62,U+5F69,U+5F88,U+5F8B,U+5FC5,U+600E,U+620F,U+6218,U+623F,U+627E,U+628A,U+62A4,U+62DB,U+62E9,U+6307,U+6362,U+636E,U+64AD,U+6539,U+653F,U+6548,U+6574,U+6613,U+6625,U+663E,U+666F,U+672A,U+6750,U+6784,U+6A21,U+6B3E,U+6B65,U+6BCF,U+6C11,U+6C5F,U+6DF1,U+706B,U+7167,U+724C,U+738B,U+73A9,U+73AF,U+7403,U+7537,U+754C,U+7559,U+767D,U+7740,U+786E,U+795E,U+798F,U+79F0,U+7AEF,U+7B7E,U+7BB1,U+7EA2,U+7EA6,U+7EC4,U+7EC6,U+7ECD,U+7EDC,U+7EF4,U+8003,U+80B2,U+81F3-81F4,U+822A,U+827A,U+82F1,U+83B7,U+8425,U+89C2,U+89C8,U+8BA9,U+8BB8,U+8BC6,U+8BD5,U+8BE2,U+8BE5,U+8BED,U+8C03,U+8D23,U+8D2D,U+8D34,U+8D70,U+8DB3,U+8FBE,U+8FCE,U+8FD1,U+8FDE,U+9001,U+901F-9020,U+90A3,U+914D,U+91C7,U+94FE,U+9500,U+952E,U+9605,U+9645,U+9662,U+9664,U+9700,U+9752,U+975E,U+97F3,U+9879,U+9886,U+98DF,U+9A6C,U+9A8C,U+9ED1,U+9F99;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-117-400.woff2') format('woff2');
  unicode-range: U+4E,U+201C-201D,U+3010-3011,U+4E07,U+4E1C,U+4E24,U+4E3E,U+4E48,U+4E50,U+4E5F,U+4E8B-4E8C,U+4EA4,U+4EAB-4EAC,U+4ECB,U+4ECE,U+4ED6,U+4EE3,U+4EF6-4EF7,U+4EFB,U+4F20,U+4F55,U+4F7F,U+4FDD,U+505A,U+5143,U+5149,U+514D,U+5171,U+5177,U+518C,U+51FB,U+521B,U+5229,U+522B,U+52A9,U+5305,U+5317,U+534E,U+5355,U+5357,U+535A,U+5373,U+539F,U+53BB,U+53CA,U+53CD,U+53D6,U+53E3,U+53F0,U+5458,U+5546,U+56DB,U+573A,U+578B,U+57CE,U+58F0,U+590D,U+5934,U+5973,U+5B57,U+5B8C,U+5B98,U+5BB9,U+5BFC,U+5C06,U+5C11,U+5C31,U+5C55,U+5DF2,U+5E03,U+5E38,U+5E76,U+5E94,U+5EFA,U+5F71,U+5F97,U+5FEB,U+6001,U+603B,U+60F3,U+611F,U+6216,U+624D,U+6253,U+6295,U+6301,U+6392,U+641C,U+652F,U+653E,U+6559,U+6599,U+661F,U+671F,U+672F,U+6761,U+67E5,U+6807,U+6837,U+683C,U+6848,U+6B22,U+6B64,U+6BD4,U+6C14,U+6C34,U+6C42,U+6CA1,U+6D41,U+6D77,U+6D88,U+6E05,U+6E38,U+6E90,U+7136,U+7231,U+7531,U+767E,U+76EE,U+76F4,U+771F,U+7801,U+793A,U+79CD,U+7A0B,U+7A7A,U+7ACB,U+7AE0,U+7B2C,U+7B80,U+7BA1,U+7CBE,U+7D22,U+7EA7,U+7ED3,U+7ED9,U+7EDF,U+7F16,U+7F6E,U+8001,U+800C,U+8272,U+8282,U+82B1,U+8350,U+88AB,U+88C5,U+897F,U+89C1,U+89C4,U+89E3,U+8A00,U+8BA1,U+8BA4,U+8BAE-8BB0,U+8BBE,U+8BC1,U+8BC4,U+8BFB,U+8D28,U+8D39,U+8D77,U+8D85,U+8DEF,U+8EAB,U+8F66,U+8F6C,U+8F7D,U+8FD0,U+9009,U+90AE,U+90FD,U+91CC-91CD,U+91CF,U+95FB,U+9650,U+96C6,U+9891,U+98CE,U+FF1F;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-118-400.woff2') format('woff2');
  unicode-range: U+D,U+3E,U+5F,U+7C,U+A0,U+A9,U+4E09-4E0B,U+4E0D-4E0E,U+4E13,U+4E1A,U+4E2A,U+4E3A-4E3B,U+4E4B,U+4E86,U+4E8E,U+4EA7,U+4EBA,U+4EE4-4EE5,U+4EEC,U+4F1A,U+4F4D,U+4F53,U+4F5C,U+4F60,U+4FE1,U+5165,U+5168,U+516C,U+5173,U+5176,U+5185,U+51FA,U+5206,U+5230,U+5236,U+524D,U+529B,U+52A0-52A1,U+52A8,U+5316,U+533A,U+53CB,U+53D1,U+53EF,U+53F7-53F8,U+5408,U+540C-540E,U+544A,U+548C,U+54C1,U+56DE,U+56FD-56FE,U+5728,U+5730,U+5907,U+5916,U+591A,U+5927,U+5929,U+597D,U+5982,U+5B50,U+5B66,U+5B89,U+5B9A,U+5B9E,U+5BA2,U+5BB6,U+5BF9,U+5C0F,U+5DE5,U+5E02,U+5E73-5E74,U+5E7F,U+5EA6,U+5F00,U+5F0F,U+5F53,U+5F55,U+5FAE,U+5FC3,U+6027,U+606F,U+60A8,U+60C5,U+610F,U+6210-6211,U+6237,U+6240,U+624B,U+6280,U+62A5,U+63A5,U+63A8,U+63D0,U+6536,U+6570,U+6587,U+65B9,U+65E0,U+65F6,U+660E,U+662D,U+662F,U+66F4,U+6700,U+670D,U+672C,U+673A,U+6743,U+6765,U+679C,U+682A,U+6B21,U+6B63,U+6CBB,U+6CD5,U+6CE8,U+6D3B,U+70ED,U+7247-7248,U+7269,U+7279,U+73B0,U+7406,U+751F,U+7528,U+7535,U+767B,U+76F8,U+770B,U+77E5,U+793E,U+79D1,U+7AD9,U+7B49,U+7C7B,U+7CFB,U+7EBF,U+7ECF,U+7F8E,U+8005,U+8054,U+80FD,U+81EA,U+85CF,U+884C,U+8868,U+8981,U+89C6,U+8BBA,U+8BDD,U+8BF4,U+8BF7,U+8D44,U+8FC7,U+8FD8-8FD9,U+8FDB,U+901A,U+9053,U+90E8,U+91D1,U+957F,U+95E8,U+95EE,U+95F4,U+9762,U+9875,U+9898,U+9996,U+9AD8,U+FF01,U+FF08-FF09;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-119-400.woff2') format('woff2');
  unicode-range: U+20-22,U+27-2A,U+2C-3B,U+3F,U+41-4D,U+4F-5D,U+61-7B,U+7D,U+AB,U+AE,U+B2,U+B7,U+BB,U+DF-E5,U+E7-EA,U+EC-ED,U+F1-F4,U+F6,U+F9-FA,U+FC,U+101,U+103,U+113,U+12B,U+148,U+14D,U+16B,U+1CE,U+1D0,U+300-301,U+1EBF,U+1EC7,U+2013-2014,U+2022,U+2027,U+2039-203A,U+2122,U+3001-3002,U+3042,U+3044,U+3046,U+3048,U+304A-3055,U+3057,U+3059-305B,U+305D,U+305F-3061,U+3063-306B,U+306D-3073,U+3075-3076,U+3078-3079,U+307B,U+307E-307F,U+3081-308D,U+308F,U+3092-3093,U+30A1-30A4,U+30A6-30BB,U+30BD,U+30BF-30C1,U+30C3-30C4,U+30C6-30CB,U+30CD-30D7,U+30D9-30E1,U+30E3-30E7,U+30E9-30ED,U+30EF,U+30F3,U+30FB-30FC,U+3127,U+4E00,U+4E2D,U+65B0,U+65E5,U+6708-6709,U+70B9,U+7684,U+7F51,U+FF0C,U+FF0E,U+FF1A;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-116-500.woff2') format('woff2');
  unicode-range: U+2B,U+40,U+3000,U+300A-300B,U+4E16,U+4E66,U+4E70,U+4E91-4E92,U+4E94,U+4E9B,U+4EC0,U+4ECA,U+4F01,U+4F17-4F18,U+4F46,U+4F4E,U+4F9B,U+4FEE,U+503C,U+5065,U+50CF,U+513F,U+5148,U+518D,U+51C6,U+51E0,U+5217,U+529E-529F,U+5341,U+534F,U+5361,U+5386,U+53C2,U+53C8,U+53CC,U+53D7-53D8,U+53EA,U+5404,U+5411,U+5417,U+5427,U+5468,U+559C,U+5668,U+56E0,U+56E2,U+56ED,U+5740,U+57FA,U+58EB,U+5904,U+592A,U+59CB,U+5A31,U+5B58,U+5B9D,U+5BC6,U+5C71,U+5DDE,U+5DF1,U+5E08,U+5E26,U+5E2E,U+5E93,U+5E97,U+5EB7,U+5F15,U+5F20,U+5F3A,U+5F62,U+5F69,U+5F88,U+5F8B,U+5FC5,U+600E,U+620F,U+6218,U+623F,U+627E,U+628A,U+62A4,U+62DB,U+62E9,U+6307,U+6362,U+636E,U+64AD,U+6539,U+653F,U+6548,U+6574,U+6613,U+6625,U+663E,U+666F,U+672A,U+6750,U+6784,U+6A21,U+6B3E,U+6B65,U+6BCF,U+6C11,U+6C5F,U+6DF1,U+706B,U+7167,U+724C,U+738B,U+73A9,U+73AF,U+7403,U+7537,U+754C,U+7559,U+767D,U+7740,U+786E,U+795E,U+798F,U+79F0,U+7AEF,U+7B7E,U+7BB1,U+7EA2,U+7EA6,U+7EC4,U+7EC6,U+7ECD,U+7EDC,U+7EF4,U+8003,U+80B2,U+81F3-81F4,U+822A,U+827A,U+82F1,U+83B7,U+8425,U+89C2,U+89C8,U+8BA9,U+8BB8,U+8BC6,U+8BD5,U+8BE2,U+8BE5,U+8BED,U+8C03,U+8D23,U+8D2D,U+8D34,U+8D70,U+8DB3,U+8FBE,U+8FCE,U+8FD1,U+8FDE,U+9001,U+901F-9020,U+90A3,U+914D,U+91C7,U+94FE,U+9500,U+952E,U+9605,U+9645,U+9662,U+9664,U+9700,U+9752,U+975E,U+97F3,U+9879,U+9886,U+98DF,U+9A6C,U+9A8C,U+9ED1,U+9F99;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-117-500.woff2') format('woff2');
  unicode-range: U+4E,U+201C-201D,U+3010-3011,U+4E07,U+4E1C,U+4E24,U+4E3E,U+4E48,U+4E50,U+4E5F,U+4E8B-4E8C,U+4EA4,U+4EAB-4EAC,U+4ECB,U+4ECE,U+4ED6,U+4EE3,U+4EF6-4EF7,U+4EFB,U+4F20,U+4F55,U+4F7F,U+4FDD,U+505A,U+5143,U+5149,U+514D,U+5171,U+5177,U+518C,U+51FB,U+521B,U+5229,U+522B,U+52A9,U+5305,U+5317,U+534E,U+5355,U+5357,U+535A,U+5373,U+539F,U+53BB,U+53CA,U+53CD,U+53D6,U+53E3,U+53F0,U+5458,U+5546,U+56DB,U+573A,U+578B,U+57CE,U+58F0,U+590D,U+5934,U+5973,U+5B57,U+5B8C,U+5B98,U+5BB9,U+5BFC,U+5C06,U+5C11,U+5C31,U+5C55,U+5DF2,U+5E03,U+5E38,U+5E76,U+5E94,U+5EFA,U+5F71,U+5F97,U+5FEB,U+6001,U+603B,U+60F3,U+611F,U+6216,U+624D,U+6253,U+6295,U+6301,U+6392,U+641C,U+652F,U+653E,U+6559,U+6599,U+661F,U+671F,U+672F,U+6761,U+67E5,U+6807,U+6837,U+683C,U+6848,U+6B22,U+6B64,U+6BD4,U+6C14,U+6C34,U+6C42,U+6CA1,U+6D41,U+6D77,U+6D88,U+6E05,U+6E38,U+6E90,U+7136,U+7231,U+7531,U+767E,U+76EE,U+76F4,U+771F,U+7801,U+793A,U+79CD,U+7A0B,U+7A7A,U+7ACB,U+7AE0,U+7B2C,U+7B80,U+7BA1,U+7CBE,U+7D22,U+7EA7,U+7ED3,U+7ED9,U+7EDF,U+7F16,U+7F6E,U+8001,U+800C,U+8272,U+8282,U+82B1,U+8350,U+88AB,U+88C5,U+897F,U+89C1,U+89C4,U+89E3,U+8A00,U+8BA1,U+8BA4,U+8BAE-8BB0,U+8BBE,U+8BC1,U+8BC4,U+8BFB,U+8D28,U+8D39,U+8D77,U+8D85,U+8DEF,U+8EAB,U+8F66,U+8F6C,U+8F7D,U+8FD0,U+9009,U+90AE,U+90FD,U+91CC-91CD,U+91CF,U+95FB,U+9650,U+96C6,U+9891,U+98CE,U+FF1F;
}

@font-face {
  font-family: Noto Sans SC;
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('./fonts/noto/noto-sans-sc-118-500.woff2') format('woff2');
  unicode-range: U+D,U+3E,U+5F,U+7C,U+A0,U+A9,U+4E09-4E0B,U+4E0D-4E0E,U+4E13,U+4E1A,U+4E2A,U+4E3A-4E3B,U+4E4B,U+4E86,U+4E8E,U+4EA7,U+4EBA,U+4EE4-4EE5,U+4EEC,U+4F1A,U+4F4D,U+4F53,U+4F5C,U+4F60,U+4FE1,U+5165,U+5168,U+516C,U+5173,U+5176,U+5185,U+51FA,U+5206,U+5230,U+5236,U+524D,U+529B,U+52A0-52A1,U+52A8,U+5316,U+533A,U+53CB,U+53D1,U+53EF,U+53F7-53F8,U+5408,U+540C-540E,U+544A,U+548C,U+54C1,U+56DE,U+56FD-56FE,U+5728,U+5730,U+5907,U+5916,U+591A,U+5927,U+5929,U+597D,U+5982,U+5B50,U+5B66,U+5B89,U+5B9A,U+5B9E,U+5BA2,U+5BB6,U+5BF9,U+5C0F,U+5DE5,U+5E02,U+5E73-5E74,U+5E7F,U+5EA6,U+5F00,U+5F0F,U+5F53,U+5F55,U+5FAE,U+5FC3,U+6027,U+606F,U+60A8,U+60C5,U+610F,U+6210-6211,U+6237,U+6240,U+624B,U+6280,U+62A5,U+63A5,U+63A8,U+63D0,U+6536,U+6570,U+6587,U+65B9,U+65E0,U+65F6,U+660E,U+662D,U+662F,U+66F4,U+6700,U+670D,U+672C,U+673A,U+6743,U+6765,U+679C,U+682A,U+6B21,U+6B63,U+6CBB,U+6CD5,U+6CE8,U+6D3B,U+70ED,U+7247-7248,U+7269,U+7279,U+73B0,U+7406,U+751F,U+7528,U+7535,U+767B,U+76F8,U+770B,U+77E5,U+793E,U+79D1,U+7AD9,U+7B49,U+7C7B,U+7CFB,U+7EBF,U+7ECF,U+7F8E,U+8005,U+8054,U+80FD,U+81EA,U+85CF,U+884C,U+8868,U+8981,U+89C6,U+8BBA,U+8BDD,U+8BF4,U+8BF7,U+8D44,U+8FC7,U+8FD8-8FD9,U+8FDB,U+901A,U+9053,U+90E8,U+91D1,U+957F,U+95E8,U+95EE,U+95F4,U+9762,U+9875,U+9898,U+9996,U+9AD8,U+FF01,U+FF08-FF09;
}

:root {
  /* 地球 / 波纹从这两个变量读色，跟 vibeapi 的 --auth-*-rgb 同值 */
  --vibe-ink-rgb: 31, 30, 29;
  --vibe-accent-rgb: 217, 119, 87;

  --vibe-bg: #fdfdfc;
  --vibe-text-0: #141413;
  --vibe-text-2: #5e5d59;
  --vibe-primary: #d97757;
  --vibe-border: rgba(31, 30, 29, 0.15);
  --vibe-fill: rgba(31, 30, 29, 0.05);
  --vibe-field: #fbfaf6;
  --vibe-line: rgba(31, 30, 29, 0.14);
  --vibe-line-soft: rgba(31, 30, 29, 0.08);
  --vibe-card-bg: rgba(255, 255, 255, 0.5);

  --vibe-serif: 'Anthropic Serif Web Text', 'Noto Serif SC', Georgia, 'Times New Roman',
    'Songti SC', serif;
  --vibe-sans: 'Anthropic Sans Web Text', 'Noto Sans SC', system-ui, 'Segoe UI', Roboto, Helvetica,
    Arial, 'Microsoft YaHei', sans-serif;
}

/* ========================= 舞台外壳 ========================= */

.vibe-themed body {
  margin: 0;
  background: var(--vibe-bg);
  color: var(--vibe-text-0);
  font-family: var(--vibe-sans);
}

.vibe-shell {
  position: relative;
  z-index: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background-color: var(--vibe-bg);
  color: var(--vibe-text-0);
  overflow: hidden;
}

.vibe-bg {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}

/* ---- 页头：品牌 + 语言 ---- */

.vibe-header {
  position: relative;
  z-index: 2;
  flex: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px clamp(16px, 4vw, 48px);
}

.vibe-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--vibe-serif);
  font-weight: 500;
  font-size: 22px;
  letter-spacing: -0.01em;
  color: var(--vibe-text-0);
  text-decoration: none;
  transition: opacity 0.2s ease;
}

.vibe-brand:hover {
  opacity: 0.82;
}

.vibe-brand-logo {
  width: 36px;
  height: 36px;
  border-radius: 9999px;
  object-fit: cover;
  flex: none;
}

.vibe-lang {
  position: relative;
}

.vibe-lang-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--vibe-border);
  border-radius: 8px;
  background: transparent;
  padding: 7px 12px;
  font-size: 13px;
  line-height: 1;
  color: var(--vibe-text-2);
  cursor: pointer;
  font-family: inherit;
  transition:
    background-color 0.2s ease,
    color 0.2s ease;
}

.vibe-lang-pill:hover {
  background: var(--vibe-fill);
  color: var(--vibe-text-0);
}

.vibe-lang-pill svg {
  width: 14px;
  height: 14px;
  flex: none;
}

.vibe-lang-menu {
  position: absolute;
  top: calc(100% + 6px);
  inset-inline-end: 0;
  min-width: 140px;
  display: none;
  flex-direction: column;
  padding: 4px;
  border: 1px solid var(--vibe-line-soft);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 12px 32px -12px rgba(31, 30, 29, 0.28);
  z-index: 5;
}

.vibe-lang.is-open .vibe-lang-menu {
  display: flex;
}

.vibe-lang-item {
  border: none;
  background: transparent;
  border-radius: 7px;
  padding: 8px 10px;
  text-align: start;
  font-family: inherit;
  font-size: 13.5px;
  color: var(--vibe-text-0);
  cursor: pointer;
}

.vibe-lang-item:hover {
  background: var(--vibe-fill);
}

.vibe-lang-item.is-active {
  color: var(--vibe-primary);
}

/* ---- 视口：hero + 分栏 ---- */

.vibe-frame-wrap {
  position: relative;
  z-index: 1;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(18px, 3vw, 30px);
  overflow-y: auto;
  padding: 8px clamp(16px, 4vw, 40px) 48px;
}

.vibe-hero {
  text-align: center;
  max-width: 680px;
}

.vibe-hero-title {
  font-family: var(--vibe-serif);
  font-weight: 500;
  font-size: clamp(30px, 4vw, 52px);
  line-height: 1.25;
  letter-spacing: 0.005em;
  margin: 0 0 10px;
  color: var(--vibe-text-0);
}

.vibe-hero-sub {
  font-family: var(--vibe-serif);
  font-style: italic;
  font-size: clamp(15px, 1.5vw, 19px);
  line-height: 1.6;
  color: var(--vibe-text-2);
  margin: 0;
}

.vibe-frame {
  width: min(1120px, 100%);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 440px);
  align-items: center;
  gap: clamp(24px, 4vw, 56px);
  padding: 4px 0;
}

.vibe-globe-col {
  order: -1;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  min-width: 0;
}

.vibe-globe-wrap {
  width: min(100%, 560px);
  aspect-ratio: 1 / 1;
  pointer-events: none;
  transform: rotate(-17deg);
}

.vibe-globe-canvas {
  width: 100%;
  height: 100%;
  display: block;
  pointer-events: none;
}

.vibe-form-col {
  position: relative;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

.vibe-alt {
  margin: 22px 0 0;
  font-size: 14px;
  color: var(--vibe-text-2);
  text-align: center;
}

.vibe-alt a {
  color: var(--vibe-primary);
  text-decoration: none;
  font-weight: 500;
  cursor: pointer;
}

.vibe-alt a:hover {
  text-decoration: underline;
}

/* ========================= Logto 表单改造 ========================= */

/* 让 Logto 自己的全屏定位失效，整块 React 树以普通块级元素落进右栏 */
.vibe-themed #app {
  display: block;
  width: 100%;
}

.vibe-themed #app > div {
  position: static !important;
  inset: auto !important;
  overflow: visible !important;
}

.vibe-themed .logto_page-container {
  display: block !important;
  min-height: 0 !important;
  padding: 0 !important;
}

/* 卡片本体 */
.vibe-themed .logto_main-content {
  position: static !important;
  display: block !important;
  box-sizing: border-box;
  width: 100% !important;
  max-width: 420px !important;
  min-height: 0 !important;
  margin: 0 auto !important;
  padding: 26px !important;
  border: 1px solid var(--vibe-line-soft) !important;
  border-radius: 16px !important;
  background: var(--vibe-card-bg) !important;
  box-shadow: none !important;
}

/* 卡片里的 logo + 「Sign in to your account」标题：品牌信息已经在页头，去掉 */
.vibe-themed .logto_branding-header {
  display: none !important;
}

/* Logto 用来做垂直居中的空占位 div，在我们的版式里没有意义 */
.vibe-themed .vibe-spacer {
  display: none !important;
}

.vibe-themed .vibe-card-body {
  padding: 0 !important;
}

.vibe-themed .vibe-form {
  display: flex !important;
  flex-direction: column !important;
  gap: 17px !important;
  margin: 0 !important;
}

/* ---- 输入框：浮动标签 → 标签在上、输入框在下 ---- */

.vibe-themed .vibe-field {
  margin: 0 !important;
}

.vibe-themed .vibe-field-box {
  position: static !important;
  display: flex !important;
  flex-direction: column-reverse; /* DOM 顺序是「输入框 → 标签层」，这里翻过来 */
  gap: 8px;
}

.vibe-themed .vibe-field-overlay {
  position: static !important;
  inset: auto !important;
  pointer-events: auto !important;
}

/* Material 缺口边框由 fieldset 画，这里换成输入框自己的实线边框 */
.vibe-themed .vibe-field-overlay fieldset {
  display: none !important;
}

.vibe-themed .vibe-label {
  position: static !important;
  transform: none !important;
  top: auto !important;
  inset-inline-start: auto !important;
  padding: 0 !important;
  font: 500 13px/1.5 var(--vibe-sans) !important;
  color: var(--vibe-text-0) !important;
  pointer-events: auto !important;
  transition: none !important;
}

.vibe-themed .vibe-field-inner {
  height: auto !important;
  border: 1px solid var(--vibe-line);
  border-radius: 8px;
  background: var(--vibe-field) !important;
  transition:
    border-color 0.15s ease,
    box-shadow 0.15s ease;
}

.vibe-themed .vibe-field-inner:focus-within {
  border-color: var(--vibe-text-0);
  box-shadow: 0 0 0 3px rgba(31, 30, 29, 0.06);
}

.vibe-themed .vibe-field-inner input {
  padding: 13px 15px !important;
  font: 400 15px/1.5 var(--vibe-sans) !important;
  color: var(--vibe-text-0) !important;
  background: transparent !important;
  border: none !important;
  caret-color: var(--vibe-text-0) !important;
}

.vibe-themed .vibe-field-inner input::placeholder {
  opacity: 100% !important;
  color: var(--vibe-text-2) !important;
}

/* 区号选择器只在手机号登录时才有宽度，这里 SSO 只用用户名，直接收掉 */
.vibe-themed .vibe-field-inner [data-testid='prefix'] {
  display: none !important;
}

/* 清空 / 显示密码按钮：保留功能，只调色 */
.vibe-themed .vibe-field-inner button {
  color: var(--vibe-text-2) !important;
}

/* 字段下方的错误文案 */
.vibe-themed .vibe-field > :not(.vibe-field-box) {
  font-family: var(--vibe-sans) !important;
  font-size: 12.5px !important;
  margin-top: 6px !important;
}

/* ---- 主按钮 ---- */

.vibe-themed .vibe-submit {
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  padding: 14px !important;
  border: none !important;
  border-radius: 8px !important;
  background: var(--vibe-text-0) !important;
  color: var(--vibe-bg) !important;
  font: 500 15px/1.5 var(--vibe-sans) !important;
  cursor: pointer;
  transition:
    opacity 0.15s ease,
    transform 0.05s ease;
}

.vibe-themed .vibe-submit:hover:not(:disabled) {
  opacity: 0.9;
}

.vibe-themed .vibe-submit:active:not(:disabled) {
  transform: translateY(1px);
}

.vibe-themed .vibe-submit:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

/* ---- Powered by Logto ----
 * 正常情况下这段用不上：签名由 sign_in_experiences.hide_logto_branding=true 关掉，
 * 组件压根不渲染（详见 README「去掉 Powered by Logto」）。这里留着是兜底——万一那个
 * 库字段被改回 false，签名至少落在注册行下方当页脚，而不是突兀地长在卡片里。
 */

.vibe-themed .logto_signature {
  position: absolute !important;
  inset: auto 0 0 0 !important;
  transform: translateY(calc(100% + 12px)) !important;
  margin: 0 !important;
  padding: 0 !important;
  text-align: center;
}

.vibe-themed .logto_signature > a {
  width: fit-content !important;
  margin: 0 auto !important;
}

/* ========================= 响应式 ========================= */

@media (max-width: 900px) {
  .vibe-frame {
    grid-template-columns: 1fr;
  }

  .vibe-globe-col {
    display: none;
  }
}

@media (max-width: 720px) {
  .vibe-header {
    padding: 16px;
  }
}

/* Logto 在真机上给 body 打 .mobile，卡片这时铺满一屏宽 */
.vibe-themed body.mobile .logto_main-content {
  max-width: 100% !important;
  background: var(--vibe-card-bg) !important;
}

@media (prefers-reduced-motion: reduce) {
  .vibe-brand,
  .vibe-submit,
  .vibe-field-inner {
    transition: none;
  }
}
