:root{--bg:#f5f8f6;--card:#fff;--text:#15201a;--muted:#657269;--line:#dfe7e2;--soft:#f0f5f2;--brand:#00bf5f;--brand-dark:#00994c;--brand-soft:#e9f9f0;--danger-bg:#fff0ef;--danger:#c1281e;--success-bg:#eaf9f0;--success:#08783e;--shadow:0 14px 42px #0f2d1c12}*{box-sizing:border-box}html{background:var(--bg)}body{background:radial-gradient(circle at 5% 0%, #00bf5f12, transparent 24rem), var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-family:Inter,SF Pro Text,SF Pro Display,Segoe UI,Roboto,Arial,sans-serif}button,input,textarea,select{font:inherit}button{touch-action:manipulation}.shell{width:min(1040px,100% - 30px);margin:0 auto;padding:28px 0 70px}.form-shell{width:min(980px,100% - 30px)}.topbar{justify-content:space-between;align-items:center;gap:18px;min-height:64px;margin-bottom:28px;display:flex}.brand-logo{object-fit:contain;width:190px;max-width:46vw;height:auto;display:block}.brand-logo-login{width:230px;max-width:72%;margin:0 auto 26px}h1,h2,p{overflow-wrap:anywhere}h1{letter-spacing:-.025em;margin:0 0 10px;font-size:clamp(30px,5vw,44px);line-height:1.08}h2{letter-spacing:-.01em}.muted{color:var(--muted);margin:0;line-height:1.6}.mini-label{color:var(--brand-dark);letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px;font-size:20px;font-weight:850;display:inline-block}.page-heading{margin:2px 0 24px}.branded-heading{padding:8px 2px 2px}.card,.toolbar-card,.assignment-card,.auth-card{border:1px solid var(--line);box-shadow:var(--shadow);background:#fffffff5}.card{border-radius:20px;margin-bottom:18px;padding:25px}.section-title{text-transform:uppercase;letter-spacing:.11em;color:var(--brand-dark);margin-bottom:21px;font-size:12px;font-weight:850}.group+.group{border-top:1px solid var(--line);margin-top:25px;padding-top:25px}.group h2{margin:0 0 15px;font-size:19px}.readonly-grid,.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.readonly-item{border:1px solid var(--line);background:var(--soft);border-radius:13px;min-width:0;padding:14px 15px}.field-label{color:var(--muted);margin-bottom:7px;font-size:12px;font-weight:750;display:block}.readonly-value{overflow-wrap:anywhere;white-space:pre-wrap;font-weight:680;line-height:1.48}.field{min-width:0}.field.full{grid-column:1/-1}input,textarea,select{width:100%;color:var(--text);background:#fff;border:1px solid #c9d5cd;border-radius:12px;outline:none;padding:12px 13px;transition:border-color .15s,box-shadow .15s,background .15s}input:focus,textarea:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 4px #00bf5f1f}textarea{resize:vertical;min-height:106px;line-height:1.5}select{cursor:pointer}.actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.primary-button,.secondary-button,.ghost-button{cursor:pointer;border:0;border-radius:11px;font-weight:800;transition:transform .12s,background .12s,opacity .12s}.primary-button{background:var(--brand);color:#fff;padding:12px 20px;box-shadow:0 8px 20px #00bf5f2e}.primary-button:hover{background:var(--brand-dark)}.secondary-button{background:var(--soft);color:#24402f;border:1px solid var(--line);padding:11px 17px}.ghost-button{color:#466052;background:0 0;padding:10px 12px}.primary-button:active,.secondary-button:active,.ghost-button:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:wait}.message{border-radius:12px;margin-top:16px;padding:13px 15px;font-weight:750}.error-box{background:var(--danger-bg);color:var(--danger);border-color:#ffd7d4}.success-box{background:var(--success-bg);color:var(--success);border-color:#c9eed8}.status-card{justify-content:center;align-items:center;gap:12px;margin-top:16vh;display:flex}.spinner{border:2px solid #d3ddd7;border-top-color:var(--brand);border-radius:999px;width:19px;height:19px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.center-actions{justify-content:center;display:flex}.auth-shell{place-items:center;min-height:100vh;padding:28px 16px;display:grid}.auth-card{border-radius:24px;width:min(460px,100%);padding:34px}.auth-copy{text-align:center;margin-bottom:25px}.auth-copy h1{font-size:clamp(28px,7vw,38px)}.auth-copy p{color:var(--muted);margin:0;line-height:1.55}.login-form{gap:15px;display:grid}.login-button{width:100%;margin-top:4px;padding:13px 18px}.dashboard-shell{padding-top:20px}.dashboard-heading{grid-template-columns:1fr auto;align-items:end;gap:26px;margin:12px 0 25px;display:grid}.hello{color:var(--brand-dark);margin:0 0 5px;font-weight:800}.count-card{background:var(--brand-soft);text-align:center;border:1px solid #c8edd8;border-radius:18px;min-width:150px;padding:16px 18px;display:grid}.count-card span,.count-card small{color:#4a6c58;font-size:12px;font-weight:750}.count-card strong{color:var(--brand-dark);font-size:32px;line-height:1.1}.toolbar-card{border-radius:17px;gap:10px;margin-bottom:18px;padding:13px;display:flex}.search-input{flex:1}.assignment-list{gap:13px;display:grid}.assignment-card{border-radius:18px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:18px;display:grid}.assignment-title-row{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.assignment-title-row h2{margin:0;font-size:22px}.status-chip{color:#68756d;background:#f2f4f3;border-radius:999px;flex:none;padding:6px 9px;font-size:11px;font-weight:800}.status-has-data{background:var(--brand-soft);color:var(--brand-dark)}.assignment-details{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px;display:grid}.assignment-field{min-width:0}.assignment-details>.assignment-field>span{color:var(--muted);margin-bottom:4px;font-size:11px;display:block}.assignment-details strong{overflow-wrap:anywhere;font-size:13px;line-height:1.4;display:block}.assignment-location{grid-column:1/-1}.location-value-row{align-items:center;gap:10px;display:flex}.location-value-row strong{flex:1}.copy-location-button{background:var(--brand-soft);min-height:34px;color:var(--brand-dark);font:inherit;cursor:pointer;white-space:nowrap;border:1px solid #c8edd8;border-radius:10px;flex:none;justify-content:center;align-items:center;gap:6px;padding:7px 10px;font-size:11px;font-weight:800;display:inline-flex}.copy-location-button:hover{filter:brightness(.98);border-color:#9edbb8}.copy-location-button:active{transform:translateY(1px)}.copy-location-button svg{fill:currentColor;width:16px;height:16px}.copy-location-button .copy-done{color:var(--brand-dark);margin:0}.survey-button{min-width:105px}.empty-state{text-align:center;padding:42px 20px}.empty-state p{color:var(--muted);margin-bottom:0}@media (max-width:720px){.shell,.form-shell{width:min(100% - 18px,1040px);padding-top:16px}.topbar{min-height:50px;margin-bottom:20px}.brand-logo{width:160px}.card{border-radius:16px;padding:17px}.readonly-grid,.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.dashboard-heading{grid-template-columns:1fr;align-items:stretch;gap:15px}.count-card{grid-template-columns:auto auto auto;justify-content:center;align-items:baseline;gap:7px}.count-card strong{font-size:27px}.toolbar-card{flex-direction:column}.assignment-card,.assignment-details{grid-template-columns:1fr}.location-value-row{align-items:flex-start}.copy-location-button{min-width:42px}.copy-location-button>span:not(.copy-done){display:none}.survey-button{width:100%}.assignment-title-row{align-items:center}.actions{flex-direction:column-reverse}.actions button{width:100%}.auth-card{border-radius:20px;padding:26px 20px}}.auto-grow-textarea{resize:none;min-height:48px;line-height:1.5;transition:border-color .15s,box-shadow .15s;overflow-y:hidden}.auto-grow-textarea.long{min-height:106px}
