.u-btn{font-family:var(--font-body);font-weight:var(--weight-semibold);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;text-decoration:none;display:inline-flex}.u-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.u-btn--md{height:44px;font-size:var(--text-md);padding:0 20px}.u-btn--sm{height:36px;font-size:var(--text-sm);padding:0 14px}.u-btn--lg{height:52px;font-size:var(--text-lg);padding:0 28px}.u-btn--primary{background:var(--accent);color:var(--text-on-accent)}.u-btn--primary:hover{background:var(--accent-hover)}.u-btn--primary:active{background:var(--accent-press)}.u-btn--secondary{background:var(--surface-card);color:var(--text-body);border-color:var(--border-2)}.u-btn--secondary:hover{border-color:var(--ink-3);background:var(--surface-card)}.u-btn--secondary:active{background:var(--surface-sunken)}.u-btn--ghost{color:var(--accent-text);background:0 0}.u-btn--ghost:hover{background:var(--accent-soft)}.u-btn--ghost:active{background:var(--accent-soft-border)}.u-btn[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none}.u-btn--full{width:100%}a.u-btn:hover{text-decoration:none}a.u-btn--primary,a.u-btn--primary:hover{color:var(--text-on-accent)}a.u-btn--secondary,a.u-btn--secondary:hover{color:var(--text-body)}
.u-iconbtn{border-radius:var(--radius-md);border:1px solid var(--border-2);background:var(--surface-card);width:44px;height:44px;color:var(--ink-2);cursor:pointer;transition:background var(--dur-fast) var(--ease-out);justify-content:center;align-items:center;display:inline-flex}.u-iconbtn:hover{background:var(--surface-sunken);color:var(--ink-1)}.u-iconbtn:active{background:var(--border-1)}.u-iconbtn:focus-visible{box-shadow:var(--focus-ring);outline:none}.u-iconbtn--sm{border-radius:var(--radius-sm);width:36px;height:36px}.u-iconbtn--plain{background:0 0;border-color:#0000}
.u-badge{border-radius:var(--radius-full);height:24px;font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-semibold);border:1px solid #0000;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.u-badge--verified{background:var(--verified-bg);color:var(--verified-text);border-color:var(--verified-border)}.u-badge--deadline{background:var(--note-bg);color:var(--note-text);border-color:var(--note-border)}.u-badge--info{background:var(--accent-soft);color:var(--accent-text-soft);border-color:var(--accent-soft-border)}.u-badge--neutral{background:var(--surface-sunken);color:var(--ink-2);border-color:var(--border-1)}.u-badge svg{width:13px;height:13px}
.u-tag{border-radius:var(--radius-sm);background:var(--surface-card);border:1px solid var(--border-2);height:32px;font-family:var(--font-body);font-size:var(--text-sm);color:var(--ink-2);cursor:pointer;transition:all var(--dur-fast) var(--ease-out);align-items:center;gap:6px;padding:0 12px;display:inline-flex}.u-tag:hover{border-color:var(--ink-3);color:var(--ink-1)}.u-tag:focus-visible{box-shadow:var(--focus-ring);outline:none}.u-tag--on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-text-soft);font-weight:var(--weight-semibold)}
.u-card{background:var(--surface-card);border:var(--border-thin);border-radius:var(--radius-md);padding:var(--space-3)}.u-card--lg{border-radius:var(--radius-lg);padding:var(--space-4)}.u-card--float{box-shadow:var(--shadow-card)}.u-card--hover{transition:box-shadow var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.u-card--hover:hover{box-shadow:var(--shadow-float);transform:translateY(-2px)}
.u-field{font-family:var(--font-body);flex-direction:column;gap:6px;display:flex}.u-field label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--ink-1)}.u-input{border-radius:var(--radius-md);border:1px solid var(--border-2);background:var(--surface-card);height:44px;font-family:var(--font-body);font-size:var(--text-md);color:var(--ink-1);transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out);box-sizing:border-box;width:100%;padding:0 14px}.u-input::placeholder{color:var(--ink-3)}.u-input:hover{border-color:var(--ink-3)}.u-input:focus{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}.u-input--error{border-color:var(--danger)}.u-input--error:focus{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-bg)}.u-field .u-hint{font-size:var(--text-xs);color:var(--ink-3)}.u-field .u-err{font-size:var(--text-xs);color:var(--danger)}
.u-select{appearance:none;border-radius:var(--radius-md);border:1px solid var(--border-2);background:var(--surface-card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23474C56' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center;height:44px;font-family:var(--font-body);font-size:var(--text-md);color:var(--ink-1);box-sizing:border-box;cursor:pointer;width:100%;transition:border-color var(--dur-fast) var(--ease-out);padding:0 40px 0 14px}.u-select:hover{border-color:var(--ink-3)}.u-select:focus{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}
.u-check{cursor:pointer;font-family:var(--font-body);font-size:var(--text-md);color:var(--ink-1);align-items:flex-start;gap:10px;display:inline-flex}.u-check input{opacity:0;width:0;position:absolute}.u-check .u-box{border:1px solid var(--border-2);background:var(--surface-card);width:20px;height:20px;transition:all var(--dur-fast) var(--ease-out);border-radius:6px;flex:none;justify-content:center;align-items:center;margin-top:2px;display:flex}.u-check svg{opacity:0;transition:all var(--dur-fast) var(--ease-out);transform:scale(.6)}.u-check input:checked+.u-box{background:var(--accent);border-color:var(--accent)}.u-check input:checked+.u-box svg{opacity:1;transform:scale(1)}.u-check input:focus-visible+.u-box{box-shadow:var(--focus-ring)}
.u-switch{cursor:pointer;font-family:var(--font-body);font-size:var(--text-md);color:var(--ink-1);align-items:center;gap:10px;display:inline-flex}.u-switch input{opacity:0;width:0;position:absolute}.u-switch .u-track{border-radius:var(--radius-full);background:var(--border-2);width:40px;height:24px;transition:background var(--dur-med) var(--ease-out);flex:none;position:relative}.u-switch .u-track:after{content:"";width:18px;height:18px;transition:transform var(--dur-med) var(--ease-out);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #16181d40}.u-switch input:checked+.u-track{background:var(--accent)}.u-switch input:checked+.u-track:after{transform:translate(16px)}.u-switch input:focus-visible+.u-track{box-shadow:var(--focus-ring)}
.u-tabs{background:var(--surface-sunken);border-radius:var(--radius-md);gap:4px;width:fit-content;max-width:100%;padding:4px;display:flex}.u-tab{border-radius:var(--radius-sm);height:36px;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--ink-2);cursor:pointer;white-space:nowrap;transition:all var(--dur-fast) var(--ease-out);background:0 0;border:0;padding:0 16px}.u-tab:hover{color:var(--ink-1)}.u-tab--on{background:var(--surface-card);color:var(--ink-1);font-weight:var(--weight-semibold);box-shadow:0 1px 3px #16181d14}.u-tab:focus-visible{box-shadow:var(--focus-ring);outline:none}
.u-acc{border:var(--border-thin);border-radius:var(--radius-md);background:var(--surface-card);overflow:hidden}.u-acc-item+.u-acc-item{border-top:var(--border-thin)}.u-acc-head{width:100%;font-family:var(--font-body);font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--ink-1);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.u-acc-head:hover{background:var(--surface-sunken)}.u-acc-head:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-sm);outline:none}.u-acc-head svg{transition:transform var(--dur-med) var(--ease-out);color:var(--ink-3);flex:none}.u-acc-item--open .u-acc-head svg{transform:rotate(180deg)}.u-acc-body{font-size:var(--text-md);color:var(--ink-2);line-height:var(--leading-body);padding:0 20px 18px}
.u-lang{border:1px solid var(--border-2);border-radius:var(--radius-full);background:var(--surface-card);gap:2px;padding:3px;display:inline-flex}.u-lang button{border-radius:var(--radius-full);height:28px;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--ink-2);cursor:pointer;transition:all var(--dur-fast) var(--ease-out);background:0 0;border:0;padding:0 12px}.u-lang button:hover{color:var(--ink-1)}.u-lang button.u-lang--on{background:var(--ink-1);color:#fff;font-weight:var(--weight-semibold)}.u-lang button:focus-visible{box-shadow:var(--focus-ring);outline:none}.u-lang--pending{cursor:progress}.u-lang--pending button{opacity:.6}.u-lang--pending button.u-lang--on{opacity:1}@media (prefers-reduced-motion:no-preference){.u-lang--pending button.u-lang--on{animation:u-lang-pulse var(--dur-slow,.6s) var(--ease-out) infinite alternate}}@keyframes u-lang-pulse{0%{opacity:1}to{opacity:.65}}
.u-note{background:var(--note-bg);border:1px solid var(--note-border);border-radius:var(--radius-md);box-shadow:var(--shadow-note);font-family:var(--font-body);max-width:280px;padding:16px 18px;display:inline-block}.u-note .u-note-date{font-family:var(--font-display);font-weight:var(--weight-bold);letter-spacing:var(--tracking-display);font-size:var(--text-lg);color:var(--note-text);align-items:center;gap:8px;display:flex}.u-note .u-note-dot{background:var(--note-accent);border-radius:50%;flex:none;width:8px;height:8px}.u-note .u-note-label{font-size:var(--text-sm);color:var(--note-text);opacity:.85;margin-top:4px}
