.today{max-width:920px;margin:0 auto}.today-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px}.today-eyebrow{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-deep);font-weight:700;margin:0 0 6px}.today-date{margin:0;font-size:1.9rem;letter-spacing:-.02em}.pill{display:inline-flex;align-items:center;padding:6px 14px;border-radius:999px;font-size:.8rem;font-weight:600;white-space:nowrap}.pill-ok{background:#e2f1ec;color:var(--accent-deep)}.pill-warn{background:#fbeede;color:#9a5b16}.pill-neutral{background:#eaeeec;color:var(--muted)}.summary{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:28px}.stat{background:var(--surface);padding:18px 20px;display:flex;flex-direction:column;gap:4px}.stat-value{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.stat-label{font-size:.78rem;color:var(--muted)}.stat-warn .stat-value{color:#9a5b16}.state{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;text-align:center;color:var(--muted)}.state-error{color:var(--danger)}.joblist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.job{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:var(--radius);padding:16px 18px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.job-scheduled{border-left-color:var(--muted)}.job-in_progress{border-left-color:var(--accent)}.job-done{border-left-color:#79c2ae}.job-missed{border-left-color:var(--danger)}.job-cancelled{border-left-color:var(--line);opacity:.7}.job-main{min-width:0}.job-site{display:flex;align-items:baseline;gap:10px}.job-name{font-weight:600;font-size:1rem}.job-area{font-size:.8rem;color:var(--muted)}.job-task{margin:6px 0 0;font-size:.86rem;color:var(--muted);line-height:1.45}.job-meta{display:flex;flex-direction:column;align-items:flex-end;gap:8px;white-space:nowrap}.assign{display:flex;align-items:center;gap:8px}.assign-select,.status-select{font-family:inherit;font-weight:600;border-radius:7px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-repeat:no-repeat;transition:border-color .12s ease,box-shadow .12s ease}.assign-select:focus,.status-select:focus{outline:none;box-shadow:0 0 0 3px #1f8a702e}.assign-select:disabled,.status-select:disabled{opacity:.6;cursor:wait}.assign-select{font-size:.86rem;color:var(--ink);background-color:#f5f8f6;border:1px solid var(--line);padding:5px 26px 5px 10px;background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%236b7a72' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 9px center}.assign-select:focus{border-color:var(--accent)}.assign-empty{color:#9a5b16;border-color:#e6cfae;background-color:#fcf3e6}.off-team{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#9a5b16;background:#fbeede;border-radius:5px;padding:2px 6px}.status-select{font-size:.74rem;border:1px solid transparent;padding:4px 22px 4px 9px;background-color:#eef2f0;color:var(--ink-soft);background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23556' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 7px center}.status-select.status-scheduled{background-color:#eef2f0;color:var(--ink-soft)}.status-select.status-in_progress{background-color:#e4f3ef;color:var(--accent-deep)}.status-select.status-done{background-color:#e2f1ec;color:var(--accent-deep)}.status-select.status-missed{background-color:#fbecea;color:var(--danger)}.status-select.status-cancelled{background-color:#eef0ee;color:var(--muted)}.job-price{font-size:.82rem;color:var(--muted)}@media (max-width: 560px){.summary{grid-template-columns:1fr}.job{flex-direction:column}.job-meta{flex-direction:row;align-items:center;flex-wrap:wrap}}:root{--ink: #122019;--ink-soft: #2b3a32;--paper: #eef1ee;--surface: #ffffff;--line: #d9e0db;--accent: #1f8a70;--accent-deep:#176b57;--muted: #6b7a72;--danger: #b3402f;--radius: 10px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}.screen-centered{min-height:100%;display:grid;place-items:center;color:var(--muted);padding:24px}.notice{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:32px;max-width:380px;text-align:center}.notice h1{margin:0 0 8px;font-size:1.25rem;color:var(--ink)}.notice p{margin:0;color:var(--muted);line-height:1.5}.login{min-height:100%;display:grid;place-items:center;padding:24px;background:radial-gradient(120% 90% at 50% -10%,#1b2e25 0%,var(--ink) 55%)}.login-card{width:100%;max-width:360px;background:var(--surface);border-radius:14px;padding:36px 32px 32px;box-shadow:0 24px 60px #06120d59}.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:28px}.login-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:8px;background:var(--ink);color:#fff;font-weight:700;letter-spacing:-.04em;font-size:.95rem}.login-name{font-weight:600;letter-spacing:.14em;text-transform:uppercase;font-size:.72rem;color:var(--muted)}.login-title{margin:0 0 4px;font-size:1.5rem;letter-spacing:-.02em}.login-sub{margin:0 0 24px;color:var(--muted);font-size:.9rem}.field{display:block;margin-bottom:16px}.field span{display:block;font-size:.78rem;font-weight:600;color:var(--ink-soft);margin-bottom:6px}.field input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:8px;font-size:.95rem;font-family:inherit;color:var(--ink);background:#fbfdfc;transition:border-color .12s ease,box-shadow .12s ease}.field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #1f8a702e}.login-error{background:#fbecea;color:var(--danger);border-radius:8px;padding:9px 12px;font-size:.85rem;margin-bottom:16px}.login-btn{width:100%;padding:12px;border:none;border-radius:8px;background:var(--accent);color:#fff;font-weight:600;font-size:.95rem;font-family:inherit;cursor:pointer;transition:background .12s ease}.login-btn:hover:not(:disabled){background:var(--accent-deep)}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-btn:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.app-shell{min-height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:58px;background:var(--ink);color:#fff}.topbar-brand{display:flex;align-items:center;gap:10px}.topbar-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;background:var(--accent);color:#fff;font-weight:700;font-size:.8rem;letter-spacing:-.04em}.topbar-name{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:#c7d3cd}.topbar-right{display:flex;align-items:center;gap:16px}.topbar-user{font-size:.88rem;color:#dde6e1}.ghost-btn{background:transparent;border:1px solid rgba(255,255,255,.22);color:#fff;padding:6px 12px;border-radius:7px;font-size:.82rem;font-family:inherit;cursor:pointer;transition:background .12s ease}.ghost-btn:hover{background:#ffffff1a}.content{flex:1;padding:40px 24px}.placeholder{max-width:540px;margin:0 auto;text-align:center;padding-top:8vh}.placeholder-eyebrow{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-deep);font-weight:700;margin:0 0 12px}.placeholder h1{margin:0 0 12px;font-size:2rem;letter-spacing:-.02em}.placeholder-body{color:var(--muted);line-height:1.6;margin:0}@media (prefers-reduced-motion: reduce){*{transition:none!important}}
