*{box-sizing:border-box}html,body,#root{height:100%;margin:0;font-family:system-ui,sans-serif}.app{flex-direction:column;height:100%;display:flex}.app-header{color:#fff;background:#1e1e2e;border-bottom:1px solid #000;justify-content:space-between;align-items:center;gap:16px;height:52px;padding:0 16px;font-size:14px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand strong{letter-spacing:.3px;font-size:15px}.logo{width:auto;height:28px;display:block}.toolbar{gap:6px;display:flex}.toolbar button{color:#fff;cursor:pointer;background:#2e2e42;border:1px solid #3e3e56;border-radius:6px;padding:6px 10px;font-size:13px}.toolbar button:hover{background:#3e3e56}.panels{flex:1;min-height:0;display:flex}.panel{flex-direction:column;width:100%;min-width:0;height:100%;display:flex;overflow:hidden}.canvas{-webkit-user-select:none;user-select:none;background:#fff;width:100%;height:100%;position:relative;overflow:hidden}.shape{cursor:move;justify-content:center;align-items:center;display:flex;position:absolute}.shape--selected{outline-offset:2px;outline:2px solid #1e90ff}.shape__text{pointer-events:none;white-space:nowrap;text-shadow:0 1px 2px #00000040;font-weight:600;position:absolute}.code-panel{border-right:1px solid #ddd;position:relative;overflow:hidden}.color-board{-webkit-user-select:none;user-select:none;z-index:200;background:#fff;border:1px solid #d0d0d8;border-radius:10px;width:260px;padding:10px;font-size:12px;position:absolute;bottom:12px;right:12px;box-shadow:0 6px 24px #0000002e}.color-board__head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.color-board__head .tabs{gap:4px;display:flex}.color-board__head .tabs button{cursor:pointer;background:#f0f0f4;border:1px solid #d0d0d8;border-radius:5px;padding:3px 8px;font-size:12px}.color-board__head .tabs button.active{color:#fff;background:#1e1e2e;border-color:#1e1e2e}.color-board__head .close{cursor:pointer;color:#666;background:0 0;border:0;padding:0 4px;font-size:18px;line-height:1}.color-board__head .close:hover{color:#000}.swatches{grid-template-columns:repeat(10,1fr);gap:3px;margin-bottom:10px;display:grid}.swatch{aspect-ratio:1;cursor:pointer;border:1px solid #00000026;border-radius:4px;padding:0}.swatch:hover{transform:scale(1.15)}.swatch--picked{outline-offset:1px;outline:2px solid #1e90ff}.color-board__footer{border-top:1px solid #eee;justify-content:space-between;align-items:center;min-height:44px;padding-top:8px;display:flex}.picked-info{align-items:center;gap:8px;display:flex}.picked-dot{border:1px solid #00000026;border-radius:4px;width:22px;height:22px}.picked-name{font-size:12px;font-weight:600}.picked-hex{color:#444;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}.picked-hint{color:#888;font-size:11px}.copy{color:#fff;cursor:pointer;background:#1e1e2e;border:0;border-radius:5px;padding:5px 10px;font-size:12px}.copy:hover{background:#2e2e42}.landing{color:#1e1e2e;background:radial-gradient(1200px 600px at 10% -10%,#eaf2ff 0%,#0000 60%),radial-gradient(1000px 500px at 100% 0,#fff1e6 0%,#0000 55%),#fbfbfd;flex-direction:column;width:100%;min-height:100%;display:flex;overflow-x:hidden}.landing__hero{text-align:center;max-width:960px;margin:0 auto;padding:72px 24px 32px}.landing__brand{flex-direction:column;align-items:center;gap:8px;display:flex}.landing__logo{object-fit:contain;width:96px;height:96px}.landing__brand h1{letter-spacing:-1px;margin:4px 0 0;font-size:56px}.landing__tagline{letter-spacing:2px;text-transform:uppercase;color:#6b6b7a;margin:0;font-size:18px}.landing__intro{color:#45455a;max-width:640px;margin:28px auto 0;font-size:18px;line-height:1.6}.landing__grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px;max-width:1120px;margin:32px auto 0;padding:0 24px 64px;display:grid}.role-card{color:inherit;background:#fff;border:1px solid #e6e6ee;border-radius:16px;flex-direction:column;gap:12px;padding:22px;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 6px #00000008}.role-card:before{content:"";background:var(--accent,#4a90e2);width:5px;position:absolute;inset:0 auto 0 0}.role-card:hover{border-color:var(--accent,#4a90e2);transform:translateY(-3px);box-shadow:0 10px 24px #00000014}.role-card__icon{font-size:36px;line-height:1}.role-card__body h2{color:#1e1e2e;margin:0 0 4px;font-size:20px}.role-card__body p{color:#5a5a72;margin:0;font-size:14px;line-height:1.5}.role-card__cta{color:var(--accent,#4a90e2);margin-top:auto;font-size:13px;font-weight:600}.course-card--locked{opacity:.85;background:linear-gradient(#fff 0%,#f7f8fc 100%);border-style:dashed;border-color:#d0d0d8}.course-card--locked .course-card__cta{color:#8a8a9e;font-weight:700}.course-card--locked:before{opacity:.55}.landing__footer{text-align:center;color:#8a8a9e;border-top:1px solid #eee;margin-top:auto;padding:20px;font-size:13px}@media (width<=640px){.landing__hero{padding:40px 16px 24px}.landing__logo{width:72px;height:72px}.landing__brand h1{letter-spacing:-.5px;margin:4px 0 0;font-size:40px}.landing__tagline{letter-spacing:1.5px;font-size:13px}.landing__intro{margin-top:20px;padding:0 8px;font-size:15px}.landing__grid{grid-template-columns:1fr;gap:12px;margin-top:24px;padding:0 16px 40px}.role-card{padding:18px}.role-card__icon{font-size:30px}.role-card__body h2{font-size:18px}.role-card__body p{font-size:13px}.landing__footer{padding:16px;font-size:12px}}@media (width>=641px) and (width<=900px){.landing__grid{grid-template-columns:repeat(2,1fr)}}.coming-soon{background:#fbfbfd;justify-content:center;align-items:center;min-height:100%;display:flex}.coming-soon__card{text-align:center;background:#fff;border:1px solid #e6e6ee;border-radius:16px;max-width:460px;padding:40px 32px;box-shadow:0 10px 30px #0000000f}.coming-soon__card h1{margin:0 0 8px;font-size:28px}.coming-soon__card p{color:#5a5a72;margin:0 0 24px}.btn{border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;display:inline-block}.btn--primary{color:#fff;background:#1e1e2e}.btn--primary:hover{background:#2e2e42}.brand-link{color:inherit;align-items:center;gap:10px;text-decoration:none;display:flex}.role-card--live:after{content:"TRY NOW";background:var(--accent,#4a90e2);color:#fff;letter-spacing:.5px;border-radius:20px;padding:3px 7px;font-size:10px;font-weight:700;position:absolute;top:12px;right:12px}.auth-page{background:radial-gradient(900px 500px at 10% 0,#eaf2ff 0%,#0000 60%),radial-gradient(800px 500px at 100% 0,#fff1e6 0%,#0000 55%),#fbfbfd;justify-content:center;align-items:center;min-height:100%;padding:40px 16px;display:flex}.auth-card{background:#fff;border:1px solid #e6e6ee;border-radius:16px;flex-direction:column;gap:14px;width:100%;max-width:400px;padding:32px 28px;display:flex;box-shadow:0 10px 30px #0000000f}.auth-logo-link{align-self:center}.auth-logo{object-fit:contain;width:64px;height:64px}.auth-card h1{text-align:center;margin:8px 0 0;font-size:22px}.auth-sub{text-align:center;color:#6b6b7a;margin:0 0 8px;font-size:14px}.auth-card label{color:#45455a;flex-direction:column;gap:4px;font-size:13px;font-weight:500;display:flex}.auth-card input{border:1px solid #d0d0d8;border-radius:8px;outline:none;padding:10px 12px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}.auth-card input:focus{border-color:#4a90e2;box-shadow:0 0 0 3px #4a90e22e}.auth-error{color:#b02020;background:#fee;border:1px solid #f5c2c2;border-radius:8px;padding:8px 12px;font-size:13px}.btn--full{width:100%}.auth-card .btn{padding:11px 16px;font-size:15px}.auth-card .btn:disabled{opacity:.6;cursor:not-allowed}.auth-alt{text-align:center;color:#6b6b7a;margin:4px 0 0;font-size:13px}.auth-alt a{color:#4a90e2;font-weight:600;text-decoration:none}.auth-alt a:hover{text-decoration:underline}.user-menu{align-items:center;gap:10px;font-size:13px;display:flex}.user-name{opacity:.85;font-weight:500}.btn-logout{color:#fff;cursor:pointer;background:0 0;border:1px solid #4a4a5e;border-radius:6px;padding:5px 10px;font-size:12px}.btn-logout:hover{background:#3e3e56}.hub{color:#1e1e2e;background:radial-gradient(1200px 600px at 10% -10%,#eaf2ff 0%,#0000 60%),radial-gradient(1000px 500px at 100% 0,#fff1e6 0%,#0000 55%),#fbfbfd;flex-direction:column;min-height:100%;display:flex}.hub__header{background:#fff;border-bottom:1px solid #e6e6ee;justify-content:space-between;align-items:center;height:56px;padding:0 20px;display:flex}.hub__header .user-menu{color:#1e1e2e}.hub__header .btn-logout{color:#1e1e2e;border-color:#d0d0d8}.hub__header .btn-logout:hover{background:#f0f0f4}.hub__main{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:48px 24px 64px}.hub__title{letter-spacing:-.5px;margin:0 0 6px;font-size:32px}.hub__subtitle{color:#6b6b7a;margin:0 0 32px;font-size:16px}.hub__grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;display:grid}.course-card{color:inherit;background:#fff;border:1px solid #e6e6ee;border-radius:14px;flex-direction:column;gap:6px;padding:22px;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 6px #00000008}.course-card:before{content:"";background:var(--accent,#4a90e2);width:5px;position:absolute;inset:0 auto 0 0}.course-card:hover{border-color:var(--accent,#4a90e2);transform:translateY(-3px);box-shadow:0 10px 24px #00000014}.course-card__icon{margin-bottom:6px;font-size:34px;line-height:1}.course-card h2{margin:0;font-size:20px}.course-card p{color:#5a5a72;margin:0;font-size:14px;line-height:1.5}.course-card__cta{color:var(--accent,#4a90e2);margin-top:auto;padding-top:12px;font-size:13px;font-weight:600}.course-card--soon{opacity:.7}.course-card--soon .course-card__cta{color:#9a9aae}.mode-banner{color:#6b4b00;text-align:center;background:linear-gradient(90deg,#fff7e6 0%,#fff1d6 100%);border-bottom:1px solid #f0dcae;padding:10px 20px;font-size:13.5px}.mode-banner b{color:#b06b00;font-weight:700}.selection-bar{z-index:100;color:#e8e8f0;background:#1f1f2e;border:1px solid #33334a;border-radius:10px;align-items:center;gap:6px;padding:6px;font-family:inherit;font-size:13px;display:flex;position:absolute;box-shadow:0 6px 20px #00000040}.selection-bar>select,.selection-bar>button,.selection-bar>.btn-colors,.selection-bar>.duplicate,.selection-bar>.danger{appearance:none;color:#e8e8f0;cursor:pointer;background:#2a2a3e;border:1px solid #3a3a52;border-radius:7px;align-items:center;gap:6px;height:32px;padding:6px 12px;font-family:inherit;font-size:13px;font-weight:600;line-height:1;transition:background .12s,border-color .12s,transform 80ms;display:inline-flex}.selection-bar>select:hover,.selection-bar>button:hover,.selection-bar>.btn-colors:hover,.selection-bar>.duplicate:hover{background:#35354e;border-color:#4a4a66}.selection-bar>select:active,.selection-bar>button:active{transform:scale(.97)}.selection-bar>select{background-image:linear-gradient(45deg,#0000 50%,#b0b0c8 50%),linear-gradient(135deg,#b0b0c8 50%,#0000 50%);background-position:calc(100% - 14px) 13px,calc(100% - 9px) 13px;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:28px}.selection-bar>select option{color:#fff;background:#1f1f2e}.selection-bar>.btn-colors{padding-left:8px}.btn-colors__swatch{border:1px solid #ffffff40;border-radius:4px;flex-shrink:0;width:16px;height:16px;display:inline-block}.selection-bar>.danger{color:#ffb0b8;background:#3a2228;border-color:#5c2f38}.selection-bar>.danger:hover{color:#fff;background:#5c2f38;border-color:#8a3f4a}.selection-bar>.duplicate{color:#a8cbeb;background:#22303f;border-color:#2f465f}.selection-bar>.duplicate:hover{color:#fff;background:#2f465f;border-color:#4a6a89}.selection-input{color:#e8e8f0;background:#2a2a3e;border:1px solid #3a3a52;border-radius:7px;outline:none;width:180px;height:32px;padding:6px 10px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px}.selection-input:focus{border-color:#4a90e2;box-shadow:0 0 0 2px #4a90e240}.selection-input::placeholder{color:#7a7a94}.selection-input:focus{border-color:#4a90e2}.shape-text-block{text-align:center;pointer-events:none;white-space:normal;word-break:break-word;overflow-wrap:anywhere;justify-content:center;align-items:center;padding:8px 12px;font-weight:600;line-height:1.25;display:flex;position:absolute;inset:0;overflow:hidden}.shape-list{text-align:left;word-break:break-word;overflow-wrap:anywhere;padding:12px 16px 12px 32px;line-height:1.4;position:absolute;inset:0;overflow:auto}.shape-list ul{margin:0;padding:0}.shape-list li{margin:2px 0}.shape-placeholder{color:#8a8a9e;border-radius:inherit;background:#f0f0f4;border:2px dashed #d0d0d8;justify-content:center;align-items:center;width:100%;height:100%;font-size:13px;display:flex}.lesson-strip{border-bottom:2px solid;padding:10px 20px 14px;transition:padding .2s;position:relative}.lesson-strip--collapsed{padding:6px 20px}.lesson-strip__top{justify-content:space-between;align-items:center;gap:12px;display:flex}.lesson-strip__pips{align-items:center;gap:6px;display:flex}.pip{color:#6b6b7a;cursor:pointer;background:#fff;border:2px solid #d0d0d8;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;padding:0;font-size:12px;font-weight:700;transition:all .15s;display:flex}.pip:hover{border-color:var(--pip-accent,#4a90e2);transform:scale(1.1)}.pip--done{background:var(--pip-accent,#4a90e2);border-color:var(--pip-accent,#4a90e2);color:#fff}.pip--active{box-shadow:0 0 0 3px #4a90e240}.lesson-strip__count{color:#6b6b7a;margin-left:8px;font-size:12px;font-weight:600}.lesson-strip__toggle{color:#6b6b7a;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:4px 8px;font-size:14px}.lesson-strip__toggle:hover{color:#1e1e2e;background:#0000000d}.lesson-strip__body{align-items:flex-start;gap:14px;margin-top:10px;display:flex}.lesson-strip__icon{border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;display:flex;box-shadow:0 2px 6px #0000001f}.lesson-strip__text{flex:1;min-width:0}.lesson-strip__title{align-items:center;gap:10px;margin-bottom:4px;display:flex}.lesson-strip__number{text-transform:uppercase;letter-spacing:1px;color:#8a8a9e;font-size:11px;font-weight:700}.lesson-strip__name{color:#1e1e2e;font-size:17px;font-weight:700}.lesson-strip__badge{color:#fff;letter-spacing:.3px;background:#27ae60;border-radius:20px;margin-left:auto;padding:3px 9px;font-size:11px;font-weight:700}.lesson-strip__intro{color:#3a3a52;margin:0 0 4px;font-size:14px;line-height:1.45}.lesson-strip__task{color:#1e1e2e;margin:0 0 3px;font-size:14px;line-height:1.45}.lesson-strip__task strong{color:#d35400}.lesson-strip__hint{color:#6b6b7a;margin:0;font-size:12.5px}.celebration{color:#fff;pointer-events:none;z-index:50;background:#27ae60;border-radius:24px;align-items:center;gap:8px;padding:10px 16px;font-size:14px;font-weight:700;animation:2.2s celebrate-pop;display:flex;position:absolute;top:50%;right:20px;transform:translateY(-50%);box-shadow:0 6px 20px #27ae6066}.celebration__emoji{font-size:20px;animation:.6s infinite alternate celebrate-bounce}@keyframes celebrate-pop{0%{opacity:0;transform:translateY(6px)scale(.9)}10%{opacity:1;transform:translateY(0)scale(1.05)}20%{transform:translateY(0)scale(1)}85%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(4px)scale(.95)}}@keyframes celebrate-bounce{0%{transform:translateY(0)rotate(-8deg)}to{transform:translateY(-4px)rotate(8deg)}}.code-panel{flex-direction:column;display:flex}.code-editor-wrap{flex:1;min-height:0;position:relative}.lesson-strip{border-bottom:2px solid;border-radius:0;flex-shrink:0;max-height:42vh;padding:12px 16px;overflow:auto}.lesson-extra{border-top:1px dashed #0000001f;margin-top:12px;padding-top:12px}.lesson-extra__row{gap:6px;display:flex}.lesson-extra__input{border:1px solid #d0d0d8;border-radius:8px;outline:none;flex:1;min-width:0;padding:8px 10px;font-family:inherit;font-size:13px}.lesson-extra__input:focus{border-color:#f39c12;box-shadow:0 0 0 3px #f39c122e}.lesson-extra__btn{color:#fff;cursor:pointer;background:#f39c12;border:0;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:700}.lesson-extra__btn:hover{background:#e08e0b}.lesson-extra__note{color:#6b6b7a;margin-top:8px;font-size:12.5px}.palette-picker{grid-template-columns:repeat(10,1fr);gap:4px;display:grid}.palette-picker__sw{aspect-ratio:1;cursor:pointer;border:1px solid #00000026;border-radius:5px;padding:0;position:relative}.palette-picker__sw:hover{transform:scale(1.1)}.palette-picker__sw--on{outline-offset:1px;outline:3px solid #1e90ff}.palette-picker__check{color:#fff;text-shadow:0 1px 3px #0009;justify-content:center;align-items:center;font-size:14px;font-weight:800;display:flex;position:absolute;inset:0}.palette-picker__info{color:#6b6b7a;margin-top:8px;font-size:12.5px}.palette-picker__chosen{gap:6px;margin-top:8px;display:flex}.palette-picker__chip{border:2px solid #fff;border-radius:50%;width:22px;height:22px;box-shadow:0 0 0 1px #d0d0d8}.inspiration-frame{background:#fff;border:0;width:100%;height:100%}.celebration{justify-content:center;animation:2.2s celebrate-pop;inset:auto 12px 10px;transform:none}.lesson-strip{border-bottom:2px solid;border-radius:0;flex-shrink:0;max-height:45vh;padding:12px 16px;position:relative;overflow-y:auto}.lesson-extra__label{color:#6b6b7a;margin-bottom:6px;font-size:12px;font-weight:600}.site-chips{flex-wrap:wrap;gap:6px;display:flex}.site-chip{color:#3a3a52;cursor:pointer;background:#fff;border:1px solid #d0d0d8;border-radius:20px;padding:5px 12px;font-size:12.5px;font-weight:600;transition:all .15s}.site-chip:hover:not(:disabled){color:#fff;background:#f39c12;border-color:#f39c12;transform:translateY(-1px)}.site-chip:disabled{opacity:.5;cursor:not-allowed}.site-chip--active{color:#fff;background:#f39c12;border-color:#f39c12}.lesson-extra__error{color:#b02020;background:#fee;border-radius:8px;margin-top:8px;padding:8px 10px;font-size:12.5px}.inspiration-wrap{flex-direction:column;height:100%;display:flex}.inspiration-banner{color:#7a5a00;text-align:center;background:#fef9e7;border-bottom:1px solid #f0e0a0;padding:8px 14px;font-size:12.5px}.inspiration-banner b{color:#b06b00}.inspiration-frame{background:#fff;border:0;flex:1;width:100%}.lesson-next-btn{color:#fff;cursor:pointer;background:#27ae60;border:0;border-radius:8px;width:100%;margin-top:12px;padding:10px 14px;font-size:13.5px;font-weight:700;transition:background .15s,transform .1s}.lesson-next-btn:hover{background:#229a55;transform:translateY(-1px)}.lesson-next-btn:active{transform:translateY(0)}.visual-panels{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.visual-panel{border-bottom:1px solid #e6e6ee;flex-direction:column;flex:1;min-height:0;display:flex}.visual-panel:last-child{border-bottom:0}.visual-panel__head{background:#fafbff;border-bottom:1px solid #eef0f8;align-items:center;gap:8px;padding:10px 14px;display:flex}.visual-panel__icon{font-size:16px}.visual-panel__title{color:#1e1e2e;font-size:13px;font-weight:700}.visual-panel__hint{color:#8a8a9e;margin-left:auto;font-size:11.5px}.visual-panel__body{flex:1;min-height:0;padding:10px 12px;overflow:auto}.visual-panel__placeholder{color:#8a8a9e;text-align:center;padding:20px;font-size:13px}.outline{font-size:13px}.outline-empty{color:#8a8a9e;text-align:center;padding:20px}.outline-item{margin-bottom:2px}.outline-item__head{cursor:pointer;text-align:left;background:#fff;border:1px solid #eef0f8;border-left:3px solid #95a5a6;border-radius:6px;align-items:center;gap:6px;width:100%;padding:5px 8px;font-size:12.5px;transition:background .1s;display:flex}.outline-item__head:hover:not(:disabled){background:#f5f7ff}.outline-item__head:disabled{cursor:default;opacity:.85}.outline-item__caret{color:#8a8a9e;text-align:center;width:10px;font-size:10px}.outline-item__icon{font-size:13px}.outline-item__label{color:#1e1e2e;flex:1;font-weight:600}.outline-item__tag{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px}.outline-item__more{color:#8a8a9e;padding:4px 8px 4px 24px;font-size:11.5px}.css-facts{flex-direction:column;gap:14px;display:flex}.css-facts__empty{color:#8a8a9e;text-align:center;padding:20px;font-size:13px}.css-facts__group{flex-direction:column;gap:6px;display:flex}.css-facts__title{color:#6b6b7a;text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:700}.css-facts__colors{flex-wrap:wrap;gap:6px;display:flex}.css-facts__swatch{flex-direction:column;align-items:center;gap:3px;display:flex}.css-facts__swatch-color{border:1px solid #0000001a;border-radius:6px;width:28px;height:28px}.css-facts__swatch-code{color:#6b6b7a;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:9.5px}.css-facts__fonts{flex-wrap:wrap;gap:6px;display:flex}.css-facts__font-chip{color:#1e1e2e;background:#f5f7ff;border:1px solid #e0e4f0;border-radius:6px;padding:5px 10px;font-size:14px}.css-facts__sizes{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.css-facts__size-chip{color:#1e1e2e;font-weight:600}.outline-item__text{color:#4a4a5e;text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px;padding:3px 0 3px 4px;font-size:12px;font-style:italic;overflow:hidden}.outline-item__summary{color:#8a8a9e;margin-bottom:2px;padding:3px 0 3px 4px;font-size:11.5px}.browser-bar{background:#f4f5fa;border-bottom:1px solid #e0e2ee;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;display:flex}.browser-bar__btn{color:#333;cursor:pointer;background:#fff;border:1px solid #d0d0d8;border-radius:6px;justify-content:center;align-items:center;width:30px;height:30px;font-size:15px;transition:background .1s,border-color .1s;display:flex}.browser-bar__btn:hover:not(:disabled){background:#eef0fa;border-color:#b0b4c8}.browser-bar__btn:disabled{opacity:.4;cursor:not-allowed}.browser-bar__url{color:#333;background:#fff;border:1px solid #e0e2ee;border-radius:8px;flex:1;align-items:center;gap:6px;min-width:0;padding:5px 10px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;display:flex;overflow:hidden}.browser-bar__lock{opacity:.6;flex-shrink:0;font-size:11px}.browser-bar__url-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.text-editor-wrap{flex-direction:column;flex:1;min-height:0;display:flex}.text-editor__hint{color:#1e4d8f;background:#eaf2ff;border-bottom:1px solid #d0e0ff;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:13px;font-weight:500;display:flex}.text-editor__hint-actions{flex-shrink:0;gap:6px;display:flex}.text-editor__find{color:#1e4d8f;cursor:pointer;background:#fff;border:1px solid #c0d4f0;border-radius:6px;padding:5px 10px;font-size:12.5px;font-weight:600;transition:background .12s}.text-editor__find:hover{background:#dbe7fb}.text-editor__reset{color:#1e4d8f;cursor:pointer;background:0 0;border:1px solid #c0d4f0;border-radius:6px;padding:5px 10px;font-size:12.5px;font-weight:600;transition:background .12s}.text-editor__reset:hover{background:#dbe7fb}.text-editor__editor{flex:1;min-height:0}.text-editor{flex-direction:column;height:100%;display:flex}.text-editor__search{background:#fafbff;border-bottom:1px solid #e0e4f0;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;display:flex}.text-editor__search-icon{color:#8a8a9e;font-size:13px}.text-editor__search-input{background:#fff;border:1px solid #d0d0d8;border-radius:8px;outline:none;flex:1;min-width:0;padding:6px 10px;font-family:inherit;font-size:13px;transition:border-color .15s,box-shadow .15s}.text-editor__search-input:focus{border-color:#4a90e2;box-shadow:0 0 0 3px #4a90e226}.text-editor__search-count{color:#6b6b7a;white-space:nowrap;font-size:11.5px;font-weight:600}.text-editor__search-count--empty{color:#b02020}.text-editor__search-nav{color:#555;cursor:pointer;background:#fff;border:1px solid #d0d0d8;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;padding:0;font-size:10px;transition:background .1s;display:flex}.text-editor__search-nav:hover:not(:disabled){background:#eef0fa}.text-editor__search-nav:disabled{opacity:.4;cursor:not-allowed}.text-editor__code{flex:1;min-height:0}.save-status{border-right:1px solid #3e3e56;align-items:center;gap:8px;margin-right:8px;padding-right:8px;display:flex}.save-status__btn{color:#fff;cursor:pointer;background:#2e2e42;border:1px solid #3e3e56;border-radius:6px;padding:5px 12px;font-size:12.5px;font-weight:600}.save-status__btn:hover:not(:disabled){background:#3e3e56}.save-status__btn:disabled{opacity:.6;cursor:not-allowed}.save-status__text{color:#a0a0b8;min-width:110px;font-size:11.5px}.save-status__error{color:#e74c3c}.projects-header{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:32px;display:flex}.projects-header__actions{gap:8px;display:flex}.btn--ghost{color:#1e1e2e;background:0 0;border:1px solid #d0d0d8}.btn--ghost:hover{background:#f0f0f4}.projects-empty{text-align:center;color:#6b6b7a;padding:60px 20px}.projects-empty p{margin-bottom:16px}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.project-card{position:relative}.project-card__body{text-align:left;cursor:pointer;background:#fff;border:1px solid #e6e6ee;border-radius:12px;width:100%;padding:18px;transition:transform .12s,border-color .12s,box-shadow .12s}.project-card__body:hover{border-color:#4a90e2;transform:translateY(-2px);box-shadow:0 6px 16px #4a90e226}.project-card__icon{margin-bottom:8px;font-size:26px}.project-card__name{color:#1e1e2e;text-overflow:ellipsis;white-space:nowrap;margin-bottom:4px;font-size:15px;font-weight:700;overflow:hidden}.project-card__date{color:#8a8a9e;font-size:12px}.project-card__actions{opacity:0;gap:4px;transition:opacity .15s;display:flex;position:absolute;top:8px;right:8px}.project-card:hover .project-card__actions{opacity:1}.project-card__action{cursor:pointer;background:#fff;border:0;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;transition:background .12s,transform .12s;display:flex;box-shadow:0 1px 3px #00000014}.project-card__action:hover{transform:scale(1.08)}.project-card__action--rename{color:#4a90e2}.project-card__action--rename:hover{background:#eaf2ff}.project-card__action--delete{color:#b02020}.project-card__action--delete:hover{background:#fee}@media (hover:none){.project-card__actions{opacity:1}}.name-modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;background:#1e1e2e8c;justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.name-modal{background:#fff;border-radius:16px;width:100%;max-width:400px;padding:28px 28px 20px;animation:.2s popIn;box-shadow:0 20px 60px #00000040}@keyframes popIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.name-modal__title{color:#1e1e2e;margin:0 0 6px;font-size:20px}.name-modal__sub{color:#6b6b7a;margin:0 0 18px;font-size:14px}.name-modal__input{border:2px solid #e0e2ee;border-radius:10px;outline:none;width:100%;padding:12px 14px;font-family:inherit;font-size:15px;transition:border-color .15s,box-shadow .15s}.name-modal__input:focus{border-color:#4a90e2;box-shadow:0 0 0 4px #4a90e226}.name-modal__actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.name-modal__cancel,.name-modal__confirm{cursor:pointer;border:0;border-radius:8px;padding:10px 18px;font-size:14px;font-weight:600;transition:background .12s}.name-modal__cancel{color:#6b6b7a;background:0 0}.name-modal__cancel:hover{background:#f0f0f4}.name-modal__confirm{color:#fff;background:#4a90e2}.name-modal__confirm:hover{background:#3579c4}.project-card__body--editing{cursor:default;border-color:#4a90e2;box-shadow:0 0 0 4px #4a90e226}.project-card__rename-input{color:#1e1e2e;background:#fff;border:1px solid #4a90e2;border-radius:6px;outline:none;width:100%;padding:6px 8px;font-family:inherit;font-size:15px;font-weight:700}.challenge-strip{background:#fff8ef;border-bottom:2px solid #f0c07a;flex-shrink:0;padding:10px 16px 12px}.challenge-strip__title{color:#7a4a00;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;font-weight:700;display:flex}.challenge-strip__done{color:#27ae60;font-weight:700}.challenge-strip__list{flex-wrap:wrap;gap:6px;display:flex}.challenge{color:#6b4b00;background:#fff;border:1px solid #f0d4a8;border-radius:20px;align-items:center;gap:6px;padding:5px 12px 5px 8px;font-size:12.5px;transition:all .15s;display:inline-flex}.challenge--done{color:#1a6b3a;background:#e8f8ef;border-color:#7fce9e}.challenge__check{background:#fff1d6;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:11px;font-weight:700;display:flex}.challenge--done .challenge__check{color:#fff;background:#27ae60}.challenge__label{white-space:nowrap}.tool-btn{color:#fff;cursor:pointer;background:#2e2e42;border:1px solid #3e3e56;border-radius:6px;padding:6px 10px;font-size:13px;transition:background .12s,border-color .12s,transform 80ms}.tool-btn:hover{background:#3e3e56}.tool-btn--active{background:#4a90e2;border-color:#4a90e2;box-shadow:0 0 0 3px #4a90e240}.tool-btn--active:hover{background:#4a90e2}.tool-btn--colors{margin-left:6px}.canvas--drawing{cursor:crosshair;background:repeating-linear-gradient(45deg,#fafbff,#fafbff 12px,#f4f6fd 12px 24px)}.shape--draft{pointer-events:none;background:#4a90e21f;border:2px dashed #4a90e2;border-radius:4px}.canvas-hint{color:#fff;pointer-events:none;z-index:50;background:#1e1e2e;border-radius:20px;padding:8px 14px;font-size:12.5px;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0003}.canvas-hint b{color:#4a90e2;text-transform:capitalize}.canvas-hint kbd{color:#1e1e2e;background:#fff;border-radius:4px;padding:1px 6px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;font-weight:700}.shape-edit{color:#1e1e2e;resize:none;text-align:center;box-sizing:border-box;background:#fffffff5;border:2px solid #1e90ff;border-radius:6px;outline:none;width:100%;height:100%;padding:8px 12px;font-family:inherit;font-size:15px;font-weight:600;position:absolute;inset:0}.selection-bar button.btn-colors{color:#fff;cursor:pointer;background:#2e2e42;border:1px solid #3e3e56;border-radius:4px;align-items:center;gap:6px;padding:4px 10px 4px 6px;font-size:12px;font-weight:600;display:inline-flex}.selection-bar button.btn-colors:hover{background:#3e3e56}.btn-colors__swatch{border:1px solid #fff6;border-radius:4px;width:14px;height:14px;display:inline-block}.canvas-colorboard{z-index:500;position:absolute;bottom:16px;right:16px}.color-board__tip{color:#6b6b7a;text-align:center;background:#f5f7ff;border-radius:6px;margin-bottom:8px;padding:4px 8px;font-size:11.5px}.projects-empty__actions{justify-content:center;gap:10px;margin-top:16px;display:flex}.toolbar{flex-wrap:nowrap;gap:6px;display:flex;position:relative;overflow:visible}.more-shapes{position:relative}.more-shapes__popup{z-index:100;background:#1f1f2e;border:1px solid #33334a;border-radius:12px;width:340px;padding:12px;position:absolute;top:42px;left:0;box-shadow:0 12px 32px #0006}.more-shapes__title{color:#a0a0b8;letter-spacing:.4px;text-transform:uppercase;margin-bottom:10px;font-size:11px;font-weight:600}.more-shapes__grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.shape-pick{color:#e8e8f0;cursor:pointer;background:#2a2a3e;border:1px solid #3a3a52;border-radius:8px;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;transition:background .1s,border-color .1s;display:flex}.shape-pick:hover{background:#35354e;border-color:#4a4a66}.shape-pick--active{color:#fff;background:#4a90e2;border-color:#4a90e2}.shape-pick__icon{font-size:20px;line-height:1}.shape-pick__label{text-align:center;font-size:10.5px;font-weight:600}.canvas--overlay{pointer-events:auto;background:0 0;position:absolute;inset:0}.canvas--overlay.canvas--drawing{background:#4a90e20a}.site-with-shapes{flex:1;min-height:0;position:relative}.site-with-shapes .inspiration-frame{border:0;width:100%;height:100%;position:absolute;inset:0}.canvas--overlay{z-index:5;background:0 0;position:absolute;inset:0}.canvas--overlay{z-index:5;pointer-events:auto;overscroll-behavior:contain;background:0 0;position:absolute;inset:0}.browser-bar__mode{background:#e8eaf2;border-radius:8px;flex-shrink:0;gap:2px;margin-left:6px;padding:2px;display:flex}.mode-btn{color:#4a4a5e;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:5px 10px;font-family:inherit;font-size:12px;font-weight:600;transition:background .12s,color .12s}.mode-btn:hover{background:#d8dbe8}.mode-btn--active{color:#fff;background:#4a90e2;box-shadow:0 1px 3px #4a90e259}.mode-btn--active:hover{background:#4a90e2}.site-with-shapes{flex:1;min-height:0;position:relative;overflow:hidden}.site-with-shapes .inspiration-frame{z-index:1;border:0;width:100%;height:100%;position:absolute;inset:0}.site-with-shapes .canvas--overlay{z-index:5;background:0 0;position:absolute;inset:0}.inspiration-frame--locked{pointer-events:none}.canvas--overlay .shape--draft{background:#e843932e;border:2px solid #e84393;box-shadow:0 0 0 2px #fff6}.canvas--overlay .canvas-hint{z-index:20}.done-panel{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:40px 24px;display:flex}.done-panel__emoji{font-size:72px}.done-panel__title{color:#1e1e2e;margin:0;font-size:24px}.done-panel__text{color:#5a5a72;max-width:420px;margin:0;font-size:15px;line-height:1.5}.site-with-shapes--scrolling .canvas--overlay{pointer-events:none}.site-with-shapes--scrolling .inspiration-frame{pointer-events:auto}.canvas--overlay .shape{filter:drop-shadow(0 2px 6px #00000026)}.styles-popover-wrap{position:relative}.btn-styles{color:#e8e8f0;cursor:pointer;background:#2a2a3e;border:1px solid #3a3a52;border-radius:7px;align-items:center;gap:6px;height:32px;padding:6px 12px;font-family:inherit;font-size:13px;font-weight:600;transition:background .12s,border-color .12s;display:inline-flex}.btn-styles:hover{background:#35354e;border-color:#4a4a66}.btn-styles--active{color:#fff;background:#8e44ad;border-color:#8e44ad}.styles-popover{z-index:200;background:#1f1f2e;border:1px solid #33334a;border-radius:12px;width:260px;padding:12px;position:absolute;top:42px;left:0;box-shadow:0 12px 32px #0006}.styles-popover__title{color:#a0a0b8;letter-spacing:.4px;text-transform:uppercase;margin-bottom:10px;font-size:11px;font-weight:600}.styles-popover__grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.style-toggle{color:#e8e8f0;cursor:pointer;background:#2a2a3e;border:1px solid #3a3a52;border-radius:8px;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;font-family:inherit;transition:background .12s,border-color .12s,transform .1s;display:flex}.style-toggle:hover{background:#35354e;border-color:#4a4a66;transform:translateY(-1px)}.style-toggle--active{color:#fff;background:#4a90e2;border-color:#4a90e2;box-shadow:0 2px 8px #4a90e266}.style-toggle__icon{font-size:18px;line-height:1}.style-toggle__label{font-size:10.5px;font-weight:600}.styles-popover__hint{color:#8a8a9e;text-align:center;margin-top:10px;font-size:11px;line-height:1.4}.shape__body{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:visible}.shape__body>*{overflow:visible}.coming-soon__lock{opacity:.85;margin-bottom:8px;font-size:42px}.python-app{flex-direction:column;height:100%;display:flex}.python-body{flex:1;min-height:0;display:flex}.python-sidebar{background:#fafbff;border-right:1px solid #e0e4f0;flex-direction:column;flex-shrink:0;gap:8px;width:220px;padding:12px;display:flex}.python-sidebar__title{color:#1e1e2e;font-size:13px;font-weight:700}.python-sidebar__hint{color:#8a8a9e;margin-bottom:4px;font-size:11.5px}.python-sidebar__list{flex-direction:column;flex:1;gap:4px;display:flex;overflow:auto}.python-sidebar__empty{color:#8a8a9e;padding:12px 6px;font-size:12.5px;line-height:1.5}.python-sidebar__empty a{color:#4a90e2;font-weight:600;text-decoration:none}.page-check{cursor:pointer;background:#fff;border:1px solid #e8ecf4;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;transition:border-color .12s,background .12s;display:flex}.page-check:hover{background:#f5f9ff;border-color:#4a90e2}.page-check input{accent-color:#4a90e2}.page-check__icon{font-size:14px}.page-check__name{text-overflow:ellipsis;white-space:nowrap;color:#1e1e2e;flex:1;min-width:0;font-weight:500;overflow:hidden}.python-editor{flex-direction:column;width:100%;height:100%;display:flex}.python-editor__bar{color:#fff;background:#1f1f2e;justify-content:space-between;align-items:center;padding:8px 14px;font-size:13px;display:flex}.python-editor__tab{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:600}.python-editor__actions{align-items:center;gap:10px;display:flex}.python-status{opacity:.85;font-size:12px}.python-status--loading{color:#f1c40f}.python-status--ready{color:#7fce9e}.run-btn{color:#fff;cursor:pointer;background:#27ae60;border:0;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:700;transition:background .12s}.run-btn:hover:not(:disabled){background:#229954}.run-btn:disabled{opacity:.5;cursor:not-allowed}.python-editor__code{border-bottom:1px solid #e0e4f0;flex:1;min-height:0}.python-output{color:#d4dae8;background:#0f1420;height:160px;padding:10px 14px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;overflow-y:auto}.python-output__title{color:#8a94a8;text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;font-size:10px;font-weight:700}.python-output__hint{color:#5a6478;font-style:italic}.python-output__line{white-space:pre-wrap;margin:0;line-height:1.5}.python-preview{background:#fbfbfd;flex-direction:column;width:100%;height:100%;display:flex}.python-preview__title{color:#1e1e2e;background:#fafbff;border-bottom:1px solid #e0e4f0;padding:10px 14px;font-size:13px;font-weight:700}.python-preview__body{flex:1;justify-content:stretch;align-items:stretch;min-height:0;padding:0;display:flex}.python-preview__placeholder{align-self:center;margin:auto;padding:20px}.python-preview__sitename{color:#4a90e2;font-weight:600}.python-preview__urlbar{color:#4a4a5e;background:#f4f5fa;border-bottom:1px solid #e0e4f0;padding:8px 14px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}.python-preview__frame{background:#fff;border:0;width:100%;height:100%}.python-output__error{color:#ff9b9b}.py-lesson{border:2px solid;border-radius:12px;flex-shrink:0;margin-bottom:16px;padding:12px;transition:padding .15s}.py-lesson--collapsed{padding:8px 12px}.py-lesson__top{justify-content:space-between;align-items:center;gap:6px;margin-bottom:8px;display:flex}.py-lesson--collapsed .py-lesson__top{margin-bottom:0}.py-lesson__pips{flex-wrap:wrap;align-items:center;gap:3px;display:flex}.py-lesson__pips .pip{width:20px;height:20px;font-size:10px}.py-lesson__count{color:#6b6b7a;margin-left:4px;font-size:11px;font-weight:600}.py-lesson__toggle{color:#6b6b7a;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:2px 6px;font-size:12px}.py-lesson__toggle:hover{background:#0000000d}.py-lesson__body{flex-direction:column;gap:6px;display:flex}.py-lesson__title-row{align-items:center;gap:8px;display:flex}.py-lesson__emoji{font-size:22px}.py-lesson__number{text-transform:uppercase;letter-spacing:1px;color:#8a8a9e;font-size:9.5px;font-weight:700}.py-lesson__name{color:#1e1e2e;font-size:14px;font-weight:700}.py-lesson__badge{color:#fff;background:#27ae60;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;margin-left:auto;font-size:11px;font-weight:700;display:flex}.py-lesson__intro{color:#3a3a52;margin:0;font-size:12px;line-height:1.4}.py-lesson__task{color:#1e1e2e;margin:0;font-size:12px;line-height:1.4}.py-lesson__task strong{color:#d35400}.py-lesson__hint{color:#6b6b7a;margin:0;font-size:11px}.feature-list{flex-direction:column;gap:6px;display:flex}.feature-card{border:1px solid #e8ecf4;border-left:4px solid var(--feature-accent,#4a90e2);cursor:pointer;text-align:left;background:#fff;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;transition:transform .1s,border-color .12s,box-shadow .12s;display:flex}.feature-card:hover:not(:disabled){border-color:var(--feature-accent,#4a90e2);transform:translateY(-1px);box-shadow:0 4px 12px #0000000f}.feature-card--active{border-color:var(--feature-accent,#4a90e2);background:#f5f9ff;box-shadow:0 0 0 3px #4a90e226}.feature-card--disabled{opacity:.6;cursor:not-allowed;border-left-color:#d0d0d8}.feature-card__icon{flex-shrink:0;font-size:22px}.feature-card__text{flex:1;min-width:0}.feature-card__title{color:#1e1e2e;font-size:13.5px;font-weight:700}.feature-card__sub{color:#6b6b7a;margin-top:1px;font-size:11px;line-height:1.35}.feature-card__lock{opacity:.6;font-size:14px}.hub__title-row{margin-bottom:12px}.python-preview .browser-bar{border-bottom:1px solid #e0e4f0}.reset-btn{color:#d0d0e0;cursor:pointer;background:#2e2e42;border:1px solid #3e3e56;border-radius:6px;padding:6px 10px;font-family:inherit;font-size:12.5px;font-weight:600;transition:background .12s}.reset-btn:hover{color:#fff;background:#3e3e56}.game-container{background:#eef2f8;flex-direction:column;justify-content:flex-start;align-items:center;gap:12px;width:100%;height:100%;padding:20px;display:flex}.game-canvas{background:#dff1ff;border-radius:12px;position:relative;overflow:hidden;box-shadow:0 8px 24px #0000001f}.game-canvas__sky{background:linear-gradient(#dff1ff 0%,#f0f8ff 100%);position:absolute;inset:0}.game-canvas__ground{background:linear-gradient(#7fce9e 0%,#4a9b6b 100%);position:absolute;left:0;right:0}.game-character{justify-content:center;align-items:center;display:flex;position:absolute}.game-controls{gap:8px;display:flex}.access-gate{background:radial-gradient(900px 500px at 10% 0,#eaf2ff 0%,#0000 60%),radial-gradient(800px 500px at 100% 0,#fff1e6 0%,#0000 55%),#fbfbfd;justify-content:center;align-items:center;min-height:100vh;padding:40px 20px;display:flex}.access-gate__card{text-align:center;background:#fff;border-radius:20px;flex-direction:column;gap:14px;width:100%;max-width:420px;padding:40px 32px 32px;display:flex;box-shadow:0 20px 60px #00000014}.access-gate__logo{object-fit:contain;width:64px;height:64px;margin:0 auto 4px}.access-gate__title{color:#1e1e2e;margin:0;font-size:22px}.access-gate__sub{color:#6b6b7a;margin:0 0 8px;font-size:14px}.access-option{cursor:pointer;text-align:left;color:#1e1e2e;background:#fff;border:2px solid #e6e6ee;border-radius:14px;align-items:center;gap:14px;padding:16px 18px;font-family:inherit;transition:border-color .15s,transform .1s;display:flex}.access-option:hover{border-color:#4a90e2;transform:translateY(-1px)}.access-option--primary{background:#f5f9ff;border-color:#c9dfff}.access-option__icon{flex-shrink:0;font-size:28px}.access-option__text{flex-direction:column;gap:2px;display:flex}.access-option__text strong{font-size:15px;font-weight:700}.access-option__text em{color:#6b6b7a;font-size:12.5px;font-style:normal}.access-gate__back{color:#8a8a9e;margin-top:4px;font-size:13px;text-decoration:none}.access-gate__back:hover{color:#4a90e2}.access-gate__form{flex-direction:column;gap:12px;display:flex}.access-gate__input{text-align:center;letter-spacing:2px;border:2px solid #e6e6ee;border-radius:12px;outline:none;width:100%;padding:14px 16px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:16px;transition:border-color .15s}.access-gate__input:focus{border-color:#4a90e2;box-shadow:0 0 0 4px #4a90e21f}.access-gate__error{color:#b02020;background:#fee;border-radius:10px;padding:10px 12px;font-size:13px}.access-gate__submit{color:#fff;cursor:pointer;background:#4a90e2;border:0;border-radius:12px;padding:14px;font-family:inherit;font-size:15px;font-weight:700;transition:background .15s}.access-gate__submit:hover:not(:disabled){background:#3579c4}.access-gate__submit:disabled{opacity:.6;cursor:not-allowed}.access-gate__back-btn{color:#8a8a9e;cursor:pointer;background:0 0;border:0;padding:4px;font-family:inherit;font-size:13px}.access-gate__back-btn:hover{color:#4a90e2}.access-gate__hint{color:#8a8a9e;margin:4px 0 0;font-size:12px}.access-gate__loading{text-align:center;color:#6b6b7a;padding:60px}.locked-studio{background:#fbfbfd;justify-content:center;align-items:center;min-height:100vh;padding:40px 20px;display:flex}.locked-studio__card{text-align:center;background:#fff;border-radius:20px;max-width:400px;padding:40px 32px;box-shadow:0 20px 60px #00000014}.locked-studio__icon{margin-bottom:12px;font-size:56px}.locked-studio__card h2{color:#1e1e2e;margin:0 0 8px;font-size:22px}.locked-studio__card p{color:#6b6b7a;margin:0 0 24px;font-size:14px;line-height:1.5}.locked-studio__btn{color:#fff;cursor:pointer;background:#4a90e2;border:0;border-radius:12px;padding:12px 20px;font-family:inherit;font-size:14px;font-weight:700}.locked-studio__btn:hover{background:#3579c4}.change-access-btn{color:#d0d0e0;cursor:pointer;background:0 0;border:1px solid #4a4a5e;border-radius:6px;margin-right:8px;padding:5px 10px;font-family:inherit;font-size:12px}.change-access-btn:hover{color:#fff;background:#3e3e56}.admin-page{background:#f6f7fb;flex-direction:column;min-height:100vh;display:flex}.admin-header{color:#fff;background:#1e1e2e;border-bottom:1px solid #000;justify-content:space-between;align-items:center;padding:14px 24px;display:flex}.admin-header__brand{align-items:center;gap:12px;display:flex}.admin-header__brand .logo{width:auto;height:32px}.admin-header__brand strong{font-size:16px;display:block}.admin-header__sub{color:#a0a0b8;text-transform:uppercase;letter-spacing:1px;font-size:11px}.admin-header__actions{align-items:center;gap:12px;font-size:13px;display:flex}.admin-header__user{opacity:.85}.admin-header__btn{color:#d0d0e0;cursor:pointer;background:0 0;border:1px solid #4a4a5e;border-radius:6px;padding:6px 12px;font-family:inherit;font-size:12.5px;text-decoration:none}.admin-header__btn:hover{color:#fff;background:#3e3e56}.admin-header__btn--logout{color:#ffb0b8;border-color:#5c2f38}.admin-header__btn--logout:hover{color:#fff;background:#5c2f38}.admin-main{width:100%;max-width:1100px;margin:0 auto;padding:32px 24px 64px}.admin-title-row{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.admin-title{color:#1e1e2e;margin:0;font-size:24px}.admin-btn{color:#1e1e2e;cursor:pointer;background:#fff;border:1px solid #d0d0d8;border-radius:8px;padding:10px 16px;font-family:inherit;font-size:13.5px;font-weight:600;transition:background .12s,border-color .12s}.admin-btn:hover{background:#f0f0f4}.admin-btn--primary{color:#fff;background:#4a90e2;border-color:#4a90e2}.admin-btn--primary:hover{background:#3579c4;border-color:#3579c4}.admin-btn:disabled{opacity:.6;cursor:not-allowed}.admin-loading{text-align:center;color:#8a8a9e;padding:60px}.admin-empty{text-align:center;background:#fff;border:1px dashed #d0d0d8;border-radius:16px;padding:60px 20px}.admin-empty__icon{margin-bottom:8px;font-size:48px}.admin-empty p{color:#6b6b7a;margin:0 0 20px}.admin-error{color:#b02020;background:#fee;border:1px solid #f5c2c2;border-radius:10px;margin-bottom:20px;padding:12px 16px;font-size:13.5px}.admin-banner{color:#1a6b3a;background:#e8f8ef;border:1px solid #7fce9e;border-radius:12px;align-items:center;gap:12px;margin-bottom:20px;padding:14px 18px;font-size:14px;display:flex}.admin-banner code{background:#fff;border:1px solid #c8e8d5;border-radius:6px;margin-left:6px;padding:2px 8px;font-family:ui-monospace,Menlo,Consolas,monospace}.admin-banner__copy{color:#fff;cursor:pointer;background:#27ae60;border:0;border-radius:6px;padding:6px 12px;font-family:inherit;font-size:12.5px;font-weight:700}.admin-banner__copy:hover{background:#229954}.admin-banner__close{color:#1a6b3a;cursor:pointer;background:0 0;border:0;margin-left:auto;font-size:16px}.admin-table{background:#fff;border:1px solid #e6e6ee;border-radius:14px;overflow:hidden}.admin-table__head,.admin-table__row{grid-template-columns:2fr 1.5fr 1.2fr 1fr 1fr 1.2fr;align-items:center;gap:12px;padding:14px 20px;font-size:13.5px;display:grid}.admin-table__head{color:#6b6b7a;text-transform:uppercase;letter-spacing:.5px;background:#fafbff;border-bottom:1px solid #e6e6ee;font-size:12px;font-weight:700}.admin-table__row{color:#1e1e2e;border-bottom:1px solid #f0f0f4}.admin-table__row:last-child{border-bottom:0}.admin-table__row:hover{background:#fafbff}.admin-cell{text-overflow:ellipsis;min-width:0;overflow:hidden}.admin-cell--name{align-items:center;gap:8px;font-weight:600;display:flex}.admin-cell__icon{font-size:16px}.admin-cell--code{align-items:center;gap:6px;display:flex}.admin-cell--code code{background:#f5f5fa;border-radius:6px;padding:3px 8px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}.admin-cell--studios{flex-wrap:wrap;gap:4px;display:flex}.admin-studio-pill{font-size:16px}.admin-cell--actions{justify-content:flex-end;gap:6px;display:flex}.admin-muted{color:#c0c0c8;font-size:12px}.admin-mini-btn{color:#4a4a5e;cursor:pointer;background:#fff;border:1px solid #d0d0d8;border-radius:6px;padding:5px 10px;font-family:inherit;font-size:12px;font-weight:600}.admin-mini-btn:hover{background:#f0f0f4}.admin-mini-btn--danger{color:#b02020;border-color:#f5c2c2}.admin-mini-btn--danger:hover{background:#fee}.admin-status{font-size:12.5px;font-weight:600}.admin-status--active{color:#27ae60}.admin-status--revoked{color:#b02020}.admin-modal__backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;background:#1e1e2e80;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.admin-modal{background:#fff;border-radius:16px;flex-direction:column;gap:18px;width:100%;max-width:520px;max-height:90vh;padding:28px;display:flex;overflow-y:auto;box-shadow:0 20px 60px #00000040}.admin-modal__title{color:#1e1e2e;margin:0;font-size:20px}.admin-field{color:#45455a;flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.admin-field input[type=text],.admin-field input[type=date],.admin-field textarea{color:#1e1e2e;background:#fff;border:1px solid #d0d0d8;border-radius:8px;outline:none;padding:10px 12px;font-family:inherit;font-size:14px;font-weight:400}.admin-field input:focus,.admin-field textarea:focus{border-color:#4a90e2;box-shadow:0 0 0 3px #4a90e226}.admin-field textarea{resize:vertical;min-height:60px}.admin-studios{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.admin-studio-check{color:#1e1e2e;cursor:pointer;background:#fafbff;border:1px solid #e6e6ee;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;font-weight:500;display:flex}.admin-studio-check:hover{border-color:#4a90e2}.admin-studio-check input{accent-color:#4a90e2}.admin-modal__actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.toolbar .tool-btn:disabled{opacity:.35;cursor:not-allowed}.toolbar .tool-btn:disabled:hover{background:#2e2e42;border-color:#3e3e56}.preview-panel__inner{width:100%;height:100%;position:relative}.tool-btn--image{color:#a8d0e6;background:#2a3f4e;border-color:#3e5a6a}.tool-btn--image:hover{background:#3e5a6a}.catalog-filters{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.catalog-filter{cursor:pointer;color:#4a4a5e;background:#fff;border:1px solid #d0d0d8;border-radius:20px;padding:7px 14px;font-family:inherit;font-size:13px;font-weight:600}.catalog-filter:hover{color:#4a90e2;border-color:#4a90e2}.catalog-filter--active{color:#fff;background:#4a90e2;border-color:#4a90e2}.catalog-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;display:grid}.catalog-card{color:inherit;background:#fff;border:1px solid #e6e6ee;border-radius:14px;flex-direction:column;text-decoration:none;transition:transform .15s,border-color .15s,box-shadow .15s;display:flex;overflow:hidden}.catalog-card:hover{border-color:#4a90e2;transform:translateY(-3px);box-shadow:0 10px 24px #00000014}.catalog-card__thumb{aspect-ratio:4/3;background:#f4f5fa;justify-content:center;align-items:center;display:flex;overflow:hidden}.catalog-card__thumb img{object-fit:cover;width:100%;height:100%}.catalog-card__placeholder{font-size:48px}.catalog-card__body{flex-direction:column;gap:4px;padding:14px 16px 16px;display:flex}.catalog-card__title{color:#1e1e2e;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:700;overflow:hidden}.catalog-card__meta{color:#6b6b7a;font-size:12.5px}.catalog-card__tag{color:#8a8a9e;margin-top:4px;font-size:11.5px;font-weight:600}.publication-page{background:#f6f7fb;flex-direction:column;height:100vh;display:flex;overflow:hidden}.publication-header{color:#fff;background:#1e1e2e;align-items:center;gap:16px;padding:12px 20px;display:flex}.publication-back{color:#a0a0b8;font-size:13px;text-decoration:none}.publication-back:hover{color:#fff}.publication-meta{align-items:baseline;gap:10px;min-width:0;display:flex}.publication-title{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;overflow:hidden}.publication-author{color:#a0a0b8;font-size:12.5px}.publication-body{flex-direction:column;flex:1;width:100%;min-height:0;display:flex;max-width:100vw!important;margin:0!important;padding:0!important}.publication-frame{background:#fff;border:0;width:100%;height:auto;min-height:100vh;display:block}.publication-unsupported{color:#8a8a9e;flex:1;justify-content:center;align-items:center;padding:40px;font-size:16px;display:flex}.publication-footer{background:#fff;border-top:1px solid #e6e6ee;justify-content:center;gap:12px;padding:16px;display:flex}.publication-loading,.publication-error{color:#6b6b7a;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;display:flex}.publish-btn{color:#fff;cursor:pointer;background:#f39c12;border:0;border-radius:6px;margin-right:8px;padding:6px 12px;font-family:inherit;font-size:12.5px;font-weight:700;transition:background .12s}.publish-btn:hover:not(:disabled){background:#e08e0b}.publish-btn:disabled{opacity:.5;cursor:not-allowed}.publish-modal__backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:2000;background:#1e1e2e80;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.publish-modal{text-align:center;background:#fff;border-radius:20px;flex-direction:column;gap:14px;width:100%;max-width:480px;padding:32px 28px 24px;display:flex;box-shadow:0 20px 60px #00000040}.publish-modal__icon{font-size:48px;line-height:1}.publish-modal__title{color:#1e1e2e;margin:0;font-size:22px}.publish-modal__sub{color:#6b6b7a;margin:0 0 8px;font-size:14px;line-height:1.5}.publish-modal__field{text-align:left;color:#45455a;flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.publish-modal__field input{color:#1e1e2e;border:2px solid #e6e6ee;border-radius:12px;outline:none;padding:12px 14px;font-family:inherit;font-size:15px;transition:border-color .12s}.publish-modal__field input:focus{border-color:#f39c12;box-shadow:0 0 0 4px #f39c1226}.publish-modal__error{color:#b02020;background:#fee;border-radius:10px;padding:10px 12px;font-size:13px}.publish-modal__actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.publish-success__url{background:#f5f9ff;border:1px solid #c9dfff;border-radius:12px;align-items:center;gap:8px;padding:10px 14px;display:flex}.publish-success__url code{color:#1e4d8f;text-overflow:ellipsis;white-space:nowrap;text-align:left;flex:1;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;overflow:hidden}.publish-success__copy{color:#fff;cursor:pointer;background:#4a90e2;border:0;border-radius:6px;flex-shrink:0;padding:6px 12px;font-family:inherit;font-size:12px;font-weight:700}.publish-success__copy:hover{background:#3579c4}.publication-view-wrap{flex-direction:column;flex:1;width:100%;height:auto;display:flex;margin:0!important;padding:0!important}.publication-browser-bar{background:#f4f5fa;border-bottom:1px solid #e0e2ee;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;display:flex}.publication-browser-bar .browser-bar__btn{color:#333;cursor:pointer;background:#fff;border:1px solid #d0d0d8;border-radius:6px;justify-content:center;align-items:center;width:30px;height:30px;font-size:15px;transition:background .1s,border-color .1s;display:flex}.publication-browser-bar .browser-bar__btn:hover:not(:disabled){background:#eef0fa;border-color:#b0b4c8}.publication-browser-bar .browser-bar__btn:disabled{opacity:.4;cursor:not-allowed}.publication-browser-bar .browser-bar__url{color:#333;background:#fff;border:1px solid #e0e2ee;border-radius:8px;flex:1;align-items:center;gap:6px;min-width:0;padding:5px 10px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;display:flex;overflow:hidden}.publication-browser-bar .browser-bar__lock{opacity:.6;flex-shrink:0;font-size:11px}.publication-browser-bar .browser-bar__url-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pub-item{background:#fff;border:1px solid #e6e6ee;border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.pub-item__title{color:#1e1e2e;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.pub-item__actions{gap:6px;display:flex}.pub-item__btn{text-align:center;color:#4a90e2;cursor:pointer;background:#f0f4fb;border:0;border-radius:6px;flex:1;padding:5px 8px;font-family:inherit;font-size:11.5px;font-weight:600;text-decoration:none}.pub-item__btn:hover{background:#dbe7fb}.pub-item__btn--danger{color:#b02020;background:#fee}.pub-item__btn--danger:hover{background:#fdd}.split-pane{flex:1;min-width:0;height:100%;display:flex;overflow:hidden}.split-pane__left{flex-direction:column;min-width:0;height:100%;display:flex;overflow:hidden}.split-pane__right{flex-direction:column;flex:1;min-width:0;height:100%;display:flex;overflow:hidden}.split-pane__handle{cursor:col-resize;z-index:5;background:0 0;flex-shrink:0;justify-content:center;align-items:center;width:6px;margin:0 -3px;padding:0 3px;transition:background .12s;display:flex;position:relative}.split-pane__handle:hover,.split-pane--dragging .split-pane__handle{opacity:.4;background:#4a90e2}.split-pane__handle-grip{background:#d0d0d8;border-radius:2px;width:2px;height:40px;transition:background .12s,height .12s}.split-pane__handle:hover .split-pane__handle-grip,.split-pane--dragging .split-pane__handle-grip{background:#4a90e2;height:60px}.shape--background{pointer-events:none;z-index:0}.shape:not(.shape--background){z-index:1}.tool-btn--bg{color:#a8d0e6;background:#2a3f4e;border-color:#3e5a6a}.tool-btn--bg:hover{background:#3e5a6a}.geometry-mode{gap:4px;margin:16px 0;display:flex}.geometry-mode__btn{color:#57606a;cursor:pointer;background:#fff;border:1px solid #d0d7de;border-radius:6px;flex:1;padding:8px 12px;font-size:14px;font-weight:600;transition:all .15s}.geometry-mode__btn:hover{color:#4a90e2;border-color:#4a90e2}.geometry-mode__btn--active{color:#fff;background:#4a90e2;border-color:#4a90e2}.geometry-units{color:#57606a;align-items:center;gap:8px;margin-top:8px;font-size:13px;display:flex}.geometry-units__label{font-weight:600}.geometry-units__select{background:#fff;border:1px solid #d0d7de;border-radius:6px;flex:1;padding:4px 8px;font-size:13px}.geometry-canvas{background-color:#f6f8fa;background-image:linear-gradient(#e8edf3 1px,#0000 1px),linear-gradient(90deg,#e8edf3 1px,#0000 1px);background-position:0 0;background-size:20px 20px;border:1px solid #e5e9ef;border-radius:8px;flex:1;justify-content:center;align-items:center;margin:12px;display:flex;position:relative;overflow:hidden}.geometry-canvas__placeholder{text-align:center;color:#8b949e;background:#ffffffd9;border-radius:8px;padding:40px;font-size:15px}.geometry-canvas__hint{color:#b1bac4;margin-top:8px;font-size:13px}.geo-canvas{background:0 0;position:absolute;inset:0}.geo-canvas--drawing{cursor:crosshair}.geo-shape{cursor:move}.geo-shape--selected{outline-offset:2px;outline:2px solid #4a90e2}.geo-shape--draft{pointer-events:none;background:#4a90e226;border:2px dashed #4a90e2}.geo-shape__body{opacity:.85;width:100%;height:100%}.geo-shape__label{color:#57606a;white-space:nowrap;pointer-events:none;background:#ffffffe6;border-radius:3px;margin-top:2px;padding:1px 4px;font-size:11px;position:absolute;top:100%;left:0}.geo-canvas__hint{color:#fff;pointer-events:none;background:#000000bf;border-radius:6px;padding:6px 12px;font-size:12px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.geo-selection-bar{z-index:10;background:#fff;border:1px solid #d0d7de;border-radius:8px;gap:6px;padding:6px;display:flex;position:absolute;box-shadow:0 4px 12px #0000001a}.geo-selection-bar__btn{cursor:pointer;color:#24292f;background:#fff;border:1px solid #d0d7de;border-radius:5px;padding:4px 10px;font-size:12px}.geo-selection-bar__btn:hover{background:#f6f8fa}.geo-selection-bar__btn--danger{color:#cf222e;border-color:#f5c9c9}.geo-selection-bar__btn--danger:hover{background:#fff5f5}.geo-selection-bar__input{border:1px solid #4a90e2;border-radius:5px;outline:none;width:140px;padding:4px 8px;font-size:12px}.geo-palette{margin-bottom:8px}.geo-palette__grid{grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;display:grid}.geo-palette__btn{cursor:pointer;background:#fff;border:1px solid #d0d7de;border-radius:6px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;transition:all .15s;display:flex}.geo-palette__btn:hover{background:#f0f7ff;border-color:#4a90e2}.geo-palette__btn--active{background:#e6f1fb;border-color:#4a90e2;box-shadow:inset 0 0 0 1px #4a90e2}.geo-palette__icon{font-size:18px;line-height:1}.geo-palette__label{color:#57606a;font-size:11px}.geo-handle{cursor:pointer;z-index:5;background:#fff;border:1.5px solid #4a90e2;border-radius:2px}.geo-handle--nw{cursor:nwse-resize}.geo-handle--n{cursor:ns-resize}.geo-handle--ne{cursor:nesw-resize}.geo-handle--w,.geo-handle--e{cursor:ew-resize}.geo-handle--sw{cursor:nesw-resize}.geo-handle--s{cursor:ns-resize}.geo-handle--se{cursor:nwse-resize}.geo-handle:hover{background:#4a90e2}.geo-selection-bar__color{cursor:pointer;background:#fff;border:1px solid #d0d7de;border-radius:5px;width:32px;height:28px;padding:0}.geo-selection-bar__color::-webkit-color-swatch-wrapper{padding:2px}.geo-selection-bar__color::-webkit-color-swatch{border:none;border-radius:3px}.geo-canvas-3d{border-radius:8px;position:absolute;inset:0;overflow:hidden}.geo-canvas-3d canvas{outline:none;width:100%;height:100%;display:block}.geo-canvas-3d__toolbar{pointer-events:none;z-index:2;align-items:center;gap:10px;display:flex;position:absolute;top:12px;left:12px;right:12px}.geo-canvas-3d__toolbar>*{pointer-events:auto}.geo-canvas-3d__btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1e1e32d9;border:1px solid #ffffff40;border-radius:6px;padding:8px 14px;font-size:13px;font-weight:600;transition:all .15s}.geo-canvas-3d__btn:hover:not(:disabled){background:#4a90e2e6;border-color:#4a90e2}.geo-canvas-3d__btn:disabled{opacity:.6;cursor:not-allowed}.geo-canvas-3d__filename{color:#ffffffbf;white-space:nowrap;text-overflow:ellipsis;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1e1e32b3;border-radius:4px;max-width:300px;padding:4px 10px;font-size:12px;overflow:hidden}.geo-canvas-3d__btn--active{color:#fff!important;background:#4a90e2e6!important;border-color:#4a90e2!important}.geo-canvas-3d__btn--danger{border-color:#ef444480!important}.geo-canvas-3d__btn--danger:hover:not(:disabled){background:#dc2626d9!important;border-color:#dc2626!important}.geo-canvas-3d__info{color:#ffffffe6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;z-index:2;background:#1e1e32d9;border-radius:5px;padding:6px 12px;font-family:SF Mono,Consolas,monospace;font-size:12px;position:absolute;bottom:12px;left:12px}.geometry-size{margin-top:4px;margin-bottom:4px}.geometry-size input[type=number]{-moz-appearance:textfield}.geometry-size input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.geometry-size input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.geo-canvas-3d__divider{background:#fff3;width:1px;height:24px;margin:0 4px}.mesh-canvas{background:#f6f8fa;border-radius:8px;justify-content:center;align-items:center;width:100%;height:100%;padding:20px;display:flex;overflow:hidden}.mesh-canvas--empty{color:#8b949e;text-align:center;font-size:15px}.mesh-canvas__svg{width:100%;max-width:100%;height:100%;max-height:100%}.python-editor .tool-btn--active{color:#fff!important;background:#4a90e2!important;border-color:#4a90e2!important}input[type=range]{accent-color:#4a90e2}.mesh-canvas{background-color:#f6f8fa;background-image:linear-gradient(#e8edf3 1px,#0000 1px),linear-gradient(90deg,#e8edf3 1px,#0000 1px);background-position:0 0;background-size:20px 20px}.mesh-legend{color:#57606a;pointer-events:none;background:#fffffff2;border:1px solid #e5e9ef;border-radius:6px;padding:8px 12px;font-size:11px;position:absolute;top:12px;right:12px}.mesh-legend__title{color:#24292f;margin-bottom:6px;font-weight:600}.mesh-legend__item{align-items:center;gap:6px;margin-top:2px;display:flex}.mesh-legend__item span{border-radius:1px;width:10px;height:3px;display:inline-block}.mesh-colorbar{background:#fffffff2;border:1px solid #e5e9ef;border-radius:6px;padding:8px 12px;font-size:11px;position:absolute;bottom:20px;left:20px}.mesh-colorbar__title{color:#24292f;margin-bottom:6px;font-weight:600}.mesh-colorbar__bar{background:linear-gradient(90deg,#440154,#414487,#2a788e,#22a884,#7ad151,#fde725);border-radius:3px;width:160px;height:12px}.mesh-colorbar__labels{color:#57606a;justify-content:space-between;margin-top:4px;font-size:10px;display:flex}.bc-row{gap:4px;margin-bottom:4px;display:flex}.modal-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:10px;width:420px;max-width:90vw;padding:24px;font-family:system-ui,sans-serif;box-shadow:0 20px 50px #0003}.modal__title{color:#24292f;margin:0 0 6px;font-size:18px;font-weight:700}.modal__hint{color:#57606a;margin:0 0 16px;font-size:12px}.modal__section{margin-bottom:16px}.modal__label{color:#57606a;margin-bottom:6px;font-size:12px;font-weight:600;display:block}.modal__radio-group{flex-direction:column;gap:8px;display:flex}.modal__radio{color:#24292f;cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.modal__input{box-sizing:border-box;border:1px solid #d0d7de;border-radius:6px;width:100%;padding:8px 12px;font-size:13px}.modal__actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.python-body,.fv-layout{flex:1;min-height:0;display:flex;overflow:hidden}.fv-sidebar{box-sizing:border-box;scrollbar-gutter:stable;background:#f6f8fa;border-right:1px solid #e5e9ef;flex-shrink:0;width:300px;min-width:300px;height:100%;padding:16px;overflow:hidden auto}.fv-sidebar::-webkit-scrollbar{width:10px}.fv-sidebar::-webkit-scrollbar-track{background:#eaeef2;border-radius:4px}.fv-sidebar::-webkit-scrollbar-thumb{background:#b0b8c0;border:2px solid #eaeef2;border-radius:4px}.fv-sidebar::-webkit-scrollbar-thumb:hover{background:#8b949e}.fv-main{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.selection-bar button.remove-bg-btn{color:#fff;cursor:pointer;background:#7a4a8a;border:1px solid #9a5aa8;border-radius:4px;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:600;transition:background .12s}.selection-bar button.remove-bg-btn:hover:not(:disabled){background:#9a5aa8}.selection-bar button.remove-bg-btn:disabled{opacity:.6;cursor:not-allowed}.it-page-buttons{flex-direction:column;gap:8px;margin:12px 0;display:flex}.it-page-buttons .btn{color:#24292f;cursor:pointer;background:#fff;border:1px solid #d0d7de;border-radius:8px;width:100%;padding:10px 14px;font-size:13px;font-weight:600;transition:all .12s}.it-page-buttons .btn:hover{background:#f6f8fa;border-color:#8b949e}.it-page-buttons .btn--primary{color:#fff;background:#1e1e2e;border-color:#1e1e2e}.it-page-buttons .btn--primary:hover{background:#2c2c3e;border-color:#2c2c3e}.it-import-card{flex-direction:column;gap:12px;padding:20px;display:flex}.it-import-card__title{color:#1e1e2e;margin:0;font-size:16px;font-weight:700}.it-import-card__sub{color:#6b6b7a;margin:0;font-size:13px;line-height:1.5}.it-import-card__input{color:#1e1e2e;border:2px solid #e6e6ee;border-radius:10px;outline:none;width:100%;padding:12px 14px;font-family:inherit;font-size:14px;transition:border-color .12s}.it-import-card__input:focus{border-color:#4a90e2;box-shadow:0 0 0 4px #4a90e226}.it-import-card__btn{color:#fff;cursor:pointer;background:#1e1e2e;border:0;border-radius:10px;padding:12px 20px;font-size:14px;font-weight:600;transition:background .12s}.it-import-card__btn:hover{background:#2c2c3e}.it-import-card__btn:disabled{opacity:.5;cursor:not-allowed}.modal__input{color:#1e1e2e;border:2px solid #e6e6ee;border-radius:10px;outline:none;width:100%;padding:12px 14px;font-family:inherit;font-size:14px;transition:border-color .12s,box-shadow .12s}.modal__input:focus{border-color:#4a90e2;box-shadow:0 0 0 4px #4a90e226}
