.grapp-alert{border-radius:var(--r-control);font-family:var(--text);border:1px solid;border-left-width:4px;padding:14px}.grapp-alert-bad{border-color:var(--bad-border);border-left-color:var(--bad);background:var(--bad-panel)}.grapp-alert-warn{border-color:var(--warn-border);border-left-color:var(--warn);background:var(--warn-panel)}.grapp-alert .t{align-items:center;gap:6px;font-size:14px;font-weight:600;display:flex}.grapp-alert-bad .t{color:var(--bad-text)}.grapp-alert-warn .t{color:var(--warn-text)}.grapp-alert .b{margin-top:4px;font-size:14px}.grapp-alert-bad .b{color:var(--bad-deep)}.grapp-alert-warn .b{color:var(--warn-deep)}.grapp-alert .a{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.grapp-warn-icon{flex-shrink:0}
.grapp-btn{border-radius:var(--r-control);font-family:var(--text);cursor:pointer;box-sizing:border-box;background:0 0;border:0;justify-content:center;align-items:center;gap:6px;font-weight:600;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.grapp-btn:disabled,.grapp-btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.grapp-md{height:36px;padding:0 14px;font-size:13px}.grapp-sm{height:32px;padding:0 12px;font-size:12px}.grapp-lg{width:100%;height:48px;padding:0 16px;font-size:14px}.grapp-primary{background:var(--green-fill);color:var(--on-fill)}.grapp-primary:hover:not(:disabled){background:var(--green-fill-hover)}.grapp-secondary{border:1px solid var(--line-strong);color:var(--ink)}.grapp-secondary:hover:not(:disabled){background:var(--wash-2)}.grapp-ghost{color:var(--green-ink)}.grapp-ghost:hover:not(:disabled){background:var(--forest-tint)}.grapp-destructive{border:1px solid var(--bad-border);color:var(--bad-text)}.grapp-destructive:hover:not(:disabled){background:var(--bad-panel)}
.grapp-card{border-radius:var(--r-container);border:1px solid var(--line);background:var(--paper);font-family:var(--text);padding:20px}.grapp-card>h2{font-family:var(--display);letter-spacing:0;margin:0 0 4px;font-size:17px;font-weight:600;line-height:1.3}
.grapp-filepicker{cursor:pointer;min-width:0;font-family:var(--text);align-items:center;gap:8px;display:flex}.grapp-filepicker input[type=file]{opacity:0;width:1px;height:1px;position:absolute}.grapp-filepicker .grapp-btn{flex-shrink:0}.grapp-filepicker .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--ink-soft);flex:1;font-size:14px;overflow:hidden}
.grapp-checkrow{align-items:center;gap:var(--sp-3);font-family:var(--text);padding:10px 0;display:flex}.grapp-checkrow .n{width:24px;height:24px;color:var(--ink-faint);border:2px solid var(--line-strong);background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.grapp-checkrow.done .n{background:var(--ok);color:var(--on-fill);border:none}.grapp-checkrow .l{min-width:0;color:var(--ink);flex:1;font-size:14px}.grapp-checkrow .gate{border-radius:var(--r-pill);background:var(--warn-chip);color:var(--warn-text);padding:1px 10px;font-size:11px;font-weight:500}.grapp-checkrow .note{color:var(--ink-faint);font-size:12px}
.grapp-tbl-wrap{border-radius:var(--r-container);border:1px solid var(--line);background:var(--paper);overflow-x:auto}.grapp-tbl{width:100%;font-family:var(--text);border-collapse:collapse;color:var(--ink);font-size:14px}.grapp-tbl thead{background:var(--wash-1);text-align:left}.grapp-tbl th{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);padding:12px 16px;font-size:12px;font-weight:600}.grapp-tbl td{border-top:1px solid var(--line-soft);padding:12px 16px}.grapp-tbl tbody tr:hover{background:var(--em-tint)}.grapp-tbl tbody tr.click{cursor:pointer}.grapp-tbl .num{text-align:right;font-variant-numeric:tabular-nums}.grapp-tbl .sub{color:var(--ink-faint);margin-top:2px;font-size:12px}
.grapp-date{border-radius:var(--r-control);border:1px solid;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;width:46px;height:46px;display:flex}.grapp-date-neutral{border-color:var(--line);background:var(--wash-2);color:var(--ink-soft)}.grapp-date-upcoming{border-color:var(--em-line);background:var(--forest-tint);color:var(--green-ink)}.grapp-date-bad{border-color:var(--bad-border);background:var(--bad-chip);color:var(--bad-text)}.grapp-date .day{font-family:var(--display);font-size:18px;font-weight:600;line-height:1}.grapp-date .mon{font-family:var(--text);margin-top:2px;font-size:10px;font-weight:500;line-height:1}
.grapp-invoice{border-radius:var(--r-pill);border:1px solid var(--line-strong);color:var(--ink-soft);font-family:var(--text);padding:3px 12px;font-size:12px;font-weight:500;display:inline-block}.grapp-invoice-sent{border-color:var(--info);color:var(--info-text)}.grapp-invoice-paid{border-color:var(--ok);color:var(--ok-text)}
.grapp-new{border:1px solid var(--warn-border);background:var(--warn-chip);color:var(--warn-text);font-family:var(--text);letter-spacing:.06em;border-radius:6px;padding:1px 6px;font-size:11px;font-weight:700;display:inline-block}
.grapp-progress{font-family:var(--text);align-items:center;gap:8px;display:flex}.grapp-progress .track{border-radius:var(--r-pill);background:var(--wash-3);flex:1;height:8px;overflow:hidden}.grapp-progress .fill{border-radius:var(--r-pill);background:var(--green-fill);height:100%}.grapp-progress .pct{text-align:right;font-variant-numeric:tabular-nums;width:40px;color:var(--ink-soft);font-size:12px;font-weight:600}
.grapp-statcard{border-radius:var(--r-container);border:1px solid var(--line);background:var(--paper);font-family:var(--text);padding:16px}.grapp-statcard-bad{border-color:var(--bad-border);background:var(--bad-panel)}.grapp-statcard .v{font-family:var(--display);font-variant-numeric:tabular-nums;color:var(--ink);font-size:30px;font-weight:600;line-height:1}.grapp-statcard .l{color:var(--ink-soft);align-items:center;gap:6px;margin-top:8px;font-size:13px;font-weight:500;display:flex}.grapp-statcard .d{background:var(--ink-faint);border-radius:50%;width:7px;height:7px}.grapp-statcard-ok .d{background:var(--ok)}.grapp-statcard-warn .d{background:var(--warn)}.grapp-statcard-bad .d{background:var(--bad)}.grapp-statcard-forest .d{background:var(--green-ink)}.grapp-statcard-link{text-decoration:none;display:block}
.grapp-status{white-space:nowrap;border-radius:var(--r-pill);font-family:var(--text);align-items:center;gap:6px;padding:3px 12px;font-size:12px;font-weight:500;display:inline-flex}.grapp-status .d{border-radius:50%;width:7px;height:7px}.grapp-status-bold{font-weight:600}.grapp-status-strike{text-decoration:line-through}
.gr-btn{font-family:var(--text);border-radius:var(--r-pill);cursor:pointer;transition:background-color .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease), color .2s;border:0;justify-content:center;align-items:center;gap:10px;padding:16px 26px;font-size:1rem;font-weight:600;line-height:1;display:inline-flex}.gr-btn svg{flex:none}.gr-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.gr-btn-small{padding:12px 20px;font-size:.92rem}.gr-btn-primary{background:var(--green-fill);color:var(--on-fill);box-shadow:0 0 0 1px #ffffff0f,inset 0 1.5px #ffffff24,0 10px 22px -12px #04120c99}.gr-btn-primary:hover:not(:disabled){background:var(--green-fill-hover);transform:translateY(-2px)}.gr-btn-emerald{background:var(--emerald);color:var(--bg-forest)}.gr-btn-emerald:hover:not(:disabled){background:var(--emerald-bright);transform:translateY(-2px)}.gr-btn-ghost{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line);background:0 0}.gr-btn-ghost:hover:not(:disabled){box-shadow:inset 0 0 0 1px var(--ink);transform:translateY(-2px)}.gr-btn-ghost-light{color:#fff;background:0 0;box-shadow:inset 0 0 0 1px #ffffff6b}.gr-btn-ghost-light:hover:not(:disabled){background:#ffffff1a;box-shadow:inset 0 0 0 1px #fff}
.gr-chip{background:var(--em-tint);color:var(--green-ink);border-radius:var(--r-pill);font-family:var(--text);box-shadow:inset 0 0 0 1px var(--em-line);align-items:center;gap:7px;padding:7px 8px 7px 13px;font-size:.82rem;font-weight:600;display:inline-flex}.gr-chip-x{all:unset;cursor:pointer;width:18px;height:18px;color:var(--green-ink);border-radius:50%;place-items:center;display:grid}.gr-chip-x:hover{background:var(--em-line)}.gr-badge{font-family:var(--text);color:var(--green-ink);background:var(--em-tint);border:1px solid var(--em-line);border-radius:var(--r-pill);align-items:center;gap:9px;padding:9px 16px;font-size:.82rem;font-weight:600;display:inline-flex}
.gr-eyebrow{font-family:var(--text);letter-spacing:.24em;text-transform:uppercase;color:var(--green-ink);align-items:center;gap:.65em;font-size:.72rem;font-weight:600;display:inline-flex}.gr-eyebrow:before{content:"";background:var(--emerald);width:28px;height:1px}
.gr-field{font-family:var(--text);flex-direction:column;gap:7px;display:flex}.gr-field label{color:var(--ink-soft);font-size:.83rem;font-weight:600}.gr-field input,.gr-field select,.gr-field textarea{font-family:var(--text);color:var(--ink);background:var(--input-bg);border:1px solid var(--input-line);border-radius:var(--r-sm);box-sizing:border-box;width:100%;padding:13px 14px;font-size:.95rem;transition:border-color .15s,box-shadow .15s}.gr-field ::placeholder{color:var(--ink-faint);opacity:1}.gr-field textarea{resize:vertical;min-height:104px;line-height:1.55}.gr-field :focus-visible{border-color:var(--emerald);box-shadow:0 0 0 3px color-mix(in srgb, var(--emerald) 22%, transparent);outline:none}.gr-field.bad input,.gr-field.bad select,.gr-field.bad textarea{border-color:var(--error)}.gr-field .f-err{color:var(--error);font-size:.78rem}.gr-field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2398a094' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 13px center;background-repeat:no-repeat;padding-right:40px}
.gr-folio{border-radius:var(--r-md);box-shadow:var(--sh-card);background:var(--bg-forest);aspect-ratio:3/2;margin:0;display:block;position:relative;overflow:hidden}.gr-folio img{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease);display:block}.gr-folio:hover img{transform:scale(1.04)}.gr-folio:after{content:"";background:linear-gradient(#04120c00 42%,#04120cb8 100%);position:absolute;inset:0}.gr-folio .cap{z-index:1;color:var(--on-fill);font-family:var(--text);font-size:.9rem;font-weight:600;position:absolute;bottom:14px;left:16px;right:16px}.gr-folio .ph{width:100%;height:100%;color:var(--ink-faint);font-family:var(--text);letter-spacing:.08em;text-transform:uppercase;border:1px dashed var(--line);place-items:center;font-size:.8rem;display:grid}
.gr-sec-head{max-width:64ch;margin-bottom:clamp(38px,5vw,66px)}.gr-sec-head h2{font-size:var(--fs-h2);font-family:var(--display);letter-spacing:-.03em;margin-top:20px;font-weight:500;line-height:1.04}.gr-sec-head p{color:var(--ink-soft);font-size:var(--fs-lead);max-width:56ch;margin:22px 0 0}
.gr-tchip{border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);flex-direction:column;flex:1;gap:3px;min-width:120px;padding:14px 18px;transition:border-color .2s,background .2s,transform .2s;display:flex}.gr-tchip:hover{border-color:var(--emerald);background:var(--em-tint);transform:translateY(-2px)}.gr-tchip .tt{font-family:var(--display);font-variant-numeric:tabular-nums;color:var(--ink);font-size:1.35rem;font-weight:500;line-height:1.1}.gr-tchip .tl{font-family:var(--text);color:var(--ink-faint);font-size:.8rem;font-weight:500}
