/* pp.gr — 主站风格化 */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#f8fafc;
  --panel:#ffffff;
  --panel-soft:#f1f5f9;
  --text:#0f172a;
  --text-soft:#1e293b;
  --muted:#64748b;
  --line:#e2e8f0;
  --primary:#2563eb;
  --primary-dark:#1d4ed8;
  --primary-light:#3b82f6;
  --primary-glow:rgba(37,99,235,0.12);
  --success:#16a34a;
  --warning:#f59e0b;
  --danger:#dc2626;
  --shadow-sm:0 2px 8px rgba(15,23,42,0.06);
  --shadow:0 8px 32px rgba(15,23,42,0.08);
  --radius:20px;
  --radius-sm:12px;
  --transition:0.2s cubic-bezier(0.4,0,0.2,1);
}
html{font-size:15px}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  background:var(--bg);
  color:var(--text);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--primary);text-decoration:none;transition:color var(--transition)}
a:hover{color:var(--primary-dark)}

/* ── Layout ── */
.container{max-width:720px;margin:0 auto;padding:0 24px}
.site-wrap{min-height:100vh;display:flex;flex-direction:column}

/* ── Header ── */
.header{
  background:var(--panel);
  border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:100;
  backdrop-filter:blur(12px);
  background:rgba(255,255,255,0.92);
}
.header-inner{display:flex;align-items:center;height:60px;gap:24px}
.logo{
  font-size:17px;font-weight:700;letter-spacing:-0.3px;
  background:linear-gradient(135deg,var(--primary),#7c3aed);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
}
.logo:hover{-webkit-text-fill-color:var(--primary);background:var(--primary)}
.nav{display:flex;align-items:center;gap:18px;margin-left:auto}
.nav a{
  font-size:13px;font-weight:500;color:var(--text-soft);padding:4px 0;
  border-bottom:2px solid transparent;transition:all var(--transition);
}
.nav a:hover{color:var(--primary);border-bottom-color:var(--primary)}
.nav a:active{opacity:0.7}
.nav-user{color:var(--muted);font-size:13px}
.main{flex:1;padding:48px 0 60px}

/* ── Hero ── */
.hero{text-align:center;margin-bottom:40px}
.hero h1{
  font-size:30px;font-weight:800;letter-spacing:-0.5px;
  background:linear-gradient(135deg,var(--text),var(--primary));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  background-clip:text;
  margin-bottom:8px;
}
.hero p{font-size:15px;color:var(--muted)}

/* ── Card ── */
.card{
  background:var(--panel);
  border-radius:var(--radius-sm);
  border:1px solid var(--line);
  padding:28px;
  box-shadow:var(--shadow-sm);
  transition:box-shadow var(--transition),transform var(--transition);
}
.card:hover{box-shadow:var(--shadow)}

/* ── URL Form ── */
.url-form{display:flex;gap:10px;margin-bottom:14px}
.url-input{
  flex:1;padding:12px 16px;border:2px solid var(--line);
  border-radius:10px;font-size:15px;outline:none;
  transition:border-color var(--transition),box-shadow var(--transition);
  background:var(--panel);
  color:var(--text);
}
.url-input:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-glow)}
.url-input::placeholder{color:#94a3b8}
.url-btn{
  padding:12px 28px;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  color:#fff;border:none;border-radius:10px;
  font-size:15px;font-weight:600;cursor:pointer;white-space:nowrap;
  transition:transform var(--transition),box-shadow var(--transition);
  box-shadow:0 4px 14px var(--primary-glow);
}
.url-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px var(--primary-glow)}
.url-btn:active{transform:translateY(0)}
.url-btn:disabled{opacity:0.5;cursor:not-allowed;transform:none;box-shadow:none}

/* ── Options row (domain selector + custom code) ── */
.url-options{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.url-options select,.url-options input[type="text"]{
  padding:8px 12px;border:2px solid var(--line);border-radius:10px;
  font-size:13px;outline:none;background:var(--panel);color:var(--text);
  transition:border-color var(--transition),box-shadow var(--transition);
}
.url-options select:focus,.url-options input[type="text"]:focus{
  border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-glow);
}
.url-options select{min-width:130px}

/* ── Result ── */
.result-box{display:none;margin-top:16px;padding:18px;background:var(--panel-soft);border:1px solid #d1fae5;border-radius:var(--radius-sm)}
.result-box.show{display:block}
.result-url{font-size:16px;font-weight:700;color:var(--success);word-break:break-all;display:block;margin-bottom:4px}
.result-hint{font-size:13px;color:var(--muted)}
.result-actions{margin-top:12px;display:flex;gap:8px}
.result-actions button,.result-actions a{
  padding:8px 16px;border-radius:10px;font-size:13px;cursor:pointer;
  border:1px solid var(--line);background:var(--panel);color:var(--text-soft);
  text-decoration:none;transition:all var(--transition);
}
.result-actions button:hover,.result-actions a:hover{background:var(--panel-soft);border-color:#94a3b8}
.btn-copy{background:var(--success)!important;color:#fff!important;border-color:var(--success)!important}
.btn-copy:hover{opacity:0.9!important;background:var(--success)!important}

/* ── Error ── */
.error-box{display:none;margin-top:12px;padding:12px 16px;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;color:var(--danger);font-size:14px}
.error-box.show{display:block}

/* ── Notice ── */
.guest-notice{margin-top:16px;padding:12px 16px;background:#fefce8;border:1px solid #fde68a;border-radius:10px;font-size:13px;color:#854d0e}
.guest-notice a{font-weight:600;color:var(--danger)}

/* ── Features ── */
.features{margin-top:48px}
.features h2{font-size:17px;font-weight:700;margin-bottom:20px;text-align:center;color:var(--text)}
.feature-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.feature-item{
  background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius-sm);padding:24px 16px;text-align:center;
  box-shadow:var(--shadow-sm);transition:all var(--transition);
}
.feature-item:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.feature-icon{font-size:32px;margin-bottom:10px;display:block}
.feature-item h3{font-size:14px;font-weight:600;margin-bottom:6px}
.feature-item p{font-size:13px;color:var(--muted);line-height:1.5}
.feature-btn{
  display:inline-block;margin-top:10px;padding:6px 18px;
  background:var(--primary);color:#fff;border-radius:8px;
  font-size:12px;font-weight:600;text-decoration:none;
  transition:transform var(--transition),box-shadow var(--transition);
}
.feature-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(37,99,235,0.3);color:#fff}

/* ── Footer ── */
.footer{text-align:center;padding:24px 0;font-size:13px;color:var(--muted);border-top:1px solid var(--line);margin-top:auto}
.footer span{opacity:0.8}

/* ── Form ── */
.form-group{margin-bottom:18px}
.form-group label{display:block;font-size:14px;font-weight:600;margin-bottom:6px;color:var(--text)}
.form-input{width:100%;padding:10px 14px;border:2px solid var(--line);border-radius:10px;font-size:15px;outline:none;background:var(--panel);color:var(--text);transition:border-color var(--transition),box-shadow var(--transition)}
.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-glow)}
.form-btn{
  width:100%;padding:12px;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  color:#fff;border:none;border-radius:10px;font-size:15px;font-weight:600;
  cursor:pointer;transition:transform var(--transition),box-shadow var(--transition);
  box-shadow:0 4px 14px var(--primary-glow);
}
.form-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px var(--primary-glow)}
.form-btn:active{transform:translateY(0)}
.form-link{text-align:center;margin-top:14px;font-size:14px;color:var(--muted)}
.form-error{background:#fef2f2;border:1px solid #fecaca;padding:12px 16px;border-radius:10px;color:var(--danger);font-size:14px;margin-bottom:18px;display:none}
.form-error.show{display:block}

/* ── Dashboard / User Center ── */
.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}
.dashboard-header h2{font-size:20px;font-weight:700}
.create-link-btn{
  padding:10px 22px;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:600;
  cursor:pointer;text-decoration:none;
  transition:transform var(--transition),box-shadow var(--transition);
  box-shadow:0 4px 14px var(--primary-glow);
}
.create-link-btn:hover{transform:translateY(-2px);color:#fff}
.link-table{width:100%;border-collapse:collapse;font-size:14px}
.link-table th{text-align:left;padding:12px 14px;border-bottom:2px solid var(--line);font-weight:600;color:var(--muted);font-size:13px}
.link-table td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
.link-table tr:hover td{background:var(--panel-soft)}
.link-target{color:var(--muted);font-size:13px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.link-actions{display:flex;gap:6px}
.link-actions a,.link-actions button{
  padding:5px 12px;border-radius:8px;font-size:12px;cursor:pointer;
  border:1px solid var(--line);background:var(--panel);color:var(--text-soft);
  text-decoration:none;transition:all var(--transition);
}
.link-actions a:hover,.link-actions button:hover{background:var(--panel-soft);border-color:#94a3b8}

/* ── Badges ── */
.badge{display:inline-block;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600}
.badge-active{background:#dbeafe;color:var(--primary-dark)}
.badge-expired{background:#fef2f2;color:var(--danger)}

/* ── Pagination ── */
.pagination{display:flex;justify-content:center;gap:8px;margin-top:24px}
.pagination a,.pagination span{
  padding:8px 16px;border-radius:10px;font-size:14px;font-weight:600;
  border:1px solid var(--line);text-decoration:none;color:var(--text-soft);
  transition:all var(--transition);
}
.pagination a:hover{background:var(--panel-soft);border-color:#94a3b8}
.pagination .current{background:var(--primary);color:#fff;border-color:var(--primary)}

/* ── Stats ── */
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}
.stat-card{background:var(--panel-soft);border-radius:var(--radius-sm);padding:16px;text-align:center}
.stat-card .num{font-size:24px;font-weight:700;color:var(--primary)}
.stat-card .label{font-size:12px;color:var(--muted);margin-top:4px}

/* ── Responsive ── */
@media(max-width:600px){
  .url-form{flex-direction:column}
  .feature-grid{grid-template-columns:1fr}
  .stats-grid{grid-template-columns:1fr}
  .link-target{max-width:120px}
  .hero h1{font-size:24px}
}

/* ── Animations ── */
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.fade-in{animation:fadeIn 0.35s ease}
