:root{--bg:#f6f6f4;--panel:#ffffff;--line:#e7e7e3;--ink:#1a1a1a;--sub:#8c8c87;--brand:#1a1a1a;--brand-d:#000000;--brand-soft:#f0f0ec;--red:#b3261e;--red-soft:#f7e7e6;--amber:#9a6a00;--amber-soft:#f5eedb;--green:#2f6b3a;--green-soft:#e8efe9;--gray-soft:#efefea}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Hiragino Kaku Gothic ProN,Noto Sans JP,Segoe UI,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;letter-spacing:.012em}a{color:var(--brand);text-decoration:none}button{font-family:inherit;cursor:pointer}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:#0f0f0f;color:#fff;display:flex;align-items:center;gap:14px;padding:10px 20px}.topbar .logo{font-weight:500;font-family:Hiragino Mincho ProN,Yu Mincho,YuMincho,"Noto Serif JP",serif;letter-spacing:.14em}.topbar .right{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:13px;color:#cbd5e1}.shell{display:flex;min-height:calc(100vh - 45px)}.side{width:210px;background:#181818;color:#b8b8b3;flex-shrink:0;padding:16px 0}.side a{display:block;padding:9px 20px;color:#b8b8b3;font-size:13.5px}.side a:hover{background:#262626}.side a.on{background:var(--brand);color:#fff}.main{flex:1 1;padding:24px 30px;overflow:auto}.page-h{display:flex;align-items:center;gap:12px;margin:0 0 18px}.page-h h1{font-size:20px;margin:0;font-family:Hiragino Mincho ProN,Yu Mincho,YuMincho,"Noto Serif JP",serif;font-weight:500;letter-spacing:.03em}.page-h .sub{color:var(--sub);font-size:13px}.spacer{margin-left:auto}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600}.btn:hover{background:#f7f7f5}.btn.pri{background:var(--brand);border-color:var(--brand);color:#fff}.btn.pri:hover{background:var(--brand-d)}.btn.sm{padding:5px 10px;font-size:12px}.btn.ghost{background:transparent;border-color:transparent;color:var(--sub)}.btn.ghost:hover{background:var(--gray-soft);color:var(--ink)}.row-actions{margin-left:auto;display:flex;gap:6px;align-items:center}.row-actions .btn{min-width:54px;justify-content:center;text-align:center}@media (max-width:760px){.topbar{flex-wrap:wrap;gap:8px;padding:8px 14px}.topbar .logo{font-size:13px}.topbar .right{gap:10px;font-size:12px;flex-wrap:wrap}.shell{flex-direction:column;min-height:auto}.side{width:100%;display:flex;flex-direction:row;overflow-x:auto;gap:4px;padding:8px 10px;-webkit-overflow-scrolling:touch}.side a{flex-shrink:0;padding:8px 13px;border-radius:8px;font-size:13px}.main{padding:14px 12px}.page-h{flex-wrap:wrap;gap:8px}.page-h h1{font-size:18px}.kpis{grid-template-columns:repeat(2,1fr);gap:10px}.cols2{grid-template-columns:1fr}.cel-row{flex-wrap:wrap}.cel-row .row-actions{margin-left:auto}.auth-card,.reg-card{width:100%}table{font-size:12px}td,th{padding:8px}}.panel{background:var(--panel);border:1px solid var(--line);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel,.tbl-wrap{border-radius:12px}.tbl-wrap{overflow:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px;white-space:nowrap}th{font-size:11px;letter-spacing:.03em;color:var(--sub);font-weight:600}tbody tr:hover,th{background:#faf9f6}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:20px}.b-red{background:var(--red-soft);color:var(--red)}.b-amber{background:var(--amber-soft);color:var(--amber)}.b-green{background:var(--green-soft);color:var(--green)}.b-gray{background:var(--gray-soft);color:var(--sub)}.b-brand{background:var(--brand-soft);color:var(--brand-d)}.dot{width:7px;height:7px;border-radius:50%;display:inline-block}.dot.red{background:var(--red)}.dot.amber{background:var(--amber)}.dot.green{background:var(--green)}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;align-items:center}.chip{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:20px;padding:6px 13px;font-size:12.5px;font-weight:600}.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}.search{border:1px solid var(--line);border-radius:8px;padding:7px 11px;font-size:13px;width:220px}.kpis{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:14px;gap:14px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:0 1px 2px rgba(0,0,0,.05)}.kpi .n{font-size:26px;font-weight:700;line-height:1.1}.kpi .l{color:var(--sub);font-size:12px;margin-top:2px}@media(max-width:880px){.kpis{grid-template-columns:repeat(2,1fr)}}.celebrate{background:#faf9f6;border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:18px}.celebrate .ch{font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:10px}.celebrate .ch .cnt{background:var(--brand);color:#fff;border-radius:20px;font-size:11px;padding:2px 9px}.cel-row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px}.cel-row:last-child{margin-bottom:0}.kv{display:grid;grid-template-columns:130px 1fr;grid-gap:6px 14px;gap:6px 14px;font-size:13px}.kv .k{color:var(--sub)}.cols2{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}@media(max-width:880px){.cols2{grid-template-columns:1fr}}.doc-card{border:1px solid var(--line);border-radius:11px;padding:14px;background:#fff}.doc-card.red{border-color:#e6c3c1;background:linear-gradient(0deg,var(--red-soft),#fff)}.doc-card.amber{border-color:#e3d6ab;background:linear-gradient(0deg,var(--amber-soft),#fff)}.alertmsg{font-size:12.5px;font-weight:600;padding:7px 10px;border-radius:7px;margin-top:8px}.alertmsg.red{background:var(--red-soft);color:var(--red)}.alertmsg.amber{background:var(--amber-soft);color:var(--amber)}.alertmsg.green{background:var(--green-soft);color:var(--green)}.doc-thumb{display:block;width:100%;max-height:180px;object-fit:contain;border-radius:8px;background:#f3f3f0;margin-bottom:10px;border:1px solid var(--line)}.doc-thumb.empty{height:90px;display:flex;align-items:center;justify-content:center;color:#a8a8a3;font-size:12px}.btn.ok{background:var(--green);border-color:var(--green);color:#fff}.btn.danger{background:#fff;border-color:#e6c3c1;color:var(--red)}.urlbox{background:#1a1a1a;color:#e8e8e2;border-radius:9px;padding:13px;font-family:ui-monospace,Menlo,monospace;word-break:break-all}.note,.urlbox{font-size:12.5px}.note{background:var(--amber-soft);border:1px solid #e3d6ab;color:var(--amber);padding:11px 13px;margin-bottom:14px}.note,.notif-item{border-radius:10px}.notif-item{display:flex;gap:11px;padding:11px 10px;align-items:center}.notif-item.unread{background:#f6f6f3}.notif-ic{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}.ic-red{background:var(--red-soft)}.ic-amber{background:var(--amber-soft)}.ic-cel,.ic-info{background:var(--brand-soft)}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:20px}.auth-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 40px rgba(0,0,0,.08);width:380px;max-width:100%;padding:30px}.auth-card h1{font-size:20px;margin:0 0 4px;font-family:Hiragino Mincho ProN,Yu Mincho,YuMincho,"Noto Serif JP",serif;font-weight:500;letter-spacing:.04em}.auth-card .sub{color:var(--sub);font-size:13px;margin:0 0 22px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--sub);font-weight:600;margin-bottom:5px}.field input{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:14px}.field input:focus{outline:none;border-color:var(--brand)}.err-msg{background:var(--red-soft);color:var(--red);border:1px solid #e6c3c1;border-radius:8px;padding:9px 11px;font-size:12.5px;margin-bottom:14px}.muted{color:var(--sub);font-size:12px}.m-errmsg{color:var(--red);font-size:11.5px;margin-top:5px;font-weight:600}.field.err input,.field.err select,.field.err textarea{border-color:var(--red);background:#fdf7f6}.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:14px;font-family:inherit}.reg-card{background:#fff;border-radius:18px;box-shadow:0 14px 50px rgba(0,0,0,.12);width:420px;max-width:100%;overflow:hidden}.reg-top{background:var(--brand);color:#fff;padding:16px 18px}.reg-steps{display:flex;gap:4px;padding:12px 16px;background:#f7f7f5;border-bottom:1px solid var(--line)}.reg-steps .rs{flex:1 1;height:5px;border-radius:4px;background:#e2e2dd}.reg-steps .rs.on{background:var(--brand)}.reg-steps .rs.done{background:var(--green)}.reg-body{padding:18px}.reg-h{font-size:16px;font-weight:700;margin:0 0 4px}.reg-upload{display:block;border:2px dashed #cccac4;border-radius:12px;padding:16px;text-align:center;color:var(--sub);font-size:12.5px;cursor:pointer;word-break:break-all}.reg-upload:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-d)}.reg-upload.filled{border-style:solid;border-color:var(--green);background:var(--green-soft);color:var(--green)}.reg-nav{display:flex;gap:10px;margin-top:18px}.reg-nav .btn{flex:1 1;text-align:center}.reg-nav .btn,.reg-nav-full{justify-content:center;padding:12px}.reg-nav-full{width:100%;margin-top:18px}.reg-consent{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px}.reg-consent.err{border-color:var(--red);background:#fdf7f6}.reg-done-ico{width:72px;height:72px;border-radius:50%;background:var(--green-soft);color:var(--green);font-size:38px;display:flex;align-items:center;justify-content:center;margin:10px auto 6px}@media (max-width:760px){body,html{max-width:100%}.main,body,html{overflow-x:hidden}.main{width:100%;padding:14px 12px}.main *{min-width:0}.panel{flex-wrap:wrap;max-width:100%}.panel img{max-width:100%;height:auto}.kv{grid-template-columns:92px 1fr!important;word-break:break-word}.kv>div{overflow-wrap:anywhere}.panel form{flex-wrap:wrap}.panel form input,.panel form select,input[type=file]{max-width:100%}.tbl-wrap{overflow-x:auto}}.nav-backdrop,.nav-fab,.nav-toggle{display:none}@media (max-width:760px){.nav-fab{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;position:fixed;right:16px;bottom:16px;z-index:70;width:56px;height:56px;border-radius:50%;background:var(--brand);box-shadow:0 8px 24px rgba(0,0,0,.32);cursor:pointer}.nav-fab span{display:block;width:24px;height:2.5px;border-radius:2px;background:#fff;transition:.2s ease}.nav-toggle:checked~.nav-fab span:first-child{transform:translateY(7.5px) rotate(45deg)}.nav-toggle:checked~.nav-fab span:nth-child(2){opacity:0}.nav-toggle:checked~.nav-fab span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}.nav-backdrop{display:block;position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:.2s ease}.nav-toggle:checked~.nav-backdrop{opacity:1;pointer-events:auto}.side{position:fixed;z-index:65;right:14px;bottom:84px;width:auto;min-width:210px;max-width:74vw;max-height:64vh;flex-direction:column;gap:4px;padding:8px;overflow:auto;background:#181818;border-radius:16px;box-shadow:0 16px 48px rgba(0,0,0,.45);opacity:0;transform:translateY(12px) scale(.97);pointer-events:none;transition:.18s ease}.nav-toggle:checked~.shell .side{opacity:1;transform:none;pointer-events:auto}.side a{padding:13px 16px;font-size:15px;border-radius:10px}}body{font-size:15px;letter-spacing:normal}.page-h h1,.topbar .logo{font-family:inherit;font-weight:700;letter-spacing:normal}.page-h h1{font-size:22px}.auth-card h1{font-family:inherit;font-weight:600;letter-spacing:normal}.btn{font-size:14px}.btn.sm{font-size:13px}.side a{font-size:14.5px}td,th{font-size:14px}th{font-size:12px}.badge{font-size:12.5px}.kv{font-size:14px}.muted{font-size:13px}.page-h .sub{font-size:14px}.kpi .n{font-size:28px}.kpi .l{font-size:13px}.field input,.field select,.field textarea{font-size:15px}.alertmsg,.doc-card,.filters .chip{font-size:13.5px}@media (min-width:761px){.side a{font-size:18px;padding:12px 22px}}.frow{display:flex;gap:12px}.frow .field{flex:1 1;min-width:0}.frow input,.frow select{width:100%}@media (max-width:760px){.frow{flex-direction:column;gap:0}}