/* Бумага, тушь и цветные акценты связывают рабочие приложения с миром комнаты. */
.client-portrait{display:inline-block;flex:none;width:48px;height:48px;background-image:url('./assets/clients-v3.png');background-size:600% 600%;background-position:var(--cx) var(--cy);border:2px solid #24374b;border-radius:10px;box-shadow:2px 3px #24374b33;vertical-align:middle}
.market-v3{background:radial-gradient(#b69f8040 .8px,transparent .8px),#f2e9d5;background-size:7px 7px}.market-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.market-heading h2{font-size:36px;margin:4px 0;color:#21394a}.refresh-market,.market-filters button{border:2px solid #263a4d;background:#f5cf82;box-shadow:2px 3px #263a4d;color:#263a4d;padding:9px;font-size:10px;font-weight:800}.market-filters{display:flex;gap:7px;margin:10px 0 20px;font-size:10px}.market-filters button{background:#f9f2df;box-shadow:none}.contracts-grid{display:grid;gap:17px}.contract-card{background:#fffaf0;border:2px solid #2a3c50;box-shadow:4px 5px #2a3c5030;padding:14px;border-radius:3px;position:relative}.contract-card:before{content:'';position:absolute;top:-5px;left:34%;height:10px;width:30%;background:#e9c7bb99;transform:rotate(-2deg)}.contract-card header{display:flex;gap:9px;align-items:center}.contract-card header>div{flex:1;min-width:0}.contract-card header b{display:block;font-size:12px}.contract-card header small{display:block;font-size:9px;margin-top:3px}.difficulty{font-size:9px;background:#d8eee5;padding:5px;white-space:nowrap}.contract-card h3{font-size:18px;line-height:1.2;margin:14px 0 8px}.contract-card p{font-size:11px;line-height:1.6;color:#5d625e;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.contract-tags{display:flex;gap:5px;flex-wrap:wrap;margin:10px 0}.contract-tags span{padding:4px;background:#f1e7d2;font-size:8px}.contract-card footer{display:flex;align-items:center;gap:10px;padding-top:12px;border-top:1px dashed #b8ad96}.contract-card footer strong{color:#956329;font-size:22px}.contract-card footer small{font-size:9px}.contract-card footer .primary{margin-left:auto;padding:8px;font-size:10px}.favorite-button{background:none;font-size:23px;color:#bc5476}.laptop-device .contracts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contract-brief{background:#fff8e5}.contract-brief>.client-portrait{width:80px;height:80px;display:block;margin-bottom:14px}.contract-brief h2{font-size:30px;line-height:1.15}.contract-brief p{line-height:1.7}.delivery-box{padding:16px;background:#d9ece4;border-left:5px solid #4a9e91;margin:20px 0}.delivery-box small,.delivery-box b{display:block}.delivery-box small{font-size:8px;letter-spacing:1px;margin-bottom:7px}.delivery-box b{font-size:13px;line-height:1.5}.contract-metrics{display:flex;gap:7px;flex-wrap:wrap}.contract-metrics span{border:1px solid #c5b794;background:#f5e4bc;padding:10px;font-size:11px}.client-result{display:flex;gap:12px;border-bottom:1px dashed #c1b69f;padding:18px 0}.client-result b{font-size:12px}.client-result small{font-size:10px}.result-screen>.client-portrait{width:80px;height:80px;margin:0 auto}.device-roadmap>progress{width:100%;height:14px;accent-color:#499f97}.device-roadmap h2{font-size:35px}.device-roadmap h2 small{font-size:16px;opacity:.5}.device-step{display:flex;gap:12px;align-items:center;position:relative;border-left:3px solid #c6baa0;padding:12px 0 12px 15px;margin-left:15px;opacity:.55}.device-step.done{opacity:1;border-color:#4c9e93}.device-step>b{background:#f0d9a4;border:2px solid #25384a;width:29px;height:29px;display:grid;place-items:center;margin-left:-31px;border-radius:50%}.device-step.done>b{background:#a3dac9}.device-step div{flex:1}.device-step h3{font-size:14px;margin:0}.device-step p{font-size:10px;margin:5px 0}.master-stats{background:#f4d794;padding:15px;border:3px double #21374b}
.skill-tree{display:grid;gap:20px}.laptop-device .skill-tree{grid-template-columns:1fr 1fr}.skill-branch>h3{font-size:11px;letter-spacing:1px;border-bottom:2px solid #263a4d;padding-bottom:10px}.skill-node{display:flex;gap:12px;margin-left:13px;border-left:3px solid #b3aa95;padding:10px 0 12px 16px;position:relative}.skill-node>.node-joint{position:absolute;left:-14px;top:15px;width:25px;height:25px;border:2px solid #293d4f;border-radius:50%;background:#f2dfb3;display:grid;place-items:center}.skill-node.learned{border-color:#519e90}.skill-node.learned .node-joint{background:#a4dacc}.skill-node>div{width:100%;background:#fff9e9;border:2px solid #304255;padding:12px;box-shadow:3px 3px #b6a98e}.skill-node.locked>div{background:#e4dfd2;opacity:.7}.skill-node small{font-size:8px;color:#747969}.skill-node h3{font-size:15px;margin:6px 0}.skill-node em{font-size:10px;float:right;font-style:normal}.skill-node p{font-size:10px;line-height:1.5}.skill-node button{padding:8px;background:#b8e0d4;color:#233e50;border:1px solid #233e50;font-weight:800;font-size:10px}.skill-node button:disabled{background:#d9d4c6;color:#7e8279}
.game-v3{padding:10px;gap:7px;background:radial-gradient(#c0ac8830 .8px,transparent .8px),#ece3cf;background-size:6px 6px;color:#25384b;overflow:hidden;position:relative}.game-v3 .game-top{margin:0;min-height:32px;border-bottom:2px solid #334657;padding-bottom:7px;flex:none}.game-v3 .mission-label{font-size:10px;font-weight:800;max-width:80%;line-height:1.3}.game-v3 .session-clock{font-size:14px;padding:5px;background:#f4d18d}.play-surface{flex:1;position:relative;min-height:0;overflow:auto}.game-feedback{flex:none;min-height:24px;font-size:10px;font-weight:800;color:#358777;text-align:center}.game-feedback.bad{color:#bb506b}.game-feedback.pop{animation:feedback-pop .3s}.game-bottom{display:flex;justify-content:space-between;gap:7px;font-size:9px;font-weight:800;flex:none;border-top:2px solid #334657;padding-top:6px}.game-errors{color:#a25f57}.ability-bar{display:flex;gap:5px;flex-wrap:wrap;max-height:85px;overflow:auto;flex:none}.ability{background:#fae0a0;color:#2b3e50;border:2px solid #2b3e50;box-shadow:1px 2px #2b3e50;padding:7px;font-size:9px;font-weight:800}.ability:disabled{opacity:.5}.big-spark{position:absolute;left:45%;top:35%;font-size:80px;color:#f4be60;pointer-events:none;animation:spark-pop .6s forwards}.wide-game .mission-label{font-size:12px}.wide-game .game-bottom{font-size:11px}
.editor-paper{min-height:100%;padding:20px;background:linear-gradient(#fff9e8ef,#fff9e8ef),url('./assets/work-worlds-v3.png');background-size:200% 200%;background-position:right bottom;border:2px solid #293d51;box-shadow:inset 0 0 0 5px #dfcfae}.editor-paper>small{font-size:8px;letter-spacing:1px}.editor-paper h3{font-size:17px;margin:10px 0}.editor-paper h3.highlight{background:#efd18e}.copy-finished{font-size:12px;line-height:1.7;max-height:100px;overflow:auto;color:#4a776a;border-bottom:1px dashed #b9aa8c;padding-bottom:10px}.copy-source{padding:10px;background:#eee4cf;font-size:14px}.copy-source small{display:block;font-size:10px;margin-top:6px}.copy-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.copy-choices button{background:#fffaf0;border:2px solid #304352;box-shadow:2px 3px #30435240;padding:12px 5px;font-weight:800;font-size:12px;overflow-wrap:anywhere}.copy-choices button.correct{background:#a8dfcc;outline:3px solid #408c80}.wide-game .editor-paper{padding:20px 40px}.wide-game .copy-finished{max-height:150px}.wide-game .copy-choices{grid-template-columns:repeat(4,1fr)}
.game-coder .play-surface{background:linear-gradient(#182f4477,#182f4477),url('./assets/work-worlds-v3.png');background-size:200% 200%;background-position:left bottom;border:3px solid #263b4f;display:flex;flex-direction:column}.server-caption{padding:8px;background:#233c4c;color:#dfefde;font-size:10px;font-weight:900}.server-caption small{display:block;font-size:8px;font-weight:400;margin-top:5px}.cable-board{width:100%;height:100%;min-height:270px;flex:1;overflow:visible}.cable-board g{cursor:pointer;outline:none}.cable-shadow{fill:none;stroke:#0b152c;stroke-width:10}.cable-ink{fill:none;stroke-width:5;stroke-linecap:round}.cable-touch{fill:none;stroke:transparent;pointer-events:stroke}.cable-board rect{stroke:#16273c;stroke-width:2}.cable-board text{fill:#fff7cb;font-size:10px;font-weight:900}.cable-board .removed{opacity:0;pointer-events:none;transition:opacity .3s}.cable-board .selected .cable-ink,.cable-board g:focus .cable-ink{stroke-width:9;filter:drop-shadow(0 0 4px #fff7bb)}.cable-board .free rect{stroke:#fff1a5;stroke-width:4}.cable-board .blocked .cable-ink{stroke:#ff5757!important;stroke-width:9}.cable-board g:hover .cable-ink{filter:brightness(1.4)}
.design-layout{display:grid;gap:15px}.design-grid{display:grid;grid-template-columns:repeat(var(--cols),1fr);grid-template-rows:repeat(var(--rows),1fr);aspect-ratio:4/3;gap:3px;background:#25384b;padding:6px;border:3px solid #25384b;box-shadow:5px 5px #b89e89}.design-cell{background:repeating-linear-gradient(45deg,#f0e4c8,#f0e4c8 6px,#fff7e3 6px,#fff7e3 7px);border:1px solid rgb(38 53 71 / var(--grid-alpha));font-size:9px;color:#9a967f;font-weight:800;min-width:0;min-height:0}.design-cell.filled{background:var(--piece);color:#27364c;border:1px solid #26394b55}.design-tray{display:flex;gap:6px;flex-wrap:wrap}.drag-piece{background:var(--piece);border:2px solid #2a3e51;box-shadow:2px 3px #2a3e5144;padding:10px;min-width:65px;touch-action:none;cursor:grab}.drag-piece b,.drag-piece small{display:block;font-size:9px}.drag-piece small{font-size:8px;margin-top:4px}.drag-piece.selected{outline:3px solid #f2b763}.drag-piece:disabled{opacity:.3;box-shadow:none}.drag-ghost{position:fixed;z-index:10000;pointer-events:none;transform:translate(-50%,-50%) rotate(-4deg);background:#f1c77f;border:3px solid #23384d;padding:20px 10px;font-weight:900;text-align:center;box-shadow:7px 8px #23384d44}.layout-preview{background:#f2dfb2;padding:10px;margin-top:12px;line-height:1.6}.wide-game .design-layout{grid-template-columns:1.4fr 1fr;align-items:center}.wide-game .design-grid{max-height:340px}.wide-game .design-tray{align-content:center}
.office-scene{position:relative;min-height:320px;background:linear-gradient(#20385133,#20385122),url('./assets/work-worlds-v3.png');background-position:right top;background-size:200% 213.333%;border:3px solid #273c4d;display:flex;flex-direction:column;justify-content:space-between;padding:10px}.office-sign{background:#f9eac9;border:2px solid #273c4d;padding:7px;align-self:start;font-size:8px;font-weight:900}.office-line{display:flex;gap:6px;min-height:95px;align-items:end;overflow:auto;padding:12px 2px}.office-line>p{background:#f5ebd6;padding:5px;font-size:10px}.queue-client{background:#f6e5bc;border:2px solid #2e3d50;padding:5px;width:59px;flex:none;animation:client-enter .25s}.queue-client .client-portrait{width:42px;height:42px;border-radius:50%;box-shadow:none}.queue-client b{display:block;font-size:8px}.queue-client small{font-size:6px;display:block}.queue-client progress{width:100%;height:6px;accent-color:#dd947e}.workflow{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.work-stage{padding:10px 4px;background:#fcf1d7e8;border:2px solid #2b4052;min-height:100px}.work-stage>span{font-size:28px;display:block}.work-stage b,.work-stage small{display:block;font-size:10px}.work-stage small{font-size:8px;margin:5px 0}.work-stage progress{width:90%;height:7px;accent-color:#4a9e92}.work-stage.working{background:#b9e0d2ed}.work-stage.working>span{animation:work-bounce .65s infinite alternate}.office-upgrades{display:flex;gap:6px;margin-top:10px}.office-upgrades button{flex:1;background:#f0d093;border:2px solid #26394b;font-size:9px;padding:9px 3px}.wide-game .office-scene{min-height:320px}.wide-game .work-stage{min-height:110px}.wide-game .office-line{gap:16px}
.social-map{height:100%;min-height:300px;position:relative;background:radial-gradient(#dfc692 1px,transparent 1px),linear-gradient(135deg,#344e65,#1e354b);background-size:15px 15px,100% 100%;border:3px solid #203548;overflow:hidden}.social-links{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.social-links path{fill:none;stroke:#88b5b044;stroke-width:.5;stroke-dasharray:2 2}.social-node{position:absolute;transform:translate(-50%,-50%);width:60px;padding:3px;border:2px solid #142f44;box-shadow:3px 4px #12233377;background:#dfd9c7;z-index:2;touch-action:manipulation;transition:background .25s,box-shadow .2s}.social-node.team-1{background:#9ad9c7}.social-node.team-2{background:#f3a0b4}.social-node.selected{outline:3px solid #ffd776;box-shadow:0 0 20px #ffdc8c88}.social-node.shielded{outline:4px solid #76c7ff}.post-picture{height:24px;display:block;background:linear-gradient(25deg,#507d88 45%,transparent 46%),linear-gradient(140deg,#f6d291,#dc9a91);color:#f2e6bb;font-size:20px;font-weight:900}.post-picture.p1{background:linear-gradient(55deg,#9b7799 50%,#dec88b 51%)}.post-picture.p2{background:radial-gradient(circle at 65% 35%,#f1d080 10%,transparent 11%),linear-gradient(160deg,#728e9f 50%,#7db8ad 51%)}.social-node small{display:block;font-size:6px;margin:4px 0}.social-node b{font-size:11px;display:block}.social-flights{position:absolute;inset:0;pointer-events:none;z-index:3}.audience-packet{position:absolute;transform:translate(-50%,-50%);padding:4px;border:1px solid #21384c;border-radius:9px;font-size:9px;font-weight:900;box-shadow:0 0 8px #b8edcf;background:#ade2ce;pointer-events:none}.audience-packet.team-2{background:#f39aaf;box-shadow:0 0 8px #f39aaf}.social-instruction{font-size:9px;margin:6px 0}.game-smm .play-surface{display:flex;flex-direction:column;overflow:hidden}.wide-game .social-node{width:76px;padding:5px}.wide-game .post-picture{height:32px}.wide-game .social-node small{font-size:7px}
.game-blogger .play-surface{display:flex;flex-direction:column;justify-content:center;background:#2a4154;overflow:hidden}.runner-canvas{width:100%;max-height:100%;object-fit:contain;border-bottom:3px solid #263b4c;touch-action:none}.runner-buttons{padding:10px;background:#f0dbaf;display:flex;gap:12px;align-items:center}.jump-button{background:#9ad8c9;color:#22394c;border:2px solid #22394c;box-shadow:3px 4px #22394c;padding:13px 20px;font-weight:900;touch-action:none}.runner-buttons span{font-size:9px;line-height:1.5}.target-abilities{display:flex;gap:5px;flex-wrap:wrap;background:#efdcad;padding:4px}.target-abilities:empty{display:none}.target-abilities button{font-size:9px;background:#ade0cf;border:2px solid #24394b;padding:6px}.laptop-device .target-game{max-width:none}.laptop-device .target-stage{background:linear-gradient(90deg,#304c5f,#1d304a);}.laptop-device .target-mission{font-size:13px}
.room-character{transition:transform 2.5s ease-in-out;z-index:5}.room-character[data-idle="window"]{transform:translate(95%,-14%) scale(.9)}.room-character[data-idle="desk"]{transform:translate(65%,0)}.room-character[data-idle="rest"]{transform:translate(160%,8%) scale(.85)}.room-character[data-idle="read"] .rig-head{filter:drop-shadow(0 2px #597384)}.room-character[data-idle="stretch"]>.avatar{animation:idle-stretch 3s ease-in-out infinite}.room-character[data-idle="wave"]>.avatar{animation:idle-wave 1s ease-in-out infinite}.room-character[data-idle="rest"]>.avatar{transform:rotate(-12deg)}.idle-thought{position:absolute;bottom:96%;left:10%;width:190px;background:#fff2d3;color:#273c4f;border:2px solid #273c4f;box-shadow:3px 4px #273c4f44;padding:10px;font-size:10px;line-height:1.5;font-weight:800;transform:rotate(-3deg);pointer-events:none}.idle-thought:after{content:'';position:absolute;bottom:-9px;left:25px;width:12px;height:12px;border-right:2px solid #273c4f;border-bottom:2px solid #273c4f;background:#fff2d3;transform:rotate(45deg)}
@keyframes feedback-pop{50%{transform:scale(1.05)}}@keyframes spark-pop{to{transform:scale(2) rotate(60deg);opacity:0}}@keyframes work-bounce{to{transform:translateY(-3px) rotate(8deg)}}@keyframes client-enter{from{transform:translateX(-20px);opacity:0}}@keyframes idle-stretch{50%{transform:scaleY(1.06) rotate(3deg)}}@keyframes idle-wave{50%{transform:rotate(4deg) translateY(-3px)}}
@media(max-width:720px){.laptop-device .contracts-grid,.laptop-device .skill-tree{grid-template-columns:1fr}.wide-game .design-layout{grid-template-columns:1fr}.wide-game .copy-choices{grid-template-columns:1fr 1fr}.wide-game .editor-paper{padding:15px}.wide-game .social-node{width:58px;padding:3px}.wide-game .social-node small{font-size:6px}.game-v3{padding:7px}.wide-game .game-bottom{font-size:8px}.office-scene{min-height:290px}.contract-brief h2{font-size:25px}.idle-thought{width:125px;font-size:8px;padding:7px}.room-character[data-idle="rest"]{transform:translate(125%,8%) scale(.85)}.runner-buttons{padding:8px}.jump-button{padding:11px}.game-v3 .mission-label{font-size:9px}.social-map{min-height:280px}}
@media(prefers-reduced-motion:reduce){.room-character{transition:none}.room-character>.avatar,.work-stage>span,.queue-client,.game-feedback,.big-spark{animation:none!important}}

.laptop-device .game-v3{max-width:none;width:100%}.laptop-device .game-coder .cable-board{min-height:230px}.laptop-device .game-v3 .play-surface{width:100%}.laptop-device .game-designer .design-grid{max-width:420px}.room-character[data-idle="rest"]>.avatar{transform:none}
.game-smm .social-map{flex:1;height:auto;min-height:0}.game-blogger .runner-canvas{height:calc(100% - 65px);min-height:0;flex:1}.runner-buttons{flex:none}.office-scene,.wide-game .office-scene{min-height:265px}.wide-game .work-stage{min-height:85px}
.game-manager .play-surface{display:flex;flex-direction:column;overflow:hidden}.game-manager .office-scene{flex:1;min-height:0;padding:7px}.game-manager .office-line{min-height:65px;padding:4px 0}.game-manager .work-stage{min-height:64px;padding:5px}.game-manager .work-stage>span{font-size:23px}.game-manager .office-upgrades{margin-top:5px;flex:none}.game-manager .office-upgrades button{padding:7px 3px}.game-manager .queue-client .client-portrait{width:32px;height:32px}

.campaign-panel{display:none}.target-game.wide-campaign{position:relative}.wide-campaign .campaign-panel{display:flex;position:absolute;left:14px;top:65px;width:23%;flex-direction:column;gap:12px;background:#fff0cf;border:3px solid #243247;padding:14px;box-shadow:5px 5px 0 #243247;font-size:12px;transform:rotate(-2deg)}.campaign-panel ol{padding-left:18px;line-height:1.8}.campaign-panel .client-avatar{width:65px;height:65px}@media(max-width:700px){.wide-campaign .campaign-panel{display:none}}
