.platform-layout{flex-direction:column;min-height:100vh;display:flex}.platform-header{color:#fff;background:#1a1a2e;justify-content:space-between;align-items:center;height:60px;padding:0 20px;display:flex}.platform-header__brand{font-size:1.2rem;font-weight:700}.platform-header__user{align-items:center;gap:12px;display:flex}.platform-header__avatar{text-align:center;background:#4a4a8a;border-radius:50%;width:32px;height:32px;font-weight:700;line-height:32px;display:inline-block}.platform-header__logout{color:#fff;cursor:pointer;background:0 0;border:1px solid #666;border-radius:4px;padding:4px 12px}.platform-layout__body{flex:1;display:flex}.platform-sidebar{background:#16213e;width:220px;min-height:calc(100vh - 60px);padding:20px 0}.platform-sidebar__link{color:#ccc;padding:10px 20px;text-decoration:none;transition:background .2s;display:block}.platform-sidebar__link:hover{background:#1a2a4a}.platform-sidebar__link--active{color:#fff;background:#2c3e6b}.platform-layout__content{background:#f5f5f5;flex:1;padding:20px}.portfolio-hero{text-align:center;border-radius:8px;margin-bottom:30px;padding:60px 20px}.app-header__home{cursor:pointer;color:#333;background:0 0;border:none;margin-right:10px;padding:0 5px;font-size:1.5rem}.app-header__home:hover{color:#2c5f2d}.church-portfolio{max-width:1200px;margin:0 auto;padding:20px}.portfolio-hero{border-radius:8px;margin-bottom:30px;padding:60px 20px}.portfolio-hero h1{margin:0;font-size:2.5rem}.portfolio-hero p{opacity:.9;font-size:1.2rem}.portfolio-section{margin-bottom:40px}.portfolio-section h2{border-bottom:2px solid #e0e0e0;padding-bottom:10px}.portfolio-section ul{padding:0;list-style:none}.portfolio-section ul li{border-bottom:1px solid #f0f0f0;padding:8px 0}.banner-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;display:grid}.banner-item{background:#fff;border-radius:8px;padding:15px;box-shadow:0 2px 4px #0000001a}.banner-item img{border-radius:4px;width:100%;height:auto}.staff-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;display:grid}.staff-card{text-align:center;background:#f9f9f9;border-radius:8px;padding:15px}.portfolio-footer{text-align:center;color:#666;border-top:1px solid #ddd;margin-top:40px;padding:20px 0}:root{--ink:#1e2a1f;--evergreen:#2f5233;--evergreen-dark:#223d26;--moss:#6b8f5a;--wheat:#d9a441;--wheat-soft:#eecb84;--brick:#a24936;--parchment:#f6f1e4;--paper:#fffdf8;--paper-line:#e6ddc6;--ink-soft:#5b6357;--ink-faint:#8b9284;--bronze:#b0714a;--silver:#a8ac9f;--gold:#d9a441;--font-display:"Fraunces", "Iowan Old Style", Georgia, serif;--font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--radius-sm:4px;--radius-md:8px;--radius-lg:14px;--shadow-card:0 1px 2px #1e2a1f0f, 0 6px 20px -8px #1e2a1f2e;--shadow-raised:0 2px 4px #1e2a1f14, 0 14px 32px -12px #1e2a1f47}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}*{box-sizing:border-box}html{background:var(--parchment)}body{font-family:var(--font-body);color:var(--ink);background:var(--parchment);background-image:radial-gradient(circle at 1px 1px,#1e2a1f09 1px,#0000 0);background-size:22px 22px;margin:0;font-size:15px}h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink);letter-spacing:-.01em;margin:0 0 8px}h1{font-size:26px;font-weight:600}h2{font-size:21px;font-weight:600}h3{font-size:17px;font-weight:600}h4{font-size:15px;font-weight:600}p{color:var(--ink-soft);line-height:1.55}a{color:var(--evergreen)}.kpi-card__value,.campaign-progress__label,.donation-receipt table,.data-table td{font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--wheat);outline-offset:2px;border-radius:2px}.app-layout{flex-direction:column;min-height:100vh;display:flex}.app-layout__body{flex:1;height:100vh;display:flex}.app-layout__content{flex:1;min-width:0;height:92vh;overflow-y:auto}@media (width<=720px){.app-layout__body{flex-direction:column}}.app-header{background:var(--ink);color:var(--paper);border-bottom:3px solid var(--wheat);justify-content:space-between;align-items:center;padding:14px 28px;display:flex}.app-header__brand{font-family:var(--font-display);letter-spacing:.01em;align-items:center;gap:12px;font-size:17px;font-weight:600;display:flex}.app-header__brand:before{content:"";background:var(--wheat);border-radius:50%;flex-shrink:0;width:9px;height:9px;box-shadow:0 0 0 3px #d9a44140}.app-header__logo{border-radius:var(--radius-sm);height:30px}.app-header__user{align-items:center;gap:12px;display:flex}.app-header__avatar{background:var(--wheat);width:34px;height:34px;color:var(--ink);font-family:var(--font-mono);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.app-header__user-info{flex-direction:column;font-size:13px;line-height:1.3;display:flex}.app-header__username{font-weight:600}.app-header__role{color:var(--wheat-soft);text-transform:uppercase;letter-spacing:.05em;font-size:11px}.app-header__logout{color:var(--paper);border-radius:var(--radius-sm);font-family:var(--font-body);cursor:pointer;background:0 0;border:1px solid #fffdf859;padding:7px 14px;font-size:13px;transition:border-color .15s,background .15s}.app-header__logout:hover{border-color:var(--wheat);background:#d9a4411f}.app-sidebar{background:var(--paper);border-right:1px solid var(--paper-line);flex-shrink:0;width:232px;padding:6px}.app-sidebar__section{margin-bottom:22px}.app-sidebar__section-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);padding:0 22px 8px;font-size:10px;display:block}.app-sidebar__link{color:var(--ink-soft);border-left:3px solid #0000;padding:9px 22px;font-size:14px;text-decoration:none;transition:background .12s,color .12s,border-color .12s;display:block;position:relative}.app-sidebar__link:hover{background:var(--parchment);color:var(--ink)}.app-sidebar__link--active{background:var(--parchment);color:var(--evergreen-dark);border-left-color:var(--wheat);font-weight:600}.app-footer{text-align:center;color:var(--ink-faint);border-top:1px solid var(--paper-line);background:var(--paper);padding:16px 24px;font-size:12px}.loading-spinner{color:var(--ink-faint);flex-direction:column;align-items:center;gap:10px;padding:48px 20px;font-size:13px;display:flex}.loading-spinner__circle{border-style:solid;border-color:var(--wheat) transparent var(--evergreen) transparent;border-radius:50%;animation:.85s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-boundary,.error-message{border:1px solid #e6c3b4;border-left:4px solid var(--brick);color:#6d2f1f;border-radius:var(--radius-md);background:#fbeee9;padding:16px 18px;font-size:14px}.error-boundary button{background:var(--brick);color:var(--paper);border-radius:var(--radius-sm);cursor:pointer;border:none;margin-top:10px;padding:8px 14px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;display:flex}.page-header h1{margin:0}.card{background:var(--paper);border:1px solid var(--paper-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:20px}.card dl{grid-template-columns:max-content 1fr;gap:6px 16px;margin:12px 0 0;display:grid}.card dt{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint);font-size:12px}.card dd{margin:0;font-weight:500}.btn{border-radius:var(--radius-sm);font-family:var(--font-body);cursor:pointer;border:none;padding:9px 18px;font-size:14px;font-weight:600;transition:transform 80ms,box-shadow .15s,background .15s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--evergreen);color:var(--paper);box-shadow:0 1px 2px #2f52334d}.btn-primary:hover:not(:disabled){background:var(--evergreen-dark)}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-secondary{background:var(--paper);color:var(--ink);border:1px solid var(--paper-line)}.btn-secondary:hover:not(:disabled){border-color:var(--ink-faint);background:var(--parchment)}.kpi-cards{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:18px;margin-bottom:28px;display:grid}.kpi-card{text-align:left;padding:22px 18px 18px;position:relative;overflow:visible}.kpi-card:before{content:"";background-image:radial-gradient(circle at 50%, var(--parchment) 3.5px, transparent 3.6px);background-position:8px 0;background-repeat:repeat-x;background-size:16px 8px;height:8px;position:absolute;top:-1px;left:0;right:0}.kpi-card__value{font-family:var(--font-mono);color:var(--evergreen-dark);font-size:26px;font-weight:600;line-height:1.2;display:block}.kpi-card__label{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin-top:4px;font-size:12px;display:block}.data-table{border-collapse:separate;border-spacing:0;background:var(--paper);border:1px solid var(--paper-line);border-radius:var(--radius-lg);width:100%;box-shadow:var(--shadow-card);overflow:hidden}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--paper-line);padding:12px 16px;font-size:13.5px}.data-table td{font-family:var(--font-mono);color:var(--ink);font-size:13px}.data-table td:first-child{font-family:var(--font-body)}.data-table th{background:var(--parchment);font-family:var(--font-body);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-size:11px;font-weight:600}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:var(--parchment)}.badge{letter-spacing:.02em;color:var(--paper);background:var(--ink-faint);border-radius:999px;padding:4px 11px;font-size:11px;font-weight:600;display:inline-block}.donation-status--completed,.campaign-status--active,.service-request-status--completed{background:var(--moss);color:var(--ink)}.donation-status--pending,.campaign-status--draft,.service-request-status--open{background:var(--wheat);color:var(--ink)}.donation-status--failed,.donation-status--refunded{background:var(--brick)}.campaign-status--archived,.campaign-status--completed{background:var(--ink-faint)}.food-log-direction--in{background:var(--moss);color:var(--ink)}.food-log-direction--out{background:var(--wheat);color:var(--ink)}.form-field{flex-direction:column;gap:5px;max-width:480px;margin-bottom:16px;display:flex}.form-field label{color:var(--ink-soft);font-size:12.5px;font-weight:600}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--paper-line);background:var(--paper);border-radius:var(--radius-sm);font-family:var(--font-body);color:var(--ink);padding:9px 11px;font-size:14px;transition:border-color .12s,box-shadow .12s}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--evergreen);outline:none;box-shadow:0 0 0 3px #2f52331f}.form-field--checkbox label{align-items:center;gap:8px;font-weight:500;display:flex}.form-field .field-error{color:var(--brick);font-size:12px}.pagination{font-family:var(--font-mono);color:var(--ink-soft);justify-content:flex-end;align-items:center;gap:12px;margin-top:16px;font-size:12.5px;display:flex}.donor-list__grid,.campaign-list__grid,.loyalty-tiers__grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;margin-top:16px;display:grid}.donor-list__search{border:1px solid var(--paper-line);border-radius:var(--radius-sm);width:100%;max-width:340px;font-family:var(--font-body);background:var(--paper);margin-bottom:6px;padding:9px 12px;font-size:14px}.donor-card{color:var(--ink);align-items:center;gap:12px;text-decoration:none;transition:box-shadow .15s,transform .1s;display:flex}.donor-card:hover{box-shadow:var(--shadow-raised);transform:translateY(-1px)}.donor-card__avatar{background:var(--evergreen);width:38px;height:38px;color:var(--paper);font-family:var(--font-mono);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.donor-card__info{flex-direction:column;flex:1;min-width:0;display:flex}.donor-card__name{font-weight:600}.donor-card__contact{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.campaign-card{color:var(--ink);text-decoration:none;transition:box-shadow .15s,transform .1s;display:block}.campaign-card:hover{box-shadow:var(--shadow-raised);transform:translateY(-1px)}.campaign-card__header{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:6px;display:flex}.campaign-card__header h3{margin:0}.campaign-progress{margin-top:12px}.campaign-progress__track{background:var(--parchment);border:1px solid var(--paper-line);border-radius:999px;height:10px;overflow:hidden}.campaign-progress__fill{background:linear-gradient(90deg, var(--wheat), var(--evergreen));border-radius:999px;height:100%;transition:width .4s}.campaign-progress__label{font-family:var(--font-mono);color:var(--ink-soft);margin-top:6px;font-size:12px;display:block}.loyalty-tier-card{text-align:center;border-top-style:solid;border-top-width:4px}.donor-loyalty-status p{font-family:var(--font-mono);margin:6px 0 0;font-size:13px}.service-rating{flex-direction:column;gap:10px;margin-top:12px;display:flex}.service-rating__stars{gap:4px;display:flex}.service-rating__star{color:var(--wheat);cursor:pointer;background:0 0;border:none;padding:0;font-size:24px;line-height:1}.service-rating textarea{border:1px solid var(--paper-line);border-radius:var(--radius-sm);font-family:var(--font-body);padding:8px 10px;font-size:13px}.spin-wheel__result{background:var(--parchment);border:1px dashed var(--wheat);border-radius:var(--radius-md);margin-top:14px;padding:14px}.spin-wheel__result h4{margin-bottom:4px}.donation-receipt{max-width:480px;font-family:var(--font-mono);border:1px dashed var(--paper-line);margin:0 auto}.donation-receipt__header{font-family:var(--font-body);align-items:center;gap:12px;margin-bottom:12px;display:flex}.donation-receipt__header img{height:40px}.donation-receipt__note{color:var(--ink-faint);font-size:11px;font-family:var(--font-body);font-style:italic}.dashboard-charts{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;display:grid}.financial-reports__filter{color:var(--ink-soft);align-items:center;gap:8px;margin-bottom:14px;font-size:13px;display:flex}@media (width<=720px){.app-sidebar{border-right:none;border-bottom:1px solid var(--paper-line);width:100%;padding:14px 0}}
