*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;}
html{scroll-behavior:smooth;}
body{font-family:var(--font-sans);background:var(--cream);color:var(--dark);min-height:100vh;overflow-x:hidden;}
a{color:inherit;text-decoration:none;}
button{font-family:var(--font-sans);cursor:pointer;border:none;background:none;}
input,select,textarea{font-family:var(--font-sans);color:var(--dark);}

/* App shell */
#app{min-height:100vh;}

/* Pages */
.page{display:none;min-height:100vh;flex-direction:column;}
.page.active{display:flex;}

/* Content */
.content{flex:1;padding:24px 20px 100px;max-width:var(--max-width);margin:0 auto;width:100%;}

/* Topbar */
.topbar{background:var(--dark);color:var(--cream);padding:14px 20px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:100;min-height:var(--topbar-h);}
.topbar-logo{display:flex;align-items:center;gap:10px;flex:1;}
.topbar-name strong{display:block;font-family:var(--font-serif);font-size:1.05rem;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;}
.topbar-name span{font-size:0.68rem;letter-spacing:0.18em;color:var(--olive-pale);text-transform:lowercase;}
.btn-back{color:var(--cream);font-size:1.4rem;padding:4px 8px 4px 0;line-height:1;}

/* Section heading */
.sec-title{font-family:var(--font-serif);font-size:1.75rem;font-weight:400;margin-bottom:6px;}
.sec-desc{font-size:0.83rem;color:var(--muted);line-height:1.6;margin-bottom:28px;font-weight:300;}
.section-label{font-size:0.7rem;text-transform:uppercase;letter-spacing:0.12em;color:var(--muted);margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid var(--border);}

/* Fields */
.field-group{margin-bottom:16px;}
.field-group label{display:block;font-size:0.7rem;text-transform:uppercase;letter-spacing:0.12em;color:var(--muted);margin-bottom:7px;}
.field-group input,.field-group select,.field-group textarea{width:100%;padding:13px 16px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--white);font-size:0.93rem;outline:none;transition:border-color .2s,box-shadow .2s;appearance:none;}
.field-group input:focus,.field-group select:focus,.field-group textarea:focus{border-color:var(--olive);box-shadow:0 0 0 3px rgba(90,107,58,.08);}
.field-group textarea{min-height:80px;resize:vertical;line-height:1.5;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}

/* Buttons */
.btn{padding:12px 20px;border-radius:var(--radius-sm);font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:all .18s;font-weight:500;}
.btn-primary{background:var(--olive);color:var(--cream);}
.btn-primary:active{background:var(--dark);}
.btn-ghost{background:transparent;color:var(--muted);border:1.5px solid var(--border);}
.btn-danger{background:var(--danger);color:var(--cream);}
.btn-outline-dark{background:transparent;color:var(--cream);border:1.5px solid rgba(200,212,170,.35);border-radius:var(--radius-sm);padding:13px 18px;font-size:0.82rem;letter-spacing:0.06em;text-transform:uppercase;}
.btn-full{width:100%;padding:15px;border-radius:var(--radius-md);font-size:0.9rem;letter-spacing:0.1em;text-transform:uppercase;font-weight:500;}

/* Cards */
.card{background:var(--cream-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;}
.card-clickable{cursor:pointer;transition:all .18s;}
.card-clickable:active{transform:scale(0.98);background:var(--cream-deep);}

/* Empty state */
.empty-state{text-align:center;padding:40px 0;color:var(--muted);}
.empty-state .empty-icon{font-size:2.5rem;margin-bottom:12px;}
.empty-state p{font-size:0.88rem;line-height:1.6;}

/* FAB */
.fab{position:fixed;bottom:28px;right:24px;width:58px;height:58px;border-radius:50%;background:var(--olive);color:var(--cream);font-size:1.6rem;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(90,107,58,.35);transition:transform .18s,background .18s;z-index:200;}
.fab:active{transform:scale(0.93);background:var(--dark);}

/* Status badge */
.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:0.7rem;letter-spacing:0.06em;text-transform:uppercase;font-weight:500;}
.badge-pending{background:var(--warning-pale);color:var(--warning);}
.badge-completed{background:var(--success-pale);color:var(--success);}
.badge-expired{background:var(--danger-pale);color:var(--danger);}
.badge-info{background:var(--olive-ghost);color:var(--olive);}
