:root{--ink:#14202A;--muted:#5C6874;--line:#E8EDF0;--bg:#F4F7F8;--teal:#0F7882;--teal-50:#E6F4F5;--ok:#157A45;--ok-bg:#E7F5ED;--warn:#965006;--warn-bg:#FFF2DB;--err:#B23436;--err-bg:#FCECEC}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--teal)}
h1{font-size:28px;margin:0 0 4px}h2{font-size:19px;margin:0 0 12px}
.top{background:#fff;border-bottom:1px solid var(--line);padding:12px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.brand{font-weight:700;color:var(--ink);text-decoration:none;font-size:18px}.brand span{font-weight:400;color:var(--muted);font-size:15px}
.top nav{display:flex;gap:16px;align-items:center}.top form{margin:0}
.wrap{max-width:1100px;margin:0 auto;padding:24px 20px 64px;display:flex;flex-direction:column;gap:20px}
.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.card{background:#fff;border-radius:18px;padding:22px;box-shadow:0 1px 2px rgba(20,32,42,.06)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));gap:20px}
.row{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.wrapgap{flex-wrap:wrap;gap:12px}.grow{flex:1 1 220px}
.muted{color:var(--muted)}.small{font-size:14px}.ok{color:var(--ok)}.warn{color:var(--warn)}.err{color:var(--err)}
.badge{display:inline-block;padding:4px 12px;border-radius:999px;font-size:13px;font-weight:700}.badge.big{font-size:15px;padding:6px 16px}
.badge--on{background:var(--ok-bg);color:var(--ok)}.badge--off{background:var(--err-bg);color:var(--err)}
.project{text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:6px;border:2px solid transparent}
.project:hover{border-color:var(--teal-50)}.project.is-off{border-color:var(--err-bg)}.pname{font-size:19px}
dl{margin:8px 0 0}dl div{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-top:1px solid var(--line)}dt{color:var(--muted)}dd{margin:0;text-align:right}
.lines div:first-child{border-top:0}
.status{border-left:6px solid var(--ok)}.status.is-off{border-left-color:var(--err);background:#FFFBFB}.status p{margin:0 0 14px}
.btn{border:0;border-radius:12px;background:var(--teal);color:#fff;font-weight:600;font-size:16px;padding:12px 20px;cursor:pointer;min-height:46px}
.btn:hover{filter:brightness(.95)}.btn--danger{background:var(--err)}.btn--ok{background:var(--ok)}
.link{border:0;background:none;color:var(--teal);cursor:pointer;font:inherit;padding:0}.link.err{color:var(--err)}
.form{display:flex;flex-direction:column;gap:14px}.narrow{max-width:440px}
label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600;color:#33414C}label small{font-weight:400;color:var(--muted)}
input,textarea{font:inherit;font-weight:400;border:1px solid #D5DDE2;border-radius:10px;padding:10px 12px;color:var(--ink);background:#fff;width:100%}
input:focus,textarea:focus{outline:2px solid var(--teal);border-color:var(--teal)}
.check{flex-direction:row;align-items:center;gap:10px;font-weight:500}.check input{width:20px;height:20px}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:12px}.three{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));gap:12px}
.flash{border-radius:12px;padding:12px 16px;font-weight:500}.flash--ok{background:var(--ok-bg);color:var(--ok)}.flash--warn{background:var(--warn-bg);color:var(--warn)}.flash--err{background:var(--err-bg);color:var(--err)}
.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:15px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);white-space:nowrap}th{color:var(--muted);font-weight:600;font-size:13px}td form{margin:0}.total td{font-weight:700;border-bottom:0}
.log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:14px}
.login{width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px}.login h1{margin:0}.login p{margin:0}
