.react-flow{direction:ltr}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1px;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:-webkit-grab;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background:#1a192b;border:1px solid #fff;border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-top{top:-4px;left:50%;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{top:50%;right:-4px;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{background:#ffffff80;margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{color:#222;text-align:center;background-color:#fff;border:1px solid #1a192b;border-radius:3px;width:150px;padding:10px;font-size:12px}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted #0059dccc}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{box-sizing:content-box;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fefefe;border:none;border-bottom:1px solid #eee;justify-content:center;align-items:center;width:16px;height:16px;padding:5px;display:flex}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:#3367d9;border:1px solid #fff;border-radius:1px;width:4px;height:4px;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border:0 solid #3367d9}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#1a1a2e;background:#faf8f2;height:100dvh;font-family:Hiragino Sans,Noto Sans JP,sans-serif;overflow:hidden}button{touch-action:manipulation}#root{height:100dvh}.app{height:100dvh;display:flex}.hamburger-btn,.sidebar-backdrop{display:none}.main{flex:1;position:relative;overflow:hidden}.sidebar{color:#cdd6f4;background:#1e1e2e;border-right:1px solid #313244;flex-direction:column;flex-shrink:0;width:220px;display:flex}.sidebar-header{border-bottom:1px solid #313244;justify-content:space-between;align-items:center;padding:16px 12px 12px;display:flex}.sidebar-title{letter-spacing:.05em;color:#a6adc8;text-transform:uppercase;font-size:13px;font-weight:600}.icon-btn{color:#cdd6f4;cursor:pointer;background:#313244;border:none;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;font-size:18px;line-height:1;transition:background .15s;display:flex}.icon-btn:hover{color:#fff;background:#4f90e0}.page-list{flex:1;padding:6px 0;list-style:none;overflow-y:auto}.page-item{cursor:pointer;border-radius:6px;align-items:center;gap:6px;margin:2px 6px;padding:8px 12px;transition:background .12s;display:flex}.page-item:hover{background:#313244}.page-item.active{background:#4f90e040}.page-item.active .page-name{color:#89b4fa}.page-view-row,.page-edit-row{align-items:center;gap:4px;width:100%;display:flex}.page-name{text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none;flex:1;font-size:14px;overflow:hidden}.page-rename-input{color:#cdd6f4;background:#313244;border:1px solid #4f90e0;border-radius:4px;outline:none;flex:1;min-width:0;padding:2px 6px;font-size:13px}.page-action-btn{cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:13px;line-height:1;transition:background .12s,color .12s}.page-action-btn.edit{color:#6c7086}.page-action-btn.edit:hover{color:#cdd6f4;background:#45475a}.page-action-btn.delete{color:#6c7086}.page-action-btn.delete:hover{color:#f38ba8;background:#45475a}.page-action-btn.delete:disabled{opacity:.2;cursor:not-allowed}.page-action-btn.confirm{color:#a6e3a1}.page-action-btn.confirm:hover{background:#45475a}.page-action-btn.cancel{color:#f38ba8}.page-action-btn.cancel:hover{background:#45475a}.toolbar{background:#fffdf7;border:1px solid #e8e0d0;border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px;padding:7px 12px;display:flex;box-shadow:0 2px 14px #0000001a}.toolbar-sep{background:#e8e0d0;flex-shrink:0;width:1px;height:24px}.toolbar-btn{cursor:pointer;color:#1a1a2e;background:#f0ebe0;border:1px solid #d8d0c0;border-radius:8px;flex-direction:column;flex-shrink:0;align-items:center;gap:1px;padding:5px 11px;transition:all .15s;display:flex}.toolbar-btn:hover{color:#fff;background:#4f90e0;border-color:#4f90e0}.toolbar-icon-btn{cursor:pointer;color:#333;background:#f0ebe0;border:1px solid #d8d0c0;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:15px;transition:all .15s;display:flex}.toolbar-icon-btn:hover:not(:disabled){color:#fff;background:#4f90e0;border-color:#4f90e0}.toolbar-icon-btn:disabled{opacity:.3;cursor:not-allowed}.color-palette{align-items:center;gap:4px;display:flex}.color-swatch{cursor:pointer;border:1.5px solid #ccc;border-radius:50%;flex-shrink:0;width:22px;height:22px;padding:0;transition:transform .12s,border-color .12s}.color-swatch:hover{border-color:#4f90e0;transform:scale(1.25)}.toolbar-hint{color:#999;max-width:240px;font-size:11px}.edge-panel{background:#fff;border:1px solid #d0d0d0;border-radius:8px;align-items:center;gap:3px;padding:4px 6px;font-size:14px;display:flex;box-shadow:0 2px 10px #0000001f}.edge-panel button{cursor:pointer;color:#444;background:#f5f6fa;border:1px solid #e0e0e0;border-radius:5px;padding:3px 7px;line-height:1.3;transition:all .12s}.edge-panel button:hover,.edge-panel button.active{color:#fff;background:#4f90e0;border-color:#4f90e0}.edge-sep{background:#e0e0e0;width:1px;height:18px;margin:0 2px}.react-flow__handle{opacity:0;transition:opacity .15s}.react-flow__node:hover .react-flow__handle,.react-flow__node.selected .react-flow__handle{opacity:1}.empty-state{color:#aaa;justify-content:center;align-items:center;height:100%;font-size:15px;display:flex}.page-list::-webkit-scrollbar{width:4px}.page-list::-webkit-scrollbar-track{background:0 0}.page-list::-webkit-scrollbar-thumb{background:#45475a;border-radius:2px}@media (width<=768px){.hamburger-btn{top:env(safe-area-inset-top,12px);z-index:200;color:#cdd6f4;cursor:pointer;background:#1e1e2e;border:none;border-radius:10px;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;display:flex;position:fixed;left:12px;box-shadow:0 2px 10px #00000059}.sidebar{z-index:150;height:100dvh;padding-top:env(safe-area-inset-top,0px);transition:transform .25s;position:fixed;top:0;left:0;transform:translate(-100%)}.app.sidebar-open .sidebar{transform:translate(0)}.app.sidebar-open .sidebar-backdrop{z-index:140;background:#00000080;display:block;position:fixed;inset:0}.main{width:100%}.page-item{min-height:48px;padding:12px 10px}.page-action-btn{padding:6px 8px;font-size:15px}.icon-btn{width:36px;height:36px;font-size:20px}.sidebar-header{padding:12px}.edge-panel{gap:6px;padding:6px 8px}.edge-panel button{min-width:40px;min-height:40px;padding:8px 12px;font-size:17px}.edge-sep{height:24px}.toolbar-hint{display:none}.toolbar-mobile{flex-direction:column;align-items:stretch;gap:6px;padding:8px 12px}.toolbar-row{justify-content:center;align-items:center;gap:6px;display:flex}.toolbar-palette-row .color-palette{gap:6px}.toolbar-palette-row .color-swatch{width:26px;height:26px}.react-flow__panel.bottom.center{margin-bottom:calc(env(safe-area-inset-bottom,0px) + 8px)}.react-flow__handle{width:14px!important;height:14px!important}.share-fab{top:env(safe-area-inset-top,12px);z-index:200;min-height:44px;padding:0 16px;font-size:15px;position:fixed;right:12px}.shared-header{top:env(safe-area-inset-top,12px);text-overflow:ellipsis;white-space:nowrap;max-width:calc(100vw - 24px);overflow:hidden}.modal-overlay{align-items:flex-end;padding:0}.modal-box{width:100%;max-width:100%;max-height:calc(100dvh - env(safe-area-inset-top,0px) - 24px);padding:20px 20px calc(20px + env(safe-area-inset-bottom,0px));border-radius:16px 16px 0 0;overflow-y:auto}.token-textarea,.token-entry-box textarea{font-size:16px}.modal-btn,.modal-close,.token-entry-actions .modal-btn{min-height:44px;font-size:15px}.token-entry-box{max-width:100%}.about-page{text-align:center;padding:24px;font-size:17px}}.share-fab{z-index:10;color:#fff;cursor:pointer;background:#4f90e0;border:none;border-radius:8px;padding:8px 16px;font-size:14px;font-weight:600;position:absolute;top:12px;right:12px;box-shadow:0 2px 8px #00000026}.share-fab:hover{background:#3d7ac7}.share-fab:disabled{opacity:.6;cursor:default}.modal-overlay{z-index:100;background:#1a1a2e80;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-box{background:#fff;border-radius:12px;width:100%;max-width:420px;padding:24px;box-shadow:0 8px 30px #0003}.modal-box h3{margin-bottom:12px;font-size:18px}.modal-desc{color:#555;margin-bottom:12px;font-size:13px;line-height:1.6}.modal-desc.small{word-break:break-all;font-size:12px}.modal-desc.modal-warn{color:#b45309}.modal-desc.modal-error{color:#dc2626}.token-textarea{resize:none;border:1px solid #ddd;border-radius:6px;width:100%;margin-bottom:12px;padding:8px;font-family:monospace;font-size:13px}.modal-actions{gap:8px;margin-bottom:12px;display:flex}.modal-btn{cursor:pointer;background:#fff;border:1px solid #ddd;border-radius:6px;flex:1;padding:8px 12px;font-size:13px}.modal-btn.primary{color:#fff;background:#4f90e0;border-color:#4f90e0}.modal-btn:hover{opacity:.85}.modal-close{cursor:pointer;background:#f0f0f0;border:none;border-radius:6px;width:100%;margin-top:4px;padding:8px}.page-with-nav{flex-direction:column;height:100dvh;display:flex}.site-nav{padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top,0px));background:#fff;border-bottom:1px solid #e5ddc8;flex-shrink:0;align-items:center;gap:16px;display:flex}.site-nav a{color:#4f90e0;font-size:13px;font-weight:600;text-decoration:none}.site-nav a:hover{text-decoration:underline}.sidebar-footer{border-top:1px solid #313244;flex-direction:column;gap:8px;padding:12px;display:flex}.sidebar-footer a{color:#a6adc8;font-size:12px;text-decoration:none}.sidebar-footer a:hover{color:#fff}.token-entry{flex:1;justify-content:center;align-items:center;min-height:0;padding:16px;display:flex;overflow-y:auto}.token-entry-box{width:100%;max-width:420px}.token-entry-box h2{margin-bottom:8px}.token-entry-box p{color:#555;margin-bottom:16px;font-size:13px;line-height:1.6}.token-entry-note{color:#999;margin-top:-8px;font-size:12px}.token-entry-box textarea{border:1px solid #ddd;border-radius:6px;width:100%;margin-bottom:12px;padding:8px;font-family:monospace;font-size:13px}.token-entry-actions{gap:8px;display:flex}.token-entry-actions .modal-btn{flex:1}.token-entry-divider{color:#999;align-items:center;gap:10px;margin:20px 0;font-size:12px;display:flex}.token-entry-divider:before,.token-entry-divider:after{content:"";background:#e5ddc8;flex:1;height:1px}.admin-gate-error{color:#e06c75;margin-top:8px;margin-bottom:12px;font-size:13px}.home-page{flex:1;justify-content:center;align-items:flex-start;min-height:0;padding:48px 16px;display:flex;overflow-y:auto}.home-hero{text-align:center;width:100%;max-width:520px}.home-hero h1{margin-bottom:12px;font-size:28px}.home-lead{color:#555;margin-bottom:28px;font-size:14px;line-height:1.8}.home-cta{color:#fff;background:#4f90e0;border-radius:10px;margin-bottom:40px;padding:14px 28px;font-size:15px;font-weight:600;text-decoration:none;display:inline-block;box-shadow:0 2px 10px #4f90e059}.home-cta:hover{background:#3d7ac7}.home-steps{text-align:left;flex-direction:column;gap:16px;margin-bottom:32px;display:flex}.home-step{align-items:flex-start;gap:12px;display:flex}.home-step-num{color:#6b5a3a;background:#eee4cf;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;font-weight:700;display:flex}.home-step p{color:#333;padding-top:2px;font-size:14px;line-height:1.6}.home-note{color:#999;font-size:12px;line-height:1.6}.home-note a{color:#4f90e0}.about-page{color:#555;flex:1;justify-content:center;align-items:center;min-height:0;font-size:20px;display:flex}.terms-page{flex:1;min-height:0;padding:32px 16px 64px;overflow-y:auto}.terms-article{color:#333;max-width:640px;margin:0 auto;line-height:1.8}.terms-article h1{margin-bottom:4px;font-size:24px}.terms-updated{color:#888;margin-bottom:32px;font-size:13px}.terms-article section{margin-bottom:28px}.terms-article h2{color:#1a1a2e;margin-bottom:8px;font-size:16px}.terms-article p{font-size:14px}.terms-article ul{padding-left:20px;font-size:14px}.terms-article li{margin-bottom:4px}.shared-header{z-index:10;background:#ffffffe6;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600;position:absolute;top:12px;left:12px;box-shadow:0 2px 8px #0000001a}.token-entry-box input[type=text]{border:1px solid #ddd;border-radius:6px;width:100%;margin-bottom:12px;padding:10px 8px;font-size:16px}.token-entry-file{color:#555;word-break:break-all;margin-bottom:8px;font-size:12px}.key-label-box{background:#faf8f2;border:1px solid #e5ddc8;border-radius:8px;flex-direction:column;align-items:center;gap:4px;margin-bottom:12px;padding:12px;display:flex}.key-label-caption{color:#777;font-size:12px}.key-label{letter-spacing:.15em;font-size:28px;font-weight:600}
