.btn{border-radius:var(--radius-md);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:600;transition:opacity .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:not(:disabled):hover{opacity:.92}.btn-primary{background:var(--color-accent);color:var(--color-on-accent)}.btn-secondary{background:var(--color-surface-muted);color:var(--color-text)}.btn-danger{background:var(--color-danger);color:#fff}.btn-ghost{color:var(--color-text-secondary);background:0 0;padding:8px 10px}.btn-sm{padding:6px 12px;font-size:13px}.btn-block{width:100%}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:20px}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--color-text-secondary);font-size:13px;font-weight:600}.text-input,.field textarea,.field select{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);box-sizing:border-box;width:100%;padding:10px 12px;font-size:15px}.text-input:focus,.field textarea:focus,.field select:focus{outline:2px solid var(--color-accent);outline-offset:1px}.field-hint{color:var(--color-text-muted);font-size:12px}.field-error{color:var(--color-danger);font-size:12px}.badge{border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-join-me{background:var(--color-join-me-soft);color:var(--color-accent-strong)}.badge-see-me{background:var(--color-see-me-soft);color:var(--color-see-me)}.badge-show-me{background:var(--color-show-me-soft);color:var(--color-show-me)}.stack{flex-direction:column;display:flex}.row{flex-direction:row;align-items:center;display:flex}.spread{justify-content:space-between}.wrap{flex-wrap:wrap}.muted{color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.text-sm{font-size:13px}.text-xs{font-size:12px}.avatar{object-fit:cover;color:var(--color-on-accent);background:var(--color-accent);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.alert-banner{border-radius:var(--radius-md);padding:10px 14px;font-size:13px}.alert-banner-error{background:color-mix(in srgb, var(--color-danger) 14%, transparent);color:var(--color-danger)}.alert-banner-info{background:var(--color-accent-soft);color:var(--color-accent-strong)}.datetime-field{border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;padding:10px 12px;display:block;position:relative}.datetime-field-display{color:var(--color-text);white-space:nowrap;font-size:15px}.datetime-field-input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.switch{cursor:pointer;background:var(--color-field);border:0;border-radius:999px;flex-shrink:0;width:51px;height:31px;padding:2px;display:inline-flex}.switch.on{background:var(--color-toggle-on);justify-content:flex-end}.switch-thumb{background:#fff;border-radius:50%;width:27px;height:27px;box-shadow:0 1px 3px #00000040}.seg{border-radius:var(--radius-md);background:var(--color-surface-muted);flex-wrap:wrap;gap:4px;padding:4px;display:inline-flex}.seg-item{border-radius:calc(var(--radius-md) - 4px);height:36px;font:inherit;cursor:pointer;color:var(--color-text-secondary);background:0 0;border:0;padding:0 14px;font-size:14px;font-weight:600}.seg-item.on{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-card)}.stat-tile{border-radius:var(--radius-md);background:var(--color-surface-muted);flex-direction:column;gap:2px;padding:12px 14px;display:flex}.stat-tile strong{font-family:Bricolage Grotesque,system-ui,sans-serif;font-size:24px;font-weight:700}.stat-tile span{color:var(--color-text-secondary);font-size:12px}.skeleton{background:var(--color-surface-muted);border-radius:var(--radius-sm);animation:1.4s ease-in-out infinite hyw-pulse}@keyframes hyw-pulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes hyw-spin{to{transform:rotate(360deg)}}.avatar-upload-hint{opacity:0}label:hover .avatar-upload-hint,label:focus-within .avatar-upload-hint{opacity:1}
