*{box-sizing:border-box}
body{font-family:Arial,sans-serif;margin:0;background:#f2f2f2;color:#222}
.topbar{background:#fff;min-height:56px;padding:8px 16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e5e5e5;flex-wrap:wrap;gap:8px;position:sticky;top:0;z-index:101;box-shadow:0 1px 6px rgba(0,0,0,.08)}
.topbar b{font-size:16px;letter-spacing:.5px}
.topbar>div{display:flex;align-items:center}
.topbar b{font-size:16px}
.topbar a{color:#555;text-decoration:none;font-size:14px}
.role{font-size:11px;font-weight:bold;padding:2px 8px;border:1px solid #999;border-radius:10px;margin-left:8px}
.small{color:#777;font-size:12px}
.wrap{max-width:960px;margin:0 auto;padding:14px}
.wrap.narrow{max-width:360px;padding-top:60px}
.authcard{background:#fff;padding:24px;border:1px solid #ddd;border-radius:8px;text-align:center}
.authcard h2{margin:0 0 14px}
.authcard .lock{font-size:40px}
.authcard .sub{color:#777;font-size:13px;margin-bottom:14px}
.authcard input{width:100%;padding:10px;border:1px solid #ccc;border-radius:6px;margin-bottom:10px;font-size:14px}
.cards{display:flex;gap:10px;margin-bottom:14px}
.card{flex:1;background:#fff;border:1px solid #ddd;border-radius:8px;padding:12px;text-align:center}
.card .n{font-size:26px;font-weight:bold}.card .l{color:#777;font-size:13px}
.tabs{margin:4px 0 12px}.tabs a{display:inline-block;padding:8px 16px;background:#fff;color:#333;text-decoration:none;border:1px solid #ddd;border-radius:6px;margin:0 6px 6px 0;font-size:14px}.tabs a.on{background:#333;color:#fff}
.tablewrap{overflow-x:auto;background:#fff;border:1px solid #ddd;border-radius:8px}
table{width:100%;border-collapse:collapse;font-size:14px;min-width:620px}
th{background:#eee;padding:10px;text-align:left}
td{padding:8px 10px;border-top:1px solid #eee;vertical-align:top}
.badge{display:inline-block;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:bold;border:1px solid #999}
.allow{color:#0a0}.deny{color:#c00}
button{padding:6px 12px;border:1px solid #999;border-radius:6px;cursor:pointer;font-size:13px;background:#fff}
button:hover{background:#eee}
button.wide{width:100%;padding:10px;font-size:15px;background:#333;color:#fff}
button.warn{background:#eee}
input[type=text],input[type=password],select{padding:7px;border:1px solid #ccc;border-radius:6px;width:100%;margin:4px 0;font-size:14px;background:#fff;color:#222}
.notice{padding:10px 14px;border:1px solid #999;border-radius:8px;margin-bottom:12px;font-size:14px;background:#fff}
.ok{border-color:#0a0}.err{border-color:#c00;color:#c00}
.graphpaper{display:flex;justify-content:space-around;align-items:flex-end;background-color:#fff;background-image:linear-gradient(#e8e8e8 1px,transparent 1px),linear-gradient(90deg,#e8e8e8 1px,transparent 1px);background-size:20px 20px;border:1px solid #ccc;border-radius:8px;padding:16px 16px 10px;margin-bottom:16px;min-height:200px}
.gbar{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:1}
.gval{font-weight:bold;font-size:16px;margin-bottom:6px}
.gcol{width:52px;border-radius:6px 6px 0 0}
.glab{font-size:13px;margin-top:6px;color:#333}
.setgrid{background:#fff;border:1px solid #ddd;border-radius:8px;padding:16px}
.setgrid label{font-size:13px;color:#555}
.setgrid input{margin:4px 0 10px}
.setgrid h3{margin:14px 0 6px}.setgrid h3:first-child{margin-top:0}
.uid{font-weight:bold}
#cmodal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
#emodal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
#amodal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
#pwmodal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
#billmodal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
#paymodal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
#dmodal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
#aemodal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
.dd{position:relative;display:inline-block}
.ddmenu{display:none;position:absolute;right:0;top:100%;background:#fff;border:1px solid #ddd;border-radius:8px;min-width:110px;z-index:50;box-shadow:0 4px 14px rgba(0,0,0,.12)}
.ddmenu a{display:block;padding:9px 14px;color:#333;text-decoration:none;font-size:14px}
.ddmenu a:hover{background:#f2f2f2}
#rmodal{display:flex;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:200;justify-content:center;align-items:center;padding:20px}
#cmodal .cbox,#rmodal .cbox,#emodal .cbox,#amodal .cbox,#dmodal .cbox,#aemodal .cbox,#billmodal .cbox,#pwmodal .cbox,#paymodal .cbox{background:#fff;border-radius:12px;padding:22px;max-width:360px;width:100%;text-align:center}
#cmodal h3,#rmodal h3,#emodal h3,#amodal h3,#dmodal h3,#aemodal h3,#billmodal h3,#pwmodal h3,#paymodal h3,#billmodal h3,#pwmodal h3{margin:0 0 8px;font-size:17px}
#cmodal p,#rmodal p,#emodal p,#amodal p{color:#555;font-size:14px;margin:0 0 16px}
#cmodal .crow,#rmodal .crow,#emodal .crow,#amodal .crow,#dmodal .crow,#aemodal .crow,#billmodal .crow,#pwmodal .crow,#paymodal .crow,#billmodal .crow,#pwmodal .crow{display:flex;gap:10px;justify-content:center}
.segrow{display:flex;gap:8px;margin:4px 0 6px}
.segrow button{flex:1;padding:10px;font-size:14px;background:#fff;border:1px solid #999;color:#333}
.segrow button.segon{background:#333;color:#fff;border-color:#333}
.segrow button.segon.deny{background:#c00;border-color:#c00}
.closetext{color:#c00;cursor:pointer;font-size:14px;text-decoration:underline}
button.go{background:#16a34a;border-color:#16a34a}
button.go:hover{background:#15803d}
#cmodal button,#rmodal button,#emodal button,#amodal button,#dmodal button,#aemodal button,#billmodal button,#pwmodal button,#paymodal button,#billmodal button,#pwmodal button{min-width:100px;padding:10px 18px;font-size:14px}
.pager a{display:inline-block;padding:6px 12px;background:#fff;border:1px solid #ddd;color:#333;text-decoration:none;border-radius:6px;margin:2px}
table.urows{width:100%;background:#fff}
table.urows thead{display:table-header-group}
table.urows tbody{display:table-row-group}
table.urows tr{display:table-row}
table.urows th{background:#eee;font-size:12px;text-align:left}
table.urows th,table.urows td{display:table-cell;border:0;border-bottom:1px solid #f0f0f0;padding:8px 6px;font-size:13px;vertical-align:middle}
table.urows td::before{display:none}
table.urows th:nth-child(3),table.urows td:nth-child(3),table.urows th:last-child,table.urows td:last-child{text-align:right}
.ham{display:inline-block;background:transparent;border:0;border-radius:0;cursor:pointer;color:#333;width:40px;height:40px;margin-right:8px;position:relative;box-shadow:none;outline:none;-webkit-tap-highlight-color:transparent}
.ham:hover{background:transparent}
.ham span{display:block;position:absolute;left:10px;width:20px;height:2px;background:#333;border-radius:2px;transition:all .25s ease}
.ham span:nth-child(1){top:13px}
.ham span:nth-child(2){top:19px}
.ham span:nth-child(3){top:25px}
.ham.open span:nth-child(1){top:19px;transform:rotate(45deg)}
.ham.open span:nth-child(2){opacity:0}
.ham.open span:nth-child(3){top:19px;transform:rotate(-45deg)}
#side{display:block;position:fixed;top:0;left:0;height:100dvh;width:250px;background:#fff;border-right:1px solid #e5e5e5;z-index:100;transform:translateX(-105%);transition:transform .25s ease;padding:70px 12px 12px;box-shadow:none}
#side.open{transform:translateX(0)}
#back{display:none}
@media(max-width:640px){
  table.cols3,table.cols3 thead,table.cols3 tbody,table.cols3 tr,table.cols3 td{display:table;min-width:0}
  table.cols3 thead{display:table-header-group}
  table.cols3 tbody{display:table-row-group}
  table.cols3 tr{display:table-row;background:#fff;border:0;border-radius:0;margin-bottom:0;padding:0}
  table.cols3 th,table.cols3 td{display:table-cell;border:0;border-bottom:1px solid #f0f0f0;padding:8px 6px;font-size:12px;vertical-align:middle}
  table.cols3 td::before{display:none}
  table.cols3 .uid{font-size:13px}
table.cols3 th:last-child,table.cols3 td:last-child{text-align:right}
  table.urows{display:table;width:100%;background:#fff}
  table.urows thead{display:table-header-group}
  table.urows tbody{display:table-row-group}
  table.urows tr{display:table-row;background:none;border:0;margin:0;padding:0}
  table.urows th,table.urows td{display:table-cell;border:0;border-bottom:1px solid #f0f0f0;padding:6px 4px;font-size:11px;vertical-align:middle}
  table.urows td::before{display:none}
  table.urows th:last-child,table.urows td:last-child{text-align:right}
  table.urows input[type=text]{font-size:11px;padding:5px}
  table.urows button{font-size:11px;padding:5px 8px;min-height:0}
  .cards{flex-direction:row;gap:8px}
  .card{padding:10px 6px}
  .card .n{font-size:22px}
  .card .l{font-size:11px}
  .wrap{padding:10px}
  .topbar{padding:10px 12px}
  .topbar b{font-size:15px}
  button{padding:10px 16px;font-size:14px;min-height:42px}
  input[type=text],input[type=password],select{padding:10px;font-size:15px}
  .tablewrap{overflow-x:visible}
  table,thead,tbody,tr,td{display:block;min-width:0}
  thead{display:none}
  table{background:none}
  tr{background:#fff;border:1px solid #ddd;border-radius:10px;margin-bottom:12px;display:block;padding:6px 4px}
  td{border:0;border-bottom:1px solid #f0f0f0;padding:8px 12px}
  td:last-child{border-bottom:0}
  td::before{content:attr(data-l);display:block;font-size:11px;color:#888;text-transform:uppercase;margin-bottom:2px}
  td.noL::before{display:none}
  .ham{display:inline-block}
  #side{display:block;position:fixed;top:0;left:0;height:100dvh;width:250px;background:#fff;border-right:1px solid #e5e5e5;z-index:100;transform:translateX(-105%);transition:transform .25s ease;padding:70px 12px 12px;box-shadow:none}
  #side.open{transform:translateX(0)}
  #side a{display:block;padding:12px 16px;color:#333;text-decoration:none;font-size:15px;border-radius:10px;margin-bottom:4px}
  #side a:hover{background:#f2f2f2}
  #side a.on{background:#333;color:#fff}
  .sidefoot{position:absolute;bottom:12px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;padding:1px 14px;background:#ffe5e5;border:2px solid #c00;border-radius:8px}
  .sidefoot .adminname{color:#900;font-weight:bold;font-size:15px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
  .sidefoot .logoutlogo{color:#c00;font-size:22px;line-height:1;text-decoration:none;padding:0 4px}
  #back{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:99}
}
