/* =====================================================================
   Snowfall Git — 自定义登录页皮肤
   作用域：仅 /user/login（通过 :has(.page-content.signin) 限定）
   说明：纯新增、可整文件删除还原；不依赖外部资源（符合 OFFLINE_MODE）
   ===================================================================== */

/* ---------- 页面背景（CSS 即时生效，不等 JS） ---------- */
body:has(.page-content.signin){
  background:radial-gradient(135% 95% at 50% -12%, #122430 0%, #0b131b 40%, #070c12 72%, #05080c 100%) fixed !important;
}
/* 真实内容压在注入的背景之上 */
body:has(.page-content.signin) .full.height{position:relative; z-index:1; min-height:100vh; height:auto;}

/* 登录页隐藏顶部导航与页脚（去掉 “由 Gitea 强力驱动” 等） */
body:has(.page-content.signin) #navbar{display:none !important;}
body:has(.page-content.signin) .page-footer{display:none !important;}

/* ---------- 注入的数字风景（极光帘幕 + 疏星 + 颗粒） ---------- */
.gt-bg{position:fixed; inset:0; z-index:0; overflow:hidden; pointer-events:none;}
.gt-bg .stars{position:absolute; inset:0; opacity:.55;
  background-image:
    radial-gradient(1.4px 1.4px at 14% 16%,rgba(255,255,255,.9),transparent),
    radial-gradient(1px 1px at 23% 28%,rgba(255,255,255,.5),transparent),
    radial-gradient(1px 1px at 38% 12%,rgba(255,255,255,.6),transparent),
    radial-gradient(1.6px 1.6px at 61% 20%,rgba(255,255,255,.85),transparent),
    radial-gradient(1px 1px at 72% 9%,rgba(255,255,255,.5),transparent),
    radial-gradient(1.2px 1.2px at 84% 24%,rgba(255,255,255,.7),transparent),
    radial-gradient(1px 1px at 91% 14%,rgba(255,255,255,.55),transparent),
    radial-gradient(1px 1px at 47% 31%,rgba(255,255,255,.45),transparent),
    radial-gradient(1.3px 1.3px at 6% 33%,rgba(255,255,255,.6),transparent);}
.gt-bg .aurora{position:absolute; left:0; right:0; top:-12%; height:80%;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 26%,#000 68%,transparent);
          mask-image:linear-gradient(180deg,transparent,#000 26%,#000 68%,transparent);}
.gt-bg .curtain{position:absolute; top:0; bottom:0; width:42%; filter:blur(54px); mix-blend-mode:screen;}
.gt-bg .c1{left:4%;  background:linear-gradient(100deg,transparent 12%,rgba(94,234,212,.50),transparent 88%); transform:skewX(-12deg); animation:gtw1 24s ease-in-out infinite alternate;}
.gt-bg .c2{left:34%; background:linear-gradient(82deg, transparent 14%,rgba(74,205,205,.42),transparent 86%); transform:skewX(-7deg);  animation:gtw2 30s ease-in-out infinite alternate;}
.gt-bg .c3{left:60%; background:linear-gradient(96deg, transparent 16%,rgba(126,240,196,.40),transparent 84%); transform:skewX(-15deg); animation:gtw3 27s ease-in-out infinite alternate;}
@keyframes gtw1{from{transform:skewX(-12deg) translateX(-26px) scaleY(1)} to{transform:skewX(-6deg) translateX(22px) scaleY(1.08)}}
@keyframes gtw2{from{transform:skewX(-4deg) translateX(20px) scaleY(1.06)} to{transform:skewX(-11deg) translateX(-18px) scaleY(1)}}
@keyframes gtw3{from{transform:skewX(-15deg) translateX(-14px) scaleY(1)} to{transform:skewX(-9deg) translateX(24px) scaleY(1.1)}}
.gt-bg .horizon{position:absolute; left:0; right:0; bottom:0; height:34%; filter:blur(36px);
  background:radial-gradient(ellipse 85% 100% at 50% 110%, rgba(94,234,212,.12), transparent 72%);}
.gt-bg .grain{position:absolute; inset:0; opacity:.05; mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%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");}
.gt-bg .vignette{position:absolute; inset:0;
  background:radial-gradient(125% 125% at 50% 42%, transparent 52%, rgba(0,0,0,.5));}
@media (prefers-reduced-motion:reduce){ .gt-bg .curtain{animation:none !important;} }

/* ---------- 居中 + 玻璃卡片 ---------- */
body:has(.page-content.signin) .page-content.signin{
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  padding:clamp(24px,5vw,64px); margin:0;}
body:has(.page-content.signin) .page-content.signin > .page.grid{
  margin:0 !important; padding:0 !important; width:100%; display:block;}
body:has(.page-content.signin) .page-content.signin .column{
  max-width:400px !important; width:100% !important; margin:0 auto !important; gap:0 !important;
  padding:40px 36px 30px !important; border-radius:14px; position:relative; z-index:2;
  background:rgba(10,15,22,.64);
  -webkit-backdrop-filter:blur(16px) saturate(115%); backdrop-filter:blur(16px) saturate(115%);
  border:1px solid rgba(216,226,232,.12); box-shadow:0 30px 90px rgba(0,0,0,.55);}

/* 卡片内的 fomantic 容器/分段去壳 */
body:has(.page-content.signin) .page-content.signin .ui.container.fluid{margin:0 !important; width:auto !important;}
body:has(.page-content.signin) .page-content.signin .ui.attached.segment{
  background:transparent !important; border:0 !important; box-shadow:none !important; padding:0 !important; margin:0 !important;}
body:has(.page-content.signin) .page-content.signin .ui.top.attached.header{display:none !important;}
body:has(.page-content.signin) .page-content.signin .column > .ui.container.fluid + .ui.container.fluid{margin-top:14px !important;}

/* ---------- 名言（JS 注入） ---------- */
.gt-quote{margin:0; text-align:center;}
.gt-quote p{margin:0; font-weight:400; line-height:1.42; letter-spacing:.005em; color:#E4ECF1;
  font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Songti SC","Times New Roman",serif;}
.gt-quote cite{display:block; margin-top:14px; font-style:normal; font-size:12.5px; color:#9DA9B5; letter-spacing:.04em;}
.gt-divider{height:1px; margin:24px 0 6px; background:linear-gradient(90deg,transparent,rgba(216,226,232,.12),transparent);}

/* ---------- 表单字段 ---------- */
body:has(.page-content.signin) .ui.form .field > label,
body:has(.page-content.signin) .ui.form label{color:#BFCBD6 !important; font-weight:500 !important;}
body:has(.page-content.signin) .ui.form input[type=text],
body:has(.page-content.signin) .ui.form input[type=password],
body:has(.page-content.signin) .ui.form input[type=email]{
  background:rgba(255,255,255,.05) !important; border:1px solid rgba(216,226,232,.12) !important;
  color:#fff !important; border-radius:9px !important; height:44px !important; padding:0 14px !important;
  transition:border-color .18s, box-shadow .18s, background .18s;}
body:has(.page-content.signin) .ui.form input::placeholder{color:#5b6b78 !important;}
body:has(.page-content.signin) .ui.form input[type=text]:focus,
body:has(.page-content.signin) .ui.form input[type=password]:focus,
body:has(.page-content.signin) .ui.form input[type=email]:focus{
  border-color:#8FDACB !important; background:rgba(255,255,255,.08) !important;
  box-shadow:0 0 0 3px rgba(94,234,212,.16) !important;}

/* 链接 */
body:has(.page-content.signin) .page-content.signin a{color:#8FDACB;}
body:has(.page-content.signin) .page-content.signin a:hover{color:#A3E4D7;}

/* 主按钮（登录） */
body:has(.page-content.signin) .ui.primary.button{
  background:#8FDACB !important; color:#07110F !important; border:0 !important; border-radius:9px !important;
  font-weight:600 !important; min-height:46px !important; box-shadow:0 8px 22px rgba(94,234,212,.18) !important;
  transition:background .18s, transform .18s;}
body:has(.page-content.signin) .ui.primary.button:hover{background:#A3E4D7 !important; transform:translateY(-1px);}

/* 记住此设备 */
body:has(.page-content.signin) .ui.checkbox label{color:#9DA9B5 !important;}

/* “或” 分隔线 */
body:has(.page-content.signin) .divider.divider-text{color:#8693a0 !important;}
body:has(.page-content.signin) .divider.divider-text::before,
body:has(.page-content.signin) .divider.divider-text::after{border-color:rgba(216,226,232,.12) !important;}

/* OpenID 按钮 */
body:has(.page-content.signin) .openid.ui.button{
  background:rgba(255,255,255,.05) !important; color:#DCE6EC !important;
  border:1px solid rgba(216,226,232,.12) !important; border-radius:9px !important; box-shadow:none !important;}
body:has(.page-content.signin) .openid.ui.button:hover{background:rgba(255,255,255,.09) !important;}
body:has(.page-content.signin) .openid.ui.button svg{fill:#DCE6EC;}

/* 通行密钥 */
body:has(.page-content.signin) .signin-passkey{color:#8FDACB; cursor:pointer;}
