.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.page-heading h1{font-size:clamp(25px,3vw,34px);margin:0 0 5px;letter-spacing:-.035em}.page-heading p{margin:0;color:var(--ink-soft);font-size:14px;line-height:1.5}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:10px;font-weight:950;color:var(--purple-deep);margin-bottom:6px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.btn{appearance:none;border:0;border-radius:14px;min-height:44px;padding:0 15px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;transition:transform .14s var(--ease),box-shadow .14s var(--ease),background .14s var(--ease)}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.pending-action{opacity:.62;cursor:progress;box-shadow:none;transform:none}.btn-primary{background:linear-gradient(145deg,var(--purple),var(--purple-deep));color:var(--surface);box-shadow:0 7px 18px var(--purple-button-shadow)}.btn-soft{background:var(--purple-soft);color:var(--purple-deep)}.btn-plain{background:var(--surface);border:1px solid var(--line);color:var(--ink)}.btn-danger{background:var(--red-soft);color:var(--red)}.btn-small{min-height:36px;border-radius:12px;padding:0 11px;font-size:12px}.btn-mini{min-height:30px;border-radius:10px;padding:0 8px;font-size:9px}
.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:900;background:var(--surface-strong);color:var(--ink-soft)}.pill-accent{background:var(--purple-soft);color:var(--purple-deep)}
.progress-meter{display:block;width:100%;height:9px;border:0;border-radius:999px;overflow:hidden;background:var(--neutral-soft)}.progress-meter::-webkit-progress-bar{background:var(--neutral-soft);border-radius:999px}.progress-meter::-webkit-progress-value{background:linear-gradient(90deg,var(--purple),var(--pink));border-radius:999px;transition:width .4s var(--ease)}.progress-meter::-moz-progress-bar{background:linear-gradient(90deg,var(--purple),var(--pink));border-radius:999px}
.notice{padding:12px 14px;border-radius:15px;background:var(--blue-soft);color:var(--blue-ink);font-size:12px;font-weight:700;line-height:1.45;border:1px solid var(--blue-line)}.notice.warning{background:var(--amber-soft);color:var(--amber-ink);border-color:var(--amber-line)}.notice.error{background:var(--red-soft);color:var(--red-ink);border-color:var(--red-line)}
.icon-button{width:40px;height:40px;display:grid;place-items:center;border-radius:13px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:18px}
.empty-state{padding:36px 18px;text-align:center;color:var(--ink-soft)}.empty-state .empty-icon{font-size:40px;margin-bottom:8px}.empty-state strong{display:block;color:var(--ink);font-size:17px;margin-bottom:5px}
.skeleton{background:linear-gradient(90deg,var(--skeleton-a) 25%,var(--skeleton-b) 45%,var(--skeleton-a) 65%);background-size:300% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
.toast-stack{position:fixed;z-index:100;right:18px;bottom:18px;display:grid;gap:8px;pointer-events:none}.toast{pointer-events:auto;background:var(--toast-bg);color:var(--surface);border-radius:14px;padding:11px 14px;box-shadow:var(--shadow-lg);font-size:12px;font-weight:800;animation:toastIn .22s var(--ease)}@keyframes toastIn{from{transform:translateY(10px);opacity:0}}
@media(max-width:840px){.page-heading{margin-bottom:15px}.page-heading h1{font-size:27px}.toast-stack{left:12px;right:12px;bottom:82px}.toast{text-align:center}}
.modal-shell{position:fixed;inset:0;z-index:180;display:grid;place-items:center;padding:22px;background:var(--overlay-backdrop);backdrop-filter:blur(8px)}
.modal-card{width:min(460px,100%);padding:26px;text-align:center;box-shadow:var(--shadow-lg)}.modal-shell.modal-wide .modal-card{width:min(760px,100%)}
.modal-card h2{margin:0 0 10px;font-size:25px;letter-spacing:-.025em}.modal-body{color:var(--ink-soft);line-height:1.5}.modal-actions{display:flex;gap:10px;justify-content:center;margin-top:20px}.modal-actions .btn{min-width:130px}
@media(max-width:600px){.modal-shell{padding:14px}.modal-card{padding:22px 18px}.modal-actions{display:grid;grid-template-columns:1fr 1fr}.modal-actions .btn{min-width:0}}
