:root{--bg:#f8fafc;--surface:#fff;--text:#0f172a;--text-muted:#64748b;--border:#e2e8f0;--primary:#2563eb;--primary-dark:#1d4ed8;--danger:#dc2626;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,Segoe UI,Hiragino Sans,Noto Sans JP,Roboto,sans-serif}#root{max-width:480px;min-height:100svh;padding-bottom:env(safe-area-inset-bottom);margin:0 auto}button,input,textarea,select{font:inherit}.page{padding:16px 16px 96px;padding-top:max(16px, env(safe-area-inset-top))}.page__header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.page__header-actions{align-items:center;gap:12px;display:flex}.page__header h1{margin:0;font-size:22px}.page__hint{color:var(--text-muted);margin:0 0 12px;font-size:14px}.back-link{color:var(--primary);font-size:15px;text-decoration:none}.settings-link{font-size:20px;text-decoration:none}.filters{gap:8px;margin-bottom:16px;display:flex}.search-input{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex:1;min-width:0;padding:10px 14px}.region-select{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;flex-shrink:0;max-width:40%;padding:10px 12px}.filters--secondary{margin-top:-8px}.favorite-filter{white-space:nowrap}.empty-state{text-align:center;color:var(--text-muted);padding:48px 16px}.empty-state p{margin-bottom:16px}.card-list{flex-direction:column;gap:10px;display:flex}.card-list-item{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:12px;align-items:center;gap:12px;padding:10px;text-decoration:none;display:flex}.card-list-item__thumb{object-fit:cover;background:var(--border);border-radius:6px;flex-shrink:0;width:64px;height:40px}.card-list-item__thumb--placeholder{display:block}.card-list-item__name{font-size:15px;font-weight:600}.card-list-item__company{color:var(--text-muted);font-size:13px}.card-list-item__region{color:var(--primary);background:#2563eb1a;border-radius:999px;flex-shrink:0;padding:4px 10px;font-size:12px}.card-list-item__star{color:#f59e0b;margin-right:4px}.card-list-item__tags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.star-button{color:#cbd5e1;cursor:pointer;background:0 0;border:none;padding:4px;font-size:26px;line-height:1}.star-button--active{color:#f59e0b}.card-meta-editor{flex-direction:column;gap:16px;margin-bottom:20px;display:flex}.card-meta-editor__favorite{color:var(--text-muted);align-items:center;gap:6px;font-size:14px;display:flex}.tag-picker{flex-wrap:wrap;gap:8px;display:flex}.tag-picker__add{gap:8px;margin-top:8px;display:flex}.tag-picker__add input{border:1px solid var(--border);background:var(--surface);border-radius:8px;flex:1;min-width:0;padding:8px 12px}.tag-picker__add button{flex-shrink:0;padding:8px 14px}.tag-chip{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:13px}.tag-chip--active{border-color:var(--primary);color:var(--primary);background:#2563eb1a}.tag-chip--small{cursor:default;padding:2px 8px;font-size:11px}.card-form__field textarea{border:1px solid var(--border);background:var(--surface);resize:vertical;border-radius:8px;padding:10px 12px;font-family:inherit}.card-detail__memo{white-space:pre-wrap}.name-candidates{flex-direction:column;gap:6px;margin:-12px 0 20px;display:flex}.ai-fallback-status{color:var(--primary)}.ai-fallback-button{border-color:var(--primary);width:100%;color:var(--primary);margin-bottom:20px}.fab{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;font-size:28px;text-decoration:none;display:flex;position:fixed;bottom:24px;right:max(20px,50vw - 220px);box-shadow:0 4px 12px #2563eb66}.camera-input{border:2px dashed var(--border);background:var(--surface);cursor:pointer;color:var(--text-muted);border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:48px 16px;display:flex}.camera-input input{display:none}.camera-input__icon{font-size:40px}.add-card__preview img{border-radius:12px;width:100%;margin-bottom:12px}.crop-tool__header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.crop-tool__header .page__hint{flex:1;margin:0}.crop-tool__rotate{white-space:nowrap;flex-shrink:0;padding:8px 14px}.crop-tool__stage{touch-action:none;background:#000;border-radius:12px;width:100%;position:relative;overflow:hidden}.crop-tool__image{-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.crop-tool__box{border:2px solid var(--primary);touch-action:none;cursor:move;position:absolute;box-shadow:0 0 0 2000px #0000008c}.crop-tool__handle{background:var(--primary);touch-action:none;border:3px solid #fff;border-radius:50%;width:28px;height:28px;position:absolute}.crop-tool__handle--nw{cursor:nwse-resize;top:-14px;left:-14px}.crop-tool__handle--ne{cursor:nesw-resize;top:-14px;right:-14px}.crop-tool__handle--sw{cursor:nesw-resize;bottom:-14px;left:-14px}.crop-tool__handle--se{cursor:nwse-resize;bottom:-14px;right:-14px}.crop-tool__confirm{width:100%;margin-top:16px}.ocr-progress{margin:16px 0}.ocr-progress__bar{background:var(--border);border-radius:4px;height:8px;overflow:hidden}.ocr-progress__fill{background:var(--primary);height:100%;transition:width .2s}.ocr-progress__status{color:var(--text-muted);margin:6px 0 0;font-size:13px}.card-form{flex-direction:column;gap:12px;margin-bottom:20px;display:flex}.card-form__field{flex-direction:column;gap:4px;display:flex}.card-form__label{color:var(--text-muted);font-size:12px}.card-form__field input,.card-form__field select{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:10px 12px}.add-card__actions{gap:10px;display:flex}.button{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:10px;flex:1;padding:12px;font-size:15px;font-weight:500}.button--primary{background:var(--primary);border-color:var(--primary);color:#fff;text-align:center;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.button--primary:active{background:var(--primary-dark)}.button--danger{color:var(--danger);border-color:var(--danger)}.button:disabled{opacity:.6}.card-detail__image img{border-radius:12px;width:100%;margin-bottom:16px}.card-detail__fields{margin:0 0 20px}.card-detail__fields dt{color:var(--text-muted);margin-top:10px;font-size:12px}.card-detail__fields dd{margin:2px 0 0;font-size:15px}.ai-section{border-top:1px solid var(--border);margin-top:32px;padding-top:20px}.ai-section__title{margin:0 0 12px;font-size:17px}.ai-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:12px;padding:14px}.ai-card__header{justify-content:space-between;align-items:center;gap:8px;display:flex}.ai-card__header h3{margin:0;font-size:14px}.ai-card__header button{flex-shrink:0;padding:6px 12px;font-size:13px}.ai-card__desc{color:var(--text-muted);margin:6px 0 0;font-size:12px}.ai-card__error{color:var(--danger);margin:10px 0 0;font-size:13px}.ai-card__value{white-space:pre-wrap;border-top:1px dashed var(--border);margin:10px 0 0;padding-top:10px;font-size:14px}.ai-card__copy{margin-top:8px;padding:6px 12px;font-size:13px}.intro-editor{flex-direction:column;gap:16px;margin-bottom:20px;display:flex}.intro-editor__linked{color:var(--primary);margin:4px 0 0;font-size:12px}.network-scroll{border:1px solid var(--border);background:var(--surface);-webkit-overflow-scrolling:touch;border-radius:12px;margin-bottom:20px;overflow:auto}.network-svg{display:block}.network-edge{stroke:#94a3b8;stroke-width:2px}.network-node{cursor:pointer}.network-node rect{fill:#2563eb14;stroke:var(--primary);stroke-width:1.5px}.network-node text{fill:var(--text);pointer-events:none;font-size:12px}.network-node__sub{fill:var(--text-muted)!important;font-size:10px!important}.network-node--text{cursor:default}.network-node--text rect{fill:var(--bg);stroke:var(--border);stroke-dasharray:4 3}.network-node--text text{fill:var(--text-muted)}.network-isolated{margin-top:12px}
