.pcx-btn{
  min-height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--pc-space-2);
  padding:8px 14px;
  cursor:pointer;
  user-select:none;
  white-space:nowrap;
  text-decoration:none;
  font-family:var(--pc-font-bit);
  font-size:var(--pc-bit-md);
  line-height:1;
  background:var(--pc-control);
  color:var(--pc-text);
  border:var(--pc-border) solid;
  border-color:var(--pc-highlight) var(--pc-shadow) var(--pc-shadow) var(--pc-highlight);
}
.pcx-btn:hover{background:var(--pc-surface-hover)}
.pcx-btn:active,.pcx-btn.is-pressed{transform:translate3d(1px,1px,0);border-color:var(--pc-shadow) var(--pc-highlight) var(--pc-highlight) var(--pc-shadow)}
.pcx-btn--primary{background:var(--pc-action);color:var(--pc-ink);border-color:var(--pc-action-hi) var(--pc-action-lo) var(--pc-action-lo) var(--pc-action-hi)}
.pcx-btn--primary:hover{background:#FF9C4A}
.pcx-btn--primary:active{background:var(--pc-action-deep)}
.pcx-btn--notice{background:var(--pc-notice);color:var(--pc-ink);border-color:var(--pc-notice-hi) var(--pc-notice-lo) var(--pc-notice-lo) var(--pc-notice-hi)}
.pcx-btn--notice:hover{background:#FFD15E}
.pcx-btn--notice:active{background:#D8A21F}
.pcx-btn--success{background:var(--pc-success);color:var(--pc-ink);border-color:#B7F09F var(--pc-success-deep) var(--pc-success-deep) #B7F09F}
.pcx-btn--success:hover{background:#98E579}
.pcx-btn--success:active{background:#64B947}
.pcx-btn--danger{background:var(--pc-danger);color:var(--pc-dialog-body);border-color:var(--pc-danger-dark) #70220F #70220F var(--pc-danger-dark)}
.pcx-btn--danger:hover{background:var(--pc-danger-hover)}
.pcx-btn--danger:active{background:var(--pc-danger-active)}
[data-theme="dark"] .pcx-btn--danger{color:var(--pc-ink)}
.pcx-btn--ghost{background:transparent;border-color:transparent;color:var(--pc-text-muted)}
.pcx-btn--ghost:hover{background:var(--pc-surface-raised);color:var(--pc-text)}
.pcx-btn--sm{padding:6px 10px;font-size:var(--pc-bit-sm)}
.pcx-btn--lg{min-height:48px;padding:12px 20px;font-size:var(--pc-bit-lg)}
.pcx-btn--block{width:100%}
.pcx-btn[disabled],.pcx-btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed;transform:none}
.pcx-btn.is-loading{pointer-events:none}
.pcx-btn.is-loading::before{content:"";width:8px;height:8px;background:currentColor;animation:pcx-blink .8s steps(1,end) infinite}
.pcx-icon-btn{width:44px;height:44px;padding:0;flex:none}
.pcx-icon{width:14px;height:14px;fill:currentColor;flex:none}
.pcx-btn-row{display:flex;align-items:center;gap:var(--pc-space-2);flex-wrap:wrap}

.pcx-tag{min-height:28px;display:inline-flex;align-items:center;gap:6px;padding:4px 8px;color:var(--pc-ink);font-family:var(--pc-font-bit);font-size:var(--pc-bit-sm)}
.pcx-tag::before{content:"";width:7px;height:7px;background:currentColor}
.pcx-tag--active{background:var(--pc-action)}
.pcx-tag--success{background:var(--pc-success)}
.pcx-tag--notice{background:var(--pc-notice)}
.pcx-tag--danger{background:var(--pc-danger);color:var(--pc-ink)}
.pcx-tag--quiet{background:var(--pc-road);color:var(--pc-text-muted)}

.pcx-field{display:flex;flex-direction:column;gap:6px}
.pcx-field+.pcx-field{margin-top:var(--pc-space-3)}
.pcx-field__label{font-size:var(--pc-han-sm);font-weight:700;color:var(--pc-text)}
.pcx-field__hint,.pcx-field__error{font-size:var(--pc-han-xs)}
.pcx-field__hint{color:var(--pc-text-muted)}
.pcx-field__error{color:var(--pc-danger)}
.pcx-input,.pcx-textarea{
  width:100%;
  min-height:44px;
  padding:9px 11px;
  background:var(--pc-field);
  color:var(--pc-text);
  border:var(--pc-border) solid;
  border-color:var(--pc-shadow) var(--pc-highlight) var(--pc-highlight) var(--pc-shadow);
}
.pcx-textarea{min-height:96px;resize:vertical}
.pcx-input--lg{min-height:54px}
.pcx-input::placeholder,.pcx-textarea::placeholder{color:var(--pc-text-muted)}
.pcx-input:focus,.pcx-textarea:focus{outline:none;border-color:var(--pc-action);box-shadow:0 0 0 2px var(--pc-focus)}
.pcx-input[aria-invalid="true"],.pcx-textarea[aria-invalid="true"],[aria-invalid="true"] .pcx-input{border-color:var(--pc-danger);box-shadow:inset 4px 0 0 var(--pc-danger)}
.pcx-input[disabled],.pcx-textarea[disabled]{opacity:.45;cursor:not-allowed}
.pcx-input[readonly],.pcx-textarea[readonly]{background:var(--pc-surface-raised);color:var(--pc-text-muted)}

.pcx-check,.pcx-radio,.pcx-switch{min-height:44px;display:inline-flex;align-items:center;gap:9px;cursor:pointer;position:relative}
.pcx-check input,.pcx-radio input,.pcx-switch input{position:absolute;opacity:0;width:1px;height:1px}
.pcx-check__box,.pcx-radio__box{width:18px;height:18px;flex:none;background:var(--pc-field);border:var(--pc-border) solid var(--pc-shadow);position:relative}
.pcx-check input:focus-visible+.pcx-check__box,.pcx-radio input:focus-visible+.pcx-radio__box,.pcx-switch input:focus-visible+.pcx-switch__track{outline:3px solid var(--pc-focus);outline-offset:2px}
.pcx-check input:checked+.pcx-check__box{background:var(--pc-success);border-color:var(--pc-success-deep)}
.pcx-check input:checked+.pcx-check__box::after{content:"";position:absolute;left:5px;top:1px;width:5px;height:10px;border:solid var(--pc-ink);border-width:0 2px 2px 0;transform:rotate(45deg)}
.pcx-radio input:checked+.pcx-radio__box{border-color:var(--pc-action)}
.pcx-radio input:checked+.pcx-radio__box::after{content:"";position:absolute;inset:4px;background:var(--pc-action)}
.pcx-switch__track{width:44px;height:24px;padding:2px;flex:none;background:var(--pc-field);border:var(--pc-border) solid var(--pc-shadow);position:relative}
.pcx-switch__track::after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;background:var(--pc-road);border:1px solid var(--pc-shadow);transition:transform var(--pc-motion-fast) steps(2,end)}
.pcx-switch input:checked+.pcx-switch__track{background:var(--pc-action-deep)}
.pcx-switch input:checked+.pcx-switch__track::after{background:var(--pc-action);transform:translate3d(20px,0,0)}
.pcx-check input:disabled~*,.pcx-radio input:disabled~*,.pcx-switch input:disabled~*{opacity:.45;cursor:not-allowed}

@keyframes pcx-blink{0%,50%{opacity:1}51%,100%{opacity:.2}}
