:root{--c-primary: #2563eb;--c-primary-hover: #1d4ed8;--c-primary-active: #1e40af;--c-primary-light: #eff6ff;--c-danger: #dc2626;--c-danger-hover: #b91c1c;--c-success: #16a34a;--c-warning: #d97706;--c-warning-bg: #fefce8;--c-warning-border: #fde68a;--c-text: #111827;--c-text-muted: #6b7280;--c-text-faint: #9ca3af;--c-bg: #ffffff;--c-bg-subtle: #f9fafb;--c-bg-hover: #f3f4f6;--c-bg-active: #e5e7eb;--c-bg-selected: #dbeafe;--c-border: #e5e7eb;--c-border-strong: #d1d5db;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--shadow: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07), 0 2px 4px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 24px rgba(0, 0, 0, .12), 0 4px 8px rgba(0, 0, 0, .08);--radius-sm: 3px;--radius: 4px;--radius-md: 6px;--radius-lg: 8px;--t-fast: .12s ease;--t-base: .18s ease}*,*:before,*:after{box-sizing:border-box}html{scrollbar-gutter:stable}body{margin:0;font-family:Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,Yu Gothic Medium,Yu Gothic,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.6;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}h1{font-size:1.5rem;font-weight:700;margin:0 0 1rem}h2{font-size:1.2rem;font-weight:600;margin:0 0 .75rem}h3{font-size:1rem;font-weight:600;margin:0 0 .5rem}p{margin:0 0 .75rem}p:last-child{margin-bottom:0}a{color:var(--c-primary);text-decoration:none;transition:color var(--t-fast),opacity var(--t-fast)}a:hover{color:var(--c-primary-hover);text-decoration:underline}a:active{opacity:.75}button{font-family:inherit;font-size:inherit;font-weight:500;line-height:1.4;display:inline-flex;align-items:center;gap:.3em;border:1px solid var(--c-border-strong);border-radius:var(--radius);background:var(--c-bg);color:var(--c-text);cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast),color var(--t-fast),opacity var(--t-fast)}button:hover:not(:disabled){background:var(--c-bg-hover);border-color:#9ca3af}button:active:not(:disabled){background:var(--c-bg-active)}button:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}button:disabled{opacity:.45;cursor:not-allowed}button.btn-primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}button.btn-primary:hover:not(:disabled){background:var(--c-primary-hover);border-color:var(--c-primary-hover)}button.btn-primary:active:not(:disabled){background:var(--c-primary-active);border-color:var(--c-primary-active)}button.btn-danger{color:var(--c-danger);border-color:var(--c-border-strong)}button.btn-danger:hover:not(:disabled){background:#fef2f2;border-color:#fca5a5;color:var(--c-danger-hover)}button.btn-ghost{background:transparent;border-color:transparent;color:var(--c-text-muted)}button.btn-ghost:hover:not(:disabled){background:var(--c-bg-hover);border-color:transparent;color:var(--c-text)}button.btn-ghost:active:not(:disabled){background:var(--c-bg-active)}button.btn-menu{width:100%;text-align:left;justify-content:flex-start;background:transparent;border:none;border-radius:0;padding:.4rem .9rem;cursor:pointer;display:flex}button.btn-menu:hover:not(:disabled){background:var(--c-bg-hover)}button.btn-menu:active:not(:disabled){background:var(--c-bg-active)}button.btn-menu.btn-danger{color:var(--c-danger)}button.btn-menu.btn-danger:hover:not(:disabled){background:#fef2f2;color:var(--c-danger-hover)}button.device-user-btn{display:block;float:left;width:100%;text-align:left;justify-content:flex-start;border:1px solid var(--c-border-strong);border-radius:var(--radius);background:var(--c-bg);padding:1rem;cursor:pointer;font-size:1rem;font-weight:400;transition:background var(--t-base),border-color var(--t-base),box-shadow var(--t-base)}button.device-user-btn:hover:not(:disabled){background:var(--c-bg-hover);border-color:var(--c-primary);box-shadow:var(--shadow-sm)}button.device-user-btn:active:not(:disabled){background:var(--c-bg-selected)}input[type=text],input[type=email],input[type=password],input[type=date],input[type=search],input[type=number],select,textarea{font-family:inherit;font-size:inherit;border:1px solid var(--c-border-strong);border-radius:var(--radius);background:var(--c-bg);color:var(--c-text);transition:border-color var(--t-fast),box-shadow var(--t-fast)}input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,input[type=date]:focus,input[type=search]:focus,input[type=number]:focus,select:focus,textarea:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 3px #2563eb26}input:disabled,select:disabled,textarea:disabled{background:var(--c-bg-subtle);color:var(--c-text-muted);cursor:not-allowed}input[readonly]{background:var(--c-bg-subtle)}table{border-spacing:0;width:100%;border-collapse:collapse}thead tr{background:var(--c-bg-subtle)}th{padding:.5rem .75rem;font-size:.8em;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-muted);text-align:left;border-bottom:2px solid var(--c-border-strong)}td{padding:.5rem .75rem;border-bottom:1px solid var(--c-border)}tbody tr:hover{background:var(--c-bg-hover)}.site-header{padding:.75rem 1rem;border-bottom:1px solid var(--c-border);display:flex;align-items:center;gap:1rem;background:var(--c-bg);box-shadow:var(--shadow-sm)}.site-header strong{margin-right:auto;font-size:1.05em;letter-spacing:-.01em;color:var(--c-text)}.card{border:1px solid var(--c-border-strong);border-radius:var(--radius-md);padding:1rem;background:var(--c-bg);box-shadow:var(--shadow-sm)}.card-link{display:block;padding:1rem;border:1px solid var(--c-border-strong);border-radius:var(--radius-md);text-decoration:none;color:inherit;background:var(--c-bg);box-shadow:var(--shadow-sm);transition:border-color var(--t-base),box-shadow var(--t-base),background var(--t-base)}.card-link:hover{border-color:var(--c-primary);box-shadow:var(--shadow-md);background:#f8faff;color:inherit;text-decoration:none}.card-link:active{background:var(--c-bg-selected)}.badge{display:inline-block;padding:.1rem .45rem;border-radius:var(--radius-sm);font-size:.8em;font-weight:600;line-height:1.4;vertical-align:middle}.badge-warning{background:#fef3c7;color:#92400e;border:1px solid var(--c-warning-border)}.badge-owned{background:#fef9c3;color:#713f12;border-radius:10px}.badge-confirmed{background:#dcfce7;color:#166534;border:1px solid #86efac;border-radius:10px}.badge-pending-confirm{background:#f1f5f9;color:#475569;border:1px dashed #cbd5e1;border-radius:10px}.badge-role-admin{background:#fee2e2;color:#991b1b;border-radius:var(--radius-sm)}.badge-role-external{background:#e0e7ff;color:#3730a3;border-radius:var(--radius-sm)}.badge-role-member{background:#f0fdf4;color:#166534;border-radius:var(--radius-sm)}.badge-action{background:#eef2ff;color:#3730a3;border-radius:var(--radius-sm)}.breadcrumb{margin-bottom:1rem;font-size:.9em;color:var(--c-text-muted)}.breadcrumb a{color:var(--c-text-muted)}.breadcrumb a:hover{color:var(--c-primary);text-decoration:underline}.admin-nav{margin-bottom:1rem;font-size:.9em;display:flex;gap:1rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--c-border)}.admin-nav a{color:var(--c-text-muted);transition:color var(--t-fast)}.admin-nav a:hover{color:var(--c-primary);text-decoration:none}.toolbar{position:sticky;top:0;z-index:5;background:#f0f7ff;border:1px solid #bcd;border-radius:var(--radius);padding:.45rem .7rem;display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem;box-shadow:var(--shadow-sm)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.modal-box{background:var(--c-bg);padding:1.5rem;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:420px;max-width:90vw;max-height:85vh;display:flex;flex-direction:column}.modal-props-box{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101;background:var(--c-bg);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);width:720px;max-width:92vw;max-height:88vh;display:flex;flex-direction:column}.context-menu{background:var(--c-bg);border:1px solid var(--c-border-strong);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:.25rem 0;margin:0;list-style:none;min-width:160px;font-size:.9em}.project-list{list-style:none;padding:0;margin:0}.project-list li{padding:.75rem;border-bottom:1px solid var(--c-border);transition:background var(--t-fast)}.project-list li:hover{background:var(--c-bg-hover)}.project-list a{font-weight:600;color:var(--c-text);text-decoration:none}.project-list a:hover{color:var(--c-primary);text-decoration:none}.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end;margin-bottom:1rem;padding:.75rem;background:var(--c-bg-subtle);border:1px solid var(--c-border);border-radius:var(--radius)}.notice-success{border:1px solid #bbf7d0;background:#f0fdf4;padding:1rem;border-radius:var(--radius);margin:1rem 0}.read-only-notice{margin-top:1.5rem;padding:.75rem 1rem;background:var(--c-bg-subtle);border:1px dashed var(--c-border-strong);border-radius:var(--radius);color:var(--c-text-muted);font-size:.9em}.mono-pw{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;-webkit-user-select:all;user-select:all;padding:.1rem .3rem;background:#fffae0;border-radius:var(--radius-sm);font-size:.9em}.mono-pw-hidden{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--c-text-muted);letter-spacing:.15em;font-size:.9em}.text-error{color:var(--c-danger);font-size:.9em}.text-success{color:var(--c-success);font-size:.9em}.text-muted{color:var(--c-text-muted)}.text-faint{color:var(--c-text-faint)}.hint{color:var(--c-text-muted);font-size:.85em}.props-table tbody tr:hover{background:transparent}
