/* ==========================================================================
 * p1-core.css — 律证通 P1 共享前端内核（浅色玻璃组件库）
 * 版本戳: p1-core-v1.0.0  (2026-10-08)
 * 设计: 仅复用品牌 indigo (#4F46E5/#4338CA/#EEF2FF)；禁紫渐变 / 禁 emoji / 禁外网图
 * 命名: 全部 .p1- 前缀，避免与宿主(index v3911)样式串扰
 * ========================================================================== */

.p1-root, .p1-root * { box-sizing: border-box; }

.p1-scope {
  --p1-primary:#4F46E5; --p1-primary-hover:#4338CA; --p1-primary-bg:#EEF2FF;
  --p1-success:#16A34A; --p1-warn:#D97706; --p1-danger:#DC2626; --p1-info:#2563EB;
  --p1-text:#1F2328; --p1-text2:#57606A; --p1-text3:#9DA5B0;
  --p1-border:#E5E7EB; --p1-bg:#FFFFFF; --p1-bg2:#F7F8FA;
  --p1-radius-lg:14px; --p1-radius-md:10px; --p1-radius-sm:8px;
  --p1-shadow-sm:0 1px 2px rgba(16,24,40,.06);
  --p1-shadow-md:0 8px 24px rgba(16,24,40,.12);
  --p1-glass-bg:rgba(255,255,255,.72);
  --p1-font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-family: var(--p1-font); color: var(--p1-text);
}

/* ---------- 通用玻璃面板 ---------- */
.p1-glass {
  background: var(--p1-glass-bg);
  -webkit-backdrop-filter: blur(16px) saturate(1.4);
  backdrop-filter: blur(16px) saturate(1.4);
  border: 1px solid rgba(255,255,255,.6);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.8), var(--p1-shadow-sm);
  border-radius: var(--p1-radius-lg);
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .p1-glass{ background: rgba(255,255,255,.94); }
}

/* ---------- 按钮 ---------- */
.p1-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  min-height:40px; padding:0 16px; border-radius:var(--p1-radius-md);
  border:1px solid transparent; font-size:14px; line-height:1; cursor:pointer;
  font-family:inherit; transition:background .15s ease,border-color .15s ease,color .15s ease;
  -webkit-tap-highlight-color:transparent; user-select:none;
}
.p1-btn--primary{ background:var(--p1-primary); color:#fff; }
.p1-btn--primary:hover{ background:var(--p1-primary-hover); }
.p1-btn--ghost{ background:transparent; color:var(--p1-primary); border-color:var(--p1-border); }
.p1-btn--ghost:hover{ background:var(--p1-primary-bg); }
.p1-btn--sm{ min-height:34px; padding:0 12px; font-size:13px; }
.p1-btn[disabled]{ opacity:.5; cursor:not-allowed; }
.p1-btn .p1-ic{ width:16px; height:16px; flex:0 0 auto; }

/* ---------- 徽标 badge / 标签 chip ---------- */
.p1-badge{
  display:inline-flex; align-items:center; gap:4px;
  font-size:12px; line-height:1; padding:4px 9px; border-radius:999px;
  border:1px solid transparent; white-space:nowrap; font-weight:500;
}
.p1-badge--success{ color:#15803D; background:#ECFDF5; border-color:#A7F3D0; }
.p1-badge--warn{ color:#B45309; background:#FFFBEB; border-color:#FDE68A; }
.p1-badge--danger{ color:#B42318; background:#FEF3F2; border-color:#FECDCA; }
.p1-badge--info{ color:#1D4ED8; background:#EFF6FF; border-color:#BFDBFE; }
.p1-badge--neutral{ color:#475467; background:#F2F4F7; border-color:#EAECF0; }
.p1-chip{
  display:inline-flex; align-items:center; gap:5px; font-size:12px; line-height:1;
  padding:7px 12px; border-radius:999px; cursor:pointer; white-space:nowrap;
  border:1px solid var(--p1-border); background:#fff; color:var(--p1-text2);
  min-height:34px; transition:all .15s ease;
}
.p1-chip--on{ background:var(--p1-primary); color:#fff; border-color:var(--p1-primary); }
.p1-chip--on:hover{ background:var(--p1-primary-hover); }

/* ---------- Toast ---------- */
.p1-toast-wrap{ position:fixed; left:0; right:0; bottom:calc(20px + env(safe-area-inset-bottom));
  display:flex; flex-direction:column; align-items:center; gap:8px; z-index:20000; pointer-events:none; padding:0 16px; }
.p1-toast{
  pointer-events:auto; max-width:100%;
  background:rgba(31,35,40,.92); color:#fff; font-size:13px; line-height:1.5;
  padding:10px 16px; border-radius:999px; box-shadow:var(--p1-shadow-md);
  animation:p1-toast-in .2s ease;
}
@keyframes p1-toast-in{ from{ opacity:0; transform:translateY(8px);} to{ opacity:1; transform:none;} }

/* ---------- Modal（玻璃居中弹层） ---------- */
.p1-modal-mask{ position:fixed; inset:0; z-index:19000; display:flex; align-items:center; justify-content:center;
  padding:18px; background:rgba(15,23,42,.32); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
.p1-modal{ width:100%; max-width:460px; max-height:86vh; overflow:auto; padding:20px; }
.p1-modal__title{ font-size:16px; font-weight:700; margin:0 0 10px; padding-right:28px; }
.p1-modal__body{ font-size:14px; line-height:1.7; color:var(--p1-text2); }
.p1-modal__actions{ display:flex; gap:10px; justify-content:flex-end; margin-top:18px; flex-wrap:wrap; }
.p1-modal__close{ position:absolute; top:12px; right:12px; width:34px; height:34px; border-radius:50%;
  border:none; background:transparent; cursor:pointer; color:var(--p1-text3); display:grid; place-items:center; }
.p1-modal__close:hover{ background:var(--p1-bg2); }

/* ---------- Bottom Sheet ---------- */
.p1-sheet-mask{ position:fixed; inset:0; z-index:19001; background:rgba(15,23,42,.32);
  -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.p1-sheet{ position:fixed; left:0; right:0; bottom:0; z-index:19002;
  border-radius:18px 18px 0 0; padding:14px 16px calc(18px + env(safe-area-inset-bottom));
  max-height:80vh; overflow:auto; width:100%; }
.p1-sheet__grab{ width:40px; height:4px; border-radius:2px; background:var(--p1-border); margin:0 auto 12px; }
.p1-sheet__title{ font-size:15px; font-weight:700; margin:0 0 12px; text-align:center; }
.p1-sheet__item{ display:flex; align-items:center; gap:10px; width:100%; padding:13px 12px;
  border:none; background:transparent; font-size:14px; text-align:left; cursor:pointer; border-radius:var(--p1-radius-sm); font-family:inherit; min-height:44px; }
.p1-sheet__item:hover{ background:var(--p1-primary-bg); }

/* ---------- 空态 / 加载 / 错误态 ---------- */
.p1-state{ display:flex; flex-direction:column; align-items:center; text-align:center; padding:28px 16px; gap:10px; }
.p1-state__icon{ width:44px; height:44px; color:var(--p1-text3); }
.p1-state__text{ font-size:13px; color:var(--p1-text2); line-height:1.6; max-width:320px; word-break:break-word; }
.p1-spinner{ width:26px; height:26px; border:3px solid var(--p1-primary-bg); border-top-color:var(--p1-primary);
  border-radius:50%; animation:p1-spin .7s linear infinite; }
@keyframes p1-spin{ to{ transform:rotate(360deg);} }
.p1-error .p1-state__icon{ color:var(--p1-danger); }

/* ---------- 自定义 Select ---------- */
.p1-select{ position:relative; min-width:0; }
.p1-select__control{ display:flex; align-items:center; justify-content:space-between; gap:8px;
  width:100%; min-height:42px; padding:0 12px; border:1px solid var(--p1-border); border-radius:var(--p1-radius-md);
  background:#fff; cursor:pointer; font-size:14px; color:var(--p1-text); font-family:inherit; }
.p1-select__control .p1-ph{ color:var(--p1-text3); }
.p1-select__menu{ position:absolute; top:calc(100% + 4px); left:0; right:0; z-index:18000;
  max-height:240px; overflow:auto; padding:6px; border-radius:var(--p1-radius-md); box-shadow:var(--p1-shadow-md); }
.p1-select__opt{ padding:10px 12px; border-radius:6px; font-size:14px; cursor:pointer; min-height:38px; display:flex; align-items:center; }
.p1-select__opt:hover{ background:var(--p1-primary-bg); }
.p1-select__opt--sel{ color:var(--p1-primary); font-weight:600; }

/* ---------- 自定义 Date 区间 ---------- */
.p1-drange{ display:flex; align-items:center; gap:8px; width:100%; }
.p1-drange__field{ flex:1 1 0; min-width:0; }
.p1-cal{ position:absolute; z-index:18001; width:280px; max-width:86vw; padding:12px; }
.p1-cal__head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.p1-cal__title{ font-size:14px; font-weight:600; }
.p1-cal__nav{ width:32px; height:32px; border-radius:8px; border:none; background:var(--p1-bg2); cursor:pointer; font-size:15px; color:var(--p1-text); }
.p1-cal__grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.p1-cal__dow{ font-size:11px; color:var(--p1-text3); text-align:center; padding:4px 0; }
.p1-cal__day{ aspect-ratio:1; display:grid; place-items:center; font-size:13px; border-radius:8px; cursor:pointer; border:none; background:transparent; color:var(--p1-text); font-family:inherit; }
.p1-cal__day:hover{ background:var(--p1-primary-bg); }
.p1-cal__day--in{ background:var(--p1-primary-bg); color:var(--p1-primary); }
.p1-cal__day--edge{ background:var(--p1-primary); color:#fff; }
.p1-cal__day--out{ color:#cbd5e1; cursor:default; }

/* ---------- seed: 条文操作区注入 ---------- */
.p1-article-tools{ display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:10px 0 4px; }
.p1-fav-btn{ display:inline-flex; align-items:center; gap:6px; min-height:38px; padding:0 14px;
  border-radius:999px; border:1px solid var(--p1-border); background:#fff; cursor:pointer;
  font-size:13px; color:var(--p1-text2); font-family:inherit; transition:all .15s ease; }
.p1-fav-btn:hover{ border-color:var(--p1-primary); color:var(--p1-primary); }
.p1-fav-btn--on{ background:var(--p1-primary); border-color:var(--p1-primary); color:#fff; }
.p1-fav-btn .p1-ic{ width:16px; height:16px; }
.p1-badge-slot{ display:inline-flex; }

/* ---------- 响应式 / 动效降级 ---------- */
@media (prefers-reduced-motion: reduce){
  .p1-toast, .p1-spinner{ animation:none !important; }
  *{ transition:none !important; }
}
@media (max-width:380px){
  .p1-modal{ padding:16px; }
  .p1-btn{ padding:0 12px; }
}
