:root{--deep:#123d35;--deep2:#164f44;--sea:#0d8770;--mint:#d7f2e9;--ink:#1c3030;--muted:#617273;--line:#dae6e4;--base:#f2f6f5;--white:#fff;--red:#c5323b;--pale:#fcebed;--yellow:#a96809;--amber:#fff3d7;--shadow:0 7px 35px rgba(25,61,53,.065)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--base);color:var(--ink);font:15px/1.5 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}a{color:var(--deep2);text-decoration:none}button,input,select,textarea{font:inherit}input,select,textarea{color:var(--ink)}button{cursor:pointer}strong{font-weight:750}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.4rem,2.7vw,1.85rem);line-height:1.17;letter-spacing:-.7px;margin:4px 0}h2{font-size:1.05rem;margin-bottom:17px;color:var(--deep)}p{margin-bottom:12px}.topbar{height:72px;background:var(--white);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(18px,calc((100vw - 1540px)/2));position:sticky;top:0;z-index:30}.brand{display:flex;gap:10px;align-items:center}.brand>div{display:flex;flex-direction:column}.brand strong{letter-spacing:1.2px;font-size:1.15rem;color:var(--deep)}.brand small{font-size:.59rem;font-weight:750;letter-spacing:1.45px;color:var(--sea)}.brandlogo{width:40px;height:40px;object-fit:contain;border-radius:10px}.headeruser{display:flex;align-items:center;gap:15px;font-size:.86rem;font-weight:650}.headeruser form{margin:0}.plain{border:0;color:var(--red);background:transparent;font-weight:700}.layout{max-width:1540px;margin:auto;display:grid;grid-template-columns:222px minmax(0,1fr);min-height:calc(100vh - 140px)}.side{background:#ecf2f0;border-right:1px solid var(--line);padding:25px 12px;display:flex;flex-direction:column;gap:2px}.nav-caption{font-size:.65rem;color:#78908a;letter-spacing:1.25px;font-weight:800;padding:4px 14px 15px}.side a{display:block;color:#516763;font-weight:650;border-radius:9px;padding:10px 12px;transition:.15s}.side a:hover{background:#e1eae6}.side a.sel{background:var(--deep);color:#fff}.layout main{padding:28px clamp(16px,2.5vw,38px) 50px;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.eyebrow{font-size:.71rem;letter-spacing:.1em;font-weight:800;text-transform:uppercase;color:var(--sea)}.date-pill{border:1px solid var(--line);background:#fff;border-radius:99px;padding:8px 12px;font-size:.78rem;color:#526d66;white-space:nowrap}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 20px}.metric{background:var(--white);padding:18px 18px 16px;border:1px solid var(--line);border-radius:14px;min-width:0;box-shadow:var(--shadow)}.metric small{display:block;font-size:.76rem;color:#627a74;font-weight:650}.metric strong{display:block;font-size:clamp(1.05rem,2vw,1.55rem);line-height:1.4;margin-top:7px;color:var(--deep);overflow-wrap:anywhere}.metric>span{display:block;color:#799088;font-size:.72rem;margin-top:3px}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;margin-bottom:18px;box-shadow:var(--shadow);overflow:hidden}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;align-items:end}.field{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:.81rem;font-weight:700;color:#3e5b54}.field>span{line-height:1.3}.field i{font-style:normal;color:var(--red)}.field input,.field select,.field textarea,.mini-input{width:100%;min-width:0;border:1px solid #cdded9;border-radius:10px;min-height:44px;padding:10px 12px;background:white;outline:none;font-weight:500;color:var(--ink)}.field textarea{resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--sea);box-shadow:0 0 0 3px rgba(13,135,112,.1)}.field input[type=file]{padding:8px;min-height:50px;background:#fbfdfc}.grid>button,.grid>.btn{width:fit-content;align-self:end}.btn{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:42px;border-radius:9px;border:1px solid transparent;padding:9px 15px;background:#edf3f1;color:var(--deep);font-weight:750;line-height:1.25;text-align:center;text-decoration:none;cursor:pointer;white-space:normal}.btn.primary{background:var(--deep);color:#fff}.btn.primary:hover{background:var(--deep2)}.btn.secondary{background:#eff4f1;color:var(--deep);border-color:#d5e4de}.btn.good{background:#d7f3e7;color:#067153}.btn.danger{background:var(--pale);color:var(--red)}.btn.small{min-height:31px;padding:5px 10px;font-size:.76rem;border-radius:7px}.quick{display:flex;gap:10px;flex-wrap:wrap}.hint{color:var(--muted);font-size:.83rem;line-height:1.6}.alert{border:1px solid #ffe5b1;border-left:4px solid #d79b32;background:#fff8e9;border-radius:9px;padding:12px 15px;margin:0 0 20px;font-size:.86rem}.alert.success{background:#e6f7ef;border-color:#b6e7d3;border-left-color:#1d9673}.alert.error{background:var(--pale);border-color:#f7d0d3;border-left-color:var(--red);color:#932630}.notice{border:1px solid #e2e9dc;background:#fafcf8;border-radius:9px;padding:12px 14px;margin:10px 0;color:#536862}.notice.green{background:#eff9f2;color:#256b4b}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid #e7eeee;border-radius:10px}table{width:100%;border-collapse:collapse;min-width:560px;font-size:.8rem}table th{text-align:left;white-space:nowrap;color:#54736a;font-size:.72rem;letter-spacing:.035em;text-transform:uppercase;background:#f5f9f7;padding:12px;border-bottom:1px solid var(--line)}table td{padding:12px;border-bottom:1px solid #edf1ee;vertical-align:middle}table tbody tr:last-child td{border-bottom:0}table tbody tr:hover{background:#fcfefc}table small{color:var(--muted)}.empty{text-align:center;color:var(--muted);padding:30px}.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:7px;font-size:.69rem;font-weight:800;letter-spacing:.025em;white-space:nowrap}.badge.good{background:#e3f7ec;color:#12764e}.badge.warn{background:#fff1d4;color:#9b630b}.badge.bad{background:#ffe8ea;color:#9d2630}.badge.muted{background:#eef2f1;color:#637570}.required{background:#ffe2e2;color:#a4202b;border-radius:6px;padding:4px 7px;font-size:.76rem;font-weight:800;white-space:nowrap}.inline-tools{display:flex;gap:12px;align-items:end;margin-bottom:18px;flex-wrap:wrap}.inline-tools label{color:var(--muted);font-size:.85rem}.inline-tools input{margin-left:9px;border:1px solid var(--line);border-radius:8px;padding:8px}.inline-form{display:inline-flex;gap:6px;margin:2px;align-items:center;flex-wrap:wrap}.inline-form .field{max-width:145px}.mini-input{width:130px;min-height:32px;padding:4px 8px}.inline-actions{display:flex;gap:3px;flex-wrap:wrap;margin-top:6px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 2px;border-bottom:1px solid #ebf0ed}.list-row:last-child{border:0}.list-row>span:first-child{color:var(--muted)}.text-link{font-weight:750;color:var(--sea)}.detail{display:grid;grid-template-columns:170px 1fr;gap:10px 12px;margin:0}.detail dt{font-size:.83rem;color:var(--muted)}.detail dd{margin:0;overflow-wrap:anywhere;font-weight:600}.photos{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:10px}.photo{border:1px solid var(--line);border-radius:11px;padding:6px}.photo img,.photos img{width:100%;height:145px;object-fit:cover;border-radius:8px}.photo form{margin-top:5px}.preview-value{grid-column:1/-1;background:#e7f7f0;border-radius:11px;padding:15px;display:flex;justify-content:space-between;gap:20px;align-items:center;color:var(--deep);font-size:.77rem;font-weight:700}.preview-value strong{font-size:1.5rem}.gallery-inputs{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.gallery-inputs .field{position:relative}.gallery-inputs .remove-pick{align-self:start;border:0;background:#ffe6e7;color:#a4202b;border-radius:6px;padding:3px 8px;font-size:.75rem}.photo-form{display:flex;flex-direction:column;gap:12px;margin-top:14px}.photo-form .btn{width:fit-content}.preview-thumb{height:75px;width:75px;object-fit:cover;border:1px solid #ddd;border-radius:8px;margin-top:4px}.section-divider{grid-column:1/-1;color:var(--deep);font-weight:800;border-top:1px solid var(--line);padding-top:18px}.foot{max-width:1540px;margin:0 auto;padding:18px;color:#82958f;font-size:.76rem;text-align:center}.company-preview{max-width:150px;max-height:100px;object-fit:contain}.login-wrap{display:flex;justify-content:center;align-items:center;min-height:calc(100vh - 132px);padding:24px}.login-card{background:#fff;padding:34px;border:1px solid var(--line);width:min(420px,100%);border-radius:20px;box-shadow:0 20px 75px rgba(22,75,64,.1)}.login-card h1{text-align:center;margin:0 0 12px}.login-card p{text-align:center;color:var(--muted);font-size:.83rem}.login-card form{display:flex;flex-direction:column;gap:15px}.login-crest{width:70px;height:70px;margin:0 auto 24px;border-radius:20px;background:var(--deep);color:#fff;display:grid;place-items:center;font-size:25px;font-weight:900;letter-spacing:1px}.login-card .btn{width:100%}details{border:1px solid var(--line);border-radius:10px;padding:10px;margin:7px 0}details summary{cursor:pointer;font-weight:750;color:var(--deep)}hr{border:0;border-top:1px solid var(--line);margin:12px 0}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:#edf4f1;padding:3px;border-radius:4px;overflow-wrap:anywhere}
@media(max-width:1100px){.metrics{grid-template-columns:repeat(2,1fr)}.side{width:200px}.layout{grid-template-columns:200px minmax(0,1fr)}}
@media(max-width:750px){.topbar{height:65px;padding:0 14px}.brand strong{font-size:1rem}.brand small{font-size:.54rem}.headeruser{font-size:.69rem;gap:7px}.headeruser span{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layout{display:block}.side{width:100%;display:flex;flex-direction:row;gap:5px;overflow-x:auto;position:sticky;top:65px;background:#f6faf8;padding:8px 10px;z-index:25;border-right:0;border-bottom:1px solid var(--line);scrollbar-width:none}.side::-webkit-scrollbar{display:none}.side .nav-caption{display:none}.side a{white-space:nowrap;padding:8px 12px;font-size:.76rem;border-radius:8px;flex-shrink:0}.layout main{padding:20px 12px 38px}.page-head{align-items:start;margin-bottom:18px}.page-head h1{font-size:1.33rem}.date-pill{font-size:.67rem;padding:7px;white-space:nowrap}.metrics{gap:8px;margin-bottom:14px}.metric{padding:14px 12px}.metric small{font-size:.67rem}.metric strong{font-size:1.06rem}.card{padding:15px;border-radius:12px;margin-bottom:12px}.grid{grid-template-columns:1fr;gap:13px}.grid>button{width:100%}.quick{gap:7px}.quick .btn{flex-grow:1;font-size:.82rem}.gallery-inputs{grid-template-columns:1fr}.detail{grid-template-columns:105px 1fr;font-size:.84rem}.photo img{height:120px}.preview-value strong{font-size:1.2rem}.foot{padding:15px 10px}.login-card{padding:24px}.inline-form .field{max-width:200px}table{font-size:.75rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* RBAC 3.1: mobile-first permissions management */
.rbac-list{display:flex;flex-direction:column;gap:.5rem}
.rbac-row{display:grid;grid-template-columns:minmax(180px,1fr) 140px auto;gap:.7rem;align-items:center;padding:.75rem;background:#f7faf8;border:1px solid #dce7e1;border-radius:12px}
.rbac-row small{display:block;color:#58665e;margin-top:.25rem;overflow-wrap:anywhere}
.rbac-row select{width:100%;min-height:40px;padding:6px;border-radius:8px;border:1px solid #cbd9d2}
@media (max-width:680px){.rbac-row{grid-template-columns:1fr 1fr}.rbac-row>div{grid-column:1 / -1}.rbac-row .btn{width:100%}}
