*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd{margin:0}ul[class],ol[class]{margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}img,svg,video,canvas{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}:where(.card,.gcard,.status-row,.fgroup){min-width:0}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}code,kbd,samp,pre{font-family:var(--f-mono);font-size:.85em}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px;border-radius:var(--r-xs)}.brand-word{color:var(--accent-2);font-weight:600}.ico{flex-shrink:0;width:18px;height:18px}.btn{justify-content:center;align-items:center;gap:var(--space-2);font-family:var(--f-display);font-weight:500;font-size:var(--fs-xs);padding:var(--space-3)var(--space-5);border-radius:var(--r-ctl);cursor:pointer;white-space:nowrap;min-height:40px;transition:background-color var(--t-fast)var(--ease-out),border-color var(--t-fast)var(--ease-out),color var(--t-fast)var(--ease-out),transform var(--t)var(--ease-out),box-shadow var(--t)var(--ease-out),opacity var(--t-fast)var(--ease);touch-action:manipulation;border:1px solid #0000;line-height:1;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.sm{padding:var(--space-2)var(--space-3);min-height:34px;font-size:var(--fs-2xs)}.btn.lg{padding:var(--space-4)var(--space-6);min-height:48px;font-size:var(--fs-sm)}.btn.block{width:100%}.btn.primary{background-color:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-btn);position:relative;overflow:hidden}.btn.primary:after{content:"";z-index:0;pointer-events:none;background:linear-gradient(100deg,#0000,#ffffff29,#0000);width:45%;height:100%;position:absolute;top:0;left:-75%;transform:skew(-18deg)}.btn.primary:hover:not(:disabled):after{animation:btn-shine .7s var(--ease-out)}@keyframes btn-shine{0%{left:-75%}to{left:130%}}.btn.primary:hover:not(:disabled){background-color:var(--accent-hover);box-shadow:var(--shadow-lift);transform:translateY(-1px)}.btn.primary:active:not(:disabled){background-color:var(--accent-press);box-shadow:var(--shadow-btn);transform:translateY(0)}.btn.ghost{border-color:var(--line);color:var(--text);background-color:#0000}.btn.ghost:hover:not(:disabled){border-color:var(--accent);color:var(--accent-2);background-color:var(--accent-ghost);transform:translateY(-1px)}.btn.ghost:active:not(:disabled){background-color:var(--accent-ghost-strong);transform:translateY(1px)}.btn.ghost.quiet{border-color:var(--accent-line-weak);color:var(--accent-2)}.btn.ghost.quiet:hover:not(:disabled),.btn.ghost.quiet:focus-visible,.btn.ghost.quiet:active:not(:disabled){color:var(--text)}.btn.danger{background-color:var(--no);color:var(--on-danger);box-shadow:var(--shadow-btn-danger)}.btn.danger:hover:not(:disabled){background-color:#cf4a4e;transform:translateY(-1px);box-shadow:0 24px 48px -20px #e0565a66}.btn.danger:active:not(:disabled){transform:translateY(0)}.btn-icon{border-radius:var(--r-ctl);border:1px solid var(--line);background-color:var(--surface-2);width:32px;height:32px;color:var(--muted);cursor:pointer;touch-action:manipulation;transition:color var(--t-fast)var(--ease),border-color var(--t-fast)var(--ease),background-color var(--t-fast)var(--ease),transform var(--t-fast)var(--ease);justify-content:center;align-items:center;display:inline-flex;position:relative}.btn-icon:after{content:"";border-radius:inherit;position:absolute;inset:-6px}.btn-icon:hover{color:var(--text);border-color:var(--muted)}.btn-icon:active{transform:translateY(1px)}.btn-icon--danger:hover{color:var(--no);border-color:var(--no);background-color:var(--no-ghost)}.btn-chip{align-items:center;gap:var(--space-2);padding:var(--space-2)var(--space-3);border:1px solid var(--line);border-radius:var(--r-ctl);background-color:var(--surface-2);color:var(--text-2);font-family:var(--f-body);font-size:var(--fs-xs);cursor:pointer;touch-action:manipulation;transition:color var(--t-fast)var(--ease),border-color var(--t-fast)var(--ease),background-color var(--t-fast)var(--ease),transform var(--t-fast)var(--ease);display:inline-flex}.btn-chip .ico{width:15px;height:15px}.btn-chip:active{transform:translateY(1px)}.btn-chip--ok:hover{color:var(--ok);border-color:var(--ok);background-color:var(--ok-ghost)}.btn-chip--no:hover{color:var(--no);border-color:var(--no);background-color:var(--no-ghost)}.card{background-color:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-card);transition:border-color var(--t)var(--ease),box-shadow var(--t)var(--ease),opacity var(--t)var(--ease),transform var(--t)var(--ease);overflow:hidden}.card:hover{border-color:var(--accent-line);box-shadow:var(--shadow-card),0 18px 44px -30px #5b5ef038}.card:focus-within{border-color:var(--accent);box-shadow:var(--shadow-card),var(--ring)}.card[hidden]{display:none}.card-body{padding:var(--space-5)}input[type=text],input[type=url],input[type=number],input[type=search],input[type=email],input[type=password],select,textarea{font-family:var(--f-body);font-size:var(--fs-xs);color:var(--text);background-color:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-ctl);padding:var(--space-3);width:100%;min-height:40px;transition:border-color var(--t-fast)var(--ease),box-shadow var(--t-fast)var(--ease),background-color var(--t-fast)var(--ease)}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--muted)}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:var(--ring);background-color:var(--surface);outline:none}input:disabled,select:disabled,textarea:disabled{opacity:.5;cursor:not-allowed}textarea{resize:vertical;line-height:var(--lh-body);min-height:78px}select{appearance:none;cursor:pointer;padding-right:var(--space-8);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23878d9a' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3)center;background-size:16px}.sw{cursor:pointer;flex-shrink:0;display:inline-flex;position:relative}.sw input{opacity:0;width:0;height:0;position:absolute}.sw-track{border-radius:var(--r-pill);background-color:var(--surface-3);border:1px solid var(--line);width:38px;height:22px;transition:background-color var(--t-slow)var(--ease-out),border-color var(--t-slow)var(--ease-out),box-shadow var(--t-slow)var(--ease-out);align-items:center;padding:2px;display:flex}.sw-thumb{background-color:var(--muted);width:16px;height:16px;transition:transform var(--t-slow)var(--ease-spring),background-color var(--t-fast)var(--ease);border-radius:50%}.sw input:checked~.sw-track{background-color:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-ghost)}.sw input:checked~.sw-track .sw-thumb{background-color:var(--on-accent);transform:translate(16px)}.sw input:focus-visible~.sw-track{box-shadow:var(--ring)}.sw:hover .sw-track{border-color:var(--muted)}.sw:hover .sw-thumb{background-color:var(--text-2)}.sw input:checked:hover~.sw-track{border-color:var(--accent-2)}.sw input:checked:hover~.sw-track .sw-thumb{background-color:var(--on-accent)}.notice{background-color:var(--surface);border:1px solid var(--hair);border-left:2px solid var(--accent);border-radius:var(--r-sm);padding:var(--space-3)var(--space-4);margin-bottom:var(--space-4);align-items:flex-start;gap:var(--space-3);animation:notice-in var(--t-slow)var(--ease-out)both;display:flex}@keyframes notice-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.notice .ico{color:var(--accent-2);width:16px;height:16px;margin-top:2px}.notice p{font-size:var(--fs-xs);color:var(--text-2);line-height:var(--lh-body);overflow-wrap:break-word}.notice a{color:var(--accent-2);text-underline-offset:3px;font-weight:500;text-decoration:underline}.notice--ok{border-left-color:var(--ok)}.notice--ok .ico{color:var(--ok)}.notice--warn{border-left-color:var(--warn)}.notice--warn .ico{color:var(--warn)}.notice--error{border-left-color:var(--no)}.notice--error .ico{color:var(--no)}.notice.fade{opacity:0;transition:opacity var(--t-slow)var(--ease),transform var(--t-slow)var(--ease);transform:translateY(-6px)}.toast{z-index:var(--z-toast);left:50%;bottom:var(--space-5);background-color:var(--surface-2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--r-sm);padding:var(--space-3)var(--space-5);font-size:var(--fs-xs);color:var(--text);box-shadow:var(--shadow-toast);opacity:0;pointer-events:none;transition:opacity var(--t-slow)var(--ease-out),transform var(--t-slow)var(--ease-out);position:fixed;transform:translate(-50%,12px)}.toast.is-in{opacity:1;transform:translate(-50%)}.pill{padding:2px var(--space-2);border-radius:var(--r-xs);font-size:var(--fs-2xs);background-color:var(--surface-3);color:var(--text-2);white-space:nowrap;font-weight:500;display:inline-block}.pill--ok{background-color:var(--ok-ghost);color:var(--ok)}.pill--warn{background-color:var(--warn-ghost);color:var(--warn)}.pill--no{background-color:var(--no-ghost);color:var(--no)}.pill--neutral{background-color:var(--accent-ghost);color:var(--accent-2)}.tt{z-index:var(--z-tooltip);background-color:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);width:max-content;max-width:min(280px,100vw - 24px);padding:var(--space-3);box-shadow:var(--shadow-menu);pointer-events:none;opacity:0;transition:opacity var(--t-fast)var(--ease-out),transform var(--t-fast)var(--ease-out);display:block;position:fixed;transform:translateY(-4px)}.tt[hidden]{display:none}.tt.is-in{opacity:1;transform:none}.tt-title{font-family:var(--f-display);font-weight:600;font-size:var(--fs-2xs);color:var(--text);line-height:var(--lh-heading);margin-bottom:var(--space-1);text-transform:none;letter-spacing:normal;display:block}.tt-desc{font-family:var(--f-body);font-size:var(--fs-2xs);color:var(--text-2);font-weight:400;line-height:var(--lh-snug);overflow-wrap:break-word;text-transform:none;letter-spacing:normal;display:block}.tt:after{content:"";background-color:var(--surface-2);border:1px solid var(--line);width:8px;height:8px;position:absolute;transform:rotate(45deg)}.tt[data-side=right]:after{left:-5px;top:var(--tt-arrow,16px);border-top:0;border-right:0}.tt[data-side=left]:after{right:-5px;top:var(--tt-arrow,16px);border-bottom:0;border-left:0}.tt[data-side=bottom]:after{top:-5px;left:var(--tt-arrow,16px);border-bottom:0;border-right:0}.tt[data-side=top]:after{bottom:-5px;left:var(--tt-arrow,16px);border-top:0;border-left:0}.modal{z-index:var(--z-modal);padding:var(--space-5);place-items:center;display:grid;position:fixed;inset:0}.modal[hidden]{display:none}.modal-backdrop{backdrop-filter:blur(3px);opacity:0;transition:opacity var(--t)var(--ease);background-color:#050608b8;position:absolute;inset:0}.modal.is-in .modal-backdrop{opacity:1}.modal-box{background-color:var(--surface);border:1px solid var(--line);border-radius:var(--r);width:min(460px,100%);max-height:calc(100dvh - 40px);box-shadow:var(--shadow-menu);padding:var(--space-5);opacity:0;transition:opacity var(--t)var(--ease-out),transform var(--t)var(--ease-out);position:relative;overflow-y:auto;transform:translateY(8px)scale(.98)}.modal.is-in .modal-box{opacity:1;transform:none}.modal--danger .modal-box{border-color:#e0565a61}.modal-ico{border-radius:var(--r-sm);width:38px;height:38px;margin-bottom:var(--space-3);background-color:var(--accent-ghost);color:var(--accent-2);justify-content:center;align-items:center;display:inline-flex}.modal--danger .modal-ico{background-color:var(--no-ghost);color:var(--no)}.modal-ico .ico{width:20px;height:20px}.modal-title{font-family:var(--f-display);font-weight:600;font-size:var(--fs-md);color:var(--text);line-height:var(--lh-heading);margin-bottom:var(--space-2)}.modal-desc{font-size:var(--fs-xs);color:var(--text-2);line-height:var(--lh-body)}.modal-desc+.modal-desc{margin-top:var(--space-2)}.modal-desc strong{color:var(--text);font-weight:600}.modal-desc code{background-color:var(--surface-2);padding:2px var(--space-2);border-radius:var(--r-xs);color:var(--accent-2);font-size:var(--fs-2xs)}.modal-body{margin-top:var(--space-4)}.modal-label{font-size:var(--fs-2xs);color:var(--text-2);margin-bottom:var(--space-2);font-weight:500;display:block}.modal-input{background:var(--surface-2);width:100%;color:var(--text);border:1px solid var(--line);border-radius:var(--r-ctl);padding:var(--space-3)var(--space-4);font:inherit;font-size:var(--fs-sm);transition:border-color var(--t)var(--ease),box-shadow var(--t)var(--ease)}.modal-input::placeholder{color:var(--muted)}.modal-input:focus-visible{border-color:var(--accent);box-shadow:var(--ring);outline:none}.modal-foot{justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--line-soft);display:flex}.modal-scope{gap:var(--space-2);margin-top:var(--space-3);flex-direction:column;display:flex}.modal-scope-row{align-items:flex-start;gap:var(--space-2);font-size:var(--fs-2xs);line-height:var(--lh-snug);display:flex}.modal-scope-row .ico{width:14px;height:14px;margin-top:2px}.modal-scope-row--yes{color:var(--text-2)}.modal-scope-row--yes .ico{color:var(--no)}.modal-scope-row--no{color:var(--muted)}.modal-scope-row--no .ico{color:var(--ok)}.modal-box--wide{width:min(540px,100%)}.modal-foot--center{justify-content:center}.wn-list{gap:var(--space-1);margin-top:var(--space-4);flex-direction:column;list-style:none;display:flex}.wn-item{align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border-radius:var(--r-sm);transition:background-color var(--t)var(--ease);display:flex}.wn-item:hover{background-color:var(--surface-2)}.wn-ico{border-radius:var(--r-sm);background-color:var(--accent-ghost);width:34px;height:34px;color:var(--accent-2);flex:none;justify-content:center;align-items:center;display:inline-flex}.wn-ico .ico{width:18px;height:18px}.wn-text{flex-direction:column;gap:2px;min-width:0;display:flex}.wn-text strong{font-family:var(--f-display);font-weight:600;font-size:var(--fs-sm);color:var(--text);line-height:var(--lh-snug)}.wn-desc{font-size:var(--fs-2xs);color:var(--text-2);line-height:var(--lh-snug)}@media (prefers-reduced-motion:reduce){.notice{animation:none}.btn:hover,.btn:active,.btn-icon:active,.btn-chip:active{transform:none}.btn.primary:hover:not(:disabled):after{animation:none}}