/* v2.9.46 desktop safety: mobile-only injected controls can never participate
   in the desktop/container-query layout. */
.cc-java-fullscreen-exit-v2945{display:none!important;}

/* =====================================================================
   CodeCampus v2.9.46 · Mobile Java Workspace UX
   Goal: no hunting/scrolling for Run, Output, or Submit on a phone.
   ===================================================================== */

.cc-java-mobile-dock-v2945,
.cc-java-tools-sheet-v2945,
.cc-java-tools-scrim-v2945{display:none;}

@media (max-width:820px){
  :root{--cc-java-dock-h-v2945:68px;--cc-java-keyboard-offset-v2945:0px;}

  .java-ide.cc-java-mobile-enhanced-v2945{
    min-width:0!important;
    max-width:100%!important;
    overflow:clip!important;
  }

  .java-ide.cc-java-mobile-enhanced-v2945 .java-code-editor,
  .java-ide.cc-java-mobile-enhanced-v2945 #javaTerminalInput,
  .java-ide.cc-java-mobile-enhanced-v2945 #javaStdin,
  .java-ide.cc-java-mobile-enhanced-v2945 input,
  .java-ide.cc-java-mobile-enhanced-v2945 select{
    font-size:16px!important;
  }

  /* Embedded mobile workspace: give Output enough room to actually be useful. */
  .java-ide.cc-java-mobile-enhanced-v2945 .java-console{
    min-width:0!important;
    max-width:100%!important;
  }
  .java-ide.cc-java-mobile-enhanced-v2945 .java-console-panel[data-console-panel="output"]{
    min-height:260px;
    max-width:100%!important;
    overflow:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  .java-ide.cc-java-mobile-enhanced-v2945 #javaOutput{
    max-width:100%!important;
    min-width:0!important;
    white-space:pre-wrap!important;
    overflow-wrap:anywhere;
    word-break:break-word;
  }
  .java-ide.cc-java-mobile-enhanced-v2945 .java-terminal-input-row{
    position:sticky!important;
    bottom:0!important;
    z-index:5!important;
    background:var(--panel-solid,#07111f)!important;
    padding-bottom:max(8px,env(safe-area-inset-bottom))!important;
  }

  /* Persistent mobile dock ------------------------------------------------ */
  .cc-java-mobile-dock-v2945{
    position:fixed;
    left:8px;
    right:8px;
    bottom:calc(8px + env(safe-area-inset-bottom) + var(--cc-java-keyboard-offset-v2945));
    z-index:10120;
    height:var(--cc-java-dock-h-v2945);
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:4px;
    padding:6px;
    border:1px solid color-mix(in srgb,var(--line,#243650) 86%,transparent);
    border-radius:18px;
    background:color-mix(in srgb,var(--panel-solid,#07111f) 94%,transparent);
    box-shadow:0 18px 48px rgba(2,8,23,.34),0 4px 16px rgba(2,8,23,.22);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
    transform:translateY(calc(100% + 28px));
    opacity:0;
    pointer-events:none;
    transition:transform .22s ease,opacity .18s ease,bottom .12s linear;
  }
  .cc-java-mobile-dock-v2945.is-visible{
    transform:translateY(0);
    opacity:1;
    pointer-events:auto;
  }
  .cc-java-mobile-dock-v2945 button{
    position:relative;
    min-width:0!important;
    min-height:54px!important;
    border:1px solid transparent!important;
    border-radius:12px!important;
    padding:5px 2px!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    gap:4px!important;
    background:transparent!important;
    color:var(--muted,#98a9bf)!important;
    font:750 10px/1 system-ui,-apple-system,"Segoe UI",sans-serif!important;
    box-shadow:none!important;
    touch-action:manipulation;
    -webkit-tap-highlight-color:transparent;
  }
  .cc-java-mobile-dock-v2945 button.active{
    color:var(--text,#f4f8ff)!important;
    border-color:rgba(31,199,239,.18)!important;
    background:linear-gradient(135deg,rgba(113,91,255,.14),rgba(25,200,238,.08))!important;
  }
  .cc-java-dock-icon-v2945,
  .cc-java-dock-run-icon-v2945{
    position:relative;
    min-height:19px;
    display:grid;
    place-items:center;
    font:800 17px/1 ui-monospace,SFMono-Regular,Menlo,monospace;
  }
  .cc-java-output-icon-v2945 i{
    position:absolute;
    top:-2px;
    right:-7px;
    width:8px;
    height:8px;
    border-radius:999px;
    background:#25d99a;
    box-shadow:0 0 0 3px color-mix(in srgb,var(--panel-solid,#07111f) 88%,transparent);
    opacity:0;
    transform:scale(.5);
    transition:.16s ease;
  }
  .cc-java-output-icon-v2945 i.is-visible{opacity:1;transform:scale(1);}
  .cc-java-mobile-dock-v2945 .cc-java-dock-run-v2945{
    color:#fff!important;
    border-color:rgba(255,255,255,.10)!important;
    background:linear-gradient(135deg,#6f5cff,#13bfe8)!important;
    box-shadow:0 7px 18px rgba(44,126,255,.24)!important;
  }
  .cc-java-mobile-dock-v2945 .cc-java-dock-run-v2945:disabled{
    opacity:.78!important;
    filter:saturate(.8);
  }
  .cc-java-mobile-dock-v2945 .cc-java-dock-run-v2945.is-running .cc-java-dock-run-icon-v2945{
    animation:ccJavaRunPulse2943 .9s ease-in-out infinite alternate;
  }
  @keyframes ccJavaRunPulse2943{to{opacity:.48;transform:scale(.88)}}

  body.cc-java-mobile-dock-open-v2945:not(.cc-java-mobile-fullscreen-open-v2945){
    padding-bottom:calc(var(--cc-java-dock-h-v2945) + 24px + env(safe-area-inset-bottom))!important;
  }

  /* Tools bottom sheet ---------------------------------------------------- */
  .cc-java-tools-scrim-v2945{
    position:fixed;
    inset:0;
    z-index:10130;
    display:block;
    border:0!important;
    border-radius:0!important;
    background:rgba(2,8,23,.48)!important;
    opacity:0;
    pointer-events:none;
    transition:opacity .18s ease;
  }
  .cc-java-tools-scrim-v2945.is-open{opacity:1;pointer-events:auto;}
  .cc-java-tools-sheet-v2945{
    position:fixed;
    left:8px;
    right:8px;
    bottom:calc(var(--cc-java-dock-h-v2945) + 20px + env(safe-area-inset-bottom) + var(--cc-java-keyboard-offset-v2945));
    z-index:10140;
    display:block;
    max-width:430px;
    margin-inline:auto;
    padding:8px 12px 14px;
    border:1px solid var(--line,#243650);
    border-radius:22px;
    background:var(--panel-solid,#07111f);
    box-shadow:0 22px 70px rgba(2,8,23,.48);
    transform:translateY(24px) scale(.98);
    opacity:0;
    pointer-events:none;
    transition:transform .2s ease,opacity .18s ease,bottom .12s linear;
  }
  .cc-java-tools-sheet-v2945.is-open{transform:translateY(0) scale(1);opacity:1;pointer-events:auto;}
  .cc-java-tools-handle-v2945{width:42px;height:4px;border-radius:99px;background:var(--line,#344760);margin:2px auto 9px;}
  .cc-java-tools-sheet-v2945 header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;}
  .cc-java-tools-sheet-v2945 header div{display:grid;gap:2px;}
  .cc-java-tools-sheet-v2945 header b{font-size:.93rem;}
  .cc-java-tools-sheet-v2945 header small{color:var(--muted);font-size:.7rem;}
  .cc-java-tools-sheet-v2945 header>button{
    width:40px!important;height:40px!important;min-width:40px!important;border-radius:12px!important;
    border:1px solid var(--line)!important;background:transparent!important;color:var(--text)!important;font-size:22px!important;
  }
  .cc-java-tools-grid-v2945{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
  .cc-java-tools-grid-v2945 button{
    min-height:78px!important;padding:10px!important;border-radius:14px!important;
    border:1px solid var(--line)!important;background:var(--panel-soft,rgba(255,255,255,.035))!important;color:var(--text)!important;
    display:grid!important;grid-template-columns:30px minmax(0,1fr)!important;grid-template-rows:auto auto!important;
    column-gap:9px!important;text-align:left!important;align-content:center!important;box-shadow:none!important;
  }
  .cc-java-tools-grid-v2945 button>span{grid-row:1/3;font-size:20px;align-self:center;color:#5bd7f4;}
  .cc-java-tools-grid-v2945 button>b{font-size:.78rem;align-self:end;}
  .cc-java-tools-grid-v2945 button>small{font-size:.64rem;color:var(--muted);align-self:start;margin-top:2px;}

  /* Dedicated mobile fullscreen exit control. It is a direct child of the
     fullscreen IDE, so Android/Firefox always paints it in native fullscreen. */
  .cc-java-fullscreen-exit-v2945{
    display:none;
    flex:0 0 auto;
    min-width:76px;
    min-height:38px;
    padding:7px 11px!important;
    border:1px solid rgba(148,163,184,.28)!important;
    border-radius:11px!important;
    background:rgba(148,163,184,.075)!important;
    color:var(--text,#eaf3ff)!important;
    font:800 12px/1 system-ui,-apple-system,"Segoe UI",sans-serif!important;
    align-items:center;
    justify-content:center;
    gap:6px;
    white-space:nowrap;
    box-shadow:none!important;
    -webkit-tap-highlight-color:transparent;
  }
  .cc-java-fullscreen-exit-v2945 svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;}
  .cc-java-fullscreen-exit-v2945:active{transform:scale(.97);}
  .cc-java-mobile-fullscreen-v2945 .cc-java-fullscreen-exit-v2945{display:inline-flex!important;}

  /* Fullscreen = focused app-like workspace ------------------------------- */
  body.cc-java-mobile-fullscreen-open-v2945{
    overflow:hidden!important;
    /* Do NOT use touch-action:none here. It blocks natural mobile scrolling. */
    overscroll-behavior:none;
  }
  .java-ide.cc-java-mobile-fullscreen-v2945{
    position:fixed!important;
    inset:0!important;
    z-index:10050!important;
    width:100vw!important;
    max-width:100vw!important;
    height:var(--cc-visual-vh,100dvh)!important;
    max-height:var(--cc-visual-vh,100dvh)!important;
    margin:0!important;
    padding:0 0 calc(var(--cc-java-dock-h-v2945) + 18px + env(safe-area-inset-bottom))!important;
    border:0!important;
    border-radius:0!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
    background:var(--panel-solid,#07111f)!important;
    box-shadow:none!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-ide-toolbar{
    flex:0 0 auto!important;
    min-height:48px!important;
    display:flex!important;
    align-items:center!important;
    padding:max(7px,env(safe-area-inset-top)) 10px 7px!important;
    border-radius:0!important;
    background:var(--panel-solid,#07111f)!important;
    border-bottom:1px solid var(--line)!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-ide-title-v2926{min-height:30px!important;flex:1 1 auto!important;width:auto!important;}
  .cc-java-mobile-fullscreen-v2945 .java-ide-toolbar>.cc-java-fullscreen-exit-v2945{margin-left:auto!important;}
  .cc-java-mobile-fullscreen-v2945 .java-ide-title-copy-v2926 b{font-size:.8rem!important;}
  .cc-java-mobile-fullscreen-v2945 .java-ide-title-copy-v2926 small{display:none!important;}
  /* All primary controls live in the bottom dock; no need to hunt in a rail. */
  .cc-java-mobile-fullscreen-v2945 .java-toolbar-actions-v2926{display:none!important;}
  .cc-java-mobile-fullscreen-v2945 .java-ide-options-v2926{display:none!important;}

  /* CODE MODE */
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-code-v2945 .java-ide-body{
    display:flex!important;flex:1 1 0!important;min-height:0!important;height:auto!important;
    flex-direction:column!important;overflow:hidden!important;
  }
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-code-v2945 .java-console,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-code-v2945 .java-submit-bar,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-code-v2945 .java-gui-panel-v299{display:none!important;}

  .cc-java-mobile-fullscreen-v2945 .java-file-panel{
    flex:0 0 46px!important;width:100%!important;height:46px!important;min-height:46px!important;max-height:46px!important;
    overflow:hidden!important;border-right:0!important;border-bottom:1px solid var(--line)!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-file-head,
  .cc-java-mobile-fullscreen-v2945 .java-file-actions{display:none!important;}
  .cc-java-mobile-fullscreen-v2945 .java-file-list{
    height:46px!important;display:flex!important;flex-direction:row!important;gap:6px!important;
    padding:5px 7px!important;overflow-x:auto!important;overflow-y:hidden!important;
    scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:pan-x;
  }
  .cc-java-mobile-fullscreen-v2945 .java-file-list::-webkit-scrollbar{display:none;}
  .cc-java-mobile-fullscreen-v2945 .java-file-item{flex:0 0 auto!important;width:auto!important;min-height:36px!important;padding:7px 10px!important;}
  .cc-java-mobile-fullscreen-v2945 .java-editor-area{
    flex:1 1 0!important;width:100%!important;min-width:0!important;min-height:0!important;height:auto!important;
    display:flex!important;flex-direction:column!important;overflow:hidden!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-editor-tabbar{display:none!important;}
  .cc-java-mobile-fullscreen-v2945 .java-editor-shell{
    flex:1 1 0!important;width:100%!important;min-width:0!important;min-height:0!important;height:100%!important;
    grid-template-columns:34px minmax(0,1fr)!important;overflow:hidden!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-line-numbers{
    width:34px!important;min-width:34px!important;padding-inline:5px!important;font-size:.68rem!important;overflow:hidden!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-code-stage-v294,
  .cc-java-mobile-fullscreen-v2945 .java-syntax-layer-v294,
  .cc-java-mobile-fullscreen-v2945 .java-code-editor{
    width:100%!important;min-width:0!important;max-width:none!important;min-height:0!important;height:100%!important;max-height:none!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-code-editor{
    overflow:auto!important;resize:none!important;padding:12px 12px!important;font-size:16px!important;line-height:1.55!important;
    caret-color:currentColor!important;overscroll-behavior:contain;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;
  }
  .cc-java-mobile-fullscreen-v2945 .java-syntax-layer-v294{padding:12px!important;}

  /* OUTPUT MODE */
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-ide-body,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-submit-bar,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-gui-panel-v299{display:none!important;}
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-console{
    display:flex!important;flex:1 1 0!important;min-height:0!important;height:auto!important;
    flex-direction:column!important;overflow:hidden!important;border-top:0!important;margin:0!important;
  }
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-terminal-resize-handle{display:none!important;}
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-console-tabs{
    flex:0 0 44px!important;min-height:44px!important;padding-inline:8px!important;overflow-x:auto!important;white-space:nowrap!important;
  }
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-console-panel.active{
    display:flex!important;flex:1 1 0!important;min-height:0!important;height:auto!important;
    flex-direction:column!important;overflow:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  }
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 #javaOutput{
    flex:1 0 auto!important;min-height:100%!important;height:auto!important;margin:0!important;padding:14px 12px 18px!important;
    white-space:pre-wrap!important;overflow-wrap:anywhere!important;word-break:break-word!important;font-size:13px!important;line-height:1.55!important;
  }
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-terminal-input-row{
    flex:0 0 auto!important;position:sticky!important;bottom:0!important;z-index:8!important;
    padding:9px 10px max(9px,env(safe-area-inset-bottom))!important;background:var(--panel-solid,#07111f)!important;
    border-top:1px solid var(--line)!important;
  }
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 #javaTerminalInput{
    min-height:44px!important;font-size:16px!important;
  }

  /* SUBMIT MODE */
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-submit-v2945 .java-ide-body,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-submit-v2945 .java-console,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-submit-v2945 .java-gui-panel-v299{display:none!important;}
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-submit-v2945 .java-submit-bar{
    display:flex!important;flex:1 1 0!important;min-height:0!important;max-height:none!important;flex-direction:column!important;
    gap:12px!important;padding:14px 12px!important;overflow:auto!important;-webkit-overflow-scrolling:touch;background:var(--panel-solid,#07111f)!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-submit-meta-v296{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;}
  .cc-java-mobile-fullscreen-v2945 .java-submit-meta-v296 label{width:100%!important;}
  .cc-java-mobile-fullscreen-v2945 .java-submit-meta-v296 input{width:100%!important;min-height:46px!important;font-size:16px!important;}
  .cc-java-mobile-fullscreen-v2945 .java-submit-guard-v296{width:100%!important;}
  .cc-java-mobile-fullscreen-v2945 .java-submit-actions-v296{width:100%!important;display:grid!important;grid-template-columns:1fr!important;gap:9px!important;}
  .cc-java-mobile-fullscreen-v2945 .java-submit-actions-v296 .btn{width:100%!important;min-height:48px!important;justify-content:center!important;}

  .java-ide:fullscreen{background:var(--panel-solid,#07111f)!important;}
}

@media (max-width:390px){
  :root{--cc-java-dock-h-v2945:64px;}
  .cc-java-mobile-dock-v2945{left:5px;right:5px;bottom:calc(5px + env(safe-area-inset-bottom) + var(--cc-java-keyboard-offset-v2945));padding:5px;gap:2px;border-radius:16px;}
  .cc-java-mobile-dock-v2945 button{min-height:52px!important;font-size:9px!important;}
  .cc-java-dock-icon-v2945,.cc-java-dock-run-icon-v2945{font-size:16px;}
  .cc-java-tools-sheet-v2945{left:5px;right:5px;}
  .cc-java-mobile-fullscreen-v2945 .java-editor-shell{grid-template-columns:30px minmax(0,1fr)!important;}
  .cc-java-mobile-fullscreen-v2945 .java-line-numbers{width:30px!important;min-width:30px!important;}
}

@media (prefers-reduced-motion:reduce){
  .cc-java-mobile-dock-v2945,
  .cc-java-tools-sheet-v2945,
  .cc-java-tools-scrim-v2945,
  .cc-java-output-icon-v2945 i{transition:none!important;}
  .cc-java-dock-run-v2945.is-running .cc-java-dock-run-icon-v2945{animation:none!important;}
}

/* =====================================================================
   v2.9.45 MOBILE FULLSCREEN REPAIR
   - Native fullscreen keeps the dock inside #javaIde.
   - Fullscreen has a real app bar, file tabs, editor canvas and bottom dock.
   - Submission/footer metadata cannot steal editor height.
   ===================================================================== */
@media (max-width:820px){
  /* When the phone keyboard is visible, make the dock slightly more compact. */
  body.cc-java-keyboard-open-v2945{
    --cc-java-dock-h-v2945:56px;
  }

  .java-ide.cc-java-mobile-fullscreen-v2945,
  .java-ide.cc-java-mobile-fullscreen-v2945:fullscreen,
  .java-ide.cc-java-mobile-fullscreen-v2945.java-ide-fullscreen-fallback{
    position:fixed!important;
    inset:0!important;
    box-sizing:border-box!important;
    width:100%!important;
    min-width:100%!important;
    max-width:none!important;
    height:var(--cc-visual-vh,100dvh)!important;
    min-height:0!important;
    max-height:var(--cc-visual-vh,100dvh)!important;
    margin:0!important;
    padding:0 0 calc(var(--cc-java-dock-h-v2945) + 14px + env(safe-area-inset-bottom))!important;
    border:0!important;
    border-radius:0!important;
    overflow:hidden!important;
    background:var(--panel-solid,#07111f)!important;
    box-shadow:none!important;
    isolation:isolate;
  }

  .java-ide.cc-java-mobile-fullscreen-v2945:fullscreen::backdrop{
    background:var(--panel-solid,#07111f)!important;
  }

  /* Compact app bar. Keep a visible Exit control so fullscreen never traps users. */
  .cc-java-mobile-fullscreen-v2945 .java-ide-toolbar{
    flex:0 0 52px!important;
    min-height:52px!important;
    max-height:52px!important;
    width:100%!important;
    display:flex!important;
    align-items:center!important;
    gap:8px!important;
    padding:max(7px,env(safe-area-inset-top)) 10px 7px!important;
    border:0!important;
    border-bottom:1px solid var(--line,#243650)!important;
    background:color-mix(in srgb,var(--panel-solid,#07111f) 96%,#0d2740)!important;
    box-shadow:0 5px 18px rgba(0,0,0,.14)!important;
    z-index:12!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-ide-title-v2926{
    min-width:0!important;
    flex:1 1 auto!important;
    min-height:34px!important;
    gap:8px!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-status-dot{
    width:9px!important;
    height:9px!important;
    flex:0 0 9px!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-ide-title-copy-v2926{
    min-width:0!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-ide-title-copy-v2926 b{
    display:block!important;
    overflow:hidden!important;
    white-space:nowrap!important;
    text-overflow:ellipsis!important;
    font-size:.82rem!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-ide-title-copy-v2926 small{display:none!important;}

  .cc-java-mobile-fullscreen-v2945 .java-toolbar-actions-v2926{
    display:none!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-toolbar-actions-v2926 > *{
    display:none!important;
  }
  .cc-java-mobile-fullscreen-v2945 #javaFullscreenBtn{display:none!important;}

  /* The desktop status/options rail is intentionally absent in mobile fullscreen. */
  .cc-java-mobile-fullscreen-v2945 .java-ide-options-v2926{display:none!important;}

  /* Never let post-editor metadata consume the fullscreen coding canvas. */
  .cc-java-mobile-fullscreen-v2945 .java-last-saved,
  .cc-java-mobile-fullscreen-v2945 .coding-result-v280{
    display:none!important;
  }

  /* CODE view = file tabs + editor filling every remaining pixel. */
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-code-v2945 .java-ide-body{
    flex:1 1 0!important;
    min-height:0!important;
    width:100%!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
    background:#03101c!important;
  }
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-code-v2945 .java-console,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-code-v2945 .java-submit-bar,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-code-v2945 .java-gui-panel-v299{
    display:none!important;
  }

  .cc-java-mobile-fullscreen-v2945 .java-file-panel{
    flex:0 0 47px!important;
    width:100%!important;
    min-width:0!important;
    height:47px!important;
    min-height:47px!important;
    max-height:47px!important;
    border:0!important;
    border-bottom:1px solid var(--line,#243650)!important;
    overflow:hidden!important;
    background:color-mix(in srgb,var(--panel-solid,#07111f) 98%,#10263c)!important;
    z-index:10!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-file-head,
  .cc-java-mobile-fullscreen-v2945 .java-file-actions{display:none!important;}
  .cc-java-mobile-fullscreen-v2945 .java-file-list{
    width:100%!important;
    height:47px!important;
    min-width:0!important;
    display:flex!important;
    flex-direction:row!important;
    align-items:center!important;
    gap:6px!important;
    padding:5px 8px!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    scrollbar-width:none!important;
    overscroll-behavior-x:contain!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-x!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-file-list::-webkit-scrollbar{display:none!important;}
  .cc-java-mobile-fullscreen-v2945 .java-file-item{
    flex:0 0 auto!important;
    width:auto!important;
    max-width:72vw!important;
    min-height:36px!important;
    padding:7px 11px!important;
    border-radius:10px!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }

  .cc-java-mobile-fullscreen-v2945 .java-editor-area{
    flex:1 1 0!important;
    width:100%!important;
    min-width:0!important;
    min-height:0!important;
    height:auto!important;
    display:flex!important;
    flex-direction:column!important;
    overflow:hidden!important;
    background:#03101c!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-editor-tabbar{display:none!important;}
  .cc-java-mobile-fullscreen-v2945 .java-editor-shell{
    flex:1 1 0!important;
    width:100%!important;
    min-width:0!important;
    min-height:0!important;
    height:100%!important;
    display:grid!important;
    grid-template-columns:34px minmax(0,1fr)!important;
    overflow:hidden!important;
    background:#03101c!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-line-numbers{
    width:34px!important;
    min-width:34px!important;
    max-width:34px!important;
    height:100%!important;
    min-height:0!important;
    padding:12px 5px 18px!important;
    overflow:hidden!important;
    background:#061625!important;
    border-right:1px solid rgba(148,163,184,.08)!important;
    font-size:.7rem!important;
    line-height:1.55!important;
    user-select:none!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-code-stage-v294{
    position:relative!important;
    width:100%!important;
    min-width:0!important;
    min-height:0!important;
    height:100%!important;
    overflow:hidden!important;
    background:#03101c!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-syntax-layer-v294,
  .cc-java-mobile-fullscreen-v2945 .java-code-editor{
    box-sizing:border-box!important;
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    min-height:0!important;
    height:100%!important;
    max-height:none!important;
    margin:0!important;
    padding:12px 12px 24px!important;
    border:0!important;
    border-radius:0!important;
    font-size:16px!important;
    line-height:1.55!important;
    tab-size:4!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-code-editor{
    overflow:auto!important;
    resize:none!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch!important;
    touch-action:pan-x pan-y!important;
    scroll-padding:18px!important;
  }

  /* OUTPUT and SUBMIT remain dedicated screens above the same bottom dock. */
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-output-v2945 .java-console,
  .cc-java-mobile-fullscreen-v2945.cc-java-mobile-mode-submit-v2945 .java-submit-bar{
    width:100%!important;
    min-width:0!important;
  }

  /* Dock is now a child of #javaIde during native fullscreen. Ensure it always
     paints over editor/output and remains comfortably tappable. */
  .cc-java-mobile-fullscreen-v2945 > .cc-java-mobile-dock-v2945,
  .cc-java-mobile-dock-v2945.is-fullscreen-mounted{
    left:max(7px,env(safe-area-inset-left))!important;
    right:max(7px,env(safe-area-inset-right))!important;
    bottom:calc(7px + env(safe-area-inset-bottom) + var(--cc-java-keyboard-offset-v2945))!important;
    z-index:2147483000!important;
    width:auto!important;
    max-width:none!important;
    margin:0!important;
  }
  .cc-java-mobile-fullscreen-v2945 > .cc-java-tools-scrim-v2945,
  .cc-java-tools-scrim-v2945.is-fullscreen-mounted{
    z-index:2147483001!important;
  }
  .cc-java-mobile-fullscreen-v2945 > .cc-java-tools-sheet-v2945,
  .cc-java-tools-sheet-v2945.is-fullscreen-mounted{
    z-index:2147483002!important;
  }

  body.cc-java-keyboard-open-v2945 .cc-java-mobile-dock-v2945{
    height:56px!important;
    padding:4px!important;
    border-radius:15px!important;
  }
  body.cc-java-keyboard-open-v2945 .cc-java-mobile-dock-v2945 button{
    min-height:46px!important;
    gap:2px!important;
    font-size:8.5px!important;
  }
  body.cc-java-keyboard-open-v2945 .cc-java-dock-icon-v2945,
  body.cc-java-keyboard-open-v2945 .cc-java-dock-run-icon-v2945{
    min-height:16px!important;
    font-size:15px!important;
  }

}

/* Landscape phones need the same controls without sacrificing the editor. */
@media (max-width:820px) and (orientation:landscape) and (max-height:520px){
  .cc-java-mobile-fullscreen-v2945 .java-ide-toolbar{
    flex-basis:44px!important;
    min-height:44px!important;
    max-height:44px!important;
    padding:5px 8px!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-file-panel,
  .cc-java-mobile-fullscreen-v2945 .java-file-list{
    height:40px!important;
    min-height:40px!important;
    max-height:40px!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-file-item{min-height:32px!important;padding:5px 9px!important;}
}

@media (max-width:390px){
  .cc-java-mobile-fullscreen-v2945 .java-editor-shell{
    grid-template-columns:30px minmax(0,1fr)!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-line-numbers{
    width:30px!important;
    min-width:30px!important;
    max-width:30px!important;
    padding-inline:4px!important;
  }
  .cc-java-mobile-fullscreen-v2945 #javaFullscreenBtn{
    min-width:40px!important;
    width:40px!important;
    padding:0!important;
  }
  .cc-java-mobile-fullscreen-v2945 #javaFullscreenBtn .fullscreen-label{display:none!important;}
}


/* =====================================================================
   CodeCampus v2.9.45 · Narrow-phone editor visibility hotfix
   Root cause: app.css hides .java-line-numbers at <=420px. v2.9.43 then
   reintroduced a two-column grid, so the only visible child (.java-code-stage)
   auto-placed into the 30px gutter. This is why only "pu" / a few characters
   of Java source were visible in fullscreen.
   ===================================================================== */
@media (max-width:420px){
  .cc-java-mobile-fullscreen-v2945 .java-editor-shell{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    width:100%!important;
    min-width:0!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-line-numbers{
    display:none!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-code-stage-v294{
    grid-column:1 / -1!important;
    grid-row:1!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
  }
  .cc-java-mobile-fullscreen-v2945 .java-syntax-layer-v294,
  .cc-java-mobile-fullscreen-v2945 .java-code-editor{
    width:100%!important;
    max-width:none!important;
  }
}

/* On phones wider than 420px, explicitly restore the gutter because some
   container-query rules can otherwise hide it while leaving two columns. */
@media (min-width:421px) and (max-width:820px){
  .cc-java-mobile-fullscreen-v2945 .java-line-numbers{display:block!important;}
  .cc-java-mobile-fullscreen-v2945 .java-code-stage-v294{grid-column:auto!important;}
}

/* =====================================================================
   v2.9.45 HOTFIX · Mobile keyboard-safe fullscreen controls
   Fixes:
   1) Native Android keyboard covering Code/Run/Output/Submit/Tools.
   2) Duplicate/malformed fullscreen glyph beside the dedicated Exit button.
   ===================================================================== */
@media (max-width:820px){
  /* In native fullscreen the dock is a child of #javaIde. Anchor it to the
     IDE instead of the browser layout viewport. #javaIde already tracks
     visualViewport height, so the dock naturally rises above the keyboard. */
  .java-ide.cc-java-mobile-fullscreen-v2945 > .cc-java-mobile-dock-v2945,
  .java-ide.cc-java-mobile-fullscreen-v2945:fullscreen > .cc-java-mobile-dock-v2945,
  .java-ide.cc-java-mobile-fullscreen-v2945.java-ide-fullscreen-fallback > .cc-java-mobile-dock-v2945,
  .cc-java-mobile-dock-v2945.is-fullscreen-mounted{
    position:absolute!important;
    left:max(7px,env(safe-area-inset-left))!important;
    right:max(7px,env(safe-area-inset-right))!important;
    top:auto!important;
    bottom:max(7px,env(safe-area-inset-bottom))!important;
    transform:none!important;
    opacity:1!important;
    pointer-events:auto!important;
    z-index:60!important;
  }

  /* The editor/content ends above the dock, even after visualViewport shrinks
     when Gboard/Samsung Keyboard/etc. appears. */
  .java-ide.cc-java-mobile-fullscreen-v2945,
  .java-ide.cc-java-mobile-fullscreen-v2945:fullscreen,
  .java-ide.cc-java-mobile-fullscreen-v2945.java-ide-fullscreen-fallback{
    padding-bottom:calc(var(--cc-java-dock-h-v2945) + 16px + env(safe-area-inset-bottom))!important;
  }

  /* While typing, keep all five actions visible but compact. */
  body.cc-java-keyboard-open-v2945{
    --cc-java-dock-h-v2945:54px;
  }
  body.cc-java-keyboard-open-v2945 .cc-java-mobile-dock-v2945{
    height:54px!important;
    padding:4px!important;
    gap:2px!important;
    border-radius:15px!important;
    box-shadow:0 9px 28px rgba(2,8,23,.42)!important;
  }
  body.cc-java-keyboard-open-v2945 .cc-java-mobile-dock-v2945 button{
    min-height:44px!important;
    height:44px!important;
    padding:3px 1px!important;
    gap:2px!important;
    font-size:8.5px!important;
  }
  body.cc-java-keyboard-open-v2945 .cc-java-dock-icon-v2945,
  body.cc-java-keyboard-open-v2945 .cc-java-dock-run-icon-v2945{
    min-height:16px!important;
    font-size:15px!important;
  }

  /* We already inject a clean dedicated Exit button. Hide the legacy
     fullscreen toolbar control in fullscreen so its unsupported glyph cannot
     render as a broken square/hourglass on Android fonts. */
  .cc-java-mobile-fullscreen-v2945 #javaFullscreenBtn{
    display:none!important;
  }
  .cc-java-mobile-fullscreen-v2945 .cc-java-fullscreen-exit-v2945{
    display:inline-flex!important;
    visibility:visible!important;
    opacity:1!important;
    min-width:72px!important;
    min-height:38px!important;
    flex:0 0 auto!important;
    margin-left:auto!important;
  }

  /* Keep the focused line/caret comfortably above the mobile action dock. */
  body.cc-java-keyboard-open-v2945 .cc-java-mobile-fullscreen-v2945 .java-code-editor,
  body.cc-java-keyboard-open-v2945 .cc-java-mobile-fullscreen-v2945 .java-syntax-layer-v294{
    padding-bottom:76px!important;
  }
}

@media (max-width:390px){
  body.cc-java-keyboard-open-v2945 .cc-java-mobile-dock-v2945{
    left:4px!important;
    right:4px!important;
  }
  .cc-java-mobile-fullscreen-v2945 .cc-java-fullscreen-exit-v2945{
    min-width:68px!important;
    padding-inline:9px!important;
  }
}


/* v2.9.46: the only fullscreen exit control on phones. */
@media (max-width:820px){
  .java-ide.cc-java-mobile-fullscreen-v2945 > .cc-java-fullscreen-exit-v2945,
  .java-ide.cc-java-mobile-fullscreen-v2945 .cc-java-fullscreen-exit-v2945{
    display:inline-flex!important;
    margin-left:auto!important;
    flex:0 0 auto!important;
    width:auto!important;
    max-width:88px!important;
  }
  .java-ide.cc-java-mobile-fullscreen-v2945 .cc-java-fullscreen-exit-v2945 svg{
    width:15px!important;
    height:15px!important;
    min-width:15px!important;
    max-width:15px!important;
    flex:0 0 15px!important;
  }
}

/* =====================================================================
   CodeCampus v2.9.47 · Keyboard / shortcut dock geometry repair
   - Embedded mode: prevents the keyboard offset from being applied twice.
   - Fullscreen: keeps Code/Run/Output/Submit/Tools above the real visual
     viewport even when Android fullscreen does not resize #javaIde.
   - Keeps the active source line clear of the command dock.
   ===================================================================== */
@media (max-width:820px){
  .cc-java-mobile-dock-v2945.cc-java-keyboard-docked-v2947{
    transition:opacity .12s ease,box-shadow .12s ease!important;
    will-change:top!important;
  }

  /* In normal mobile mode the dock remains viewport-fixed. JavaScript places
     its TOP at the bottom edge of visualViewport, so it sits immediately above
     Gboard/Samsung Keyboard instead of floating over source code. */
  body.cc-java-keyboard-open-v2945:not(.cc-java-mobile-fullscreen-open-v2945)
  .cc-java-mobile-dock-v2945.cc-java-keyboard-docked-v2947{
    position:fixed!important;
    left:max(6px,env(safe-area-inset-left))!important;
    right:max(6px,env(safe-area-inset-right))!important;
    width:auto!important;
    margin:0!important;
  }

  /* In native/fallback fullscreen the dock lives inside #javaIde. Its dynamic
     top is relative to the IDE and remains visible even on Android browsers
     where the keyboard overlays (rather than resizes) the fullscreen element. */
  .java-ide.cc-java-mobile-fullscreen-v2945
  > .cc-java-mobile-dock-v2945.cc-java-keyboard-docked-v2947,
  .java-ide.cc-java-mobile-fullscreen-v2945:fullscreen
  > .cc-java-mobile-dock-v2945.cc-java-keyboard-docked-v2947,
  .java-ide.cc-java-mobile-fullscreen-v2945.java-ide-fullscreen-fallback
  > .cc-java-mobile-dock-v2945.cc-java-keyboard-docked-v2947{
    position:absolute!important;
    left:max(6px,env(safe-area-inset-left))!important;
    right:max(6px,env(safe-area-inset-right))!important;
    width:auto!important;
    margin:0!important;
  }

  /* Extra scroll room only when the dock actually intersects the editor.
     The syntax layer and transparent textarea must keep identical padding. */
  .java-ide.cc-java-editor-dock-clear-v2947 .java-code-editor,
  .java-ide.cc-java-editor-dock-clear-v2947 .java-syntax-layer-v294{
    padding-bottom:calc(44px + var(--cc-java-dock-overlap-v2947,72px))!important;
    scroll-padding-bottom:calc(18px + var(--cc-java-dock-overlap-v2947,72px))!important;
  }

  /* Never let a stale keyboard-detection state hide the action bar. */
  body.cc-java-keyboard-open-v2945 .cc-java-mobile-dock-v2945.is-visible{
    opacity:1!important;
    pointer-events:auto!important;
  }
}
