.line-clamp-1 { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
.line-clamp-2 { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.input { width:100%; border:1px solid rgb(203 213 225); border-radius:1rem; padding:.75rem 1rem; background:white; transition:border-color .18s ease, box-shadow .18s ease, background-color .18s ease; }
.input:focus { outline:2px solid rgb(14 165 233 / .25); border-color:rgb(14 165 233); }
.label { display:block; margin-bottom:.4rem; font-size:.875rem; font-weight:700; color:rgb(51 65 85); }
.btn { display:inline-flex; align-items:center; justify-content:center; border-radius:999px; padding:.75rem 1.1rem; font-weight:800; transition:transform .18s ease, box-shadow .18s ease, background-color .18s ease, color .18s ease, border-color .18s ease; }
.btn:hover { transform: translateY(-1px); }
.btn-primary { background:linear-gradient(135deg, rgb(2 132 199), rgb(14 165 233)); color:white; box-shadow:0 12px 24px rgb(2 132 199 / .22); }
.btn-primary:hover { background:rgb(3 105 161); }
.btn-dark { background:rgb(15 23 42); color:white; }
.btn-light { background:white; color:rgb(15 23 42); border:1px solid rgb(203 213 225); }
.card { border:1px solid rgb(226 232 240); border-radius:1.5rem; background:white; box-shadow:0 1px 2px rgb(15 23 42 / .05); }
.file-drop { min-height: 12rem; }
.file-drop input:focus-visible + span { outline: 2px solid rgb(14 165 233 / .35); }

[x-cloak] { display: none !important; }

/* Phase 31 mobile/PWA polish */
.safe-bottom { padding-bottom: env(safe-area-inset-bottom); }
.mobile-sticky-action { position: sticky; bottom: 0; z-index: 30; padding: .75rem; padding-bottom: calc(.75rem + env(safe-area-inset-bottom)); background: rgb(255 255 255 / .92); backdrop-filter: blur(12px); border-top: 1px solid rgb(226 232 240); }
.touch-target { min-height: 44px; min-width: 44px; }
@media (max-width: 640px) {
  .btn { min-height: 44px; padding: .75rem 1rem; }
  .card { border-radius: 1.25rem; }
  input, select, textarea { font-size: 16px; }
  table.mobile-stack, table.mobile-stack thead, table.mobile-stack tbody, table.mobile-stack th, table.mobile-stack td, table.mobile-stack tr { display:block; }
  table.mobile-stack thead { display:none; }
  table.mobile-stack tr { border-bottom:1px solid rgb(226 232 240); padding:.75rem; }
  table.mobile-stack td { padding:.35rem 0; }
}


/* Phase A public UI polish */
.public-shell { background: radial-gradient(circle at top left, rgb(224 242 254 / .65), transparent 34rem), linear-gradient(180deg, #ffffff 0%, rgb(248 250 252) 100%); }
.public-section { padding-block: 4rem; }
.eyebrow { display:inline-flex; align-items:center; gap:.45rem; border-radius:999px; background:rgb(224 242 254); color:rgb(3 105 161); padding:.35rem .8rem; font-size:.75rem; font-weight:900; letter-spacing:.08em; text-transform:uppercase; }
.premium-card { position:relative; overflow:hidden; border:1px solid rgb(226 232 240); border-radius:1.75rem; background:linear-gradient(180deg,#fff, rgb(248 250 252)); box-shadow:0 18px 45px rgb(15 23 42 / .07); transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease; }
.premium-card:hover { transform:translateY(-3px); border-color:rgb(125 211 252); box-shadow:0 24px 60px rgb(15 23 42 / .12); }
.soft-badge { display:inline-flex; align-items:center; gap:.4rem; border-radius:999px; background:rgb(248 250 252 / .92); color:rgb(15 23 42); padding:.35rem .7rem; font-size:.75rem; font-weight:900; box-shadow:0 10px 24px rgb(15 23 42 / .12); }
.trust-pill { display:flex; align-items:flex-start; gap:.75rem; border-radius:1.25rem; border:1px solid rgb(226 232 240); background:rgb(255 255 255 / .9); padding:1rem; box-shadow:0 10px 30px rgb(15 23 42 / .06); }
.card-arrow { display:inline-flex; align-items:center; justify-content:center; height:2.25rem; width:2.25rem; border-radius:999px; background:rgb(224 242 254); color:rgb(3 105 161); font-weight:900; transition:transform .2s ease, background-color .2s ease; }
.premium-card:hover .card-arrow { transform:translateX(2px); background:rgb(14 165 233); color:white; }
.empty-state { border:1px dashed rgb(203 213 225); border-radius:1.75rem; background:linear-gradient(180deg, #fff, rgb(248 250 252)); padding:2rem; color:rgb(71 85 105); }
.form-panel { border:1px solid rgb(226 232 240); border-radius:2rem; background:linear-gradient(180deg,#fff, rgb(248 250 252)); box-shadow:0 24px 70px rgb(15 23 42 / .09); }
.form-section-title { display:flex; align-items:center; gap:.65rem; font-size:.85rem; font-weight:900; color:rgb(15 23 42); text-transform:uppercase; letter-spacing:.06em; }
