@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#f5f5f0;--paper:#fff;--ink:#1e3532;--muted:#687873;--line:#e1e6df;--green:#245c4e;--pale:#e7efe7;--amber:#94611d}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',system-ui,sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button,.button{cursor:pointer;border:1px solid var(--line);background:white;color:var(--ink);border-radius:8px;padding:10px 15px;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}button:hover,.button:hover{border-color:var(--green);background:#f0f5ef}button:disabled{opacity:.5;cursor:wait}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#174237;color:white}input,select,textarea{border:1px solid #cdd7cf;background:white;border-radius:7px;padding:11px;color:var(--ink);width:100%}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:3px solid #91b7a1;outline-offset:2px}textarea{min-height:90px;resize:vertical}label{display:block;font-weight:600;margin-bottom:7px}label input,label textarea,label select{margin-top:7px}p{line-height:1.6}.muted{color:var(--muted)}header{background:#fff;border-bottom:1px solid var(--line);padding:18px 4vw;display:flex;justify-content:space-between;align-items:center}.brand{display:flex;align-items:center;gap:14px}.logo{background:var(--ink);color:white;width:42px;height:46px;display:grid;place-items:center;font-family:Manrope,sans-serif;font-size:25px;font-weight:800;border-radius:4px 4px 15px 4px}.brand strong{font-family:Manrope,sans-serif;letter-spacing:2px;font-size:19px}.brand small{display:block;margin-top:3px;color:var(--muted);font-size:11px;letter-spacing:1.5px}.user{display:flex;align-items:center;gap:16px}.user span{font-size:13px}main{max-width:1320px;margin:0 auto;padding:42px 4vw}.eyebrow{letter-spacing:2px;font-size:11px;font-weight:700;color:var(--green)}h1,h2,h3{font-family:Manrope,system-ui,sans-serif}h1{font-size:36px;font-weight:600;letter-spacing:-1.5px;margin:8px 0}h2{font-size:22px;margin:0 0 12px}h3{font-size:16px;margin:0 0 8px}.intro{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.intro p{margin:8px 0;color:var(--muted)}.stats{display:flex;gap:26px;margin:0 0 26px}.stat{padding-left:14px;border-left:2px solid #bccfc0}.stat b{font-size:24px;margin-right:7px}.stat span{font-size:12px;color:var(--muted)}.tools{display:grid;grid-template-columns:1fr 190px 160px;gap:12px;margin:20px 0}.event-list{background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.list-head,.event{display:grid;grid-template-columns:105px minmax(180px,1fr) 190px 185px 75px;gap:18px;padding:15px 22px;align-items:center}.list-head{font-size:10px;letter-spacing:1.2px;color:var(--muted);background:#edf0e9;font-weight:700}.event{border-top:1px solid var(--line);min-height:88px}.event:hover{background:#fafcf8}.event h3{margin:0 0 5px}.event small{color:var(--muted);display:block;line-height:1.6}.date{font-size:22px;font-weight:600;line-height:1.1}.date span{display:block;font-size:11px;margin-top:5px;color:var(--muted);font-weight:500}.badge{font-size:11px;display:inline-block;padding:5px 8px;border-radius:5px;background:var(--pale);color:var(--green);font-weight:600}.pending{background:#fbefd9;color:var(--amber)}.neutral{background:#eef0ed;color:#6b756d}.empty{text-align:center;padding:65px 25px}.empty p{color:var(--muted);max-width:430px;margin:12px auto}.footer{font-size:11px;color:var(--muted);margin-top:22px;display:flex;justify-content:space-between}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-art{background:#1e3933;color:#fff;padding:8vw;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.tower{position:absolute;right:-20px;bottom:-70px;width:250px;height:650px;transform:skewY(-14deg);border:1px solid #718e8038;background:repeating-linear-gradient(0deg,transparent,transparent 22px,#718e8030 23px,transparent 24px),repeating-linear-gradient(90deg,transparent,transparent 38px,#718e8030 39px,transparent 40px)}.login-art h1{font-size:clamp(38px,4vw,65px);line-height:1.12;max-width:530px;position:relative}.login-art p{color:#bbcfc1;max-width:350px;position:relative}.login-art .eyebrow{color:#b0c5a9}.login-form{display:flex;align-items:center;justify-content:center;padding:40px}.login-card{width:100%;max-width:350px}.login-card h2{font-size:28px;margin-top:30px}.login-card label{margin-top:20px}.login-card button{width:100%;margin-top:20px}.login-card .brand strong{font-size:25px}.overlay{position:fixed;inset:0;background:#152e2870;z-index:10;display:flex;justify-content:flex-end}.drawer{background:var(--bg);width:min(720px,100%);height:100%;overflow-y:auto;padding:28px 32px;box-shadow:-15px 0 80px #13261f20}.drawer-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.card{background:white;border:1px solid var(--line);border-radius:10px;padding:22px;margin-bottom:18px}.card.current{border-top:3px solid var(--green)}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.row.wrap{flex-wrap:wrap}.detail-title{margin-bottom:24px}.detail-title h2{font-size:27px;margin-top:8px}.note{border-top:1px solid var(--line);padding:16px 0 4px}.note p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}.note small{font-size:11px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .wide{grid-column:1/-1}.check{display:flex;align-items:flex-start;gap:9px;font-weight:400;margin:10px 0}.check input{width:16px;margin:3px 0}.history{margin-top:15px;border-top:1px solid var(--line);padding-top:15px}summary{cursor:pointer;color:var(--muted);font-size:12px}.error{color:#9c3834;font-size:13px;margin-top:12px;white-space:pre-wrap}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:13px 23px;border-radius:8px;z-index:30;display:none;max-width:90vw}.hint{font-size:12px;color:var(--muted)}.revision-summary{white-space:pre-wrap;overflow-wrap:anywhere}.loading{padding:70px;text-align:center}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:1000px){.list-head,.event{grid-template-columns:85px 1fr 155px 130px}.event>button,.list-head>span:last-child{grid-column:2/-1}.event>button{justify-self:start;padding:5px 15px}.list-head>span:last-child{display:none}}@media(max-width:650px){.login{display:block}.login-art{display:none}.login-form{min-height:100vh;padding:30px}header{padding:15px 20px}.brand strong{font-size:16px}.user{gap:8px}.user span{display:none}main{padding:27px 18px}h1{font-size:29px}.intro{align-items:flex-start}.intro .primary{white-space:nowrap;padding:10px}.stats{gap:16px}.stat b{font-size:21px}.stat span{display:block;margin-top:4px}.tools{grid-template-columns:1fr 1fr}.tools>input{grid-column:1/-1}.list-head{display:none}.event{grid-template-columns:62px 1fr;gap:12px;padding:17px}.event>div:nth-child(3),.event>div:nth-child(4){grid-column:2}.event>button{grid-column:2}.date{font-size:21px;align-self:start}.drawer{padding:22px 18px}.card{padding:18px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:1}.footer{gap:15px}.intro p{font-size:13px}}
.dropzone{padding:26px 18px;border:2px dashed #a4b8a7;border-radius:12px;text-align:center;background:#edf3e9;margin:18px 0 24px}.dropzone label{cursor:pointer;font-size:16px}.dropzone input{max-width:440px;background:white}.dropzone.dragging{background:#dbead5;border-color:var(--green)}.filename{overflow-wrap:anywhere;word-break:break-word}.upload-item{margin-top:16px}.upload-item .form-grid{margin-top:14px}.upload-item.uploaded{background:#f1f7ee;border-color:#b7cdb6}.upload-item progress{width:100%;height:9px;margin-top:14px;accent-color:var(--green)}#batchActions{position:sticky;bottom:0;padding:16px;background:var(--bg);border-top:1px solid var(--line);display:flex;align-items:center;gap:14px}#batchActions[hidden]{display:none}.drawer button:disabled{cursor:wait}
