:root { --green-800:#185c37; --green-100:#dff3e6; --cream:#fffaf0; --yellow:#f6c945; --danger:#b42318; }
*, *::before, *::after { box-sizing:border-box; }
.ui-button,.ui-icon-button,.ui-segmented button,.ui-subject-grid button { min-width:44px; min-height:44px; padding:.65rem 1rem; border:2px solid var(--green-800); border-radius:.65rem; background:#fff; color:var(--green-800); font:inherit; cursor:pointer; }
.ui-button { background:var(--green-800); color:#fff; }
button[aria-pressed="true"] { background:var(--green-100); box-shadow:inset 0 0 0 2px var(--green-800); }
button:focus-visible,input:focus-visible { outline:3px solid var(--yellow); outline-offset:2px; }
button:disabled { cursor:not-allowed; opacity:.55; }
.ui-field { display:grid; gap:.35rem; }
.ui-field input { min-height:44px; padding:.65rem; border:1px solid #69766f; border-radius:.45rem; font:inherit; }
.ui-segmented,.ui-subject-grid,.ui-pagination { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; }
.ui-subject-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(7rem,1fr)); }
.ui-status,.ui-toast { padding:1rem; border-left:5px solid var(--green-800); background:var(--cream); }
.ui-status--error,.ui-status--timeout,.ui-status--offline,.ui-toast[role="alert"] { border-color:var(--danger); }
.ui-dialog { position:fixed; inset:50% auto auto 50%; transform:translate(-50%,-50%); z-index:20; width:min(32rem,calc(100% - 2rem)); padding:1.25rem; border:2px solid var(--green-800); border-radius:.8rem; background:#fff; box-shadow:0 1rem 3rem #0005; }
.ui-skeleton { min-height:4rem; border-radius:.5rem; background:linear-gradient(90deg,#eee 25%,#fafafa 50%,#eee 75%); background-size:200% 100%; animation:skeleton 1.4s infinite; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@keyframes skeleton { to { background-position:-200% 0; } }
@media (prefers-reduced-motion:reduce) { .ui-skeleton { animation:none; } }
