:root{--navy:#0c172b;--ink:#1d2940;--orange:#ff6937;--bg:#f5f7fb;--muted:#7c879a;--line:#e7ebf2;--blue:#3165ff}
*{box-sizing:border-box}html{font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;font-size:14px}body{margin:0;color:var(--ink);background:var(--bg)}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(24px,3vw,32px);letter-spacing:-.04em;margin-bottom:8px}h2{font-size:18px;margin-bottom:19px}p{line-height:1.7}.muted,.page-head p{color:var(--muted)}.eyebrow{font-size:11px;color:var(--orange);font-weight:800;letter-spacing:.16em;margin-bottom:10px}.app-shell{display:grid;grid-template-columns:258px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--navy);color:#c6d0e2;display:flex;flex-direction:column;min-height:100vh;padding:27px 15px;position:sticky;top:0;height:100vh}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:3px 14px 33px;color:#fff}.mark,.brand-logo{display:grid;place-items:center;background:var(--orange);color:white;border-radius:12px;width:42px;height:42px;font-size:28px;font-weight:900;box-shadow:0 7px 18px #ff69373c}.sidebar-brand strong{display:block;font-size:18px;letter-spacing:.12em}.sidebar-brand small{display:block;font-size:9px;color:#94a3bd;letter-spacing:.18em;margin-top:3px}.sidebar-label{color:#64748c;font-weight:800;font-size:10px;letter-spacing:.15em;margin:12px 16px 10px}.sidebar-nav{display:flex;flex-direction:column;gap:4px}.sidebar-nav>a{display:flex;align-items:center;gap:11px;min-height:45px;padding:0 16px;border-radius:8px;font-weight:600}.sidebar-nav>a span{font-size:19px;width:23px;text-align:center}.sidebar-nav>a:hover{background:#1b2c48;color:#fff}.sidebar-nav>a.selected{background:#253756;color:white;box-shadow:inset 3px 0 0 var(--orange)}.sidebar-bottom{margin-top:auto;padding:18px 13px 0;border-top:1px solid #23324c;font-size:11px;color:#8494ae}.sidebar-bottom div{margin-top:4px;color:#c6d0e2;font-weight:600}.app-main{min-width:0;display:flex;flex-direction:column}.topbar{height:76px;background:white;border-bottom:1px solid var(--line);padding:0 42px;display:flex;align-items:center;justify-content:flex-end}.topbar-right{display:flex;align-items:center;gap:12px}.user-avatar{border-radius:50%;background:#eaf0ff;color:#4663bf;font-size:16px;font-weight:800;width:37px;height:37px;display:grid;place-items:center}.user-info{display:flex;flex-direction:column;gap:3px;min-width:120px}.user-info strong{font-size:12px}.user-info small{color:var(--muted);font-size:10px}.logout-form{margin-left:18px}.logout-btn{border:1px solid #e1e6ef;background:white;border-radius:8px;padding:9px 12px;color:#56637b;font-weight:600}.logout-btn:hover{border-color:var(--orange);color:var(--orange)}.content{width:100%;max-width:1370px;margin:0 auto;padding:40px 45px 48px;flex:1}.hero{background:linear-gradient(115deg,#132b50,#132440 62%,#1c355a);color:white;padding:39px 43px;border-radius:18px;position:relative;overflow:hidden;margin-bottom:36px;min-height:177px}.hero::before,.hero::after{content:"";position:absolute;border:1px solid #ffffff13;border-radius:50%;width:350px;height:350px;right:-38px;top:-160px;pointer-events:none}.hero::after{width:270px;height:270px;right:40px;top:-116px}.hero h1,.hero p{position:relative;z-index:1}.hero p{color:#aebed6;margin:0}.section-title{display:flex;align-items:baseline;gap:15px;margin-bottom:18px}.section-title h2{margin:0;font-size:20px}.section-title span{color:#94a0b2;font-size:12px;font-weight:800}.service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.service-card{min-height:228px;border:1px solid #e9edf4;background:white;padding:24px;border-radius:15px;transition:transform .16s,box-shadow .16s,border-color .16s;display:flex;flex-direction:column}.service-card[href]:hover{transform:translateY(-3px);box-shadow:0 18px 36px #20304b12;border-color:#a9bcec}.service-icon,.permission-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:13px;background:#f1f5ff;font-size:24px;margin-bottom:17px}.service-category{color:#667d9e;font-size:10px;letter-spacing:.05em;font-weight:800;margin-bottom:7px}.service-card h3{font-size:17px;margin:0 0 7px}.service-card p{color:#8b97a8;margin:0 0 23px;font-size:12px}.service-bottom{margin-top:auto;color:var(--blue);font-weight:800;font-size:12px;display:flex;justify-content:space-between;align-items:center}.service-bottom span{font-size:18px}.service-card.unconfigured{background:#f9fafc;color:#7c879a}.service-card.unconfigured .service-bottom{color:#9aa4b2}.footer-note{color:#9da6b3;font-size:11px;margin-top:28px}.main-footer{text-align:center;padding:16px;color:#a3acba;font-size:10px}.mobile-brand,.mobile-nav{display:none}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.page-head p{margin:0}.count-pill{background:#edf2ff;color:#5671ba;padding:9px 13px;border-radius:30px;font-weight:800;font-size:12px}.panel{background:white;border:1px solid var(--line);border-radius:16px;padding:27px 30px;margin-bottom:20px;box-shadow:0 8px 24px #21335106}.panel>h2{margin-bottom:21px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{background:#f7f9fc;color:#8c98aa;font-size:11px;padding:14px;font-weight:800}td{border-bottom:1px solid #edf0f4;padding:14px;font-size:12px;color:#58667d}tbody tr:last-child td{border-bottom:none}td.strong{color:#1c2b43;font-weight:800}.badge{background:#f1f4fa;border-radius:5px;padding:5px 8px;color:#6f7c91;font-size:10px}.status{font-size:11px;font-weight:800}.status::before{content:"";display:inline-block;width:6px;height:6px;border-radius:100%;margin-right:6px}.status.active{color:#2a9865}.status.active::before{background:#2cba81}.status.inactive{color:#b06a6a}.status.inactive::before{background:#d98a8a}.button{display:inline-flex;align-items:center;justify-content:center;min-height:41px;border-radius:8px;padding:10px 18px;font-weight:800;border:1px solid transparent;white-space:nowrap;transition:background .15s}.button.primary{background:var(--orange);color:white}.button.primary:hover{background:#e95222}.button.secondary{background:#15233b;color:white}.button.secondary:hover{background:#2a4164}.button.ghost{background:white;color:#324b77;border-color:#dce3ef}.button.ghost:hover{background:#f4f7fc}.button.small{min-height:31px;padding:5px 12px;font-size:11px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px 20px;align-items:end}.form-action{display:flex;align-items:flex-end;justify-content:flex-start}.stack{display:flex;flex-direction:column;gap:18px}.stack .button{width:100%;min-height:45px}label:not(.permission-row):not(.check-inline){display:flex;flex-direction:column;gap:8px;color:#5c697f;font-size:12px;font-weight:800}input:not([type=checkbox]),select{width:100%;height:44px;border:1px solid #dfe5ee;background:#fff;border-radius:8px;padding:0 12px;color:#23314a;outline:none}input:focus,select:focus{border-color:#7295f5;box-shadow:0 0 0 3px #7295f51a}input::placeholder{color:#b0b8c6}.check-inline{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:700;color:#526077;min-height:44px}.check-inline input{width:16px;height:16px;accent-color:var(--orange)}.helper{color:#98a2b2;font-size:11px;margin:14px 0 0;line-height:1.6}.back{color:#637aa1;font-size:12px;display:inline-block;margin-bottom:15px;font-weight:700}.permission-list{display:flex;flex-direction:column;border-top:1px solid var(--line);margin-top:19px}.permission-row{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding:15px 4px;cursor:pointer}.permission-row .permission-icon{width:40px;height:40px;min-width:40px;font-size:21px;margin:0}.permission-info{display:flex;flex:1;flex-direction:column;gap:5px}.permission-info strong{font-size:13px}.permission-info small{font-size:11px;color:#9ba6b5}.toggle{appearance:none;min-width:42px;width:42px;height:24px;background:#ced5e2;border-radius:20px;position:relative;cursor:pointer;transition:background .15s}.toggle::before{content:"";position:absolute;background:white;width:18px;height:18px;top:3px;left:3px;border-radius:50%;box-shadow:0 1px 4px #23314a22;transition:transform .15s}.toggle:checked{background:var(--orange)}.toggle:checked::before{transform:translateX(18px)}.actions{display:flex;justify-content:flex-end;margin-top:20px}.reset-form{display:flex;gap:18px;align-items:end}.reset-form label{flex:1}.reset-form button{margin-bottom:1px}.narrow{max-width:560px}.service-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;align-items:start}.service-editor-grid .panel{margin:0}.editor-title{display:flex;align-items:center;gap:12px;margin-bottom:19px}.editor-title .permission-icon{margin:0;width:43px;height:43px}.editor-title h2{margin:0;font-size:16px}.editor-form{display:flex;flex-direction:column;gap:15px}.form-split{display:grid;grid-template-columns:2fr 1fr;gap:12px}.editor .button{align-self:flex-start}.new-editor{background:#fbfcff;border-style:dashed}.notice{border-radius:9px;padding:13px 16px;margin-bottom:20px;font-size:12px;font-weight:700}.notice.error{background:#fff1ef;color:#a73c30;border:1px solid #ffd9d3}.notice.success{background:#eaf9f1;color:#267d52;border:1px solid #c8e8d6}.notice.warn{background:#fff6e8;color:#a16d20;border:1px solid #ffebc5}.empty{padding:65px 20px;text-align:center;background:white;border-radius:14px;border:1px dashed #dce4ee}.empty-icon{font-size:38px;margin-bottom:14px}.empty h3{margin-bottom:5px}.empty p{color:var(--muted);margin-bottom:0}.auth-body{background:#f5f7fc}.auth-layout{min-height:100vh;display:grid;place-items:center;padding:28px;position:relative;overflow:hidden}.auth-backdrop{position:absolute;inset:0;pointer-events:none;background:linear-gradient(130deg,#f5f7fc,#edf3fc)}.backdrop-orb{position:absolute;right:-170px;top:-270px;border-radius:50%;width:650px;height:650px;background:#172a48}.backdrop-title{position:absolute;right:130px;top:150px;color:#ffffff0d;font-size:240px;font-weight:900}.backdrop-title span{color:#ff693730}.auth-card{position:relative;background:white;border:1px solid #e7edf5;box-shadow:0 24px 80px #172d501b;border-radius:18px;padding:40px 42px;max-width:445px;width:100%}.auth-card .brand-logo{width:52px;height:52px;margin-bottom:23px}.auth-card h1{font-size:26px}.auth-card p{font-size:12px}.auth-card .stack{margin-top:25px}.auth-card .eyebrow{margin-bottom:6px}
@media(max-width:1190px){.service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content{padding:34px 28px}.app-shell{grid-template-columns:230px minmax(0,1fr)}}
@media(max-width:800px){.app-shell{display:block}.sidebar{display:none}.topbar{height:68px;padding:0 17px;justify-content:space-between}.mobile-brand{display:block;font-weight:900;letter-spacing:.06em;font-size:16px;color:#14243e}.mobile-brand b{color:var(--orange);font-size:11px}.user-info{display:none}.logout-form{margin-left:3px}.mobile-nav{display:flex;background:white;overflow-x:auto;gap:3px;border-bottom:1px solid var(--line);padding:5px 13px}.mobile-nav a{white-space:nowrap;padding:11px 10px;color:#5a6c87;font-size:12px;font-weight:800}.content{padding:22px 17px 35px}.hero{padding:28px 25px;min-height:auto;margin-bottom:28px}.panel{padding:21px}.service-editor-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.reset-form{flex-direction:column;align-items:stretch}.reset-form label{width:100%}}
@media(max-width:530px){.service-grid{grid-template-columns:1fr;gap:12px}.service-card{min-height:190px}.service-icon{margin-bottom:10px}.hero h1{font-size:22px}.page-head{align-items:flex-start}.auth-layout{padding:15px}.auth-card{padding:32px 23px}.backdrop-orb{width:390px;height:390px;right:-220px}.topbar-right{gap:8px}.user-avatar{width:30px;height:30px}.logout-btn{padding:8px;font-size:11px}.form-split{grid-template-columns:1fr 1fr}}
