/* Shared controls and mobile chrome; loaded after Tailwind. */
:root { --brand: #047857; --ink: #18332c; --line: #dbe5e0; }
html { scroll-padding-top: 6rem; }
body { background: #f6f8f7; color: var(--ink); }
body.bg-gray-50 { background: #f6f8f7; }
body:has(.mobile-nav) { padding-bottom: calc(5.5rem + env(safe-area-inset-bottom)); }
body .ui-icon { display: inline-block; flex-shrink: 0; vertical-align: -.18em; }
.password-field { position: relative; margin-top: .5rem; }
.password-toggle { position: absolute; right: 0; top: 0; bottom: 0; width: 3rem; display: flex; align-items: center; justify-content: center; border: 0; border-radius: .5rem; background: transparent; color: #64756c; cursor: pointer; }
.password-toggle:hover { color: var(--brand); }
.password-toggle:focus-visible { outline: 2px solid var(--brand); outline-offset: -4px; }
.password-toggle [hidden] { display: none; }
body input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=submit]):not([type=button]):not([type=file]):not([type=range]):not([type=color]),
body select, body textarea {
    box-sizing: border-box;
    min-width: 0;
    max-width: 100%;
    min-height: 3rem;
    padding: .75rem 1rem;
    border: 1px solid var(--line);
    border-radius: .75rem;
    background-color: #fff;
    color: #18332c;
    line-height: 1.5;
    box-shadow: 0 1px 2px rgb(15 45 32 / .025);
    transition: border-color .15s, box-shadow .15s;
}
body select { padding-right: 2.75rem; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none' stroke='%2364776e' stroke-width='1.6'%3E%3Cpath d='m6 8 4 4 4-4'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right .8rem center; }
body select[multiple] { background-image: none; }
body textarea { min-height: 7rem; resize: vertical; }
body input::placeholder, body textarea::placeholder { color: #829087; opacity: 1; }
body input:focus, body textarea:focus, body select:focus { outline: none; border-color: #059669; box-shadow: 0 0 0 3px rgb(5 150 105 / .12); }
body input:disabled, body textarea:disabled, body select:disabled { background-color: #f1f5f3; color: #7d8a82; }
body input[type=checkbox], body input[type=radio] { width: 1.1rem; height: 1.1rem; flex-shrink: 0; accent-color: var(--brand); }
body input[type=file] { max-width: 100%; padding: .65rem; border: 1px dashed #baccc1; border-radius: .75rem; background: #fff; }
body input::file-selector-button { margin-right: .75rem; padding: .5rem .75rem; border: 0; border-radius: .5rem; background: #ecf6f0; color: #065f46; font-weight: 600; cursor: pointer; }
body button[type=submit], body form button:not([type]), body a.rounded-full { min-height: 2.75rem; }
body a.rounded-full:not(.flex):not(.inline-flex) { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; }
body a:focus-visible, body button:focus-visible, body summary:focus-visible { outline: 2px solid #059669; outline-offset: 4px; }
body h1 { letter-spacing: -.035em; }
body .border-gray-100 { border-color: #e3ebe6; }
.site-header { position: sticky; top: 0; z-index: 30; border-bottom: 1px solid #e3ebe6; background: rgb(255 255 255 / .96); backdrop-filter: blur(12px); padding-top: env(safe-area-inset-top); }
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: .75rem; max-width: 64rem; min-height: 4.5rem; margin: auto; padding: .4rem 1rem; }
.header-actions { display: flex; align-items: center; gap: .5rem; }
.header-action { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 2.75rem; padding: .65rem .85rem; border: 1px solid var(--line); border-radius: .75rem; background: white; font-size: .8125rem; font-weight: 600; color: #285744; white-space: nowrap; }
.header-action:hover { background: #ecf6f0; border-color: #a8cbb8; }
.header-action .ui-icon { width: 1.125rem; height: 1.125rem; }
.mobile-nav { position: fixed; bottom: 0; inset-inline: 0; z-index: 30; border-top: 1px solid #e3ebe6; background: rgb(255 255 255 / .97); padding-bottom: env(safe-area-inset-bottom); box-shadow: 0 -4px 20px rgb(20 55 35 / .035); }
.mobile-nav-inner { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); max-width: 40rem; margin: auto; padding: .45rem .5rem; }
.mobile-nav-link { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .25rem; min-height: 3.3rem; border-radius: .8rem; color: #738178; font-size: .6875rem; font-weight: 600; }
.mobile-nav-link .ui-icon { width: 1.35rem; height: 1.35rem; }
.mobile-nav-link[aria-current=page] { color: #047857; background: #edf7f1; }
.mobile-nav-link:hover { color: #047857; background: #f3f8f5; }
.nav-badge { position: absolute; top: .1rem; left: calc(50% + .45rem); min-width: 1rem; padding: .05rem .2rem; border-radius: 1rem; background: #047857; color: white; font-size: .6rem; text-align: center; }
.auth-card { padding: 1.75rem; border: 1px solid #e1eae4; border-radius: 1.25rem; background: white; box-shadow: 0 12px 40px rgb(26 62 42 / .045); }
@media (max-width: 639px) {
    body input:not([type=checkbox]):not([type=radio]), body select, body textarea { font-size: 16px; }
    .auth-card { padding: 1.5rem; }
    .header-inner { min-height: 4rem; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; } }
@media print { .site-header, .mobile-nav { display: none; } body { padding-bottom: 0 !important; } }
