@font-face{font-family:Virgil;src:url(../fonts/Virgil.woff2) format("woff2");font-display:swap}@font-face{font-family:Cascadia;src:url(../fonts/Cascadia.woff2) format("woff2");font-display:swap}@font-face{font-family:Assistant;src:url(../fonts/Assistant-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Assistant;src:url(../fonts/Assistant-Medium.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Assistant;src:url(../fonts/Assistant-SemiBold.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Assistant;src:url(../fonts/Assistant-Bold.woff2) format("woff2");font-weight:700;font-display:swap}:root{--island-bg: #ffffff;--ui-text: #1b1b1f;--icon-color: #1b1b1f;--ui-border: rgba(0, 0, 0, .1);--btn-hover: #f1f0ff;--btn-active: #e0dfff;--btn-active-icon: #100d81;--accent: #6965db;--accent-soft: rgba(105, 101, 219, .15);--island-shadow: 0px 0px .5px rgba(0, 0, 0, .18), 0px 3px 8px rgba(0, 0, 0, .1), 0px 1px 3px rgba(0, 0, 0, .12);--hint-color: #5c5c66;--input-bg: #f5f5f7;--key-hint: #ced4da;--ui-font: "Assistant", "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{font-family:var(--ui-font);color:var(--ui-text);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}#app{position:relative}#canvas{position:absolute;top:0;right:0;bottom:0;left:0;display:block;touch-action:none}.layer-ui{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}.layer-ui>*{pointer-events:auto}.ui-corner{position:absolute;display:flex;gap:8px}.top-left{top:12px;left:12px}.top-center{top:12px;left:50%;transform:translate(-50%);max-width:calc(100vw - 180px)}.top-right{top:12px;right:12px}.bottom-left{bottom:14px;left:12px}.bottom-right{bottom:14px;right:12px}.island{background:var(--island-bg);border-radius:10px;box-shadow:var(--island-shadow);display:flex;align-items:center;padding:4px;gap:2px}.tools-island{padding:4px;overflow-x:auto;scrollbar-width:none;max-width:100%}.tools-island::-webkit-scrollbar{display:none}.sep-v{width:1px;height:20px;background:var(--ui-border);margin:0 4px;flex:none}.tool-icon-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--icon-color);width:36px;height:36px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;position:relative;flex:none}.tool-icon-btn svg{width:20px;height:20px}.tool-icon-btn:hover{background:var(--btn-hover)}.tool-icon-btn.active{background:var(--btn-active);color:var(--btn-active-icon)}.tool-icon-btn:disabled{opacity:.35;cursor:default}.tool-icon-btn:disabled:hover{background:transparent}.shortcut-badge{position:absolute;bottom:1px;right:3px;font-size:9px;font-weight:600;color:var(--key-hint);font-family:var(--ui-font);pointer-events:none}.tool-icon-btn.active .shortcut-badge{color:var(--btn-active-icon)}.zoom-label{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--ui-text);font-family:var(--ui-font);font-size:13px;font-weight:600;min-width:44px;height:36px;border-radius:8px;cursor:pointer}.zoom-label:hover{background:var(--btn-hover)}.panel-island{position:absolute;top:64px;left:12px;flex-direction:column;align-items:stretch;padding:12px;gap:10px;width:208px;max-height:calc(100vh - 160px);overflow-y:auto;display:none;scrollbar-width:thin}.panel-section{display:flex;flex-direction:column;gap:6px}.panel-label{font-size:12px;font-weight:600;color:var(--hint-color);letter-spacing:.01em}.panel-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.swatch-row{gap:6px}.swatch-btn{width:24px;height:24px;border-radius:6px;border:1px solid var(--ui-border);cursor:pointer;padding:0;position:relative;display:inline-flex;align-items:center;justify-content:center;color:var(--icon-color);flex:none}.swatch-btn svg{width:15px;height:15px}.swatch-btn.small{width:18px;height:18px;border-radius:4px}.swatch-btn:hover{transform:scale(1.12);z-index:2}.swatch-btn.active{outline:2px solid var(--accent);outline-offset:1px}.transparent-swatch{background:conic-gradient(#e9ecef 25%,#fff 0,#fff 50%,#e9ecef 0,#e9ecef 75%,#fff 0);background-size:10px 10px}.segmented{background:var(--input-bg);border-radius:8px;padding:2px;gap:0;display:flex}.seg-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--icon-color);min-width:34px;height:30px;padding:0 8px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-family:var(--ui-font);font-size:13px;font-weight:600;flex:1}.seg-btn svg{width:18px;height:18px}.seg-btn:hover{background:var(--btn-hover)}.seg-btn.active{background:var(--island-bg);box-shadow:0 1px 3px #00000026;color:var(--accent)}.opacity-row input[type=range]{flex:1;accent-color:var(--accent)}.opacity-num{font-size:12px;font-weight:600;min-width:24px;text-align:right}.panel-row .tool-icon-btn{width:32px;height:32px}.dropdown-menu{position:absolute;background:var(--island-bg);border-radius:10px;box-shadow:var(--island-shadow);padding:6px;min-width:230px;z-index:60;display:flex;flex-direction:column;gap:1px}.menu-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 10px;border-radius:6px;cursor:pointer;font-family:var(--ui-font);font-size:13.5px;color:var(--ui-text);text-align:left}.menu-item:hover{background:var(--btn-hover)}.menu-item:disabled{opacity:.4;cursor:default}.menu-item:disabled:hover{background:transparent}.menu-label{display:inline-flex;align-items:center;gap:9px}.menu-label svg{width:16px;height:16px;opacity:.8}.menu-label.small{font-size:12px;font-weight:600;color:var(--hint-color);padding:4px 10px 2px}.menu-shortcut{font-size:11.5px;color:var(--hint-color)}.menu-check{display:inline-flex}.menu-check svg{width:14px;height:14px;color:var(--accent)}.menu-sep{height:1px;background:var(--ui-border);margin:4px 6px}.menu-canvas-bg{padding:2px 10px 8px}.menu-canvas-bg .swatch-row{padding-top:4px}.ctx-menu{min-width:210px}.popover{position:absolute;background:var(--island-bg);border-radius:10px;box-shadow:var(--island-shadow);padding:10px;z-index:70}.color-popover{width:216px}.color-grid{display:flex;flex-direction:column;gap:4px}.color-grid-row{display:flex;gap:4px}.hex-row{margin-top:8px}.hex-input{width:100%;border:1px solid var(--ui-border);background:var(--input-bg);border-radius:6px;padding:6px 8px;font-family:var(--ui-font);font-size:13px;color:var(--ui-text);outline:none}.hex-input:focus{border-color:var(--accent)}.arrowhead-popover{display:flex;gap:2px}.dialog-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f0f1459;display:flex;align-items:center;justify-content:center;z-index:80}.dialog{background:var(--island-bg);border-radius:14px;box-shadow:var(--island-shadow);width:min(420px,calc(100vw - 40px));max-height:min(560px,calc(100vh - 60px));display:flex;flex-direction:column;overflow:hidden}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;font-weight:700;font-size:15px}.dialog-body{padding:4px 16px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.dialog-note{font-size:12.5px;color:var(--hint-color)}.dialog-row{display:flex;align-items:center;justify-content:space-between;font-size:13.5px}.dialog-toggle{display:flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer}.dialog-toggle input{accent-color:var(--accent);width:15px;height:15px}.dialog-btns{display:flex;gap:8px;margin-top:4px}.primary-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:var(--accent);color:#fff;font-family:var(--ui-font);font-size:13.5px;font-weight:600;padding:9px 18px;border-radius:8px;cursor:pointer;flex:1}.primary-btn:hover{filter:brightness(1.08)}:root[data-theme=dark] .primary-btn{color:#15151a}.shortcut-group-name{font-size:12px;font-weight:700;color:var(--hint-color);text-transform:uppercase;letter-spacing:.06em;margin-top:4px}.shortcut-grid{display:grid;grid-template-columns:1fr auto;gap:5px 14px;font-size:13px}.shortcut-grid kbd{font-family:var(--ui-font);font-size:11.5px;background:var(--input-bg);border:1px solid var(--ui-border);border-radius:5px;padding:2px 7px;white-space:nowrap}.hint-bar{position:absolute;bottom:16px;left:50%;transform:translate(-50%);background:var(--island-bg);box-shadow:var(--island-shadow);border-radius:8px;padding:7px 14px;font-size:12.5px;color:var(--hint-color);white-space:nowrap;transition:opacity .25s;pointer-events:none!important;max-width:calc(100vw - 200px);overflow:hidden;text-overflow:ellipsis}.text-editor-wrap{position:absolute;z-index:40;pointer-events:auto}.text-editor{display:block;border:none;outline:none;background:transparent;resize:none;overflow:hidden;padding:0;margin:0;font-family:inherit;white-space:pre;caret-color:var(--accent);min-height:1em}.text-editor::selection{background:var(--accent-soft)}:root[data-theme=dark]{color-scheme:dark}@media (max-width: 720px){.top-center{left:8px;right:8px;transform:none;max-width:none;top:8px}.top-left{top:8px;left:8px}.top-right{display:none}.top-left{top:56px}.tools-island{order:0}.panel-island{top:auto;bottom:60px;left:8px;right:8px;width:auto;max-height:34vh;flex-direction:column}.hint-bar{display:none}.bottom-left{bottom:10px;left:8px}.bottom-right{bottom:10px;right:8px}.tool-icon-btn{width:40px;height:40px}}
